Kako instalirati, konfigurirati i osigurati FTP poslužitelj u CentOS 7 - [Sveobuhvatan vodič]
FTP (File Transfer Protocol) je tradicionalni i široko korišteni standardni alat za prijenos datoteka između poslužitelja i klijenata putem mreže, posebno tamo gdje nije potrebna autentifikacija (anonimnim korisnicima omogućuje povezivanje s poslužiteljem). Moramo shvatiti da FTP prema zadanim postavkama nije siguran jer prenosi vjerodajnice i podatke korisnika bez šifriranja.
U ovom ćemo vodiču opisati korake za instaliranje, konfiguriranje i zaštitu FTP poslužitelja (VSFTPD je kratica za izrazito siguran FTP demon) u distribucijama CentOS/RHEL 7 i Fedora.
Imajte na umu da će se sve naredbe u ovom vodiču izvoditi kao root, u slučaju da ne poslužite poslužitelj s root računom, upotrijebite naredbu sudo da biste stekli root privilegije.
Korak 1: Instalacija FTP poslužitelja
1. Instaliranje vsftpd poslužitelja je jednostavno, samo pokrenite sljedeću naredbu u terminalu.
# yum install vsftpd
2. Po završetku instalacije usluga će u početku biti onemogućena, pa je zasad moramo pokrenuti ručno i omogućiti automatsko pokretanje od sljedećeg pokretanja sustava:
# systemctl start vsftpd # systemctl enable vsftpd
3. Dalje, da bismo omogućili pristup FTP uslugama iz vanjskih sustava, moramo otvoriti port 21, gdje FTP demoni slušaju kako slijedi:
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
Korak 2: Konfiguriranje FTP poslužitelja
4. Sada ćemo prijeći na nekoliko konfiguracija za postavljanje i zaštitu našeg FTP poslužitelja, krenimo s izradom sigurnosne kopije izvorne konfiguracijske datoteke /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
Dalje, otvorite gornju konfiguracijsku datoteku i postavite sljedeće opcije s tim odgovarajućim vrijednostima:
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. Sada konfigurirajte FTP da dozvoli/odbije FTP pristup korisnicima na temelju datoteke popisa korisnika /etc/vsftpd.userlist
.
Prema zadanim postavkama, korisnicima navedenim u userlist_file =/etc/vsftpd.userlist
onemogućen je pristup prijavom s opcijom userlist_deny postavljenom na DA, ako je userlist_enable = DA.
Međutim, userlist_deny = NO mijenja postavku, što znači da će samo korisnici koji su izričito navedeni u userlist_file =/etc/vsftpd.userlist biti dopušteni za prijavu.
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
To nije sve, kada se korisnici prijave na FTP poslužitelj, budu smješteni u chroot zatvor, ovo je lokalni korijenski direktorij koji će djelovati kao njihov početni direktorij samo za FTP sesiju.
Dalje, razmotrit ćemo dva moguća scenarija kako hrotirati FTP korisnike u direktorij Home direktoriji (lokalni korijenski) za FTP korisnike, kako je objašnjeno u nastavku.
6. Sada dodajte ove dvije sljedeće mogućnosti za ograničavanje FTP korisnika na njihove početne direktorije.
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user = DA znači da će lokalni korisnici biti smješteni u chroot zatvor, njihov početni direktorij nakon prijave po zadanim postavkama.
A također prema zadanim postavkama, vsftpd ne dopušta da se u imenik chroot zatvora može zapisati iz sigurnosnih razloga, međutim, možemo koristiti opciju allow_writeable_chroot = DA da poništimo ovu postavku.
Spremite datoteku i zatvorite je.
Osiguravanje FTP poslužitelja sa SELinuxom
7. Sada, postavimo donji logički izraz SELinux kako bi FTP omogućio čitanje datoteka u korisnikovom kućnom direktoriju. Imajte na umu da je to u početku učinjeno pomoću naredbe:
# setsebool -P ftp_home_dir on
Međutim, direktiva ftp_home_dir
onemogućena je prema zadanim postavkama kako je objašnjeno u ovom izvješću o programskoj pogrešci: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
Sada ćemo upotrijebiti naredbu semanage za postavljanje SELinux pravila kako bi FTP omogućio čitanje/pisanje korisničkog kućnog direktorija.
# semanage boolean -m ftpd_full_access --on
U ovom trenutku moramo ponovno pokrenuti vsftpd kako bismo izvršili sve promjene koje smo do sada napravili:
# systemctl restart vsftpd
Korak 4: Testiranje FTP poslužitelja
8. Sada ćemo testirati FTP poslužitelj stvaranjem FTP korisnika pomoću naredbe useradd.
# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi # passwd ravi
Nakon toga moramo dodati korisnika ravi u datoteku /etc/vsftpd.userlist pomoću naredbe echo na sljedeći način:
# echo "ravi" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
9. Sada je vrijeme da testiramo rade li gore navedene postavke ispravno. Počnimo s testiranjem anonimnih prijava, na donjem snimku zaslona vidimo da anonimne prijave nisu dopuštene:
# 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. Testirajmo i hoće li korisnik koji nije naveden u datoteci /etc/vsftpd.userlist dobiti odobrenje za prijavu, što nije slučaj kao na donjem snimku zaslona:
# 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. Sada izvršite posljednju provjeru je li korisnik naveden u datoteci /etc/vsftpd.userlist, zapravo prijavljen u svoj kućni direktorij nakon prijave:
# 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
Ovu opciju aktivirajte samo ako točno znate što radite. Važno je napomenuti da ove sigurnosne implikacije nisu specifične za vsftpd, primjenjuju se na sve FTP demone koji nude i stavljanje lokalnih korisnika u chroot zatvorenike.
Stoga ćemo u sljedećem odjeljku potražiti sigurniji način postavljanja drugačijeg lokalnog korijenskog direktorija koji se ne može pisati.
Korak 5: Konfiguriranje različitih direktorija FTP korisnika
12. Ponovno otvorite datoteku za konfiguraciju vsftpd i započnite komentiranjem dolje nesigurne opcije:
#allow_writeable_chroot=YES
Zatim stvorite alternativni lokalni korijenski direktorij za korisnika ( ravi
, vaš je vjerojatno drugačiji) i uklonite dozvole za pisanje svim korisnicima u ovaj direktorij:
# mkdir /home/ravi/ftp # chown nobody:nobody /home/ravi/ftp # chmod a-w /home/ravi/ftp
13. Zatim stvorite direktorij pod lokalnim korijenom u koji će korisnik pohranjivati svoje datoteke:
# mkdir /home/ravi/ftp/files # chown ravi:ravi /home/ravi/ftp/files # chmod 0700 /home/ravi/ftp/files/
Zatim u konfiguracijsku datoteku vsftpd dodajte/izmijenite sljedeće opcije s ovim vrijednostima:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Spremite datoteku i zatvorite je. Ponovno pokrenimo uslugu s novim postavkama:
# systemctl restart vsftpd
14. Sada ponovno napravite posljednji test i vidite da je lokalni korijenski direktorij korisnika FTP direktorij koji smo stvorili u njegovom početnom direktoriju.
# 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
To je to! U ovom smo članku opisali kako instalirati, konfigurirati, kao i osigurati FTP poslužitelj u CentOS 7, upotrijebite odjeljak za komentare u nastavku da biste nam odgovorili u vezi s ovim vodičem/podijelili korisne informacije o ovoj temi.
U sljedećem članku također ćemo vam pokazati kako osigurati FTP poslužitelj pomoću SSL/TLS veza u CentOS 7, a do tada ostanite povezani s TecMintom.