Zoeken op website

Hoe FTP-server in Ubuntu te installeren en configureren


FTP (File Transfer Protocol) is een relatief oud en meest gebruikt standaardnetwerkprotocol dat wordt gebruikt voor het uploaden/downloaden van bestanden tussen twee computers via een netwerk. FTP is echter oorspronkelijk onveilig, omdat het gegevens samen met gebruikersgegevens (gebruikersnaam en wachtwoord) zonder codering verzendt.

Waarschuwing: als u van plan bent FTP te gebruiken, overweeg dan om de FTP-verbinding te configureren met SSL/TLS (dekt in volgend artikel). Anders is het altijd beter om beveiligde FTP zoals SFTP te gebruiken.

Voorgesteld leesvoer: FTP-server installeren en beveiligen in CentOS 7

In deze tutorial laten we zien hoe u een FTP-server (VSFTPD voluit “Very Secure FTP Daemon“) installeert, configureert en beveiligt in Ubuntu voor een krachtige beveiliging tegen FTP-kwetsbaarheden.

Stap 1: VsFTP-server installeren in Ubuntu

1. Eerst moeten we de lijst met systeempakketbronnen bijwerken en vervolgens het binaire pakket VSFTPD als volgt installeren:

sudo apt-get update
sudo apt-get install vsftpd

2. Zodra de installatie is voltooid, wordt de service in eerste instantie uitgeschakeld. Daarom moeten we deze voorlopig handmatig starten en ook inschakelen dat deze automatisch wordt gestart vanaf de volgende systeemstart:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Als u vervolgens de UFW-firewall hebt ingeschakeld (deze is standaard niet ingeschakeld) op de server, moet u de poorten 21 en 20 openen. waar de FTP-daemons luisteren, om toegang tot FTP-services vanaf externe machines mogelijk te maken, voegt u vervolgens de nieuwe firewallregels als volgt toe:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Stap 2: VsFTP-server configureren en beveiligen in Ubuntu

4. Laten we nu een paar configuraties uitvoeren om onze FTP-server in te stellen en te beveiligen. Eerst zullen we een back-up maken van het originele configuratiebestand /etc/vsftpd/vsftpd.conf zoals Dus:

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

Laten we vervolgens het configuratiebestand vsftpd openen.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Voeg de volgende opties toe/wijzig deze met deze waarden:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Configureer nu VSFTPD om FTP-toegang toe te staan/te weigeren aan gebruikers op basis van het gebruikerslijstbestand /etc/vsftpd.userlist.

Houd er rekening mee dat gebruikers die vermeld staan in userlist_file=/etc/vsftpd.userlist standaard geen inlogtoegang krijgen met de optie userlist_deny=YES als userlist_enable=YES .

Maar de optie userlist_deny=NO verdraait de betekenis van de standaardinstelling, zodat alleen gebruikers van wie de gebruikersnaam expliciet wordt vermeld in userlist_file=/etc/vsftpd.userlist toestemming krijgen om log in op de FTP-server.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Belangrijk: wanneer gebruikers inloggen op de FTP-server, worden ze in een gechroote jail geplaatst, dit is de lokale hoofdmap die zal fungeren als hun thuismap voor de FTP-sessie alleen.

Vervolgens zullen we twee mogelijke scenario's bekijken voor het instellen van de chrooted jail (lokale root) map, zoals hieronder uitgelegd.

6. Laten we nu deze twee volgende opties toevoegen/wijzigen/verwijderen om FTP-gebruikers te beperken tot hun thuismappen.

chroot_local_user=YES
allow_writeable_chroot=YES

De optie chroot_local_user=YES betekent vooral dat lokale gebruikers na het inloggen in een chroot jail worden geplaatst, hun thuismap.

En we moeten ook begrijpen dat VSFTPD om veiligheidsredenen standaard niet toestaat dat de chroot jail directory beschrijfbaar is. We kunnen echter de optie allow_writeable_chroot=YES gebruiken om deze instelling uit te schakelen.

Sla het bestand op en sluit het. Vervolgens moeten we de VSFTPD-services opnieuw opstarten om de bovenstaande wijzigingen door te voeren:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Stap 3: VsFTP-server testen in Ubuntu

7. Nu gaan we de FTP-server testen door als volgt een FTP-gebruiker aan te maken met de opdracht useradd:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Vervolgens moeten we de gebruiker aaronkilik expliciet vermelden in het bestand /etc/vsftpd.userlist met de echo-opdracht en tee-opdracht, zoals hieronder:

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

8. Nu wordt het tijd om te testen of onze bovenstaande configuraties naar behoren functioneren. We beginnen met het testen van anonieme logins; uit de onderstaande uitvoer kunnen we duidelijk zien dat anonieme logins niet zijn toegestaan op de FTP-server:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Laten we vervolgens testen of een gebruiker die niet in het bestand /etc/vsftpd.userlist staat, toestemming krijgt om in te loggen, wat niet waar is uit de volgende uitvoer :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Nu zullen we een laatste test uitvoeren om te bepalen of een gebruiker die in het bestand /etc/vsftpd.userlist staat, daadwerkelijk in zijn/haar thuismap wordt geplaatst nadat Log in. En dit blijkt uit de onderstaande uitvoer:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Waarschuwing: het instellen van de optie allow_writeable_chroot=YES kan zo gevaarlijk zijn dat het mogelijke veiligheidsimplicaties heeft, vooral als de gebruikers uploadrechten hebben, of meer nog, shell-toegang. Gebruik het alleen als u precies weet wat u doet.

We moeten opmerken dat deze veiligheidsimplicaties niet specifiek zijn voor VSFTPD, ze kunnen ook alle andere FTP-daemons beïnvloeden die aanbieden om lokale gebruikers in chroot-jails te plaatsen.

Om deze reden zullen we in het onderstaande gedeelte een veiligere methode uitleggen voor het instellen van een andere niet-schrijfbare lokale hoofdmap voor een gebruiker.

Stap 4: Configureer de thuismappen van FTP-gebruikers in Ubuntu

11. Open nu het VSFTPD-configuratiebestand nogmaals.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

en geef commentaar op de onveilige optie met het teken #, zoals hieronder weergegeven:

#allow_writeable_chroot=YES

Maak vervolgens de alternatieve lokale hoofdmap voor de gebruiker (aaronkilik, die van jou is mogelijk niet dezelfde) en stel de vereiste machtigingen in door schrijfrechten uit te schakelen voor alle andere gebruikers in deze map:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Maak vervolgens een map aan onder de lokale root met de juiste rechten, waar de gebruiker zijn bestanden zal opslaan:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Voeg daarna de onderstaande opties toe/wijzig ze in het VSFTPD-configuratiebestand met de bijbehorende waarden:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Sla het bestand op en sluit het. En start de VSFTPD-services opnieuw met de recente instellingen:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Laten we nu een laatste controle uitvoeren en ervoor zorgen dat de lokale hoofdmap van de gebruiker de FTP-map is die we in zijn thuismap hebben gemaakt.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Dat is het! Vergeet niet om uw mening over deze gids te delen via het onderstaande opmerkingenformulier of ons mogelijk belangrijke informatie over het onderwerp te verstrekken.

Last but not least: mis ons volgende artikel niet, waarin we zullen beschrijven hoe u een FTP-server kunt beveiligen met behulp van SSL/TLS-verbindingen in Ubuntu 16.04/16.10. Houd tot die tijd altijd rekening met TecMint.