vsftpd installeren. Eenvoudige FTP-server gebaseerd op Ubuntu (vsftpd)

Van tijd tot tijd iedereen systeembeheerder er is behoefte aan een FTP-server, meestal komt dit door de noodzaak om de uitwisseling van informatie te garanderen automatische modus tussen applicaties, bijvoorbeeld bij het automatisch uitwisselen van gedistribueerde informatiebasis 1C, of ​​om toegang te krijgen tot bestanden op een webserver. Vandaag vertellen we je hoe je in minder dan een half uur zo'n server op het Ubuntu-platform kunt maken.

Maar eerst een beetje theorie. FTP-protocol(File Transfer Protocol) is, zoals de naam al doet vermoeden, bedoeld voor het overbrengen van bestanden en verscheen in 1971, maar wordt ondanks zijn hoge leeftijd tot op de dag van vandaag nog steeds veel gebruikt. Hoewel het gebruik ervan tegenwoordig vaker van technische aard is, om toegang te krijgen eindgebruikers de gegevens zijn meestal toegankelijk via een browser en HTTP-protocol. De voordelen van FTP zijn onder meer de mogelijkheid om het downloaden van een bestand te hervatten wanneer de verbinding wordt verbroken en de mogelijkheid om bestanden even gemakkelijk te lezen en te schrijven. Maar er zijn ook nadelen, waarvan de ernstigste de lage beveiliging is, dus deze kwestie verdient de grootste aandacht.

FTP maakt, net als PPTP, gebruik van verschillende verbindingen voor het verzenden van opdrachten en het verzenden van gegevens. Wanneer een verbinding tot stand wordt gebracht, stuurt de client besturingsopdrachten naar poort 21 van de server, die op zijn beurt wordt ingesteld uitgaande verbinding voor datatransmissie op poort 20 wordt de poort aan de clientzijde bepaald als resultaat van onderhandeling. Als de klant echter achterloopt NAT-verbinding op een vergelijkbare manier het zal niet mogelijk zijn om te installeren, dus het is ontwikkeld extra modus Passieve FTP-modus, wanneer de verbinding voor gegevensoverdracht niet door de server tot stand wordt gebracht, maar door de client, maar met parameters opgegeven door de server. Met deze punten moet rekening worden gehouden bij het doorsturen van FTP en bij het instellen van een netwerkfilter.

Voor onze server zullen we gebruiken vsftpd- eenvoudige, snelle en veilige FTP-server. Omdat het zowel extern als zal dienen intern netwerk, dan is het zinvol om deze rol toe te voegen aan onze . Serverinstallatie is uiterst eenvoudig:

Apt-get install vsftpd

De server is geconfigureerd via configuratiebestand /etc/vsftpd.conf hij heeft eenvoudige structuur, is goed becommentarieerd en stelt je in staat om zonder instructies en met minimale kennis een server op te zetten. Laten we de belangrijkste parameters bekijken.

De server kan constant worden gestart, als een service, of worden gestart wanneer dat nodig is; de eerste optie is geschikter voor ons:

Luister=JA

Deze optie heeft een wederzijds uitsluitende vermelding, die de volgende vorm moet krijgen:

Luister_ipv6=NEE

Laten we alleen lokale gebruikers toestaan ​​om in te loggen:

Anoniem_enable=NEE
local_enable=JA

Laten we gebruikers toestaan ​​bestanden te schrijven en de server vertellen dat dit automatisch moet gebeuren noodzakelijke rechten(755 voor mappen en 644 voor bestanden):

Write_enable=JA
local_umask=022

Als u een andere set rechten moet instellen: 775 en 664, dan moet umask gelijk zijn aan 002.

Standaard gebruikt de server GMT-tijd, zodat bestanden worden ingesteld op jouw tijdzone, gebruik dan de optie:

Gebruik_localtime=JA

Laten we het logboek van geüploade en gedownloade bestanden inschakelen:

Xferlog_enable=JA

Laten we de server toestaan ​​verbindingen tot stand te brengen om gegevens op poort 20 (actieve modus) te verzenden:

Connect_from_port_20=JA

De volgende opties specificeren de locatie en het formaat voor het opslaan van logboeken:

Xferlog_file=/var/log/vsftpd.log
xferlog_std_format=JA

Laten we sessietime-outs instellen:

Idle_session_timeout=600
data_connection_timeout=120

Om veiligheidsredenen isoleren we de gebruiker ook in zijn thuismap en laat onmiddellijk schrijven naar de root toe:

Chroot_local_user=JA
allow_writeable_chroot=JA

Om correct met tekstgegevens te kunnen werken, kunt u ASCII-ondersteuning inschakelen, hierdoor kunt u gegevens overbrengen tekstbestand Met Windows-systemen in UNIX (Linux) regeleinden correct vervangen van CR+LF naar LF voor correcte weergave van de inhoud en uitvoeren omgekeerde conversie wanneer u deze terugstuurt.

Ascii_upload_enable=JA
ascii_download_enable=JA

U kunt slechts één optie inschakelen: uploaden of downloaden. Houd er rekening mee dat u bij het overstappen rekening moet houden binair bestand in ASCII-modus kan deze laatste beschadigd raken.

Een hele interessante optie:

Ls_recurse_enable=JA

Het maakt recursief bladeren door mappen mogelijk, enerzijds is het handig, anderzijds kan het veroorzaken zware belasting naar de server, als u bijvoorbeeld een lijst ontvangt van een map met daarin groot aantal bestanden en mappen.

We laten alle andere opties standaard, hoewel u de serverbegroeting kunt bewerken door te schrijven wat u maar wilt:

Ftpd_banner=Welkom bij Roga i Kopyta LLC FTP

Aan het einde van het configuratiebestand zullen we de instellingen voor instellen passieve modus, wordt aanbevolen om de poorten expliciet in te stellen, zodat u deze tijdens het doorsturen kunt opgeven als de server zich achter NAT of in firewallregels bevindt:

Pasv_enable=JA
pasv_min_port=62000
pasv_max_port=62999

Start de server opnieuw op (dit moet elke keer gebeuren nadat er wijzigingen in de configuratie zijn aangebracht):

Service vsftpd opnieuw opstarten

en probeer verbinding te maken via een FTP-client met de inloggegevens van een bestaande gebruiker. We moeten in zijn thuismap komen en daarin geïsoleerd worden.

Als er een fout optreedt met betrekking tot onjuist werk vsftpd- en seccomp-beveiligingssystemen:

500 OOPS: prctl PR_SET_SECCOMP mislukt

voeg een ongedocumenteerde optie toe aan het bestand:

Seccomp_sandbox=NEE

Bedenk echter dat FTP een onveilig protocol is, dus het is niet de beste manier om elke lokale gebruiker toegang te geven tot de server, zoals nu wordt gedaan. beste optie. Om deze situatie te voorkomen heeft vsftpd een ingebouwd gebruikerscontrolemechanisme. Laten we de optie toevoegen aan het configuratiebestand:

Gebruikerslijst_enable=JA

en maak een gebruikerslijstbestand:

Raak /etc/vsftpd.user_list aan

Standaard vsftpd verbiedt toegang tot de server voor gebruikers gespecificeerd in deze lijst zelfs voordat u het wachtwoord invoert, d.w.z. implementeert het principe om iedereen toe te laten die niet verboden is. Maar veel beter zou het een andere aanpak zijn: iedereen die niet mag, is verboden. Die. toestaan alleen toegang tot gespecificeerde gebruikers. Om dit te doen, voegt u een optie toe:

Gebruikerslijst_deny=NEE

Nu hebben alleen expliciet gespecificeerde gebruikers toegang tot de FTP-server waarin ze moeten worden gespecificeerd vsftpd.user_listéén per regel, bijvoorbeeld:

Ivanov
Petrov

Tenzij anders aangegeven, dan door verbinding te maken via FTP-gebruikers komen terecht in hun homedirectory. Dit is niet altijd handig; u moet ze vaak omleiden naar een andere map. Als dit voor iedereen een gemeenschappelijke map is, bijvoorbeeld /var/ftp, dan kunt u de optie instellen:

Local_root=/var/ftp

Waar alle gebruikers naartoe worden doorverwezen opgegeven map en isoleert ze daar.

