Az FTP-kiszolgáló telepítése, konfigurálása és biztonságossá tétele a CentOS 7 rendszerben - [Átfogó útmutató]
Az FTP (File Transfer Protocol) egy hagyományos és széles körben használt szabványos eszköz a fájlok szerver és kliensek közötti hálózaton keresztüli átvitelére, különösen ott, ahol nincs szükség hitelesítésre (engedélyezi a névtelen felhasználókat szerverhez való csatlakozáshoz). Meg kell értenünk, hogy az FTP alapértelmezés szerint nem biztonságos, mert titkosítás nélkül továbbítja a felhasználói hitelesítő adatokat és adatokat.
Ebben az útmutatóban leírjuk az FTP-szerver telepítésének, konfigurálásának és biztonságossá tételének lépéseit (VSFTPD a „Very Secure FTP Daemon“ rövidítése) CentOSben./RHEL 7 és Fedora disztribúciók.
Vegye figyelembe, hogy az útmutatóban szereplő összes parancs rootként fog futni, ha nem a root fiókkal működteti a kiszolgálót, használja a sudo parancsot a root jogosultságok megszerzéséhez.
1. lépés: FTP szerver telepítése
1. A vsftpd szerver telepítése egyszerű, csak futtassa a következő parancsot a terminálon.
yum install vsftpd
2. A telepítés befejezése után a szolgáltatás először le lesz tiltva, ezért egyelőre manuálisan kell elindítanunk, és engedélyeznünk kell az automatikus indulást a következő rendszerindításkor is:
systemctl start vsftpd
systemctl enable vsftpd
3. Következő, annak érdekében, hogy hozzáférést biztosíthassunk az FTP-szolgáltatásokhoz külső rendszerekről, meg kell nyitnunk a 21-es portot, ahol az FTP-démonok a következők szerint figyelnek:
firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-service=ftp
firewall-cmd --reload
2. lépés: Az FTP-kiszolgáló konfigurálása
4. Most áttérünk néhány konfiguráció elvégzésére FTP-szerverünk beállításához és biztonságához. Kezdjük azzal, hogy készítsünk biztonsági másolatot az eredeti konfigurációs fájlról /etc/vsftpd/vsftpd.conf. :
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
Ezután nyissa meg a fenti konfigurációs fájlt, és állítsa be a következő beállításokat ezekkel a megfelelő értékekkel:
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. Most állítsa be az FTP-t úgy, hogy az /etc/vsftpd.userlist
felhasználólistafájl alapján engedélyezze/megtagadja a felhasználók FTP-hozzáférését.
Alapértelmezés szerint a userlist_file=/etc/vsftpd.userlist
listában felsorolt felhasználóktól megtagadják a bejelentkezési hozzáférést, ha a userlist_deny opció YES értékre van állítva, ha userlist_enable=IGEN.
A userlist_deny=NO azonban módosítja a beállítást, ami azt jelenti, hogy csak a userlist_file=/etc/vsftpd.userlist fájlban kifejezetten felsorolt felhasználók jelentkezhetnek be.
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
Ez még nem minden, amikor a felhasználók bejelentkeznek az FTP-kiszolgálóra, egy chroot-olt börtönbe kerülnek, ez a helyi gyökérkönyvtár, amely csak az FTP-munkamenethez fog otthoni könyvtárként működni.
Ezután két lehetséges forgatókönyvet fogunk megvizsgálni, hogyan lehet az FTP-felhasználókat a saját könyvtárakba (helyi gyökérkönyvtárba) chrootolni az FTP-felhasználók számára, az alábbiak szerint.
6. Most adja hozzá ezt a két lehetőséget, hogy az FTP-felhasználókat saját főkönyvtáraikra korlátozza.
chroot_local_user=YES
allow_writeable_chroot=YES
A chroot_local_user=YES azt jelenti, hogy a helyi felhasználók egy chroot börtönbe kerülnek, amely a bejelentkezés utáni saját könyvtáruk alapértelmezés szerint.
És alapértelmezés szerint a vsftpd biztonsági okokból nem teszi lehetővé a chroot jail könyvtár írhatóságát, azonban az allow_writeable_chroot=YES opciót használhatjuk a beállítás felülbírálásához.
Mentse el a fájlt és zárja be.
Az FTP szerver védelme SELinux segítségével
7. Most állítsuk be a SELinux logikai értéket alább, hogy lehetővé tegye az FTP számára a felhasználó kezdőkönyvtárában lévő fájlok olvasását. Vegye figyelembe, hogy ez kezdetben a következő paranccsal történt:
setsebool -P ftp_home_dir on
Az ftp_home_dir
direktíva azonban alapértelmezés szerint le van tiltva, amint azt ebben a hibajelentésben ismertetjük: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
Most a semanage paranccsal állítjuk be a SELinux szabályt, amely lehetővé teszi az FTP számára a felhasználó kezdőkönyvtárának olvasását/írását.
semanage boolean -m ftpd_full_access --on
Ezen a ponton újra kell indítanunk a vsftpd-t, hogy végrehajtsuk az összes fenti változtatást:
systemctl restart vsftpd
4. lépés: Az FTP-kiszolgáló tesztelése
8. Most teszteljük az FTP-kiszolgálót úgy, hogy létrehozunk egy FTP-felhasználót a useradd paranccsal.
useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
passwd ravi
Ezt követően az echo paranccsal hozzá kell adnunk a ravi felhasználót az /etc/vsftpd.userlist fájlhoz a következőképpen:
echo "ravi" | tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist
9. Most itt az ideje tesztelni, hogy a fenti beállításaink megfelelően működnek-e. Kezdjük az anonim bejelentkezések tesztelésével, az alábbi képernyőképen láthatjuk, hogy a névtelen bejelentkezés nem engedélyezett:
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. Teszteljük azt is, hogy az /etc/vsftpd.userlist fájlban nem szereplő felhasználó kap-e engedélyt a bejelentkezésre, ami nem így van, mint a képernyőképen. lent:
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. Most végezze el az utolsó ellenőrzést, hogy az /etc/vsftpd.userlist fájlban szereplő felhasználó valóban a saját könyvtárában van-e a bejelentkezés után:
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
Csak akkor aktiválja ezt az opciót, ha pontosan tudja, mit csinál. Fontos megjegyezni, hogy ezek a biztonsági vonatkozások nem vsftpd-specifikusak, hanem minden FTP-démonra vonatkoznak, amelyek a helyi felhasználókat is chroot börtönökbe helyezik.
Ezért a következő részben egy másik, nem írható helyi gyökérkönyvtár beállításának biztonságosabb módját fogjuk megvizsgálni.
5. lépés: Konfiguráljon különböző FTP-felhasználói kezdőkönyvtárakat
12. Nyissa meg újra a vsftpd konfigurációs fájlt, és kezdje az alábbi nem biztonságos opció megjegyzésével:
#allow_writeable_chroot=YES
Ezután hozza létre a felhasználó alternatív helyi gyökérkönyvtárát (ravi
, az Öné valószínűleg más), és távolítsa el az összes felhasználó írási jogosultságát ebbe a könyvtárba:
mkdir /home/ravi/ftp
chown nobody:nobody /home/ravi/ftp
chmod a-w /home/ravi/ftp
13. Ezután hozzon létre egy könyvtárat a helyi gyökér alatt, ahol a felhasználó tárolja a fájljait:
mkdir /home/ravi/ftp/files
chown ravi:ravi /home/ravi/ftp/files
chmod 0700 /home/ravi/ftp/files/
Ezután adja hozzá/módosítsa a következő beállításokat a vsftpd konfigurációs fájlban ezekkel az értékekkel:
user_sub_token=$USER # inserts the username in the local root directory
local_root=/home/$USER/ftp # defines any users local root directory
Mentse el a fájlt és zárja be. Még egyszer indítsuk újra a szolgáltatást az új beállításokkal:
systemctl restart vsftpd
14. Most végezzen ismét egy utolsó tesztet, és ellenőrizze, hogy a felhasználó helyi gyökérkönyvtára az az FTP-könyvtár, amelyet a saját könyvtárában hoztunk létre.
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
Ez az! Ebben a cikkben leírtuk, hogyan telepíthet, konfigurálhat és biztosíthat FTP-kiszolgálót a CentOS 7 rendszerben, használja az alábbi megjegyzéseket, és írjon nekünk erről az útmutatóról, illetve ossza meg a témával kapcsolatos hasznos információkat.
Javasolt olvasmány: Telepítse a ProFTPD szervert RHEL/CentOS 7 rendszeren
A következő cikkben azt is bemutatjuk, hogyan védhetsz FTP-kiszolgálót SSL/TLS-kapcsolatokkal a CentOS 7-ben, addig maradj kapcsolatban a TecMinttel.