Kuidas installida, konfigureerida ja turvata FTP-serverit CentOS 7-s - [põhjalik juhend]


FTP (File Transfer Protocol) on traditsiooniline ja laialt kasutatav standardne tööriist failide edastamiseks serveri ja klientide vahel võrgu kaudu, eriti kui autentimine pole vajalik (lubab anonüümsetel kasutajatel serveriga ühendust luua). Peame mõistma, et FTP on vaikimisi ebaturvaline, kuna see edastab kasutaja mandaate ja andmeid krüptimata.

Selles juhendis kirjeldame FTP-serveri (VSFTPD tähendab "väga turvaline FTP-deemon") installimise, konfigureerimise ja turvamise samme CentOS/RHEL 7 ja Fedora jaotustes.

Pange tähele, et kõik selles juhendis olevad käsud käivitatakse juurena, kui te ei kasuta serverit juurkontoga, kasutage juurõiguste saamiseks käsku sudo.

1. samm: FTP-serveri installimine

1. vsftpd serveri installimine on otse edasi, käivitage lihtsalt terminalis järgmine käsk.

# yum install vsftpd

2. Pärast installimise lõppu keelatakse teenus esmalt, nii et peame selle esialgu käsitsi käivitama ja lubama ka järgmisel süsteemi käivitamisel automaatselt käivitada:

# systemctl start vsftpd
# systemctl enable vsftpd

3. Järgmisena peame välistest süsteemidest FTP-teenustele juurdepääsu võimaldamiseks avama pordi 21, kus FTP-deemonid kuulavad järgmiselt:

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

2. samm: FTP-serveri konfigureerimine

4. Nüüd läheme üle mõne konfiguratsiooni sooritamiseks FTP-serveri seadistamiseks ja turvaliseks muutmiseks, alustades algse konfigureerimisfaili /etc/vsftpd/vsftpd.conf varundamisest:

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

Seejärel avage ülaltoodud konfiguratsioonifail ja määrake järgmised valikud nende vastavate väärtustega:

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. Nüüd konfigureerige FTP, et lubada/keelata FTP juurdepääs kasutajatele kasutajaloendifaili /etc/vsftpd.userlist alusel.

Vaikimisi keelatakse kasutajatel, mis on loetletud userlist_file u003d/etc/vsftpd.userlist , sisselogimisõigus, kui kasutajanime_deny väärtuseks on seatud YES, kui userlist_enable u003d YES.

Kuid userlist_deny u003d EI muudab seadet, see tähendab, et sisse logida lubatakse ainult kasutajatel_file u003d/etc/vsftpd.userlist selgesõnaliselt loetletud kasutajatel.

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   

See pole veel kõik, kui kasutajad FTP-serverisse sisse logivad, paigutatakse nad chroot’ed-vanglasse. See on kohalik juurkataloog, mis toimib nende kodukataloogina ainult FTP-seansi jaoks.

Järgmisena vaatame kahte võimalikku stsenaariumi, kuidas FTP-kasutajaid FTP-kasutajate jaoks kodukataloogidesse (kohalikku juurkataloogi) kataloogida, nagu allpool selgitatud.

6. Nüüd lisage need kaks järgmist valikut, et piirata FTP kasutajate kodukatalooge.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user u003d JAH tähendab, et kohalikud kasutajad paigutatakse pärast vaikimisi sisselogimist chrooti vanglasse, nende kodukataloogi.

Ja ka vaikimisi ei luba vsftpd turvalisuse kaalutlustel chroot vangla kataloogi kirjutada, kuid selle sätte alistamiseks võime kasutada valikut allow_writeable_chroot u003d YES.

Salvestage fail ja sulgege see.

FTP-serveri turvamine SELinuxiga

7. Nüüd seadistame allpool oleva SELinuksi tõeväärtuse, et FTP saaks lugeda kasutaja kodukataloogi faile. Pange tähele, et see tehti algselt käsuga:

# setsebool -P ftp_home_dir on

Kuid direktiiv ftp_home_dir on vaikimisi keelatud, nagu on selgitatud selles veaaruandes: https://bugzilla.redhat.com/show_bug.cgi?idu003d1097775.

Nüüd kasutame semanage käsku SELinuksi reegli seadmiseks, mis võimaldab FTP-l kasutaja kodukataloogi lugeda/kirjutada.

# semanage boolean -m ftpd_full_access --on

Siinkohal peame vsftpd taaskäivitama, et viia läbi kõik eespool tehtud muudatused:

# systemctl restart vsftpd

4. samm: FTP-serveri testimine

8. Nüüd testime FTP-serverit, luues FTP-kasutaja käsuga useradd.

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

Hiljem peame lisama kasutaja ravi faili /etc/vsftpd.userlist, kasutades käsku echo järgmiselt:

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

9. Nüüd on aeg testida, kas meie ülaltoodud seaded töötavad õigesti. Alustame anonüümsete sisselogimiste testimisega. Näeme allolevalt ekraanipildilt, et anonüümsed sisselogimised pole lubatud:

# 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. Testime ka seda, kas kasutajale, kes pole failis /etc/vsftpd.userlist loetletud, antakse sisselogimiseks luba, mis pole nii, nagu alloleval ekraanipildil:

# 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. Nüüd tehke viimane kontroll, kas failis /etc/vsftpd.userlist loetletud kasutaja on pärast sisselogimist tegelikult oma kodukataloogis:

# 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

Aktiveerige see valik ainult siis, kui teate täpselt, mida teete. Oluline on märkida, et need turvamõjud pole vsftpd spetsiifilised, need kehtivad kõigi FTP-deemonite kohta, mis pakuvad ka kohalikke kasutajaid chroot-vanglatesse.

Seetõttu vaatame järgmises jaotises turvalisemat viisi, kuidas seada teistsugune kirjutamatu kohalik juurkataloog.

5. samm: konfigureerige erinevad FTP kasutajate kodukataloogid

12. Avage vsftpd konfiguratsioonifail uuesti ja alustage allpool oleva ebaturvalise võimaluse kommenteerimisega:

#allow_writeable_chroot=YES

Seejärel looge kasutaja jaoks alternatiivne kohalik juurkataloog ( ravi , teie oma on tõenäoliselt erinev) ja eemaldage kõigile selle kataloogi kasutajatele kirjutamisõigused:

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

13. Seejärel looge kohaliku juure alla kataloog, kuhu kasutaja oma failid salvestab:

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

Seejärel lisage/muutke konfiguratsioonifailis vsftpd järgmisi valikuid nende väärtustega:

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

Salvestage fail ja sulgege see. Taaskäivitame teenuse uuesti uute seadetega.

# systemctl restart vsftpd

14. Tehke nüüd viimane test uuesti ja vaadake, et kasutajate kohalik juurkataloog on tema kodukataloogis loodud FTP-kataloog.

# 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

See on kõik! Selles artiklis kirjeldasime, kuidas CentOS 7-s FTP-serverit installida, konfigureerida ja turvata. Kasutage allpool toodud kommentaaride jaotist, et meile selle juhendi kohta tagasi kirjutada/selle teema kohta kasulikku teavet jagada.

Järgmises artiklis näitame teile ka, kuidas FOS-serverit SSL/TLS-ühenduste abil CentOS 7-s turvata, hoidke seni ühendust TecMintiga.