Dit is de eenvoudigste situatie, echte taken zijn meestal ingewikkelder, laten we zeggen dat we de gebruiker Ivanova als hoofdmap moeten instellen /var/www/voorbeeld1.com en Petrov /var/www/voorbeeld2.com zodat elk van hen met zijn eigen map werkt. Voor deze doeleinden kunt u een andere functie van vsftpd gebruiken: aangepaste instellingen, die de instellingen van het hoofdconfiguratiebestand overlappen.

Om dit te doen, voegt u een optie toe:

User_config_dir=/etc/vsftpd_user_conf

Vervolgens maken we de map zelf aan

Mkdir /etc/vsftpd_user_conf

Om de gebruiker in te stellen eigen instellingen in deze map moet u een bestand met de gebruikersnaam maken en hieraan toevoegen vereiste opties. Wijzigingen worden toegepast zonder dat de FTP-server opnieuw hoeft te worden opgestart volgende verbinding cliënt.

Laten we een bestand maken met instellingen voor Ivanov:

Tocuh /etc/vsftpd_user_conf/ivanov

en voeg er een optie aan toe:

Lokale_root=/var/www/example1.com

De volgende keer dat u verbinding maakt hoofdmap gebruiker zal veranderen naar de gespecificeerde. Ook in dit bestand kunnen we eventuele persoonlijke opties instellen, bijvoorbeeld anders masker of bestandsrechten. We kunnen hier echter geen gebruik van maken globale instellingen: verbinding, loggen, authenticatie-opties, ze worden gewoon genegeerd.

Als je je moet verstoppen echte eigenaren bestanden en mappen, dan kunt u de optie gebruiken.

Server-side, voor beheer wordt MySQL extern geïnstalleerd en beveiligd. Het enige wat ontbreekt is ftp-server. Iedereen is al gewend aan het uploaden van bestanden naar hosting via FTP-clients, dus u hoeft niets anders te doen dan het op uw computer te installeren en configureren virtuele server FTP-ondersteuning.

Onder Linux er zijn een groot aantal ftp-servers gemaakt, maar ik vind het leuk vsftpd. Het is eenvoudig te installeren en doet zijn werk perfect. Om te installeren vsftpd voer in een terminalvenster het commando uit:

Apt-get install vsftpd

Het installeren van vsftpd op Debian 7 duurt letterlijk twee minuten.

VSFTPD instellen

Alle vsftpd-instellingen worden opgeslagen in een bestand /etc/vsftpd.conf. Laten we het openen in de nano-editor en een paar aanpassingen maken:

Nano /etc/vsftpd.conf

Het eerste dat u in het instellingenbestand moet doen, is een verbod instellen op het verbinden van anonieme gebruikers. De optie vinden “anoniem_inschakelen” en wijs er waarden aan toe "NEE". Verwijder vervolgens de commentaar van de optie "lokaal_inschakelen" En “schrijven_inschakelen”. Met de eerste optie kunnen gebruikers die in het systeem zijn geregistreerd, inloggen op de server. Met de tweede kunnen gebruikers alle FTP-schrijfopdrachten uitvoeren.

De laatste actie in het configuratiebestand is het verwijderen van commentaar voor de optie chroot_local_user. Als dit is ingesteld op "Ja" (wat de standaard is), bevinden alle systeemgebruikers zich in de chroot en hebben zij geen toegang tot andere mappen op de server.

Wijzigingen opslaan ( ctrl+o) en sluit het bestand ( ctrl+x). Laten we nu proberen te testen FTP-werk server. Laten we hiervoor een nieuwe gebruiker maken en deze maken thuismap een map waartoe hij via FTP toegang heeft.

Het toevoegen van een nieuwe gebruiker gebeurt met het adduser commando. Laten we proberen een nieuwe gebruiker aan te maken gebruiker:

Gebruiker toevoegen

Het hulpprogramma voor het aanmaken van gebruikers zal verschillende vragen stellen (wachtwoord, diverse ondersteunende informatie). Vragen waarin om aanvullende informatie wordt gevraagd (telefoonnummer, kamernummer, etc.) kunt u negeren door op de “Enter”-toets te drukken. Laten we aannemen dat de gebruiker is aangemaakt, laten we nu toevoegen nieuwe groep webusers en neem de gebruiker daarin op:

Groupadd webusers usermod -G webusers gebruiker

Als je nu naar de directory gaat /thuis, dan zullen we zien dat er een map in is verschenen voor de onlangs gemaakte nieuwe gebruiker. Laten we twee nieuwe mappen maken in de thuismap van de gebruiker:

Mkdir /home/user/www mkdir /home/user/logs

De eerste zal bestanden opslaan die van buitenaf toegankelijk zijn (dit zal de hostmap zijn), en de tweede zal worden gebruikt om logbestanden op te slaan. Nu moeten we de eigenaar van de gemaakte mappen wijzigen. We hebben ze van onderaf gemaakt wortel, dus nu is de eigenaar de supergebruiker. Het veranderen van eigenaar gebeurt met het chocommando:

Chown-gebruiker:webusers /home/user/www chown-gebruiker:webusers /home/user/logs chmod 555 /home/user

Hiermee zijn alle voorbereidende stappen voltooid. Het enige dat overblijft is het opnieuw opstarten van de FTP-server en proberen er verbinding mee te maken met een bepaalde client. De dienst opnieuw starten vsftpd doe het op de traditionele manier:

Service vsftpd opnieuw opstarten

Het testen van de geconfigureerde vsftpd-server

Laten we als test proberen verbinding te maken met het ingebouwde Windows console-ftp client met onze ftp-server. Open CMD en voer het commando in:

Ftp

Nadat u een verbinding tot stand heeft gebracht, zal het programma u vragen uw login/wachtwoord in te voeren. Vul hier de gegevens van de aangemaakte gebruiker in. Zodra u het authenticatieproces heeft voltooid, kunt u beginnen met verzenden ftp-opdrachten. Bijvoorbeeld, dir-opdracht vraagt ​​een lijst met mappen op van de ftp-server. Nadat u het hebt uitgevoerd, zult u zien dat er twee mappen beschikbaar zijn op de server: www En logboeken.

Daarmee installatie en configuratie vsftpd als voltooid beschouwd.

Over een snelle en veilige FTP-server, vandaag zullen we kijken naar de basisaspecten van het configureren van deze daemon. Hier heb ik gekeken naar wat ik beschouw als de meest gebruikte vsftpd-configuratieparameters. Vergeet niet dat vsftpd zeer flexibel is qua configuratie en dat u het altijd op een speciale manier voor uzelf kunt configureren. Alle mogelijke configuratieparameters worden in detail beschreven op de manpagina van de daemon, die ik ten zeerste aanbeveel voor tenminste een snelle blik aan iedereen die geïnteresseerd is in deze server en deze gebruikt. In toekomstige artikelen over vsftpd zullen we kijken naar zaken als het organiseren van virtuele FTP-hosts en authenticatie virtuele gebruikers en SSL-codering.

Zoals besproken in het vorige artikel, is het vsftpd-configuratiebestand in diverse systemen standaard bevindt het zich op verschillende plaatsen:

  • in FreeBSD - /usr/local/etc/vsftpd.conf
  • in Fedora - /etc/vsftpd/vsftpd.conf
  • in Debian - /etc/vsftpd.conf

Nadat u wijzigingen heeft aangebracht in uw vsftpd-configuratiebestand, vergeet dan niet om het opnieuw op te starten. Op FreeBSD:

# /usr/local/etc/rc.d/vsftpd opnieuw opstarten

Op Debian/Fedora:

# service vsftpd opnieuw opstarten

Toegangscontrole

Houd er rekening mee dat tijdens het vsftp-installatieproces een gebruiker met de accountnaam aan uw systeem wordt toegevoegd ftp. Het doel van dit account is om de toegang tot de anonieme FTP-directory te organiseren. Standaard geeft vsftpd anonieme gebruikers leestoegang tot de thuismap van het account. ftp. Vergeet niet om het uit te schakelen als je het niet nodig hebt door de waarde van de overeenkomstige parameter te wijzigen:

Anoniem_enable=NEE

Als toegang voor anonieme gebruikers tot uw FTP-server is toegestaan, kunt u bovendien het wachtwoordverzoek voor anoniem inloggen uitschakelen:

No_anon_password=JA

Toegang lokale gebruikers systemen zijn meestal standaard uitgeschakeld. U kunt dit indien nodig als volgt inschakelen:

