Kaip įdiegti, konfigūruoti ir apsaugoti FTP serverį „CentOS 7“ - [išsamus vadovas]


FTP (Failų perdavimo protokolas) yra tradicinis ir plačiai naudojamas standartinis failų perkėlimo tarp serverio ir klientų tinkle įrankis, ypač kai nereikia autentifikuoti (leidžia anoniminiams naudotojams prisijungti prie serverio). Turime suprasti, kad FTP pagal numatytuosius nustatymus yra nesaugus, nes perduoda vartotojo kredencialus ir duomenis be šifravimo.

Šiame vadove aprašysime FTP serverio (VSFTPD reiškia Labai saugus FTP demonas) diegimo, konfigūravimo ir apsaugos veiksmus CentOS/RHEL 7 ir Fedora platinimai.

Atminkite, kad visos šiame vadove pateiktos komandos bus vykdomos kaip root. Jei nenaudojate serverio su root paskyra, naudokite komandą sudo, kad įgytumėte root teises.

1 veiksmas: įdiekite FTP serverį

1. vsftpd serverio įdiegimas yra paprastas, tiesiog terminale paleiskite šią komandą.

yum install vsftpd

2. Baigus diegti, paslauga iš pradžių bus išjungta, todėl kol kas turime ją paleisti rankiniu būdu ir įgalinti, kad ji taip pat būtų automatiškai paleista kitą kartą paleidus sistemą:

systemctl start vsftpd
systemctl enable vsftpd

3. Toliau, norėdami leisti pasiekti FTP paslaugas iš išorinių sistemų, turime atidaryti prievadą 21, kuriame FTP demonai klausosi taip:

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

2 veiksmas: FTP serverio konfigūravimas

4. Dabar pereisime prie kelių konfigūracijų, kad nustatytų ir apsaugotume savo FTP serverį. Pradėkime nuo pradinio konfigūracijos failo /etc/vsftpd/vsftpd.conf atsarginės kopijos. :

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

Tada atidarykite aukščiau esantį konfigūracijos failą ir nustatykite šias parinktis su šiomis atitinkamomis reikšmėmis:

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. Dabar sukonfigūruokite FTP, kad naudotojams būtų leista/uždrausti FTP prieiga pagal naudotojų sąrašo failą /etc/vsftpd.userlist.

Pagal numatytuosius nustatymus naudotojams, išvardytiems userlist_file=/etc/vsftpd.userlist, neleidžiama prisijungti, kai parinktis userlist_deny nustatyta į TAIP, jei userlist_enable=TAIP.

Tačiau userlist_deny=NO pakeičia nustatymą, o tai reiškia, kad prisijungti bus leidžiama tik tiems vartotojams, kurie aiškiai nurodyti userlist_file=/etc/vsftpd.userlist.

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   

Tai dar ne viskas, kai vartotojai prisijungia prie FTP serverio, jie patenka į chroot saugomą kalėjimą, tai yra vietinis šakninis katalogas, kuris veiks kaip jų namų katalogas tik FTP seansui.

Toliau apžvelgsime du galimus scenarijus, kaip perkelti FTP vartotojus į namų katalogų (vietinį šakninį) katalogą FTP vartotojams, kaip paaiškinta toliau.

6. Dabar pridėkite šias dvi parinktis, kad apribotumėte FTP naudotojų prieigą prie namų katalogų.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=TAIP reiškia, kad vietiniai naudotojai pagal numatytuosius nustatymus bus patalpinti į chroot kalėjimą – jų namų katalogą, kai prisijungs.

Be to, pagal numatytuosius nustatymus vsftpd neleidžia įrašyti chroot jail katalogo saugumo sumetimais, tačiau galime naudoti parinktį allow_writeable_chroot=YES, kad nepaisytume šio nustatymo.

Išsaugokite failą ir uždarykite jį.

FTP serverio apsauga naudojant SELinux

