Weboldal keresés

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.