Vyhledávání na webu

Jak nainstalovat a nakonfigurovat FTP server v Ubuntu


FTP (File Transfer Protocol) je relativně starý a nejpoužívanější standardní síťový protokol používaný k odesílání a stahování souborů mezi dvěma počítači v síti. FTP je však svým původem nezabezpečený, protože přenáší data spolu s přihlašovacími údaji uživatele (uživatelské jméno a heslo) bez šifrování.

Upozornění: Pokud plánujete používat FTP, zvažte konfiguraci připojení FTP pomocí SSL/TLS (bude zahrnovat další článek). Jinak je vždy lepší používat zabezpečené FTP, jako je SFTP.

Doporučená četba: Jak nainstalovat a zabezpečit FTP server v CentOS 7

V tomto tutoriálu si ukážeme, jak nainstalovat, nakonfigurovat a zabezpečit FTP server (VSFTPD v plném znění „Very Secure FTP Daemon“) v Ubuntu, abyste měli výkonné zabezpečení proti zranitelnostem FTP.

Krok 1: Instalace serveru VsFTP v Ubuntu

1. Nejprve musíme aktualizovat seznam zdrojů systémových balíčků a poté nainstalovat binární balíček VSFTPD následovně:

sudo apt-get update
sudo apt-get install vsftpd

2. Po dokončení instalace bude služba zpočátku zakázána, proto ji musíme prozatím spustit ručně a také povolit, aby se spouštěla automaticky při příštím spuštění systému:

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

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

3. Dále, pokud máte na serveru povolený firewall UFW (ve výchozím nastavení není povolen), musíte otevřít porty 21 a 20 tam, kde naslouchají démoni FTP, abyste povolili přístup ke službám FTP ze vzdálených počítačů, přidejte nová pravidla brány firewall takto:

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

Krok 2: Konfigurace a zabezpečení serveru VsFTP v Ubuntu

4. Nyní provedeme několik konfigurací pro nastavení a zabezpečení našeho FTP serveru, nejprve vytvoříme zálohu původního konfiguračního souboru /etc/vsftpd/vsftpd.conf jako tak:

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

Dále otevřeme konfigurační soubor vsftpd.

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

Přidejte/upravte následující možnosti s těmito hodnotami:

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. Nyní nakonfigurujte VSFTPD tak, aby uživatelům povoloval/zakazoval přístup FTP na základě souboru seznamu uživatelů /etc/vsftpd.userlist.

Upozorňujeme, že ve výchozím nastavení je uživatelům uvedeným v userlist_file=/etc/vsftpd.userlist odepřen přístup k přihlášení pomocí možnosti userlist_deny=YES, pokud userlist_enable=YES .

Možnost userlist_deny=NO však překrucuje význam výchozího nastavení, takže přístup budou mít pouze uživatelé, jejichž uživatelské jméno je výslovně uvedeno v userlist_file=/etc/vsftpd.userlist přihlášení na 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   

Důležité: Když se uživatelé přihlásí na FTP server, jsou umístěni do chrootovaného vězení, toto je místní kořenový adresář, který bude fungovat jako jejich domovský adresář pro relaci FTP pouze.

Dále se podíváme na dva možné scénáře, jak nastavit chrootovaný jail (místní kořenový) adresář, jak je vysvětleno níže.

6. Nyní přidejte/upravte/odkomentujte tyto dvě následující možnosti, abyste omezili uživatele FTP na jejich domovské adresáře.

chroot_local_user=YES
allow_writeable_chroot=YES

Možnost chroot_local_user=YES znamená, že místní uživatelé budou po přihlášení umístěni do chrootového vězení, což je jejich domovský adresář.

A také musíme pochopit, že VSFTPD nepovoluje zapisovat do vězeňského adresáře chroot, ve výchozím nastavení však z bezpečnostních důvodů můžeme použít volbu allow_writeable_chroot=YES pro zakázání tohoto nastavení.

Uložte soubor a zavřete jej. Poté musíme restartovat služby VSFTPD, aby se výše uvedené změny projevily:

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

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

Krok 3: Testování serveru VsFTP v Ubuntu

7. Nyní otestujeme FTP server vytvořením uživatele FTP pomocí příkazu useradd následovně:

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

Potom musíme explicitně uvést uživatele aaronkilik v souboru /etc/vsftpd.userlist pomocí příkazu echo a příkazu tee, jak je uvedeno níže:

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

8. Nyní je čas otestovat, zda naše výše uvedené konfigurace fungují podle požadavků. Začneme testováním anonymních přihlášení; z níže uvedeného výstupu jasně vidíme, že anonymní přihlášení nejsou na FTP serveru povolena:

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. Dále otestujme, zda uživateli, který není uveden v souboru /etc/vsftpd.userlist, bude uděleno oprávnění k přihlášení, což z výstupu, který následuje, není pravda. :

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. Nyní provedeme závěrečný test, abychom zjistili, zda je uživatel uvedený v souboru /etc/vsftpd.userlist skutečně umístěn ve svém domovském adresáři po přihlásit se. A to je pravda z výstupu níže:

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

Upozornění: Nastavení možnosti allow_writeable_chroot=YES může být tak nebezpečné, že má možné bezpečnostní důsledky, zejména pokud mají uživatelé oprávnění k nahrávání, popř. více tak, shell přístup. Používejte jej pouze tehdy, pokud přesně víte, co děláte.

Měli bychom poznamenat, že tyto bezpečnostní důsledky nejsou specifické pro VSFTPD, mohou také ovlivnit všechny ostatní FTP démony, které nabízejí umístění místních uživatelů do chrootových vězení.

Z tohoto důvodu v části níže vysvětlíme bezpečnější metodu nastavení jiného lokálního kořenového adresáře bez možnosti zápisu pro uživatele.

Krok 4: Nakonfigurujte domovské adresáře uživatelů FTP v Ubuntu

11. Nyní otevřete konfigurační soubor VSFTPD ještě jednou.

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

a komentujte nezabezpečenou možnost pomocí znaku #, jak je uvedeno níže:

#allow_writeable_chroot=YES

Dále vytvořte alternativní místní kořenový adresář pro uživatele (aaronkilik, ten váš možná není stejný) a nastavte požadovaná oprávnění zakázáním oprávnění k zápisu všem ostatním uživatelům do tohoto adresáře:

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

12. Poté vytvořte adresář pod místním kořenovým adresářem s příslušnými oprávněními, kam bude uživatel ukládat své soubory:

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

Poté přidejte/upravte níže uvedené možnosti v konfiguračním souboru VSFTPD s jejich odpovídajícími hodnotami:

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

Uložte soubor a zavřete jej. A restartujte služby VSFTPD s nedávným nastavením:

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

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

13. Nyní proveďte poslední kontrolu a ujistěte se, že místní kořenový adresář uživatele je adresář FTP, který jsme vytvořili v jeho domovském adresáři.

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

A je to! Nezapomeňte se podělit o svůj názor na tuto příručku prostřednictvím níže uvedeného formuláře pro komentáře nebo nám případně poskytněte jakékoli důležité informace týkající se tématu.

V neposlední řadě si nenechte ujít náš další článek, kde popíšeme, jak zabezpečit FTP server pomocí SSL/TLS připojení v Ubuntu 16.04/16.10, do té doby vždy zůstaňte naladěni na TecMint.