Hoe vsftpd voor een gebruiker in te stellen's map op Ubuntu 18.04

Inleiding

FTP, kort voor File Transfer Protocol, is een netwerkprotocol dat ooit veel werd gebruikt voor het verplaatsen van bestanden tussen een client en server. Het is sindsdien vervangen door snellere, veiligere en handigere manieren om bestanden te leveren. Veel casual internetgebruikers verwachten direct vanuit hun webbrowser te downloaden met https, en opdrachtregelgebruikers gebruiken eerder veilige protocollen zoals scp of SFTP.,

FTP wordt nog steeds gebruikt om oudere toepassingen en workflows met zeer specifieke behoeften te ondersteunen. Als u een keuze hebt uit welk protocol u wilt gebruiken, overweeg dan om de modernere opties te verkennen. Als je FTP nodig hebt, is vsftpd echter een uitstekende keuze. Geoptimaliseerd voor beveiliging, prestaties en stabiliteit, biedt vsftpd sterke bescherming tegen veel beveiligingsproblemen die in andere FTP-servers worden aangetroffen en is de standaard voor veel Linux-distributies.,

in deze tutorial configureer je vsftpd om een gebruiker toe te staan bestanden te uploaden naar zijn of haar persoonlijke map met FTP met inloggegevens beveiligd door SSL/TLS.

Prerequisites

om deze tutorial te volgen hebt u het volgende nodig:

  • een Ubuntu 18.04-server en een niet-root-gebruiker met sudo-privileges: u kunt meer informatie vinden over het instellen van een gebruiker met deze privileges in onze handleiding voor het instellen van de server met Ubuntu 18.04.,

Stap 1 — vsftpd installeren

laten we beginnen met het bijwerken van onze pakketlijst en het installeren van de vsftpd daemon:

  • sudo apt update
  • sudo apt install vsftpd

als de installatie voltooid is, kopiëren we het configuratiebestand zodat we kunnen beginnen met een lege configuratie, waarbij we het origineel opslaan als een back-up:

  • sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

met een back-up van de configuratie op zijn plaats, zijn we klaar om de firewall te configureren.

Stap 2-De Firewall openen

laten we de firewall status controleren om te zien of deze is ingeschakeld., Als dat zo is, zorgen we ervoor dat FTP-verkeer is toegestaan, zodat firewallregels onze tests niet blokkeren.

controleer de firewall status:

  • sudo ufw status

In dit geval is alleen SSH toegestaan via:

Output
Status: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)

u kunt andere regels hebben of helemaal geen firewall regels. Omdat in dit geval alleen SSH-verkeer is toegestaan, moeten we regels toevoegen voor FTP-verkeer.,

Laten we het openen van de poorten 20 en 21 voor FTP, poort 990 voor wanneer we TLS en poort 40000-50000 voor het bereik van de passieve poorten zijn we van plan om in het configuratie bestand:

  • sudo ufw allow 20/tcp
  • sudo ufw allow 21/tcp
  • sudo ufw allow 990/tcp
  • sudo ufw allow 40000:50000/tcp
  • sudo ufw status

Onze firewall regels moet er nu zo uitzien:

Met vsftpd geïnstalleerd en de benodigde poorten open, laten we verder gaan naar het creëren van een speciale FTP-gebruiker.,

Stap 3-de gebruikersmap voorbereiden

We zullen een dedicated FTP-gebruiker aanmaken, maar u hebt mogelijk al een gebruiker die FTP-toegang nodig heeft. We zorgen ervoor dat de toegang van een bestaande gebruiker tot zijn gegevens behouden blijft in de instructies die volgen. Toch raden we u aan om met een nieuwe gebruiker te beginnen totdat u uw installatie hebt geconfigureerd en getest.

voeg eerst een testgebruiker toe:

  • sudo adduser sammy

Wijs een wachtwoord toe wanneer daarom wordt gevraagd. Voel je vrij om op ENTER te drukken via de andere aanwijzingen.,

