Linux - FTP Server Setup (vsftpd)
Inhoudsopgave:
- voorwaarden
- Vsftpd installeren op Debian 9
- Vsftpd configureren
- 1. FTP-toegang
- 2. Uploads inschakelen
- 3. Chroot-gevangenis
- 4. Passieve FTP-verbindingen
- 5. Aanmelding gebruiker beperken
- 6. Beveiliging van transmissies met SSL / TLS
- Start de vsftpd-service opnieuw
- De firewall openen
- FTP-gebruiker maken
- Shell-toegang uitschakelen
- Conclusie
FTP (File Transfer Protocol) is een standaard netwerkprotocol dat wordt gebruikt om bestanden van en naar een extern netwerk over te dragen. Gebruik SCP of SFTP voor veiligere en snellere gegevensoverdracht.
Er zijn veel open source FTP-servers beschikbaar voor Linux. De meest populaire en meest gebruikte zijn PureFTPd, ProFTPD en vsftpd.
In deze zelfstudie wordt uitgelegd hoe u vsftpd (Very Secure Ftp Daemon) installeert en configureert op Debian 9. vsftpd 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.
voorwaarden
De gebruiker waarbij u bent aangemeld, moet sudo-rechten hebben om pakketten te kunnen installeren.
Vsftpd installeren op Debian 9
Het vsftpd-pakket is beschikbaar in de Debian-repositories. De installatie is vrij eenvoudig:
sudo apt update
sudo apt install vsftpd
vsftpd-service wordt automatisch gestart nadat het installatieproces is voltooid. Controleer dit door de servicestatus 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 server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago Main PID: 1394 (vsftpd) CGroup: /system.slice/vsftpd.service └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf
Vsftpd configureren
De vsftpd-server kan worden geconfigureerd door het
vsftpd.conf
bestand te wijzigen, te vinden in de map
/etc
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:
1. FTP-toegang
Zoek de
anonymous_enable
en
local_enable
richtlijnen en verifieer uw configuratieovereenkomst met de onderstaande regels:
anonymous_enable=NO local_enable=YES
Dit zorgt ervoor dat alleen de lokale gebruikers toegang hebben tot de FTP-server.
2. Uploads inschakelen
write_enable
instelling
write_enable
om wijzigingen in het bestandssysteem toe te staan, zoals het uploaden en verwijderen van bestanden.
3. Chroot-gevangenis
Om te voorkomen dat FTP-gebruikers toegang krijgen tot bestanden buiten hun homedirectory, moet de
chroot
instelling worden
chroot
.
chroot_local_user=YES
Om een beveiligingslek te voorkomen, weigert vsftpd standaard om bestanden te uploaden als de map waarin gebruikers zijn vergrendeld beschrijfbaar is.
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
/etc/vsftpd.confftpmap in de startpagina van de gebruiker die als chroot fungeert en een beschrijfbareuploadsvoor het uploaden van bestanden.user_sub_token=$USER local_root=/home/$USER/ftpMethode 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.confallow_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.conf
pasv_min_port=30000 pasv_max_port=31000
5. Aanmelding gebruiker beperken
Om alleen bepaalde gebruikers toe te staan zich aan te melden bij de FTP-server, voegt u de volgende regels toe aan het einde van het bestand:
userlist_enable=YES 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/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Nadat het SSL-certificaat is gemaakt, opent u het vsftpd-configuratiebestand:
sudo nano /etc/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
:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/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.conf
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Sla het bestand op en start de vsftpd-service opnieuw om de wijzigingen door te voeren:
De firewall openen
Voer de volgende opdrachten uit om poort
21
(FTP-opdrachtpoort), poort
20
(FTP-gegevenspoort) en
30000-31000
(bereik van passieve poorten) te openen:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Om te voorkomen dat we worden buitengesloten, openen we ook poort
22
:
sudo ufw allow OpenSSH
Laad de UFW-regels opnieuw door UFW uit en weer in te schakelen:
sudo ufw disable
sudo ufw enable
Om de wijzigingen te controleren:
sudo ufw status
Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
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=YESin uw configuratiebestandallow_writeable_chroot=YESslaat u de derde stap over.
-
Maak een nieuwe gebruiker met de naam
newftpuser:sudo adduser newftpuserVoeg de gebruiker toe aan de lijst met toegestane FTP-gebruikers:
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_listMaak de FTP-mapstructuur en stel de juiste machtigingen in:
sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftpZoals 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.
Maak de shell
/bin/ftponly
en maak deze uitvoerbaar:
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 van alle 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 Debian 9-systeem installeert en configureert.
ftp debianHoe een firewall met ufw op debian 9 in te stellen
UFW (ongecompliceerde firewall) is een gebruiksvriendelijk front-end voor het beheer van iptables-firewallregels en het belangrijkste doel is het beheer van iptables eenvoudiger te maken of, zoals de naam al zegt, ongecompliceerd. In deze zelfstudie laten we u zien hoe u een firewall met UFW op Debian 9 instelt.
Hoe apache virtuele hosts op debian 9 in te stellen
Met Apache Virtual Hosts kunt u meer dan één domein op één machine hosten. In deze zelfstudie helpen we u bij het instellen van Apache Virtual Hosts op Debian 9.
Hoe nginx serverblokken op debian 9 in te stellen
In deze zelfstudie laten we u zien hoe u Nginx-serverblokken instelt op Debian 9. Met Serverblokken kunt u meer dan één website op één machine uitvoeren.







