Vyhledávání na webu

Jak nainstalovat, nakonfigurovat a zabezpečit FTP server v CentOS 7 - [Obsáhlý průvodce]


FTP (File Transfer Protocol) je tradiční a široce používaný standardní nástroj pro přenos souborů mezi serverem a klienty po síti, zejména tam, kde není nutné žádné ověřování (umožňuje anonymní uživatele pro připojení k serveru). Musíme pochopit, že FTP je ve výchozím nastavení nezabezpečený, protože přenáší přihlašovací údaje a data uživatele bez šifrování.

V této příručce popíšeme kroky k instalaci, konfiguraci a zabezpečení FTP serveru (VSFTPD znamená „Very Secure FTP Daemon“) v CentOS/RHEL 7 a distribuce Fedora.

Pamatujte, že všechny příkazy v této příručce budou spuštěny jako root, v případě, že server neprovozujete s účtem root, použijte k získání práv root příkaz sudo.

Krok 1: Instalace FTP serveru

1. Instalace serveru vsftpd je přímočará, stačí spustit následující příkaz v terminálu.

yum install vsftpd

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

systemctl start vsftpd
systemctl enable vsftpd

3. Dále, abychom povolili přístup ke službám FTP z externích systémů, musíme otevřít port 21, kde naslouchají démoni FTP následovně:

firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-service=ftp
firewall-cmd --reload

Krok 2: Konfigurace FTP serveru

4. Nyní přejdeme k provedení několika konfigurací pro nastavení a zabezpečení našeho FTP serveru, začněme vytvořením zálohy původního konfiguračního souboru /etc/vsftpd/vsftpd.conf :

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

Dále otevřete konfigurační soubor výše a nastavte následující možnosti s těmito odpovídajícími 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 FTP tak, aby uživatelům povolil/zakázal přístup FTP na základě souboru se seznamem uživatelů /etc/vsftpd.userlist.

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í s možností userlist_deny nastavenou na ANO, pokud userlist_enable=ANO.

userlist_deny=NO však toto nastavení mění, což znamená, že pouze uživatelé výslovně uvedení v userlist_file=/etc/vsftpd.userlist se budou moci přihlásit.

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   

To není vše, 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ář pouze pro relaci FTP.

Dále se podíváme na dva možné scénáře, jak chrootovat uživatele FTP do adresáře Home directories (místní kořenový) pro uživatele FTP, jak je vysvětleno níže.

6. Nyní přidejte tyto dvě následující možnosti k omezení uživatelů FTP na jejich domovské adresáře.

chroot_local_user=YES
allow_writeable_chroot=YES

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

A také ve výchozím nastavení vsftpd z bezpečnostních důvodů neumožňuje zapisovat do adresáře věznice chroot, nicméně toto nastavení můžeme přepsat pomocí možnosti allow_writeable_chroot=YES.

Uložte soubor a zavřete jej.

Zabezpečení FTP serveru pomocí SELinux

7. Nyní nastavíme logickou hodnotu SELinux níže, aby FTP mohl číst soubory v domovském adresáři uživatele. Všimněte si, že to bylo původně provedeno pomocí příkazu:

setsebool -P ftp_home_dir on

Direktiva ftp_home_dir však byla ve výchozím nastavení zakázána, jak je vysvětleno v této zprávě o chybě: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Nyní použijeme příkaz semanage k nastavení pravidla SELinux, které umožní FTP číst/zapisovat domovský adresář uživatele.

semanage boolean -m ftpd_full_access --on

V tomto okamžiku musíme restartovat vsftpd, aby se projevily všechny změny, které jsme dosud provedli výše:

systemctl restart vsftpd

Krok 4: Testování FTP serveru

8. Nyní otestujeme FTP server vytvořením FTP uživatele pomocí příkazu useradd.

useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
passwd ravi

Poté musíme přidat uživatele ravi do souboru /etc/vsftpd.userlist pomocí příkazu echo takto:

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

9. Nyní je čas otestovat, zda výše uvedená nastavení fungují správně. Začněme testováním anonymních přihlášení, ze snímku obrazovky níže vidíme, že anonymní přihlášení není povoleno:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>

10. Vyzkoušejme také, zda uživateli, který není uveden v souboru /etc/vsftpd.userlist, bude uděleno oprávnění k přihlášení, což není případ jako na snímku obrazovky. níže:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>

11. Nyní proveďte poslední kontrolu, zda je uživatel uvedený v souboru /etc/vsftpd.userlist po přihlášení skutečně umístěn ve svém domovském adresáři:

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

Tuto možnost aktivujte pouze v případě, že přesně víte, co děláte. Je důležité poznamenat, že tyto bezpečnostní důsledky nejsou specifické pro vsftpd, ale vztahují se na všechny FTP démony, které také nabízejí umístění místních uživatelů do chrootových vězení.

Proto se v další části podíváme na bezpečnější způsob nastavení jiného lokálního kořenového adresáře, do kterého nelze zapisovat.

Krok 5: Nakonfigurujte různé domovské adresáře uživatelů FTP

12. Znovu otevřete konfigurační soubor vsftpd a začněte komentářem k nezabezpečené možnosti níže:

#allow_writeable_chroot=YES

Poté vytvořte alternativní místní kořenový adresář pro uživatele (ravi, váš je pravděpodobně jiný) a odeberte všem uživatelům oprávnění k zápisu do tohoto adresáře:

mkdir /home/ravi/ftp
chown nobody:nobody /home/ravi/ftp
chmod a-w /home/ravi/ftp

13. Dále vytvořte adresář pod místním kořenovým adresářem, kam bude uživatel ukládat své soubory:

mkdir /home/ravi/ftp/files
chown ravi:ravi  /home/ravi/ftp/files
chmod 0700 /home/ravi/ftp/files/

Poté přidejte/upravte následující možnosti v konfiguračním souboru vsftpd s těmito 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. Znovu spusťte službu s novým nastavením:

systemctl restart vsftpd

14. Nyní znovu proveďte závěrečný test a zjistěte, že místní kořenový adresář uživatelů je adresář FTP, který jsme vytvořili v jeho domovském adresáři.

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
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! V tomto článku jsme popsali, jak nainstalovat, nakonfigurovat a zabezpečit FTP server v CentOS 7, použijte sekci komentářů níže, abyste nám napsali ohledně tohoto průvodce/sdíleli jakékoli užitečné informace o tomto tématu.

Doporučená četba: Nainstalujte ProFTPD Server na RHEL/CentOS 7

V příštím článku vám také ukážeme, jak zabezpečit FTP server pomocí připojení SSL/TLS v CentOS 7, do té doby zůstaňte připojeni k TecMint.