FTP is over het algemeen veiliger wanneer gebruikers beperkt zijn tot een specifieke map. vsftpd bereikt dit met chroot jails. Als chroot is ingeschakeld voor lokale gebruikers, worden ze standaard beperkt tot hun persoonlijke map. Vanwege de manier waarop vsftpd de map beveiligt, mag deze niet beschrijfbaar zijn voor de gebruiker. Dit is prima voor een nieuwe gebruiker die alleen via FTP verbinding moet maken, maar een bestaande gebruiker moet mogelijk naar zijn persoonlijke map schrijven als hij ook shell toegang heeft.,

in dit voorbeeld, in plaats van het verwijderen van schrijfrechten uit de home directory, laten we een ftp map maken om te dienen als de chroot en een beschrijfbare files map om de werkelijke bestanden te bevatten.,taken:

  • sudo ls -la /home/sammy/ftp
Output
total 84 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 .4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..

Vervolgens maken we de directory voor bestand uploads en eigendom toewijzen aan de gebruiker:

  • sudo mkdir /home/sammy/ftp/files
  • sudo chown sammy:sammy /home/sammy/ftp/files

Een van machtigingen controleren op de ftp directory moeten terug het volgende:

  • sudo ls -la /home/sammy/ftp

tot slot, laten we het toevoegen van een test.txt bestand om te gebruiken bij het testen we:

  • echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt

Nu hebben we verzekerd van de ftp directory en mag de gebruiker de toegang tot de files directory, laten we wijzigen onze configuratie.,

Stap 4-FTP-toegang configureren

We zijn van plan om een enkele gebruiker met een lokaal shell-account toe te staan verbinding te maken met FTP. De twee sleutelinstellingen hiervoor zijn al ingesteld in vsftpd.conf. Begin met het openen van het configuratiebestand om te controleren of de instellingen in uw configuratie overeenkomen met die hieronder:

  • sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf

laten we vervolgens de gebruiker in staat stellen om bestanden te uploaden door het commentaar op de write_enable te verwijderen instelling:

/etc/vsftpd.,conf
. . .write_enable=YES. . .

We zullen ook commentaar verwijderen van de chroot om te voorkomen dat de FTP-verbonden gebruiker toegang krijgt tot bestanden of commando ‘ s buiten de mappenboom:

/etc/vsftpd.conf
. . .chroot_local_user=YES. . .

laten we ook een user_sub_token toevoegen om de gebruikersnaam in ons local_root directory pad in te voegen zodat onze configuratie werkt voor deze gebruiker en eventuele toekomstige gebruikers. Voeg deze instellingen ergens toe in het bestand:

/ etc / vsftpd.,conf
. . .user_sub_token=$USERlocal_root=/home/$USER/ftp

laten we ook het bereik van poorten beperken die gebruikt kunnen worden voor passieve FTP om er zeker van te zijn dat er voldoende verbindingen beschikbaar zijn:

/etc/vsftpd.conf
. . .pasv_min_port=40000pasv_max_port=50000

opmerking: in Stap 2 hebben we de poorten geopend die we hier hebben ingesteld voor het passieve poortbereik. Als u de waarden wijzigt, moet u uw firewall-instellingen bijwerken.

om FTP-toegang toe te staan op een case-by-case basis, laten we de configuratie zo instellen dat gebruikers alleen toegang hebben als ze expliciet aan een lijst worden toegevoegd, in plaats van standaard:

/etc/vsftpd.,conf
. . .userlist_enable=YESuserlist_file=/etc/vsftpd.userlistuserlist_deny=NO

userlist_deny schakelt de logica om: wanneer deze is ingesteld op YES, krijgen gebruikers in de lijst geen FTP-toegang. Als het is ingesteld op NO, hebben alleen gebruikers in de lijst toegang.

Als u klaar bent met het maken van de wijzigingen, slaat u het bestand op en verlaat u de editor.

ten slotte, laten we onze gebruiker toevoegen aan /etc/vsftpd.userlist., Gebruik de -a vlag toe te voegen aan het bestand:

  • echo "sammy" | sudo tee -a /etc/vsftpd.userlist

Controleer dat het is toegevoegd als u verwacht:

  • cat /etc/vsftpd.userlist
Output
sammy

Start de daemon te laden om de wijzigingen in de configuratie:

  • sudo systemctl restart vsftpd

Met de configuratie in plaats van, laten we gaan testen FTP-toegang.

Stap 5-FTP-toegang testen

