Kā instalēt, konfigurēt un aizsargāt FTP serveri CentOS 7 - [Visaptveroša rokasgrāmata]
FTP (File Transfer Protocol) ir tradicionāls un plaši izmantots standarta rīks failu pārsūtīšanai starp serveri un klientiem tīklā, it īpaši, ja nav nepieciešama autentifikācija (ļauj anonīmiem lietotājiem izveidot savienojumu ar serveri). Mums jāsaprot, ka FTP pēc noklusējuma ir nedrošs, jo tas pārsūta lietotāja akreditācijas datus un datus bez šifrēšanas.
Šajā rokasgrāmatā mēs aprakstīsim FTP servera instalēšanas, konfigurēšanas un drošības darbības (VSFTPD nozīmē “Ļoti drošs FTP dēmons”) CentOS/RHEL 7 un Fedora izplatījumos.
Ņemiet vērā, ka visas šīs rokasgrāmatas komandas tiks palaistas kā root, ja serveri nedarbojat ar root kontu, izmantojiet komandu sudo, lai iegūtu root tiesības.
1. darbība: FTP servera instalēšana
1. vsftpd servera instalēšana ir vienkārša, vienkārši izpildiet šādu komandu terminālā.
# yum install vsftpd
2. Pēc instalēšanas pabeigšanas pakalpojums vispirms tiks atspējots, tāpēc mums tas pagaidām jāsāk manuāli un jāļauj automātiski startēt arī no nākamās sistēmas sāknēšanas:
# systemctl start vsftpd # systemctl enable vsftpd
3. Pēc tam, lai atļautu piekļuvi FTP pakalpojumiem no ārējām sistēmām, mums jāatver 21. ports, kur FTP dēmoni klausās šādi:
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
2. darbība: FTP servera konfigurēšana
4. Tagad mēs veiksim dažas konfigurācijas, lai iestatītu un aizsargātu mūsu FTP serveri. Sāksim ar sākotnējā konfigurācijas faila /etc/vsftpd/vsftpd.conf dublējumu:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
Pēc tam atveriet iepriekš minēto konfigurācijas failu un iestatiet šādas opcijas ar šīm atbilstošajām vērtībām:
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. Tagad konfigurējiet FTP, lai atļautu/liegtu FTP piekļuvi lietotājiem, pamatojoties uz lietotāju saraksta failu /etc/vsftpd.userlist
.
Pēc noklusējuma lietotājiem, kas uzskaitīti userlist_file =/etc/vsftpd.userlist
, tiek liegta pieteikšanās piekļuve ar opciju userlist_deny, kas iestatīta uz YES, ja userlist_enable = YES.
Tomēr userlist_deny = NO maina iestatījumu, kas nozīmē, ka drīkst pieteikties tikai tiem lietotājiem, kuri ir tieši uzskaitīti 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
Tas vēl nav viss. Kad lietotāji piesakās FTP serverī, viņi tiek ievietoti chroot’ed cietumā, tas ir vietējais saknes direktorijs, kas darbosies kā viņu mājas direktorijs tikai FTP sesijai.
Tālāk mēs aplūkosim divus iespējamos scenārijus, kā FTP lietotājus sakārtot mājas direktoriju (vietējo sakņu) direktorijā FTP lietotājiem, kā paskaidrots tālāk.
6. Tagad pievienojiet šīs divas opcijas, lai ierobežotu FTP lietotāju piekļuvi viņu mājas direktorijām.
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user = YES nozīmē, ka vietējie lietotāji pēc pieteikšanās pēc noklusējuma iestatījumiem tiks ievietoti chroot cietumā, viņu mājas direktorijā.
Un arī pēc noklusējuma vsftpd neļauj chroot cietuma direktoriju rakstīt drošības apsvērumu dēļ, tomēr mēs varam izmantot opciju allow_writeable_chroot = YES, lai ignorētu šo iestatījumu.
Saglabājiet failu un aizveriet to.
FTP servera nodrošināšana ar SELinux
7. Tagad iestatīsim tālāk SELinux loģisko vērtību, lai ļautu FTP lasīt failus lietotāja mājas direktorijā. Ņemiet vērā, ka sākotnēji tas tika darīts, izmantojot komandu:
# setsebool -P ftp_home_dir on
Tomēr direktīva ftp_home_dir
pēc noklusējuma ir atspējota, kā paskaidrots šajā kļūdu pārskatā: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
Tagad mēs izmantosim semanage komandu, lai iestatītu SELinux kārtulu, kas ļautu FTP lasīt/rakstīt lietotāja mājas direktoriju.
# semanage boolean -m ftpd_full_access --on
Šajā brīdī mums ir jārestartē vsftpd, lai veiktu visas iepriekš veiktās izmaiņas:
# systemctl restart vsftpd
4. darbība: FTP servera pārbaude
8. Tagad mēs pārbaudīsim FTP serveri, izveidojot FTP lietotāju ar komandu useradd.
# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi # passwd ravi
Pēc tam mums jāpievieno lietotāja ravi failam /etc/vsftpd.userlist, izmantojot komandu echo šādi:
# echo "ravi" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
9. Tagad ir pienācis laiks pārbaudīt, vai mūsu iepriekšējie iestatījumi darbojas pareizi. Sāksim ar anonīmu pieteikšanos pārbaudi. Tālāk redzamajā ekrānuzņēmumā redzams, ka anonīmi pieteikšanās nav atļauta:
# 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. Pārbaudīsim arī, vai lietotājam, kurš nav norādīts failā /etc/vsftpd.userlist, tiks piešķirta atļauja pieteikties, kas nav tas pats gadījums, kā parādīts zemāk redzamajā ekrānuzņēmumā:
# 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. Tagad veiciet pēdējo pārbaudi, vai failā /etc/vsftpd.userlist norādītais lietotājs pēc pieteikšanās tiešām ir ievietots viņa/viņas mājas direktorijā:
# 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
Aktivizējiet šo opciju tikai tad, ja precīzi zināt, ko darāt. Ir svarīgi atzīmēt, ka šīs drošības problēmas nav specifiskas vsftpd, tās attiecas uz visiem FTP dēmoniem, kas piedāvā vietējos lietotājus ievietot arī ieslodzījuma vietās.
Tāpēc nākamajā sadaļā mēs aplūkosim drošāku veidu, kā iestatīt citu nerakstāmu vietējo saknes direktoriju.
5. darbība: konfigurējiet dažādus FTP lietotāju mājas direktorijus
12. Atkal atveriet vsftpd konfigurācijas failu un sāciet, komentējot zemāk norādīto nedrošo opciju:
#allow_writeable_chroot=YES
Pēc tam izveidojiet lietotājam alternatīvo vietējo saknes direktoriju ( ravi
, iespējams, ka jums ir citādi) un noņemiet rakstīšanas atļaujas visiem lietotājiem šajā direktorijā:
# mkdir /home/ravi/ftp # chown nobody:nobody /home/ravi/ftp # chmod a-w /home/ravi/ftp
13. Pēc tam izveidojiet direktoriju zem vietējās saknes, kurā lietotājs glabās savus failus:
# mkdir /home/ravi/ftp/files # chown ravi:ravi /home/ravi/ftp/files # chmod 0700 /home/ravi/ftp/files/
Pēc tam pievienojiet/modificējiet šādas opcijas vsftpd konfigurācijas failā ar šīm vērtībām:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Saglabājiet failu un aizveriet to. Vēlreiz restartēsim pakalpojumu ar jaunajiem iestatījumiem:
# systemctl restart vsftpd
14. Tagad vēlreiz veiciet pēdējo pārbaudi un pārliecinieties, ka lietotāju vietējais saknes direktorijs ir FTP direktorijs, kuru mēs izveidojām viņa mājas direktorijā.
# 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
Tieši tā! Šajā rakstā mēs aprakstījām, kā CentOS 7 instalēt, konfigurēt un nodrošināt FTP serveri, izmantojiet zemāk esošo komentāru sadaļu, lai rakstītu mums atpakaļ par šo rokasgrāmatu/kopīgotu noderīgu informāciju par šo tēmu.
Nākamajā rakstā mēs arī parādīsim, kā FOS serveri aizsargāt, izmantojot SSL/TLS savienojumus CentOS 7, līdz tam uzturiet savienojumu ar TecMint.