GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nakonfigurovat VSFTPD FTPS s SSL/TLS na Ubuntu 18.04

FTP, zkratka File Transfer Protocol, se používá k přenosu souborů mezi počítačem a serverem v dané počítačové síti. Protokol FTP používá nezabezpečený způsob přenosu dat a měl by být omezen na síť, které důvěřujete. Místo toho bychom měli mít FTPS (File Transfer Protocol with SSL), který používá zabezpečené spojení SSL mezi oběma konci, nebo používá SFTP (SSH File Transfer Protocol/Secure File Transfer Protocol).

Tento tutoriál poskytuje podrobné kroky, jak nakonfigurovat zabezpečený server vsftpd s SSL/TLS na Ubuntu 18.04 a připojit se k serveru pomocí terminálu a nástrojů GUI.

Nainstalovat server VSFTPD

V Linuxu je k dispozici několik FTP serverů. Chystáme se nainstalovat vsftp. K tomu na Ubuntu 18.04 zadáme do terminálu následující příkaz:

sudo apt install vsftpd

Jakmile je vsftpd nainstalován, jeho výchozí konfigurační soubor se nachází v /etc/vsftpd.conf. Chcete-li provést změny v tomto souboru a otestovat vlastní konfigurace, nejprve vytvoříme zálohu tohoto souboru. Chcete-li to provést, můžete spustit:

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Poté vytvoříme soubor vsftpd.conf pomocí následujícího příkazu:

sudo vim /etc/vsftpd.conf

a přidejte následující řádky do souboru:vsftpsft

 listen=NO
 listen_ipv6=YES
 anonymous_enable=NO
 local_enable=YES
 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
 pasv_enable=Yes
 pasv_min_port=10000
 pasv_max_port=11000
 user_sub_token=$USER
 local_root=/home/$USER/ftp
 userlist_enable=YES
 userlist_file=/etc/vsftpd.userlist
 userlist_deny=NO

Všimněte si, že toto jsou nejběžněji používané konfigurace a můžete je změnit podle svých potřeb.

Ubuntu 18.04 přichází s předinstalovaným a povoleným ufw (Uncomplicated firewall). Můžete zkontrolovat, zda na vašem počítači běží ufw pomocí tohoto příkazu:

sudo service ufw status

Pokud běží a chystáte se ji nechat spuštěnou, musíte povolit příchozí provoz na FTP porty (20,21 pro aktivní připojení a 10000-10100 pro pasivní). Chcete-li to provést, můžete spustit:

sudo ufw allow from any to any port 20,21,10000:11000 proto tcp

Pokud bude úspěšný, výstup bude vypadat jako ten níže:

Rules updated
Rules updated (v6)

Po provedení všech těchto kroků musíme restartovat server vsftpd pomocí následujícího příkazu:

sudo service vsftpd restart

Vytvoření uživatele pro připojení k serveru FTP

Jakmile je vsftp server nainstalován a nakonfigurován podle našich potřeb, nepotřebujeme vytvářet uživatele (např. ftpsuer) pro připojení k ftp serveru. Chcete-li to provést, můžete spustit:

sudo useradd -m ftpuser

Vytvořte heslo pro nově vytvořeného uživatele pomocí příkazu níže:

sudo passwd ftpuser

Poté budete vyzváni k zadání nového hesla UNIX a jeho opětovnému zadání, aby se změny projevily. Úspěšný výstup vypadá takto:

passwd: password updated successfully

Připravte uživatelský adresář FTP

Jednou z nejdůležitějších akcí, které je třeba provést pro zabezpečení FTP připojení, je omezit uživatele na jejich domovský adresář, aby neměli vůbec žádný přístup k jiným adresářům. Abychom tak učinili ve vsftpd, musíme povolit chroot v konfiguračním souboru, což jsme již provedli v části o konfiguracích v článku (chroot_local_user=YES ). Způsob zabezpečení adresáře vsftpd předpokládá, že uživatel k němu nemá přístup pro zápis. Ale pokud poskytujeme FTP přístup stávajícím uživatelům a oni používají shell k použití serveru, mohou potřebovat mít přístup pro zápis do své domovské složky. Abychom se vyhnuli bezpečnostním nedostatkům a měli také správný FTP přístup pro uživatele, vytvoříme ftp složku v domovském adresáři uživatele a přidáme ji do konfigurace vsftpd jako lokální root při připojení přes FTP. Také musíme změnit vlastnictví adresáře a odebrat přístup pro zápis. Chcete-li to provést, můžete spustit:

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

poté přidejte/změňte následující řádky v konfiguračním souboru vsftpd /etc/vsftpd.conf

user_sub_token=$USER 
local_root=/home/$USER/ftp

Po provedení těchto kroků musíme vytvořit další složku v /home/ftpuser/ftp a přiřadit jeho vlastnictví uživateli

sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser/home/ftpuser/ftp/files

Abychom otestovali, že jsme schopni prohlížet soubory v domovském adresáři uživatele po připojení k FTP serveru, vytvoříme v tomto adresáři testovací soubor a přidáme do něj nějaký text. Chcete-li to provést, můžete spustit:

echo "test file for vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

Chcete-li povolit nebo zakázat přístup konkrétních uživatelů k vsftpd, můžeme použít soubor se seznamem uživatelů a přidat příslušný záznam do konfiguračního souboru vsftpd. Chcete-li tak učinit, můžete spustit následující:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Pokud je userlist_deny nastaveno na NE, k FTP serveru mají přístup pouze uživatelé přidaní do souboru, a pokud je nastaveno na ANO, uživatelé uvedení v souboru nebudou mít přístup k FTP serveru a přístup budou mít ostatní. Přidejte uživatelská jména do výše uvedeného souboru pomocí příkazu níže:

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