we hebben de server zo geconfigureerd dat alleen de gebruiker sammy verbinding kan maken via FTP. Laten we ervoor zorgen dat dit werkt zoals verwacht.,

anonieme gebruikers zouden geen verbinding kunnen maken: we hebben anonieme toegang uitgeschakeld. Laten we dat testen door anoniem te proberen verbinding te maken. Als onze configuratie correct is ingesteld, moeten anonieme gebruikers toestemming worden geweigerd. Open een ander terminalvenster en voer het volgende commando uit. Zorg ervoor dat u 203.0.113.0 vervangt door het publieke IP-adres van uw server:

  • ftp -p 203.0.113.0

sluit de verbinding:

  • bye

andere gebruikers dan sammy zouden geen verbinding kunnen maken: sudo gebruiker.,> moet in staat zijn om verbinding te maken, lezen en schrijven van bestanden: Laten we ervoor zorgen dat onze aangewezen gebruiker verbinding kan maken:

  • ftp -p 203.0.113.0

Laten we verandering in de files map en get commando om de test-bestand dat u eerder hebt gemaakt naar onze lokale machine:

  • cd files
  • get test.txt

laten we nu het uploaden van het bestand met een nieuwe naam te testen schrijf rechten:

  • put test.txt upload.txt

de verbinding:

  • bye

Nu we hebben getest onze configuratie, nemen we stappen om onze server.,

Stap 6-transacties beveiligen

aangezien FTP geen gegevens versleutelt tijdens het transport, inclusief gebruikersreferenties, zullen we TLS / SSL inschakelen om die versleuteling te leveren. De eerste stap is het maken van de SSL certificaten voor gebruik met vsftpd.

laten we openssl gebruiken om een nieuw certificaat aan te maken en de -days vlag gebruiken om het een jaar geldig te maken. In hetzelfde commando voegen we een private 2048-bit RSA sleutel toe., Door zowel de -keyout en -out op dezelfde waarde in te stellen, zullen de private sleutel en het certificaat zich in hetzelfde bestand bevinden:

  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

wordt u gevraagd om adresgegevens voor uw certificaat op te geven., Vervang uw eigen informatie voor de gemarkeerde waarden hieronder:

voor meer gedetailleerde informatie over de certificaatvlaggen, zie OpenSSL Essentials: werken met SSL-certificaten, privésleutels en CSR ‘ s

zodra u de certificaten hebt aangemaakt, opent u het vsftpd configuratiebestand opnieuw:

  • sudo nano /etc/vsftpd.conf

onderaan het bestand ziet u twee regels die beginnen met rsa_. Commentaar ze zodat ze er als volgt uitzien:

/etc/vsftpd.,conf
. . .# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key. . .

voeg hieronder de volgende regels toe die verwijzen naar het certificaat en de private sleutel die we zojuist hebben aangemaakt:

/etc/vsftpd.conf
. . .rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem. . .

daarna zullen we het gebruik van SSL forceren, wat zal voorkomen dat clients die niet met TLS kunnen omgaan verbinding maken. Dit is noodzakelijk om ervoor te zorgen dat al het verkeer versleuteld is, maar het kan uw FTP-gebruiker dwingen om van client te veranderen. Verander ssl_enable naar YES:

/etc/vsftpd.,conf
. . .ssl_enable=YES. . .

voeg daarna de volgende regels toe om anonieme verbindingen via SSL expliciet te weigeren en om SSL te vereisen voor zowel gegevensoverdracht als logins:

/etc/vsftpd.conf
. . .allow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES. . .

na dit, configureer de server om TLS te gebruiken, de gewenste opvolger van SSL, door de volgende regels toe te voegen:

/etc/vsftpd.conf
. . .ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO. . .

tenslotte zullen we nog twee opties toevoegen. Ten eerste zullen we SSL-hergebruik niet nodig hebben omdat het veel FTP-clients kan breken., We hebben “high” Encryption cipher suites nodig, wat op dit moment sleutellengtes betekent gelijk aan of groter dan 128 bits:

/etc/vsftpd.conf
. . .require_ssl_reuse=NOssl_ciphers=HIGH. . .

de sectie voltooid bestand moet er als volgt uitzien:

/etc/vsftpd.conf

