Com instal·lar, configurar i assegurar el servidor FTP a CentOS 7 - [Guia completa]
FTP (File Transfer Protocol) és una eina estàndard tradicional i àmpliament utilitzada per transferir fitxers entre un servidor i clients a través d'una xarxa, especialment quan no és necessària l'autenticació (permet que usuaris anònims es connectin a un servidor). Hem d'entendre que l'FTP no és segur per defecte, perquè transmet les credencials i les dades dels usuaris sense xifratge.
En aquesta guia, descriurem els passos per instal·lar, configurar i protegir un servidor FTP (VSFTPD significa Very Secure FTP Daemon) a les distribucions CentOS/RHEL 7 i Fedora.
Tingueu en compte que totes les ordres d'aquesta guia s'executaran com a root, en cas que no feu servir el servidor amb el compte root, utilitzeu l'ordre sudo per obtenir privilegis de root.
Pas 1: instal·lació del servidor FTP
1. La instal·lació del servidor vsftpd és senzilla, només cal que executeu l'ordre següent al terminal.
# yum install vsftpd
2. Un cop finalitzada la instal·lació, el servei es desactivarà al principi, per la qual cosa hem d'iniciar-lo manualment de moment i habilitar-lo també per iniciar-se automàticament a partir de la següent arrencada del sistema:
# systemctl start vsftpd # systemctl enable vsftpd
3. A continuació, per permetre l'accés als serveis FTP des de sistemes externs, hem d'obrir el port 21, on els dimonis FTP escolten de la següent manera:
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
Pas 2: Configuració del servidor FTP
4. Ara passarem a realitzar algunes configuracions per configurar i protegir el nostre servidor FTP, comencem fent una còpia de seguretat del fitxer de configuració original /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
A continuació, obriu el fitxer de configuració anterior i configureu les opcions següents amb aquests valors corresponents:
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. Ara configureu FTP per permetre/denegar l'accés FTP als usuaris en funció del fitxer de llista d'usuaris /etc/vsftpd.userlist
.
Per defecte, als usuaris que figuren a userlist_file=/etc/vsftpd.userlist
se'ls denega l'accés a l'inici de sessió amb l'opció userlist_deny establerta en YES, si userlist_enable=YES.
Tanmateix, userlist_deny=NO altera la configuració, el que significa que només els usuaris que figuren explícitament a userlist_file=/etc/vsftpd.userlist podran iniciar sessió.
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
Això no és tot, quan els usuaris inicien sessió al servidor FTP, es col·loquen en una presó amb chroot, aquest és el directori arrel local que actuarà com a directori d'inici només per a la sessió FTP.
A continuació, analitzarem dos possibles escenaris de com fer el chroot dels usuaris FTP al directori Home (arrel local) per als usuaris FTP, tal com s'explica a continuació.
6. Ara afegiu aquestes dues opcions següents per restringir els usuaris FTP als seus directoris d'inici.
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user=SI significa que els usuaris locals seran col·locats en una presó chroot, el seu directori d'inici després d'iniciar sessió per defecte.
I també per defecte, vsftpd no permet que el directori chroot jail sigui escrivible per motius de seguretat, però, podem utilitzar l'opció allow_writeable_chroot=YES per anul·lar aquesta configuració.
Deseu el fitxer i tanqueu-lo.
Assegurar el servidor FTP amb SELinux
7. Ara, configurem el booleà SELinux a continuació per permetre que FTP llegeixi fitxers al directori d'inici d'un usuari. Tingueu en compte que això es va fer inicialment amb l'ordre:
# setsebool -P ftp_home_dir on
Tanmateix, la directiva ftp_home_dir
s'ha desactivat per defecte tal com s'explica en aquest informe d'error: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
Ara utilitzarem l'ordre semanage per establir la regla SELinux per permetre que FTP llegeixi/escrigui el directori inicial de l'usuari.
# semanage boolean -m ftpd_full_access --on
En aquest punt, hem de reiniciar vsftpd per efectuar tots els canvis que hem fet fins ara:
# systemctl restart vsftpd
Pas 4: prova del servidor FTP
8. Ara provarem el servidor FTP creant un usuari FTP amb l'ordre useradd.
# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi # passwd ravi
Després, hem d'afegir l'usuari ravi al fitxer /etc/vsftpd.userlist utilitzant l'ordre echo de la següent manera:
# echo "ravi" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
9. Ara és el moment de provar si la nostra configuració anterior funciona correctament. Comencem provant els inicis de sessió anònims, podem veure a la captura de pantalla següent que els inicis de sessió anònims no estan permesos:
# 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. També provem si un usuari que no figura al fitxer /etc/vsftpd.userlist tindrà permís per iniciar sessió, que no és el cas com a la captura de pantalla següent:
# 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. Ara feu una comprovació final si un usuari que apareix al fitxer /etc/vsftpd.userlist es troba realment al seu directori d'inici després d'iniciar sessió:
# 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
Només activeu aquesta opció si sabeu exactament el que esteu fent. És important tenir en compte que aquestes implicacions de seguretat no són específiques de vsftpd, s'apliquen a tots els dimonis FTP que també ofereixen posar els usuaris locals a les presons chroot.
Per tant, veurem una manera més segura d'establir un directori arrel local diferent que no es pot escriure a la secció següent.
Pas 5: configureu diferents directoris d'inici d'usuaris FTP
12. Obriu el fitxer de configuració vsftpd de nou i comenceu comentant l'opció no segura a continuació:
#allow_writeable_chroot=YES
A continuació, creeu el directori arrel local alternatiu per a l'usuari (ravi
, probablement el vostre sigui diferent) i elimineu els permisos d'escriptura a tots els usuaris d'aquest directori:
# mkdir /home/ravi/ftp # chown nobody:nobody /home/ravi/ftp # chmod a-w /home/ravi/ftp
13. A continuació, creeu un directori sota l'arrel local on l'usuari emmagatzemarà els seus fitxers:
# mkdir /home/ravi/ftp/files # chown ravi:ravi /home/ravi/ftp/files # chmod 0700 /home/ravi/ftp/files/
A continuació, afegiu/modifiqueu les opcions següents al fitxer de configuració vsftpd amb aquests valors:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Deseu el fitxer i tanqueu-lo. Una vegada més, reiniciem el servei amb la nova configuració:
# systemctl restart vsftpd
14. Ara torneu a fer una prova final i comproveu que el directori arrel local dels usuaris és el directori FTP que hem creat al seu directori d'inici.
# 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
Això és! En aquest article, vam descriure com instal·lar, configurar i protegir un servidor FTP a CentOS 7, utilitzeu la secció de comentaris següent per escriure'ns sobre aquesta guia/compartir qualsevol informació útil sobre aquest tema.
Al següent article, també us mostrarem com protegir un servidor FTP mitjançant connexions SSL/TLS a CentOS 7, fins aleshores, manteniu-vos connectat a TecMint.