7. Dabar toliau nustatykime SELinux loginę reikšmę, kad FTP leistų nuskaityti failus vartotojo namų kataloge. Atminkite, kad iš pradžių tai buvo padaryta naudojant komandą:

setsebool -P ftp_home_dir on

Tačiau direktyva ftp_home_dir pagal numatytuosius nustatymus buvo išjungta, kaip paaiškinta šioje klaidų ataskaitoje: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Dabar naudosime komandą semanage, kad nustatytume SELinux taisyklę, leidžiančią FTP skaityti/rašyti vartotojo namų katalogą.

semanage boolean -m ftpd_full_access --on

Šiuo metu turime iš naujo paleisti vsftpd, kad atliktume visus anksčiau atliktus pakeitimus:

systemctl restart vsftpd

4 veiksmas: FTP serverio testavimas

8. Dabar išbandysime FTP serverį sukurdami FTP vartotoją su komanda useradd.

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

Po to vartotoją ravi turime įtraukti į failą /etc/vsftpd.userlist naudodami komandą echo taip:

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

9. Dabar laikas patikrinti, ar anksčiau pateikti nustatymai veikia tinkamai. Pradėkime nuo anoniminių prisijungimų testavimo. Iš toliau pateiktos ekrano kopijos matome, kad anoniminiai prisijungimai neleidžiami:

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. Taip pat patikrinkime, ar vartotojui, nenurodytam faile /etc/vsftpd.userlist, bus suteiktas leidimas prisijungti, o taip nėra, kaip ekrano kopijoje žemiau:

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. Dabar atlikite galutinį patikrinimą, ar vartotojas, nurodytas faile /etc/vsftpd.userlist, iš tikrųjų yra įtrauktas į savo namų katalogą po prisijungimo:

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

Suaktyvinkite šią parinktį tik tuo atveju, jei tiksliai žinote, ką darote. Svarbu pažymėti, kad šie saugumo padariniai nėra specifiniai vsftpd, jie taikomi visiems FTP demonams, kurie taip pat siūlo vietinius vartotojus įdėti į chroot kalėjimus.

Todėl kitame skyriuje apžvelgsime saugesnį būdą, kaip nustatyti kitą neįrašomą vietinį šakninį katalogą.

5 veiksmas: sukonfigūruokite skirtingus FTP vartotojo namų katalogus

12. Dar kartą atidarykite vsftpd konfigūracijos failą ir pradėkite komentuodami toliau pateiktą nesaugią parinktį:

#allow_writeable_chroot=YES

Tada sukurkite alternatyvų vietinį vartotojo šakninį katalogą (ravi, jūsų tikriausiai skiriasi) ir pašalinkite visų naudotojų rašymo teises į šį katalogą:

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

13. Tada vietinėje šaknyje sukurkite katalogą, kuriame naudotojas saugos savo failus:

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

Tada pridėkite/pakeiskite šias parinktis vsftpd konfigūracijos faile su šiomis reikšmėmis:

user_sub_token=$USER         # inserts the username in the local root directory 
local_root=/home/$USER/ftp   # defines any users local root directory

Išsaugokite failą ir uždarykite jį. Dar kartą paleiskite paslaugą iš naujo naudodami naujus nustatymus:

systemctl restart vsftpd

14. Dabar dar kartą atlikite paskutinį testą ir įsitikinkite, kad naudotojo vietinis šakninis katalogas yra FTP katalogas, kurį sukūrėme jo namų kataloge.

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

Viskas! Šiame straipsnyje aprašėme, kaip įdiegti, konfigūruoti ir apsaugoti FTP serverį „CentOS 7“, naudokite toliau pateiktą komentarų skiltį ir parašykite mums apie šį vadovą/pasidalykite bet kokia naudinga informacija šia tema.

Siūlomas skaitymas: įdiekite ProFTPD serverį RHEL/CentOS 7

Kitame straipsnyje mes taip pat parodysime, kaip apsaugoti FTP serverį naudojant SSL/TLS ryšius „CentOS 7“, o iki tol palaikykite ryšį su „TecMint“.