Wéi installéiere, konfiguréieren a sécheren FTP Server am CentOS 7 - [Comprehensive Guide]
FTP (File Transfer Protocol) ass en traditionellt a wäit benotzt Standard-Tool fir Dateien tëscht engem Server a Clienten iwwer en Netz ze transferéieren, besonnesch wou keng Authentifikatioun néideg ass (erlaabt anonyme Benotzer mat engem Server ze verbannen). Mir musse verstoen datt FTP als Standard onsécher ass, well et Benotzer Umeldungsinformatiounen an Daten ouni Verschlësselung iwwerdréit.
An dësem Guide beschreiwen mir d'Schrëtt fir e FTP-Server z'installéieren, ze konfiguréieren an ze sécheren (VSFFTPD steet fir Very Secure FTP Daemon) an CentOS/RHEL 7 a Fedora Verdeelungen.
Bedenkt datt all Kommandoen an dësem Guide als Root lafen, am Fall wou Dir de Server net mam Root Kont operéiert, benotzt de sudo Kommando fir Root Privilegien ze kréien.
Schrëtt 1: FTP Server installéieren
1. Installéiere vum vsftpd-Server ass direkt vir, fuert just de folgende Kommando am Terminal.
# yum install vsftpd
2. Nodeems d'Installatioun ofgeschloss ass, gëtt de Service fir d'éischt deaktivéiert, also musse mir et fir de Moment manuell starten an et aktivéieren fir automatesch vum nächste Systemboot ze starten:
# systemctl start vsftpd # systemctl enable vsftpd
3. Als nächst, fir Zougang zu FTP-Servicer vun externen Systemer z'erméiglechen, musse mir den Hafen 21 opmaachen, wou d'FTP-Dämone wéi follegt lauschteren:
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
Schrëtt 2: FTP Server konfiguréieren
4. Elo wäerte mir iwwergoen fir e puer Konfiguratiounen auszeféieren fir eisen FTP-Server opzestellen an ze sécheren, loosst eis ufänken mat engem Backup vun der ursprénglecher Konfiguratiounsdatei /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
Als nächst, öffnen d'Configuratiounsdatei hei uewen a setzen déi folgend Optiounen mat dësen entspriechende Wäerter:
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. Elo konfiguréieren FTP fir FTP Zougang zu Benotzer ze erlaben/ze verleegnen baséiert op der Benotzerlëscht Datei /etc/vsftpd.userlist
.
Par défaut sinn Benotzer, déi an userlist_file=/etc/vsftpd.userlist
opgezielt sinn, de Login Zougang verweigert mat der Userlist_deny Optioun op JO gesat, wann userlist_enable=JO.
Wéi och ëmmer, userlist_deny=NEE ännert d'Astellung, dat heescht datt nëmmen Benotzer explizit an userlist_file=/etc/vsftpd.userlist opgezielt sinn erlaabt ze aloggen.
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
Dat ass net alles, wann d'Benotzer sech op de FTP-Server aloggen, gi se an engem Chroot'ed Prisong gesat, dëst ass de lokale Root-Verzeichnis deen nëmmen als Heemverzeechnes fir d'FTP-Sessioun handelt.
Als nächst wäerte mir zwee méiglech Szenarie kucken wéi Dir FTP Benotzer an Home Verzeichnungen (lokal Root) Verzeechnes fir FTP Benotzer chroot, wéi hei ënnen erkläert.
6. Füügt elo dës zwou folgend Optiounen derbäi fir FTP Benotzer op hir Home Verzeichnungen ze beschränken.
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user=JO heescht datt lokal Benotzer an engem Chroot Prisong gesat ginn, hiren Heemverzeichnis no der Login duerch Standardastellungen.
An och als Standard erlaabt vsftpd net datt de Chroot Prisongsverzeechnes aus Sécherheetsgrënn schreiwen kann, awer mir kënnen d'Optioun benotzen allow_writeable_chroot=JO fir dës Astellung ze iwwerschreiden.
Späichert d'Datei a maach se zou.
FTP Server mat SELinux ofsécheren
7. Elo, loosst eis d'SELinux boolesch ënnen setzen fir FTP z'erméiglechen Dateien an engem Heemverzeechnes vun engem Benotzer ze liesen. Notéiert datt dëst am Ufank gemaach gouf mam Kommando:
# setsebool -P ftp_home_dir on
Wéi och ëmmer, d'ftp_home_dir
Direktiv gouf als Standard deaktivéiert wéi an dësem Fehlerbericht erkläert: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
Elo benotze mir Semanage Kommando fir d'SELinux Regel ze setzen fir FTP z'erlaaben fir den Heemverzeechnes vum Benotzer ze liesen/ze schreiwen.
# semanage boolean -m ftpd_full_access --on
Zu dësem Zäitpunkt musse mir vsftpd nei starten fir all d'Ännerungen auszeféieren, déi mir bis elo uewe gemaach hunn:
# systemctl restart vsftpd
Schrëtt 4: FTP Server testen
8. Elo wäerte mir den FTP-Server testen andeems Dir e FTP-Benotzer mat useradd Kommando erstellt.
# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi # passwd ravi
Duerno musse mir de Benotzer ravi an d'Datei /etc/vsftpd.userlist addéieren mam Echo Kommando wéi follegt:
# echo "ravi" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
9. Elo ass et Zäit fir ze testen ob eis Astellungen hei uewen richteg funktionnéieren. Loosst eis ufänken mat anonyme Login ze testen, mir kënne vum Écran hei ënnen gesinn datt anonym Login net erlaabt sinn:
# 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. Loosst eis och testen ob e Benotzer deen net an der Datei /etc/vsftpd.userlist opgezielt ass, d'Erlaabnis kritt fir sech unzemellen, wat net de Fall ass wéi am Bildschierm hei ënnen:
# 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. Maacht elo eng lescht Kontroll, ob e Benotzer, deen an der Datei /etc/vsftpd.userlist opgezielt ass, tatsächlech a säin Heemverzeichnis nom Login plazéiert ass:
# 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
Aktivéiert dës Optioun nëmmen wann Dir genau wësst wat Dir maacht. Et ass wichteg ze bemierken datt dës Sécherheetsimplikatiounen net vsftpd spezifesch sinn, si gëllen fir all FTP Daemonen déi ubidden fir lokal Benotzer och an Chroot Prisongen ze setzen.
Dofir wäerte mir e méi séchere Wee kucken fir en aneren net-schreiwenbare lokale Root-Verzeichnis an der nächster Sektioun ze setzen.
Schrëtt 5: Configuréieren Verschidde FTP Benotzer Home Directories
12. Öffnen d'vsftpd Konfiguratiounsdatei erëm a fänkt un mat der onsécherer Optioun hei drënner ze kommentéieren:
#allow_writeable_chroot=YES
Erstellt dann den alternativen lokalen Root-Verzeichnis fir de Benotzer (ravi
, Ären ass wahrscheinlech anescht) a läscht d'Schreifrechter fir all Benotzer an dësem Verzeichnis:
# mkdir /home/ravi/ftp # chown nobody:nobody /home/ravi/ftp # chmod a-w /home/ravi/ftp
13. Als nächst erstellt e Verzeechnes ënner der lokaler Root wou de Benotzer seng Dateie späichert:
# mkdir /home/ravi/ftp/files # chown ravi:ravi /home/ravi/ftp/files # chmod 0700 /home/ravi/ftp/files/
Dann addéieren/änneren déi folgend Optiounen an der vsftpd Configuratiounsdatei mat dëse Wäerter:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Späichert d'Datei a maach se zou. Nach eng Kéier, loosst eis de Service mat den neien Astellungen nei starten:
# systemctl restart vsftpd
14. Maacht elo nach eng Kéier e leschten Test a kuckt datt d'Benotzer lokalen Root-Verzeichnis de FTP-Verzeichnis ass, dee mir a sengem Heemverzeichnis erstallt hunn.
# 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
Dat ass et! An dësem Artikel hu mir beschriwwen wéi een e FTP-Server am CentOS 7 installéiere kann, konfiguréieren an och sécheren, benotzt d'Kommentarsektioun hei drënner fir eis zréck ze schreiwen iwwer dëse Guide/all nëtzlech Informatioun iwwer dëst Thema ze deelen.
Am nächsten Artikel wäerte mir Iech och weisen wéi Dir en FTP-Server mat SSL/TLS-Verbindungen am CentOS 7 ofséchert, bis dohin, bleift verbonne mat TecMint.