GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nastavit FTP server s VSFTPD na CentOS 7

FTP (File Transfer Protocol) je standardní síťový protokol klient-server, který uživatelům umožňuje přenášet soubory do a ze vzdálené sítě.

Pro Linux je k dispozici několik open-source FTP serverů. Nejoblíbenější a nejrozšířenější jsou PureFTPd, ProFTPD a vsftpd.

V tomto tutoriálu nainstalujeme vsftpd (Very Secure Ftp Daemon) na CentOS 7. Je to stabilní, bezpečný a rychlý FTP server. Ukážeme vám také, jak nakonfigurovat vsftpd, aby omezil uživatele na jejich domovský adresář a zašifroval celý přenos pomocí SSL/TLS.

Pro bezpečnější a rychlejší přenosy dat použijte SC nebo SFTP.

Předpoklady #

Než budete pokračovat v tomto tutoriálu, ujistěte se, že jste přihlášeni jako uživatel s právy sudo.

Instalace vsftpd na CentOS 7 #

Balíček vsftpd je dostupný ve výchozích úložištích CentOS. Chcete-li jej nainstalovat, zadejte následující příkaz:

sudo yum install vsftpd

Jakmile je balíček nainstalován, spusťte démona vsftpd a povolte jeho automatické spouštění při spouštění:

sudo systemctl start vsftpdsudo systemctl enable vsftpd

Spuštění služby vsftpd můžete ověřit vytištěním jejího stavu:

sudo systemctl status vsftpd

Výstup bude vypadat podobně jako níže, což ukazuje, že služba vsftpd je aktivní a běží:

● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago
 Main PID: 29612 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Konfigurace vsftpd #

Konfigurace služby vsftpd zahrnuje úpravu /etc/vsftpd/vsftpd.conf konfigurační soubor. Většina nastavení je dobře zdokumentována v konfiguračním souboru. Pro všechny dostupné možnosti navštivte oficiální stránku vsftpd.

V následujících částech projdeme některá důležitá nastavení potřebná pro konfiguraci zabezpečené instalace vsftpd.

Začněte otevřením konfiguračního souboru vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

1. FTP přístup #

Přístup k FTP serveru umožníme pouze místním uživatelům, vyhledejte anonymous_enable a local_enable direktivy a ověřte, že se vaše konfigurace shoduje s řádky níže:

/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES

2. Povolení nahrávání #

Odkomentujte write_enable nastavení umožňující změny v souborovém systému, jako je nahrávání a mazání souborů.

/etc/vsftpd/vsftpd.conf
write_enable=YES

3. Chroot Jail #

Zabraňte uživatelům FTP v přístupu k souborům mimo jejich domovské adresáře zrušením komentáře u chroot směrnice.

/etc/vsftpd/vsftpd.conf
chroot_local_user=YES

Ve výchozím nastavení, když je povolen chroot, vsftpd odmítne nahrát soubory, pokud je do adresáře, ve kterém jsou uživatelé uzamčeni, zapisovatelný. To má zabránit bezpečnostní zranitelnosti.

Použijte jednu z níže uvedených metod k povolení nahrávání, když je povolen chroot.

  • Metoda 1. - Doporučený způsob, jak povolit nahrávání, je ponechat zapnutý chroot a konfigurovat FTP adresáře. V tomto tutoriálu vytvoříme ftp adresář uvnitř uživatelského domova, který bude sloužit jako chroot a zapisovatelný uploads adresář pro nahrávání souborů.

    /etc/vsftpd/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • Metoda 2 - Další možností je přidat následující direktivu do konfiguračního souboru vsftpd. Tuto možnost použijte, pokud musíte svému uživateli udělit přístup k zápisu do jeho domovského adresáře.

    /etc/vsftpd/vsftpd.conf
    allow_writeable_chroot=YES

4. Pasivní připojení FTP #

vsftpd může použít jakýkoli port pro pasivní FTP připojení. Určíme minimální a maximální rozsah portů a později rozsah otevřeme v našem firewallu.

Přidejte do konfiguračního souboru následující řádky:

/etc/vsftpd/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5. Omezení přihlášení uživatele #

Chcete-li umožnit přihlášení k serveru FTP pouze některým uživatelům, přidejte následující řádky za userlist_enable=YES řádek:

/etc/vsftpd/vsftpd.conf
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

Když je tato možnost povolena, musíte explicitně určit, kteří uživatelé se mohou přihlásit přidáním uživatelských jmen do /etc/vsftpd/user_list soubor (jeden uživatel na řádek).