Local_enable=JA

Om te voorkomen dat uw lokale gebruikers boven hun thuismappen kunnen roamen, kunt u de volgende beperking inschakelen:

Chroot_local_user=JA

Je kunt ook een andere methode gebruiken chroot gebruikers, waarbij niet alle gebruikers beperkt zijn, maar alleen expliciet gedefinieerde gebruikers. Om dit te doen, moet u de parameterwaarde instellen chroot_local_user gelijkwaardig NEE, maak een bestand met een lijst met gebruikers voor wie chroot moet handelen (bijvoorbeeld in /etc/vsftpd.chroot_list) en definieer de volgende twee parameters:

Chroot_list_enable=JA chroot_list_file=/etc/vsftpd.chroot_list

Houd er rekening mee dat als, met de twee hierboven gedefinieerde parameters, de parameterwaarde chroot_local_user is gelijk JA, Dat rekeningen vermeld in het bestand chroot_list_bestand zullen NIET aan beperkingen onderworpen zijn chroot.

Als u de hoeveelheid wilt beperken gelijktijdige verbindingen naar vsftpd, zijn er twee manieren om dit te doen: met behulp van de superserver-mogelijkheden of, als uw daemon draait offline-modus, met behulp van de parameter (uiteraard vervangt u 10 door het aantal toegestane gelijktijdige verbindingen dat u nodig hebt):

Max_klanten=10

Standaard schakelt de vsftpd-configuratie FTP-opdrachten uit voor het maken van nieuwe bestanden en mappen, zodat uw lokale gebruikers standaard geen schrijftoegang tot hun thuismappen kunnen krijgen. Dit kan eenvoudig worden gecorrigeerd door een parameter te definiëren schrijf_enable:

Write_enable=JA

Na de parameter in uw serverconfiguratie schrijf_enable gelijk gesteld aan JA En anoniem_inschakelen gedefinieerd als JA u kunt de toegang controleren met betrekking tot het aanmaken van nieuwe bestanden/mappen door anonieme gebruikers. Anonieme gebruikers toestaan ​​nieuwe mappen te maken:

Anon_mkdir_write_enable=JA

Laat anonieme gebruikers bestanden en mappen verwijderen en hernoemen:

Anon_other_write_enable=JA

Anonieme gebruikers toestaan ​​nieuwe bestanden te uploaden:

Anon_upload_enable=JA

U kunt de gegevensuitwisselingssnelheid voor anonieme gebruikers in de offline servermodus beperken de volgende parameter(waarde wordt aangegeven in bytes/sec):

Anon_max_rate=1024

Standaard is het umask van vsftpd-bestanden gelijk aan 077 , dat wil zeggen dat bestanden alleen voor lezen/schrijven voor de eigenaar worden gemaakt. U kunt de umask-waarde van anonieme gebruikers wijzigen met behulp van de parameter anon_umask:

Anon_umask=022

en voor lokale - met behulp van de parameter lokale_umask:

Lokale_umask=022

Indien nodig kunt u voorkomen dat gebruikers bestanden van uw server downloaden:

Download_enable=NEE

Soms is het handig om de echte ID's van bestandseigenaren te verbergen door ze te vervangen door de gebruikers-ID ftp:

Verberg_ids=JA

Netwerkinstellingen

Als uw vsftpd in de standalone-modus draait en niet via xinetd, dan moet je dit expliciet specificeren:

Luister=JA

hetzelfde voor IPv6 (onthoud dat de daemon alleen tegelijkertijd met IPv4 of IPv6 kan werken):

Listen_ipv6=JA

Met de parameter kunt u het IPv4-adres bepalen waarop de daemon moet ‘hangen’:

Luisteradres=192.168.0.1

Luisteradres6=fe80:0:0:0:202:b3ff:fe1e:8329

Indien nodig kunt u de mogelijkheid voor clients om de PASV-modus te gebruiken uitschakelen:

Pasv_enable=NEE

Gemengd

Vanaf versie 2.0.7 kan vsftpd mislukte downloads verwijderen als u de volgende parameter definieert:

Delete_failed_uploads=JA

Standaard geeft vsftpd bestandstijdstempels weer in GMT. Als u wilt dat ze worden weergegeven volgens de lokale tijd van de server, gebruikt u de volgende optie.

