Android

Hoe ftp-server in te stellen met vsftpd op centos 7

Linux - FTP Server Setup (vsftpd)

Linux - FTP Server Setup (vsftpd)

Inhoudsopgave:

Anonim

FTP (File Transfer Protocol) is een standaard client-server netwerkprotocol waarmee gebruikers bestanden van en naar een extern netwerk kunnen overbrengen.

Er zijn verschillende open source FTP-servers beschikbaar voor Linux. De meest populaire en meest gebruikte zijn PureFTPd, ProFTPD en vsftpd.

In deze tutorial installeren we vsftpd (Very Secure Ftp Daemon) op CentOS 7. Het is een stabiele, veilige en snelle FTP-server. We laten u ook zien hoe u vsftpd kunt configureren om gebruikers te beperken tot hun thuismap en de volledige overdracht te coderen met SSL / TLS.

Gebruik SCP of SFTP voor veiligere en snellere gegevensoverdracht.

voorwaarden

Zorg ervoor dat u bent aangemeld als een gebruiker met sudo-rechten voordat u doorgaat met deze zelfstudie.

Vsftpd installeren op CentOS 7

Het vsftpd-pakket is beschikbaar in de standaard CentOS-opslagplaatsen. Voer de volgende opdracht uit om deze te installeren:

sudo yum install vsftpd

Nadat het pakket is geïnstalleerd, start u de vsftpd-daemon en schakelt u deze automatisch in tijdens het opstarten:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

U kunt controleren of de vsftpd-service actief is door de status af te drukken:

sudo systemctl status vsftpd

De output ziet er ongeveer zo uit, wat aangeeft dat de vsftpd-service actief is en actief is:

● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Vsftpd configureren

Het configureren van de vsftpd-service omvat het bewerken van het /etc/vsftpd/vsftpd.conf configuratiebestand. De meeste instellingen zijn goed gedocumenteerd in het configuratiebestand. Ga voor alle beschikbare opties naar de officiële vsftpd-pagina.

In de volgende secties zullen we enkele belangrijke instellingen bespreken die nodig zijn om een ​​veilige vsftpd-installatie te configureren.

Begin met het openen van het vsftpd configuratiebestand:

sudo nano /etc/vsftpd/vsftpd.conf

1. FTP-toegang

We geven alleen toegang tot de FTP-server voor de lokale gebruikers, vinden de anonymous_enable en local_enable richtlijnen en verifiëren uw configuratieovereenkomst met de onderstaande regels:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

2. Uploads inschakelen

write_enable instelling write_enable om wijzigingen in het bestandssysteem toe te staan, zoals het uploaden en verwijderen van bestanden.

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Chroot-gevangenis

Voorkom dat FTP-gebruikers toegang krijgen tot bestanden buiten hun homedirectory door de chroot richtlijn niet op te geven.

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

Wanneer chroot is ingeschakeld, weigert vsftpd standaard bestanden te uploaden als de map waarin gebruikers zijn vergrendeld, schrijfbaar is. Dit is om een ​​beveiligingslek te voorkomen.

Gebruik een van de onderstaande methoden om uploads toe te staan ​​wanneer chroot is ingeschakeld.

  • Methode 1. - De aanbevolen methode om uploaden toe te staan, is chroot ingeschakeld te houden en FTP-mappen te configureren. In deze zelfstudie maken we een ftp map in de startpagina van de gebruiker die als chroot fungeert en een beschrijfbare uploads voor het uploaden van bestanden.

    /etc/vsftpd/vsftpd.conf

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

    Methode 2. - Een andere optie is om de volgende richtlijn toe te voegen aan het vsftpd-configuratiebestand. Gebruik deze optie als u uw gebruiker schrijfbare toegang tot zijn thuismap moet verlenen.

    /etc/vsftpd/vsftpd.conf

    allow_writeable_chroot=YES

4. Passieve FTP-verbindingen

vsftpd kan elke poort gebruiken voor passieve FTP-verbindingen. We specificeren het minimum en maximum bereik van poorten en openen later het bereik in onze firewall.

Voeg de volgende regels toe aan het configuratiebestand:

