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.