FTP of File Transfer Protocol is een vrij oud, maar tegelijkertijd betrouwbaar en bewezen protocol voor het uploaden van bestanden externe server of download ze. Soms wordt dit protocol ook door webmasters gebruikt om bestanden te beheren of gegevensopslag te organiseren.

In dit artikel zullen we bekijken hoe u dit kunt doen FTP-installatie op Ubuntu 16.04, hoe u alle benodigde componenten configureert, inclusief een beveiligde verbinding. We zullen de FTP-server VSFTPD of Very Secure FTP Daemon gebruiken, die het meeste biedt betrouwbare bescherming uit kwetsbaarheden.

Het programma is beschikbaar via officiële repositories, dus installeer FTP op Ubuntu-server 16.04 zou geen problemen moeten veroorzaken. Werk eerst de lijst met pakketten in de repository's bij en installeer vervolgens het programma zelf:

sudo apt-update
$ sudo apt install vsftpd

Wanneer de installatie is voltooid, moet u de service inschakelen vsftpd, omdat het niet standaard wordt gestart, en ook de service wordt toegevoegd aan het opstarten:

sudo systemctl start vsftpd
$ sudo systemctl schakel vsftpd in

Als u een ufw-firewall hebt geïnstalleerd en deze situatie doet zich voor wanneer u FTP op Ubuntu Server probeert te installeren, moet u poort 20 en 21 openen voor normale werking. Om dit te doen, voert u de opdrachten uit:

sudo ufw staat 20/tcp toe
$ sudo ufw staat 21/tcp toe
$ sudo ufw-status

De Ubuntu FTP-installatie is voltooid, maar nu hoeft u alleen nog maar alles te configureren wat u nodig heeft veilig werken. Gebruik nooit een FTP-server met standaardinstellingen op productienetwerken, deze is niet veilig.

FTP-Ubuntu instellen

Laten we nu verder gaan met de opstelling. We hoeven slechts een paar parameters te wijzigen om uw FTP-server volledig te beveiligen. Eerst zullen we kijken naar de meest voor de hand liggende instellingen: het uitschakelen van anoniem inloggen enzovoort. Eerst moet u het originele instellingenbestand kopiëren, zodat u in geval van problemen alles kunt herstellen zoals het was:

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

Open vervolgens het bestand in een editor:

sudo vi /etc/vsftpd.conf

Voeg vervolgens deze instellingen toe. U zult de waarden van de opgegeven strings moeten vinden en wijzigen; u moet geen nieuwe toevoegen als ze al bestaan. Schakel eerst anoniem inloggen uit:

anoniem_enable = NEE

Wij staan ​​het gebruik van lokale gebruikersnamen toe om in te loggen:

write_enable = JA

Stel de waarde in masker voor nieuwe bestanden aangemaakt via FTP:

lokale_umask = 022

We voegen een bericht toe over de noodzaak om na registratie een map te selecteren:

dirmessage_enable = JA

Registreer alle transacties voor bestandsoverdracht naar een logbestand en gebruik het standaard formaat loggen:

xferlog_enable = JA
xferlog_std_format=JA

Gebruik poort 20 voor gegevensoverdracht in plaats van willekeurig, dit is nodig voor een normale werking van de firewall:

connect_from_port_20 = JA

We geven aan dat we moeten wachten op inkomende verbindingen:

Gebruik de PAM-service vsftpd:

pam_service_name=vsftpd

Ten slotte staan ​​we authenticatie toe van alleen de gebruikers die in het bestand staan ​​vermeld gebruikerslijst:

userlist_enable = JA

We specificeren het bestand met onze virtuele gebruikers:

userlist_file=/etc/vsftpd.userlist

Standaard mogen dergelijke gebruikers niet inloggen, maar we willen precies het tegenovergestelde, dus voeg deze regel toe:

userlist_deny=NEE

Wanneer gebruikers inloggen op de FTP-server, kunnen ze alleen in de FTP-hoofdmap werken. Als u wilt dat gebruikers alleen beperkt zijn tot hun thuismap, moet u de commentaar op deze regels verwijderen:

chroot_local_user = JA
allow_writeable_chroot = JA