/etc/vsftpd/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Aanmelding gebruiker beperken

Om alleen bepaalde gebruikers toe te staan ​​in te loggen op de FTP-server, voegt u de volgende regels toe na de userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

userlist_file=/etc/vsftpd/user_list userlist_deny=NO

Als deze optie is ingeschakeld, moet u expliciet opgeven welke gebruikers kunnen inloggen door de gebruikersnamen toe te voegen aan het bestand /etc/vsftpd/user_list (één gebruiker per regel).

6. Beveiliging van transmissies met SSL / TLS

Om de FTP-transmissies te coderen met SSL / TLS, moet u een SSL-certificaat hebben en de FTP-server configureren om het te gebruiken.

U kunt een bestaand SSL-certificaat gebruiken dat is ondertekend door een vertrouwde certificeringsinstantie of een zelfondertekend certificaat maken.

In deze zelfstudie genereren we een zelfondertekend SSL-certificaat met behulp van de opdracht openssl .

De volgende opdracht maakt een 2048-bits privésleutel en een zelfondertekend certificaat dat 10 jaar geldig is. Zowel de privésleutel als het certificaat worden in hetzelfde bestand opgeslagen:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Nadat het SSL-certificaat is gemaakt, opent u het vsftpd-configuratiebestand:

sudo nano /etc/vsftpd/vsftpd.conf

Zoek de richtlijnen rsa_cert_file en rsa_private_key_file , wijzig hun waarden in het pad van het pam bestand en stel de ssl_enable op YES :

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Tenzij anders aangegeven, gebruikt de FTP-server alleen TLS om beveiligde verbindingen te maken.

Start de vsftpd-service opnieuw

Als u klaar bent met bewerken, ziet het vsftpd-configuratiebestand (exclusief opmerkingen) er ongeveer zo uit:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Sla het bestand op en start de vsftpd-service opnieuw om de wijzigingen door te voeren:

sudo systemctl restart vsftpd

De firewall openen

Om poort 21 (FTP-opdrachtpoort), poort 20 (FTP-gegevenspoort) en 30000-31000 (bereik van passieve poorten) te openen, geeft u de volgende opdrachten uit:

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Laad de firewallregels opnieuw door te typen:

firewall-cmd --reload

Een FTP-gebruiker maken

Om onze FTP-server te testen, maken we een nieuwe gebruiker.

  • Als u al een gebruiker hebt die FTP-toegang wilt verlenen, slaat u de eerste stap over. Als u allow_writeable_chroot=YES in uw configuratiebestand allow_writeable_chroot=YES slaat u de derde stap over.
  1. Maak een nieuwe gebruiker met de naam newftpuser :

    sudo adduser newftpuser

    Vervolgens moet u het gebruikerswachtwoord instellen:

    sudo passwd newftpuser

    Voeg de gebruiker toe aan de lijst met toegestane FTP-gebruikers:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

    Maak de FTP-mapstructuur en stel de juiste machtigingen in:

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    Zoals besproken in de vorige sectie, kan de gebruiker zijn bestanden uploaden naar de map ftp/upload .

Op dit moment is uw FTP-server volledig functioneel en moet u verbinding kunnen maken met uw server via elke FTP-client die kan worden geconfigureerd om TLS-codering te gebruiken, zoals FileZilla.

Shell-toegang uitschakelen

Bij het aanmaken van een gebruiker heeft de gebruiker standaard SSH-toegang tot de server.

Om shell-toegang uit te schakelen, maken we een nieuwe shell die eenvoudigweg een bericht afdrukt waarin de gebruiker wordt verteld dat hun account beperkt is tot alleen FTP-toegang.

Voer de volgende opdrachten uit om de shell /bin/ftponly maken en uitvoerbaar te maken:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Voeg de nieuwe shell toe aan de lijst met geldige shells in het bestand /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Wijzig de gebruikersshell in /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Gebruik dezelfde opdracht om de shell te wijzigen voor andere gebruikers die u alleen FTP-toegang wilt geven.

Conclusie

In deze tutorial hebt u geleerd hoe u een veilige en snelle FTP-server op uw CentOS 7-systeem installeert en configureert.

ftp centos