Nakonfigurujte SSL pro VSFTPD

Vzhledem k tomu, že data (dokonce i přihlašovací údaje) přenášená přes FTP nejsou šifrována, můžeme povolit TLS/SSL, abychom našemu FTP serveru poskytli další úroveň zabezpečení. Chcete-li vytvořit certifikát pomocí openssl, spusťte následující:

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

kde -days 365 je pro přidání certifikátu na jeden rok a přidání stejné hodnoty pro -out, -keyout příznaky k nalezení soukromého klíče a certifikátu ve stejném souboru. Budete vyzváni k přidání všech nezbytných informací k vytvoření certifikátu, jak je znázorněno níže

Generating a 2048 bit RSA private key
.................+++
..............................................................................................+++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AU
State or Province Name (full name) [Some-State]:SY
Locality Name (eg, city) []:Sydney
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ubuntu
Email Address []:[email protected]

Po vytvoření certifikátu jej musíme přidat do konfiguračního souboru vsftpd a povolit SSL. Chcete-li tak učinit, přidejte do uvedeného souboru následující řádek:

 rsa_cert_file=/etc/ssl/private/vsftpd.pem
 rsa_private_key_file=/etc/ssl/private/vsftpd.pem
 ssl_enable=YES

Poté, co potřebujeme odmítnout anonymní připojení přes SSL a vyžadovat SSL pro přenos dat a přihlášení. Chcete-li tak učinit, přidejte následující řádky do /etc/vsftpd.conf soubor:

 allow_anon_ssl=NO
 force_local_data_ssl=YES
 force_local_logins_ssl=YES

Jakmile budou přidány výše uvedené řádky, nakonfigurujeme server tak, aby používal TLS, což je preferovaný nástupce SSL. Chcete-li tak učinit, přidejte do stejného souboru následující řádky:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Po všech krocích bude náš konfigurační soubor vsftpd vypadat takto:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
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
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/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

Po jakékoli změně v konfiguračním souboru vsftpd musíme restartovat službu následujícím příkazem:

sudo service vsftpd restart

Můžete také nakonfigurovat vsftpd tak, aby používal certifikát letsencrypt pro sftp, ale ujistěte se, že máte doménu k ověření. Proměnnou path můžete přidat do konfigurace vsftpd, kde je uložen klíč ssl cert a private.

rsa_cert_file=/ssl/letsencrypt/ftpdomain.com/chain-bundle.pem
rsa_private_key_file=/ssl/letsencrypt/ftpdomain.com/private-key.pem

Připojování k serveru FTP

Existují dva způsoby připojení k ftp serveru:

  • pomocí terminálu
  • používání FTP klienta s GUI

Připojte se pomocí terminálu

Chcete-li se připojit k ftp serveru pomocí příkazového řádku, zadejte do terminálu následující příkaz:

ftp ubuntu

Kde ubuntu je název hostitele počítače, kde je nainstalován ftp server. Ujistěte se, že počítač s ftp serverem je přístupný přes jeho název hostitele z počítače, ke kterému se pokoušíte připojit.

Po připojení budete vyzváni k zadání uživatelského jména a hesla pro připojení k ftp serveru:

Connected to ubuntu.
220 (vsFTPd 3.0.3)
Name (ubuntu:ubuntu): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Zadejte ls zkontrolovat, zda existuje soubor vytvořený před testem:

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 May 21 13:39 files
226 Directory send OK.

Připojte se pomocí FTP klienta s GUI

Budeme používat Filezilla pro připojení k našemu FTP serveru nainstalovanému na Linuxu. Chcete-li tak učinit, otevřete na svém počítači klienta Filezilla a zadejte IP adresu FTP serveru, přihlašovací údaje ftpuser pro připojení a stiskněte tlačítko připojit, jak je znázorněno na obrázku níže. Budete vyzváni k přidání certifikátu mezi důvěryhodné a poté se budete moci připojit k FTP serveru.

Po připojení vidíme, že test.txt který jsme vytvořili dříve, je tam.

Související čtení:

  • Jak nastavit MySecureShell SFTP Server na Ubuntu 18.04
  • 5 kroků k instalaci a nastavení ProFTPD na Debian 9 Stretch
  • 12 příkazů lftp pro správu souborů s příklady

Jak se můžete dozvědět z článku, instalace serveru vsftpd a připojení k němu je velmi snadné a lze jej provést v několika krocích. Hlavním bodem je zabezpečení ftp serveru pomocí jeho konfiguračního souboru, jako je chrooting uživatele do jeho domovského adresáře, zakázání anonymního přihlášení a přidání místního umask a uživatelských oprávnění pro čtení a zápis.


Ubuntu
  1. Jak nainstalovat a nakonfigurovat FTP server (vsftpd) s SSL/TLS na Ubuntu 20.04

  2. Nainstalovat Vsftpd s SSL / TLS na Ubuntu 20.04 - Nejlepší postup?

  3. Jak nakonfigurovat VSFTPD se šifrovaným připojením SSL/TLS?

  1. Jak zabezpečit vsFTPd pomocí SSL/TLS

  2. Jak nakonfigurovat vsftpd pro použití SSL/TLS (FTPS) na CentOS/Ubuntu

  3. Nainstalujte Vsftpd s SSL/TLS na Ubuntu 20.04

  1. Jak nainstalovat FTP server na Ubuntu s vsftpd

  2. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  3. Jak nastavit FTP server s VSFTPD na Ubuntu 18.04