vsftpd FTP Server installeren en beveiligen met TLS op Debian 11

File Transfer Protocol of FTP is een heel oud en een van de bekendste netwerkprotocollen. Het is tegenwoordig niet veiliger dan SFTP of SCP maar is nog steeds de eerste keus van veel gebruikers om bestanden over te brengen tussen een server en een cliënt. FTP staat bekend als onveilig omdat het gegevens samen met gebruikersgegevens overdraagt zonder enige vorm van versleuteling.

Er is tegenwoordig een wild scala aan open-source FTP servers beschikbaar, zoals FTPD, VSFTPD, PROFTPD, en pureftpd. Van al deze is VSFTPD een zeer veilig, snel, en het meest wild gebruikt protocol om bestanden tussen twee systemen over te brengen.

VSFTPD is ook bekend als “Very Secure File Transfer Protocol Daemon” met ondersteuning van SSL, IPv6, expliciete en impliciete FTPS.

In deze gids laten we je zien hoe je vsftpd FTP Server op Debian 11 kunt installeren.

Vereisten

Een server met Debian 11.
Een niet-root gebruiker met sudo privileges.

1. Installeer vsftpd

Voordat je de installatie start, update je je Debian 11 server door het volgende commando in de terminal uit te voeren:

sudo apt update -y
sudo apt upgrade -y

Debian heeft een zeer grote repository en het vsftpd pakket is beschikbaar in de officiële repository, Je kunt dus gemakkelijk vsftpd installeren door het volgende commando uit te voeren:

sudo apt install vsftpd -y

Start na de installatie van het pakket de vsftpd dienst, controleer de status van de dienst en schakel de dienst bij het opstarten in.

sudo systemctl start vsftpd

sudo systemctl status vsftpd

systemctl enable vsftpd.service

2. Maak een FTP gebruiker aan en configureer voor FTP login

Maak nu een nieuwe gebruikersaccount voor FTP, met deze gebruiker zullen we later op de FTP server inloggen.

sudo adduser sohan

Gebruikers die in het bestand vsftpd.userlist worden toegevoegd hebben toestemming om de FTP server te benaderen.

Vervolgens moeten we gebruiker sohan toevoegen aan vsftpd gebruikerslijst. Open het bestand en voeg een gebruiker toe door het volgende commando uit te voeren:

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

3. Maak een FTP gebruikersmap

Vervolgens moeten we een FTP directory maken voor onze FTP gebruiker en eigendom instellen met het volgende commando:

sudo mkdir -p /home/sohan/ftp_directory

sudo chown nobody:nogroup /home/sohan/ftp_directory

sudo chmod a-w /home/sohan/ftp_directory

Maak nu een directory waarin bestanden kunnen worden geüpload en geef eigendom aan de gebruiker sohan door het volgende commando uit te voeren:

sudo mkdir -p /home/sohan/ftp_directory/ftp_data
sudo chown sohan:sohan /home/sohan/ftp_directory/ftp_data
cd /home/sohan/ftp_directory/
chmod -R 777 ftp_data

Maak een FTP map

4. Configureer Vsftpd

Vervolgens moet je enkele standaard parameters veranderen om een FTP server in te stellen.

Maak eerst een reservekopie van het oorspronkelijke vsftpd configuratiebestand.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

In de FTP server wordt standaard toegang verleend aan anonieme gebruikers. Om de FTP server veiliger te maken, zullen we anonieme gebruikers login uitschakelen en alleen toegang verlenen aan de specifieke gebruiker.

Open vervolgens vsftpd.conf bestand en breng wijzigingen aan zoals hieronder:

vim /etc/vsftpd.conf
anonymous_enable=NO

local_enable=YES

Er zijn nog enkele andere veranderingen die we in de configuratie moeten aanbrengen, Open eerst vsftpd.conf

sudo vim /etc/vsftpd.conf

Zorg er vervolgens voor dat vsftpd.conf de volgende regels moet bevatten:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
write_enable=YES
local_umask=022
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
user_sub_token=$USER
local_root=/home/$USER/ftp_directory
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Sla het bestand op en sluit het. Je kunt de bovenstaande configuratie naar eigen behoefte veranderen.

Start nu vsftpd service opnieuw op en controleer de status van de service door de volgende commando’s uit te voeren:

sudo systemctl restart vsftpd

Controleer vervolgens of vsftpd service in de lopende status is door in Terminal het volgende commando uit te voeren:

sudo systemctl status vsftpd

5. sta vsftpd toe in firewall en krijg toegang tot de vsftpd server

Als je vervolgens een firewall gebruikt, sta dan poort 21 en poort 22 toe door het volgende commando uit te voeren:

sudo ufw allow 21/tcp

sudo ufw allow 22/tcp

Herlaad dan de firewall om de veranderingen toe te passen:

sudo ufw reload

Open vervolgens een willekeurig FTP programma zoals FileZilla en voer de gegevens van je server in, zoals Protocol, Host , User:

Configureer de firewall
Klik nu op connect en voer dan je wachtwoord in:

Voer wachtwoord in

Dan toont het details zoals hieronder, klik op OK.

Accepteer nieuwe gastheer

Op dit punt ben je verbonden met de FTP server, en kun je bestanden/mappen uploaden en downloaden.

FTP server verbinding was succesvol

6. Vsftpd beveiligen met SSL/TLS

Stel dat je versleutelde gegevens via FTP wilt overbrengen, om dat te doen moet je een SSL certificaat maken en een SSL/TLS verbinding inschakelen.

Je kunt een certificaat maken met OpenSSL met het volgende commando:

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

Nu moet je het vsftpd.conf bestand bewerken en enkele veranderingen aanbrengen:

sudo vim /etc/vsftpd.conf

Voeg als laatste de volgende regels toe:

rsa_cert_file=/etc/cert/vsftpd.pem
rsa_private_key_file=/etc/cert/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

Sla het bestand op en sluit het af, herstart dan Vsftpd met het volgende commando:

sudo systemctl restart vsftpd

7. Toegang tot FTP over SSL/TLS

Open FileZilla FTP cliënt en ga naar Bestand>Sites Manager. Klik hier op Nieuwe site toevoegen en voer de host/site naam in, voeg het IP adres toe, definieer het te gebruiken protocol, Encryptie: Require to explicate FTP over TLS en logontype. Klik dan op de knop Connect. Je zou de volgende afbeelding moeten zien:

Toegang tot FTP over SSL/TLS

Vervolgens voer je je wachtwoord in:

Voer wachtwoord in
Vervolgens zie je het SSL certificaat, controleer de certificaatgegevens en klik op OK.

SSL cert accepteren
Tenslotte zie je de inhoud van je FTP server en kun je veilig je gegevens van het ene systeem naar het andere overbrengen.

FTP server verbinding geslaagd

Conclusie

In de bovenstaande gids hebben we de VSFTPD server op Debian 11 geïnstalleerd. We leren ook hoe te verbinden via een onversleutelde en via een versleutelde verbinding met een SSL certificaat.