Kako namestiti, konfigurirati in zaščititi strežnik FTP v CentOS 7 - [Izčrpen vodnik]
FTP (File Transfer Protocol) je tradicionalno in pogosto uporabljano standardno orodje za prenos datotek med strežnikom in odjemalci prek omrežja, zlasti kadar avtentifikacija ni potrebna (anonimnim uporabnikom omogoča povezavo s strežnikom). Moramo razumeti, da FTP privzeto ni varen, ker posreduje uporabniške poverilnice in podatke brez šifriranja.
V tem priročniku bomo opisali korake za namestitev, konfiguracijo in zaščito strežnika FTP (VSFTPD pomeni „Zelo varen FTP Daemon“) v distribucijah CentOS/RHEL 7 in Fedora.
Upoštevajte, da se bodo vsi ukazi v tem priročniku izvajali kot root, če strežnika ne upravljate s korenskim računom, uporabite ukaz sudo za pridobitev korenskih pravic.
1. korak: Namestitev strežnika FTP
1. Namestitev strežnika vsftpd je naravnost naprej, v terminalu zaženite naslednji ukaz.
# yum install vsftpd
2. Po končani namestitvi bo storitev sprva onemogočena, zato jo moramo zaenkrat zagnati ročno in omogočiti, da se samodejno zažene tudi ob naslednjem zagonu sistema:
# systemctl start vsftpd # systemctl enable vsftpd
3. Nato moramo, da omogočimo dostop do storitev FTP iz zunanjih sistemov, odpreti vrata 21, kjer demoni FTP poslušajo na naslednji način:
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
2. korak: Konfiguriranje strežnika FTP
4. Zdaj bomo izvedli nekaj konfiguracij za nastavitev in zaščito našega FTP strežnika, začnimo z izdelavo varnostne kopije izvirne konfiguracijske datoteke /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
Nato odprite konfiguracijsko datoteko zgoraj in nastavite naslednje možnosti s temi ustreznimi vrednostmi:
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. Zdaj konfigurirajte FTP, da uporabnikom dovoli/zavrne dostop do FTP na podlagi datoteke s seznamom uporabnikov /etc/vsftpd.userlist
.
Uporabnikom, navedenim v userlist_file =/etc/vsftpd.userlist
, je privzeto zavrnjen dostop z možnostjo userlist_deny nastavljeno na YES, če userlist_enable = YES.
Vendar userlist_deny = NO spremeni nastavitev, kar pomeni, da se bodo lahko prijavili samo uporabniki, ki so izrecno navedeni v 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
To še ni vse, ko se uporabniki prijavijo v strežnik FTP, so postavljeni v chrooted zapor, to je lokalni korenski imenik, ki bo deloval kot njihov domači imenik samo za sejo FTP.
Nato bomo preučili dva možna scenarija, kako uporabnike FTP razvrstiti v imenik Domači imeniki (lokalni korenski) za uporabnike FTP, kot je razloženo spodaj.
6. Zdaj dodajte ti dve možnosti, da uporabnike FTP omejite na njihove domače imenike.
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user = DA pomeni, da bodo lokalni uporabniki po privzetih nastavitvah postavljeni v zapor chroot, njihov domači imenik po prijavi.
In tudi privzeto vsftpd iz varnostnih razlogov ne dovoli, da je v imenik chroot jail mogoče zapisovati, vendar lahko uporabimo možnost allow_writeable_chroot = DA, da preglasimo to nastavitev.
Datoteko shranite in zaprite.
Zaščita strežnika FTP s SELinuxom
7. Zdaj nastavimo spodnjo logično vrednost SELinux, da FTP omogoča branje datotek v uporabnikovem domačem imeniku. Upoštevajte, da je bilo to sprva narejeno z ukazom:
# setsebool -P ftp_home_dir on
Vendar je bila direktiva ftp_home_dir
privzeto onemogočena, kot je razloženo v tem poročilu o napakah: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
Zdaj bomo z ukazom semanage nastavili pravilo SELinux, da bo FTP omogočil branje/pisanje uporabnikovega domačega imenika.
# semanage boolean -m ftpd_full_access --on
Na tej točki moramo znova zagnati vsftpd, da izvedemo vse spremembe, ki smo jih naredili do zdaj:
# systemctl restart vsftpd
4. korak: Testiranje strežnika FTP
8. Zdaj bomo strežnik FTP preizkusili z ustvarjanjem uporabnika FTP z ukazom useradd.
# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi # passwd ravi
Nato moramo uporabniški ravi v datoteko /etc/vsftpd.userlist dodati z uporabo ukaza echo, kot sledi:
# echo "ravi" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
9. Zdaj je čas, da preizkusimo, ali zgornje nastavitve delujejo pravilno. Začnimo s testiranjem anonimnih prijav, na spodnjem posnetku zaslona vidimo, da anonimne prijave niso dovoljene:
# 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. Preizkusimo tudi, ali bo uporabnik, ki ni naveden v datoteki /etc/vsftpd.userlist, dobil dovoljenje za prijavo, kar pa ni tako kot na spodnjem posnetku 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. Zdaj dokončno preverite, ali je uporabnik, naveden v datoteki /etc/vsftpd.userlist, po prijavi dejansko postavljen v svoj domači imenik:
# 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 možnost aktivirajte samo, če natančno veste, kaj počnete. Pomembno je omeniti, da te varnostne posledice niso specifične za vsftpd, ampak veljajo za vse demone FTP, ki ponujajo tudi lokalno uporabo v chroot zaporih.
Zato bomo v naslednjem razdelku preučili varnejši način nastavitve drugačnega lokalnega korenskega imenika, ki ga ni mogoče zapisati.
5. korak: Konfigurirajte različne domače imenike uporabnikov FTP
12. Ponovno odprite konfiguracijsko datoteko vsftpd in začnite s komentarjem spodnje nezaščitene možnosti:
#allow_writeable_chroot=YES
Nato ustvarite nadomestni lokalni korenski imenik za uporabnika ( ravi
, vaš je verjetno drugačen) in odstranite dovoljenja za pisanje vsem uporabnikom v ta imenik:
# mkdir /home/ravi/ftp # chown nobody:nobody /home/ravi/ftp # chmod a-w /home/ravi/ftp
13. Nato v lokalnem korenu ustvarite imenik, kamor bo uporabnik shranil svoje datoteke:
# mkdir /home/ravi/ftp/files # chown ravi:ravi /home/ravi/ftp/files # chmod 0700 /home/ravi/ftp/files/
Nato v konfiguracijski datoteki vsftpd dodajte/spremenite naslednje možnosti s temi vrednostmi:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Datoteko shranite in zaprite. Ponovno zaženimo storitev z novimi nastavitvami:
# systemctl restart vsftpd
14. Zdaj znova naredite zadnji test in se prepričajte, da je lokalni korenski imenik uporabnikov imenik FTP, ki smo ga ustvarili v njegovem domačem imeniku.
# 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! V tem članku smo opisali, kako namestiti, konfigurirati in zaščititi strežnik FTP v CentOS 7, v spodnjem razdelku za komentar pa nam pišite v zvezi s tem vodnikom/delite koristne informacije o tej temi.
V naslednjem članku vam bomo tudi pokazali, kako zaščititi strežnik FTP s povezavami SSL/TLS v CentOS 7, do takrat pa ostanite povezani s TecMintom.