De eerste regel geeft aan dat de gebruiker in een geïsoleerde thuismap moet worden geplaatst, en de tweede regel dat hij naar deze map mag schrijven. FTP-installatie Ubuntu is bijna klaar, sla de wijzigingen in het configuratiebestand op en start opnieuw op vsftpd:

sudo systemctl herstart vsftpd

vsftpd testen

De server is gereed, maar het systeem is nog niet volledig geconfigureerd. Laten we eerst onze testgebruiker maken met behulp van gebruikeradd:

sudo useradd -m -c "Testgebruiker" -s /bin/bash testuser
$ sudo passwd testuser

Omdat we namens hem verbinding willen maken met de FTP-server, moeten we deze toevoegen aan vsftpd.userlist:

echo "tester" | sudo tee -a /etc/vsftpd.userlist
$ cat /etc/vsftpd.userlist

Dit is het moment om verbinding te maken met onze FTP-server en te controleren hoe alles daar werkt. Laten we proberen in te loggen als een anonieme gebruiker:

Het zal ons niet lukken. Laten we nu proberen in te loggen als onze testgebruiker, en alles zal werken zoals het zou moeten.

Houd er rekening mee dat het gevaarlijk is om gebruikers schrijftoegang te geven tot hun thuismap. Doe dit alleen als u zeker weet dat het nodig en veilig is.

Thuismappen voor gebruikers instellen

Om de beveiligingsproblemen op de een of andere manier te omzeilen, kunt u een andere map gebruiken in plaats van de thuismap om deze aan de gebruiker te verstrekken. Laten we eerst een map zoals deze maken voor onze gebruiker:

sudo mkdir -p /home/testuser/ftp/files

Laten we de schrijfrechten voor de ftp-map verwijderen:

sudo chown niemand:nogroup /home/testuser/ftp
$ sudo chmod a-w/home/testgebruiker/ftp

Geef vervolgens de benodigde machtigingen aan de gebruiker om naar de submap te schrijven.

sudo chown -R testuser:testuser /home/testuser/ftp/files
$ sudo chmod -R 0770 /home/testuser/ftp/files/

Laten we nu terugkeren naar het configuratiebestand vsftpd.conf. Eerste commentaar uit de regel:

allow_writeable_chroot = JA

Voeg nu deze regels toe:

user_sub_token = $USER
local_root=/home/$USER/ftp

De eerste voegt de variabele $USER toe, die de gebruikersnaam bevat, en de tweede sets hoofdmap voor elke gebruiker. Het enige dat overblijft is het opnieuw opstarten van de FTP-server:

sudo systemctl herstart vsftpd

U kunt nu weer als die gebruiker inloggen en u zult zien dat de door ons opgegeven map nu in gebruik is.

Een beveiligde verbinding opzetten

De installatie van FTP op Ubuntu 16.04 is voltooid, maar tegenwoordig is het niet veilig om open gegevensoverdracht via het netwerk te gebruiken. Al het mogelijke moet gecodeerd zijn. Daarom zullen we bekijken hoe u een veilige verbinding voor vsftpd kunt opzetten. Laten we eerst een map maken en het certificaat zelf genereren dat we gaan gebruiken:

sudo mkdir /etc/ssl/private
$ sudo openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem

Vervolgens moet u toegang verlenen tot de poorten van het beschermde bestand FTP-verbindingen van UFW-firewall:

sudo ufw staat 990/tcp toe
$ sudo ufw staat 40000:50000/tcp toe
$ sudo ufw-status

Het enige dat overblijft is een paar wijzigingen aanbrengen in de instellingen van de FTP-server zelf. We moeten inschakelen ssl_enable en schakel ondersteuning voor encryptie uit SSLV2 En SSLV3, wij vertrekken alleen tlsv1:

ssl_enable=JA
ssl_tlsv1=JA
ssl_sslv2=NEE
ssl_sslv3=NEE

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key

Voorkom dat anonieme gebruikers inloggen via SSL:

allow_anon_ssl=NEE
force_local_data_ssl=JA
force_local_logins_ssl=JA

Laten we nu het meest complexe SSL-codering installeren:

ssl_ciphers=HOOG

En configureer het bereik van poorten voor gegevensoverdracht:

pasv_min_port=40000
pasv_max_port=50000

Rest ons nog om onze service opnieuw te starten:

sudo systemctl herstart vsftpd

Laten we nu eens testen wat we hebben:

Nu worden alle gegevens via een gecodeerde verbinding verzonden. De installatie van Ubuntu FTP Server is voltooid.

Conclusies

In dit artikel hebben we gekeken hoe je FTP kunt installeren op Ubuntu Server 16.04, en hoe je FTP kunt configureren voor maximale beveiliging, inclusief het instellen ervan via SSL. Als je vragen hebt, stel ze dan in de reacties!

Als je de vsftpd-service al hebt geïnstalleerd, ga dan direct naar punt 2, anders in volgorde:
1. B Debian-distributie, voer het commando uit: apt-get install vsftpd
Alle handelingen om het te downloaden en te installeren duren ongeveer 1-3 minuten; u moet "y" antwoorden op de vraag van het installatieprogramma.
2. Zoek het configuratiebestand van deze dienst, hij ligt erin /etc/vsftpd.conf, we bewerken het nano of ingebouwd middernacht commandant editor.
nano /etc/vsftpd.conf
Vervolgens controleren we enkele van de daarin beschreven instellingen:
— stel een verbod in op het verbinden van anonieme gebruikers, zoek de optie “ anoniem_inschakelen" en wijs er de waarden aan toe " NEE«.
— verwijder de opmerking bij de optie “ lokaal_inschakelen" En " schrijf_enable". (met de eerste optie kunnen gebruikers die in het systeem zijn geregistreerd een gebruikersnaam en wachtwoord gebruiken om in te loggen op de server / met de tweede optie kunnen gebruikers FTP-opnameopdrachten uitvoeren)
- wij vinden " chroot_local_user" als deze add-on is ingesteld op " Ja"(hoogstwaarschijnlijk de standaard), zullen alle systeemgebruikers zich in de chroot-map bevinden en geen toegang hebben tot andere servermappen.
We slaan alle wijzigingen op die we hebben aangebracht. Voor nano: druk op ctr+o -> Enter (opslaan) -> ctrl+x (sluiten). Voor middernacht commandant— druk op F2 (opslaan) en vervolgens op F10 (afsluiten).
3. Als alles is voorbereid, maken we een gebruiker aan die FTP gaat gebruiken: ( Ik maak van tevoren een reservering dat de gebruikersnaam van alles kan zijn, het is niet nodig om user te schrijven, zoals in in dit voorbeeld! dit is een voorbeeld!)
- voer het commando uit in de terminal gebruiker toevoegen
- dan zal het hulpprogramma voor het aanmaken van een nieuwe gebruiker u verschillende vragen stellen, waarop u de antwoorden via het toetsenbord invoert (het verzoek om zijvelden zoals telefoonnummer enz. in te vullen kan worden genegeerd en drukt u gewoon op Enter), en schrijf aan het einde bij het opslaan “ja”
- voeg nu de nieuw aangemaakte gebruiker toe aan de ftpusers-groep ( de groepsnaam kan van alles zijn anderen, door jou zelf uitgevonden, in in dit geval- dit is een voorbeeld! )
groupadd ftpusers
usermod -G ftpusers-gebruiker
in de map /thuis er is al een gebruikersmap met dezelfde naam aangemaakt.
— laten we in deze map nog twee mappen maken voor bestanden en voor logboeken.
mkdir /home/user/www
mkdir /home/gebruiker/logs
— vervolgens zullen we de eigenaar van deze mappen veranderen omdat We voerden huidige bewerkingen uit onder de gebruiker met wortelrechten, resp. en de attributen werden toegewezen als voor root
chown-gebruiker:ftpusers /home/user/www
chown gebruiker:ftpusers /home/user/logs
chmod 555 /home/gebruiker
4. Start onze service opnieuw met het commando
service vsftpd opnieuw opstarten
5. We proberen verbinding te maken via FTP-client(FileZilla,Winscp,Explorer) op IP-adres of domeinnaam de host waarop deze acties zijn uitgevoerd door de login van de aangemaakte gebruiker en zijn wachtwoord in te voeren. Na het inloggen zijn de eerder aangemaakte mappen beschikbaar.