sla het bestand op en sluit het.

Herstart de server om de wijzigingen door te voeren:

  • sudo systemctl restart vsftpd

Op dit moment kunnen we geen verbinding meer maken met een onveilige opdrachtregelclient., Als we het zouden proberen, zouden we iets zien als:

volgende, laten we controleren of we verbinding kunnen maken met een client die TLS ondersteunt.

Stap 7-TLS testen met FileZilla

De meeste moderne FTP-clients kunnen worden geconfigureerd om TLS-versleuteling te gebruiken. We zullen laten zien hoe u verbinding kunt maken met FileZilla vanwege de cross-platform ondersteuning. Raadpleeg de documentatie voor andere klanten.

wanneer u FileZilla voor het eerst opent, vindt u het sitebeheer-pictogram net boven het woord Host, het meest linkse pictogram op de bovenste rij. Klik erop:

Er wordt een nieuw venster geopend., Klik op de knop nieuwe Site in de rechterbenedenhoek:


onder Mijn Sites verschijnt een nieuw pictogram met de woorden nieuwe site. U kunt het nu een naam geven of later terugkeren en de knop hernoemen gebruiken.

vul het Host-veld in met de naam of het IP-adres. Selecteer expliciete FTP via TLS vereisen in het keuzemenu versleuteling.

voor Aanmeldingstype, selecteer vragen om wachtwoord. Vul uw FTP-gebruiker in in het Gebruikersveld:

klik op Verbinden onderaan de interface., U wordt gevraagd om het wachtwoord van de gebruiker:

klik op OK om verbinding te maken. U moet nu verbonden zijn met uw server met TLS/SSL encryptie.,ficate dat ziet er zo uit:

Als je hebt geaccepteerd dat het certificaat, dubbel-klik je op de files map en sleep upload.txt naar links om te bevestigen dat u in staat bent om bestanden te downloaden:

Als je dat gedaan hebt, klik met de rechtermuisknop op de lokale kopiëren, hernoemen naar upload-tls.txt en sleep het terug naar de server om te bevestigen dat u bestanden kunt uploaden:

U heeft nu bevestigd dat kunt u veilig en met succes de overdracht van bestanden met behulp van SSL/TLS ingeschakeld.,

Stap 8-Shelltoegang uitschakelen (optioneel)

Als u TLS niet kunt gebruiken vanwege clientvereisten, kunt u enige beveiliging verkrijgen door de mogelijkheid van de FTP-gebruiker om op een andere manier in te loggen uit te schakelen. Een relatief eenvoudige manier om dit te voorkomen is door een aangepaste shell te maken. Dit zal geen encryptie bieden, maar het zal de toegang van een gecompromitteerde account beperken tot bestanden die toegankelijk zijn via FTP.,

open eerst een bestand met de naam ftponly in de bin Map:

  • sudo nano /bin/ftponly

voeg een bericht toe waarin de gebruiker wordt verteld waarom hij niet kan inloggen:

/bin/ftponly
#!/bin/shecho "This account is limited to FTP access only."

sla het bestand op en sluit de editor af.,Wijzig de machtigingen voor het bestand uitvoerbaar bestand:

  • sudo chmod a+x /bin/ftponly

Open de lijst met geldige schelpen:

  • sudo nano /etc/shells

Op de bodem toe te voegen:

/etc/shells
. . ./bin/ftponly

Update de shell van de gebruiker met het volgende commando:

  • sudo usermod sammy -s /bin/ftponly

Nu probeer in te loggen op uw server sammy:

Je moet iets als dit zien:

Output
This account is limited to FTP access only.Connection to 203.0.113.0 closed.

Dit bevestigt dat de gebruiker niet langer ssh met de server en is beperkt tot de FTP-toegang alleen.,

conclusie

In deze tutorial hebben we het opzetten van FTP behandeld voor gebruikers met een lokaal account. Als u een externe authenticatiebron moet gebruiken, Wilt u misschien kijken naar vsftpd’s ondersteuning van virtuele gebruikers. Dit biedt een rijke set van opties door het gebruik van PAM, de Pluggable Authenticatiemodules, en is een goede keuze als je gebruikers beheert in een ander systeem zoals LDAP of Kerberos.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *