Wéi installéiere a konfiguréieren FTP Server an Ubuntu


FTP (File Transfer Protocol) ass e relativ alen a meescht benotzte Standardnetzprotokoll dee benotzt gëtt fir Dateien tëscht zwee Computeren iwwer en Netz eropzelueden/erofzelueden. Wéi och ëmmer, FTP duerch seng ursprénglech onsécher, well et Donnéeën zesumme mat Benotzer Umeldungsinformatiounen (Benotzernumm a Passwuert) ouni Verschlësselung iwwerdréit.

Opgepasst: Wann Dir plangt FTP ze benotzen, betruecht d'Konfiguratioun vun FTP Verbindung mat SSL/TLS (gëtt am nächsten Artikel Cover). Soss ass et ëmmer besser sécher FTP wéi SFTP ze benotzen.

An dësem Tutorial wäerte mir weisen wéi een e FTP-Server installéiere, konfiguréieren an ofsécheren (VSFFTPD a voller \Very Secure FTP Daemon\) an Ubuntu fir eng mächteg Sécherheet géint FTP-Schwächen ze hunn.

Schrëtt 1: VsFTP Server an Ubuntu installéieren

1. Als éischt musse mir d'System Package Quellenlëscht aktualiséieren an dann den VSFTPD Binär Package wéi follegt installéieren:

$ sudo apt-get update
$ sudo apt-get install vsftpd

2. Wann d'Installatioun fäerdeg ass, gëtt de Service ufanks deaktivéiert, dofir musse mir et manuell fir déi mëttlere Zäit starten an och aktivéieren fir automatesch vum nächste Systemboot ze starten:

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

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

3. Als nächst, wann Dir UFW Firewall aktivéiert hutt (ass net als Standard aktivéiert) um Server, musst Dir Ports 21 an 20 opmaachen, wou d'FTP-Dämone lauschteren, fir Zougang zu FTP-Servicer vu Fernmaschinnen z'erméiglechen, da füügt déi nei Firewall Regelen wéi follegt:

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

Schrëtt 2: VsFTP Server an Ubuntu konfiguréieren a sécheren

4. Loosst eis elo e puer Konfiguratiounen ausféieren fir eisen FTP-Server opzestellen an ze sécheren, als éischt erstellen mir e Backup vun der ursprénglecher Konfiguratiounsdatei /etc/vsftpd/vsftpd.conf esou:

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

Als nächst, loosst eis d'vsftpd Configuratiounsdatei opmaachen.

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

Füügt/änneren déi folgend Optiounen mat dëse Wäerter:

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. Elo konfiguréieren VSFTPD fir FTP Zougang zu Benotzer ze erlaben/ze verleegnen baséiert op der Benotzerlëscht Datei /etc/vsftpd.userlist.

Notéiert datt Par défaut, Benotzer, déi an userlist_file=/etc/vsftpd.userlist opgezielt sinn, de Loginzougang mat der userlist_deny=JO Optioun verweigert ginn wann userlist_enable=JO.

Awer d'Optioun userlist_deny=NEE verdréit d'Bedeitung vun der Default-Astellung, sou datt nëmmen Benotzer, deenen hire Benotzernumm explizit an userlist_file=/etc/vsftpd.userlist opgezielt ass, erlaabt sinn op den FTP-Server aloggen.

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   

Wichteg: Wann d'Benotzer op den FTP-Server aloggen, gi se an engem chrooted Prisong gesat, dëst ass de lokale Root-Verzeichnis deen nëmmen als Heemverzeechnes fir d'FTP-Sessioun handelt.

Als nächst wäerte mir zwee méiglech Szenarie kucken wéi Dir de chrooted Jail (lokal Root) Verzeichnis setzt, wéi hei ënnen erkläert.

6. Op dësem Punkt, loosst eis dës zwou folgend Optiounen addéieren/änneren/decommentéieren fir FTP Benotzer op hir Home Verzeichnungen ze beschränken.

chroot_local_user=YES
allow_writeable_chroot=YES

D'Optioun chroot_local_user=JO bedeit wichteg datt lokal Benotzer an engem Chroot Prisong gesat ginn, hiren Heemverzeichnis par défaut nom Login.

