Introduction

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 de 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 laten we u zien hoe u vsftpd kunt configureren om een gebruiker toe te staan bestanden te uploaden naar zijn of haar thuismap met behulp van FTP met inloggegevens beveiligd door SSL/TLS.

Prerequisites

om deze tutorial te volgen hebt u het volgende nodig:

  • een Ubuntu 16.04-server met 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 16.04.

zodra u een Ubuntu-server hebt geïnstalleerd, bent u klaar om te beginnen.,

Stap 1-vsftpd installeren

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

  • sudo apt-get update
  • sudo apt-get install vsftpd

als de installatie voltooid is, kopiëren we het configuratiebestand zodat we met een lege configuratie kunnen beginnen en 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-Firewall openen

We zullen de firewall status controleren om te zien of deze is ingeschakeld., Als dat zo is, zorgen we ervoor dat FTP-verkeer is toegestaan, zodat u niet tegen firewallregels komt die u blokkeren wanneer het tijd is om te testen.

  • 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 alleen ssh verkeer is toegestaan in dit geval, moeten we regels toevoegen voor FTP-verkeer.,

We moeten poorten 20 en 21 openen voor FTP, poort 990 voor later als we TLS inschakelen, en poorten 40000-50000 voor het bereik van passieve poorten die we van plan zijn in te stellen in het configuratiebestand:

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

nu zien onze firewallregels eruit als:

met vsftpd geïnstalleerd en de benodigde poorten geopend, zijn we klaar om door te gaan naar de volgende stap.

Stap 3-de gebruikersmap

voorbereiden voor deze tutorial gaan we een 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 je aan om met een nieuwe gebruiker te beginnen totdat je je setup hebt geconfigureerd en getest.

eerst zullen we een test gebruiker toevoegen:

  • sudo adduser sammy

Wijs een wachtwoord toe wanneer daarom wordt gevraagd en voel je vrij om op “ENTER” te drukken via de andere prompts.

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 verbinding moet maken via FTP, maar een bestaande gebruiker kan nodig zijn om te schrijven naar hun home map als ze ook shell toegang.,

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

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 waar de bestanden kunnen worden geüpload 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 files directory moeten terug het volgende:

  • sudo ls -la /home/sammy/ftp

tot slot, voegen we een test.txt bestand om te gebruiken bij het testen we later op:

  • 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, zullen we onze aandacht richten op 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

vervolgens moeten we een aantal waarden in het bestand wijzigen. Om de gebruiker toe te staan bestanden te uploaden, zullen we de write_enable instelling verwijderen zodat we:

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

We zullen ook het commentaar van de chroot verwijderen 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. . .

We zullen een user_sub_token toevoegen om de gebruikersnaam in ons local_root directory pad in te voegen, zodat onze configuratie zal werken voor deze gebruiker en eventuele toekomstige gebruikers die kunnen worden toegevoegd.

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

we beperken het bereik van poorten 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: We hebben de poorten die we hier instellen voor het passieve poortbereik vooraf geopend. Als u de waarden wijzigt, moet u uw firewall-instellingen bijwerken.

omdat we alleen van plan zijn om FTP-toegang toe te staan op een case-by-case basis, zullen we de configuratie zo instellen dat toegang alleen aan een gebruiker wordt gegeven wanneer deze 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 het is ingesteld op “Ja”, gebruikers in de lijst worden geweigerd FTP-toegang. Wanneer het is ingesteld op “Nee”, hebben alleen gebruikers in de lijst toegang. Als je klaar bent met het maken van de wijziging, sla het bestand op en sluit het af.

ten slotte zullen we onze Gebruiker aanmaken en toevoegen aan het bestand., We zullen de -a vlag gebruiken om aan bestand toe te voegen:

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

controleer of het is toegevoegd zoals u had verwacht:

cat /etc/vsftpd.userlist
Output
sammy

Herstart de daemon om de configuratiewijzigingen te laden:

  • sudo systemctl restart vsftpd

nu zijn we klaar om te testen.

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 dat het geval is.

anonieme gebruikers zouden geen verbinding kunnen maken: we hebben anonieme toegang uitgeschakeld., Hier testen we dat door anoniem te proberen verbinding te maken. Als het goed is, is anonieme gebruikers moeten toestemming geweigerd:

  • ftp -p 203.0.113.0

de verbinding:

  • bye

andere Gebruikers dan sammy moet niet te verbinden: we gaan proberen het aansluiten van onze sudo gebruiker. Ook zij zouden de toegang moeten worden ontzegd, en het zou moeten gebeuren voordat ze hun wachtwoord mogen invoeren.,en schrijven van bestanden: Hier, wij zorgen ervoor dat onze aangewezen gebruiker canconnect:

  • ftp -p 203.0.113.0

We zullen wijzigen in de files directory, gebruik dan de get commando om de test-bestand dat u eerder hebt gemaakt naar onze lokale machine:

  • cd files
  • get test.txt

We rechtsaf weer rond en probeer om het bestand te uploaden 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 TTL / SSL inschakelen om die versleuteling te leveren. De eerste stap is het maken van de SSL certificaten voor gebruik met vsftpd.

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

We doen dit met het volgende commando:

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

u wordt gevraagd om adresgegevens voor uw certificaat op te geven., Vervang uw eigen informatie voor de onderstaande vragen:

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

naar de onderkant van het bestand, moet u twee regels openen die beginnen met rsa_. Commentaar ze zodat ze eruit zien als:

/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 gemaakt:

/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 is versleuteld, maar kan uw FTP-gebruiker dwingen om clients 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

hierna zullen we de server configureren om TLS te gebruiken, de favoriete 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

sla het bestand op en sluit het.

nu moeten we de server herstarten 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:

vervolgens zullen 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 behulp van FileZilla vanwege de cross-platform ondersteuning. Raadpleeg de documentatie voor andere klanten.

wanneer u FileZilla voor het eerst opent, vindt u het pictogram Sitebeheer net onder het word-bestand, 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.

u moet het veld “Host” invullen met de naam of het IP-adres. Onder de” encryptie “drop down menu, selecteer ” vereisen expliciete FTP over TLS”.

voor” Logon Type”, selecteer”Ask for password”. Vul de FTP-gebruiker in die u hebt aangemaakt in het veld” User”:


Klik op” Connect ” 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.


Als u het certificaat hebt geaccepteerd, dubbelklikt u op de files map en sleep Upload.txt naar links om te bevestigen dat u bestanden kunt downloaden.

Als u dat gedaan hebt, klik dan met de rechtermuisknop op de lokale kopie, hernoem deze naar upload-tls.TXT ‘ en sleep het terug naar de server om te bevestigen dat u bestanden kunt uploaden.,


u hebt nu bevestigd dat u veilig en succesvol bestanden kunt overbrengen met 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 genaamd ftponly in de bin directory:

  • sudo nano /bin/ftponly

we voegen een bericht toe waarin de gebruiker wordt verteld waarom ze niet kunnen inloggen.,/p>

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

het Wijzigen van 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, voeg je toe:

/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 als 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 je een externe authenticatiebron moet gebruiken, wil je misschien kijken naar de ondersteuning van vsftpd voor 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.

Articles

Geef een reactie

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