6. Zabezpečení přenosů pomocí SSL/TLS #

Abyste mohli šifrovat přenosy FTP pomocí SSL/TLS, musíte mít certifikát SSL a nakonfigurovat server FTP, aby jej používal.

Můžete použít existující certifikát SSL podepsaný důvěryhodnou certifikační autoritou nebo vytvořit certifikát s vlastním podpisem.

Pokud máte doménu nebo subdoménu směřující na IP adresu FTP serveru, můžete si snadno vygenerovat bezplatný certifikát Let's EncryptSSL.

V tomto tutoriálu vygenerujeme certifikát SSL s vlastním podpisem pomocí openssl příkaz.

Následující příkaz vytvoří 2048bitový soukromý klíč a certifikát s vlastním podpisem platný po dobu 10 let. Soukromý klíč i certifikát budou uloženy ve stejném souboru:

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

Po vytvoření certifikátu SSL otevřete konfigurační soubor vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

Najděte rsa_cert_file a rsa_private_key_file direktivy, změňte jejich hodnoty na pam cestu k souboru a nastavte ssl_enable direktivu YES :

/etc/vsftpd/vsftpd.conf
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Pokud není uvedeno jinak, FTP server bude používat pouze TLS k vytvoření zabezpečeného připojení.

Restartujte službu vsftpd #

Po dokončení úprav by konfigurační soubor vsftpd (kromě komentářů) měl vypadat nějak takto:

/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Uložte soubor a restartujte službu vsftpd, aby se změny projevily:

sudo systemctl restart vsftpd

Otevření brány firewall #

Pokud používáte bránu firewall, budete muset povolit provoz FTP.

Chcete-li otevřít port 21 (příkazový port FTP), port 20 (datový port FTP) a 30000-31000 (Rozsah pasivních portů), zadejte následující příkazy:

sudo firewall-cmd --permanent --add-port=20-21/tcpsudo firewall-cmd --permanent --add-port=30000-31000/tcp

Znovu načtěte pravidla brány firewall zadáním:

firewall-cmd --reload

Vytvoření uživatele FTP #

Abychom otestovali náš FTP server, vytvoříme nového uživatele.

  • Pokud již máte uživatele, kterému chcete udělit přístup FTP, přeskočte 1. krok.
  • Pokud nastavíte allow_writeable_chroot=YES v konfiguračním souboru přeskočte 3. krok.
  1. Vytvořte nového uživatele s názvem newftpuser :

    sudo adduser newftpuser

    Dále budete muset nastavit uživatelské heslo:

    sudo passwd newftpuser
  2. Přidejte uživatele do seznamu povolených uživatelů FTP:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
  3. Vytvořte strom adresářů FTP a nastavte správná oprávnění:

    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Jak bylo uvedeno v předchozí části, uživatel bude moci nahrávat své soubory do ftp/upload adresář.

V tuto chvíli je váš FTP server plně funkční a měli byste být schopni se k němu připojit pomocí libovolného FTP klienta, který lze nakonfigurovat pro použití šifrování TLS, jako je FileZilla.

Zakázání přístupu k prostředí #

Ve výchozím nastavení při vytváření uživatele, pokud není výslovně uvedeno, bude mít uživatel přístup SSH k serveru.

Chcete-li zakázat přístup k shellu, vytvoříme nový shell, který jednoduše vytiskne zprávu sdělující uživateli, že jeho účet je omezen pouze na FTP přístup.

Spuštěním následujících příkazů vytvořte /bin/ftponly shell a udělejte jej spustitelným:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponlysudo chmod a+x /bin/ftponly

Přidejte nový shell do seznamu platných shellů v /etc/shells soubor:

echo "/bin/ftponly" | sudo tee -a /etc/shells

Změňte uživatelský shell na /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Stejným příkazem změňte shell pro ostatní uživatele, kterým chcete udělit pouze FTP přístup.


Cent OS
  1. Jak nainstalovat FTP server na CentOS 7 s VSFTPD

  2. Jak nastavit SFTP server na CentOS

  3. Jak nainstalovat FTP server na CentOS 7

  1. Jak nainstalovat vsftpd na RHEL 8 / CentOS 8

  2. Zabezpečené nastavení serveru ProFTPD na CentOS 7 s TLS

  3. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  1. Jak nastavit FTP server s VSFTPD na Ubuntu 18.04

  2. Jak nastavit FTP server s VSFTPD na CentOS 8

  3. Jak nastavit FTP server s VSFTPD na Debianu 9