A mir mussen och verstoen datt VSFTPD net erlaabt datt de Chroot Prisongsverzeechnes schrëftlech ass, par défaut aus Sécherheetsgrënn, awer mir kënnen d'Optioun benotzen allow_writeable_chroot=JO fir dës Astellung auszeschalten.

Späichert d'Datei a maach se zou. Da musse mir VSFTPD Servicer nei starten fir datt d'Ännerungen hei uewen a Kraaft trieden:

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

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

Schrëtt 3: Testen VsFTP Server an Ubuntu

7. Elo wäerte mir den FTP-Server testen andeems Dir e FTP-Benotzer erstellt mat useradd Kommando wéi follegt:

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

Dann musse mir de Benotzer aaronkilik explizit an der Datei /etc/vsftpd.userlist mat dem Echo Kommando an den Tee Kommando opzielen wéi hei ënnen:

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

8. Elo ass et un der Zäit ze testen eis uewe genannte Konfiguratiounen funktionnéieren wéi néideg. Mir fänken un mat anonyme Login ze testen; mir kënne kloer aus der Ausgab hei ënnen gesinn datt anonym Login net um FTP Server erlaabt sinn:

# 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. Nächst, loosst eis testen ob e Benotzer deen net an der Datei /etc/vsftpd.userlist opgezielt ass, d'Erlaabnis kritt fir ze loggen, wat net stëmmt vun der Ausgab déi folgend ass:

# 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. Elo maache mir e leschten Test fir ze bestëmmen ob e Benotzer, deen an der Datei /etc/vsftpd.userlist opgezielt ass, tatsächlech a säin Heemverzeichnis nom Login plazéiert ass. An dëst ass wouer vun der Ausgab hei ënnen:

# 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

Opgepasst: D'Optioun allow_writeable_chroot=JO setzen kann esou geféierlech sinn, et huet méiglech Sécherheetsimplikatiounen, besonnesch wann d'Benotzer Erlaabnis fir Eroplueden hunn, oder méi esou, Shell-Zougang. Benotzt et nëmmen wann Dir genau wësst wat Dir maacht.

Mir sollten notéieren datt dës Sécherheetsimplikatioune net spezifesch fir VSFTPD sinn, si kënnen och all aner FTP-Dämone beaflossen, déi ubidden fir lokal Benotzer an Chroot-Jails ze setzen.

Aus dësem Grond, an der Rubrik hei drënner, wäerte mir eng méi sécher Method erkläre fir en aneren net-schreiwenbare lokale Root-Verzeichnis fir e Benotzer ze setzen.

Schrëtt 4: FTP User Home Directories an Ubuntu konfiguréieren

11. Elo, oppen der VSFTPD Konfiguratiounsdatei nach eng Kéier.

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

a kommentéiert déi onsécher Optioun mat dem # Zeeche wéi hei ënnendrënner:

#allow_writeable_chroot=YES

Als nächst, erstellt den alternativen lokalen Root-Verzeichnis fir de Benotzer (aaronkilik, Är ass méiglecherweis net d'selwecht) a setzt déi erfuerderlech Permissiounen andeems Dir d'Schreifrechter fir all aner Benotzer an dësem Verzeechnes deaktivéiert:

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

12. Erstellt dann e Verzeechnes ënner der lokaler Root mat de passenden Permissiounen, wou de Benotzer seng Dateien späichert:

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

Duerno addéieren/änneren d'Optiounen hei ënnen an der VSFTPD Configuratiounsdatei mat hiren entspriechende Wäerter:

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

Späichert d'Datei a maach se zou. A restart de VSFTPD Servicer mat de rezenten Astellungen:

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

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

13. Loosst eis elo eng lescht Kontroll maachen a sécherstellen datt de lokalen Root-Verzeichnis vum Benotzer de FTP-Verzeichnis ass, dee mir a sengem Heemverzeichnis erstallt hunn.

# 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 ass et! Denkt drun Är Meenung iwwer dëse Guide iwwer de Kommentarform hei drënner ze deelen oder eis eventuell wichteg Informatioun iwwer dëst Thema ze ginn.

Lescht awer net zulescht, verpasst net eisen nächsten Artikel, wou mir beschreiwen wéi een en FTP-Server mat SSL/TLS Verbindungen an Ubuntu 16.04/16.10 ofséchert, bis dohinner bleift ëmmer op TecMint ofgeschloss.