FTP-palvelimen asentaminen, määrittäminen ja suojaaminen CentOS 7:ssä - [Kattava opas]


FTP (File Transfer Protocol) on perinteinen ja laajalti käytetty standardityökalu tiedostojen siirtämiseen palvelimen ja asiakkaiden välillä verkon kautta, varsinkin kun todennusta ei tarvita (sallii nimettömät käyttäjät muodostaaksesi yhteyden palvelimeen). Meidän on ymmärrettävä, että FTP on oletusarvoisesti suojaton, koska se lähettää käyttäjän tunnistetiedot ja tiedot ilman salausta.

Tässä oppaassa kuvataan vaiheet FTP-palvelimen asentamiseksi, määrittämiseksi ja suojaamiseksi (VSFTPD tarkoittaa "Very Secure FTP Daemon") CentOS:ssä/RHEL 7- ja Fedora-jakelu.

Huomaa, että kaikki tämän oppaan komennot suoritetaan root-tunnuksella. Jos et käytä palvelinta root-tilillä, hanki pääkäyttäjän oikeudet komennolla sudo.

Vaihe 1: Asenna FTP-palvelin

1. vsftpd-palvelimen asentaminen on helppoa, suorita vain seuraava komento päätteessä.

yum install vsftpd

2. Kun asennus on valmis, palvelu poistetaan käytöstä aluksi, joten meidän on käynnistettävä se toistaiseksi manuaalisesti ja annettava se käynnistyä automaattisesti myös järjestelmän seuraavasta käynnistyksestä:

systemctl start vsftpd
systemctl enable vsftpd

3. Seuraavaksi, jotta voimme käyttää FTP-palveluita ulkoisista järjestelmistä, meidän on avattava portti 21, jossa FTP-demonit kuuntelevat seuraavasti:

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

Vaihe 2: FTP-palvelimen määrittäminen

4. Nyt siirrymme suorittamaan muutamia määrityksiä FTP-palvelimemme asentamiseksi ja suojaamiseksi. Aloitetaan tekemällä varmuuskopio alkuperäisestä konfiguraatiotiedostosta /etc/vsftpd/vsftpd.conf. :

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

Avaa seuraavaksi yllä oleva konfigurointitiedosto ja aseta seuraavat asetukset näillä vastaavilla arvoilla:

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. Määritä nyt FTP sallimaan tai kieltämään FTP-käyttö käyttäjiltä käyttäjäluettelotiedoston /etc/vsftpd.userlist perusteella.

Oletuksena userlist_file=/etc/vsftpd.userlist-luettelossa luetelluilta käyttäjiltä evätään kirjautumisoikeudet, kun userlist_deny-asetuksena on KYLLÄ, jos userlist_enable=KYLLÄ.

userlist_deny=NO kuitenkin muuttaa asetusta, mikä tarkoittaa, että vain käyttäjät, jotka on nimenomaisesti lueteltu kohdassa userlist_file=/etc/vsftpd.userlist, voivat kirjautua sisään.

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   

Siinä ei vielä kaikki, kun käyttäjät kirjautuvat FTP-palvelimelle, heidät sijoitetaan chroot-vankilaan, tämä on paikallinen juurihakemisto, joka toimii heidän kotihakemistonaan vain FTP-istunnossa.

Seuraavaksi tarkastelemme kahta mahdollista skenaariota FTP-käyttäjien chrootista FTP-käyttäjien kotihakemistoihin (paikallinen juurihakemisto), kuten alla on selitetty.

6. Lisää nyt nämä kaksi seuraavaa vaihtoehtoa rajoittaaksesi FTP-käyttäjät kotihakemistoihinsa.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=YES tarkoittaa, että paikalliset käyttäjät sijoitetaan oletusasetusten mukaan chroot-vankilaan, heidän kotihakemistoonsa kirjautumisen jälkeen.

Ja oletusarvoisesti vsftpd ei salli chroot jail -hakemiston olevan kirjoitettavissa turvallisuussyistä, mutta voimme kuitenkin käyttää vaihtoehtoa allow_writeable_chroot=YES tämän asetuksen ohittamiseen.

Tallenna tiedosto ja sulje se.

FTP-palvelimen suojaaminen SELinuxilla

7. Asetetaan nyt alla oleva SELinux boolean, jotta FTP voi lukea käyttäjän kotihakemistossa olevia tiedostoja. Huomaa, että tämä tehtiin alun perin komennolla:

setsebool -P ftp_home_dir on

ftp_home_dir-direktiivi on kuitenkin oletuksena poistettu käytöstä, kuten tässä virheraportissa selitetään: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Nyt käytämme semanage-komentoa asettaaksemme SELinux-säännön sallimaan FTP:n lukea/kirjoittaa käyttäjän kotihakemistoa.

semanage boolean -m ftpd_full_access --on

Tässä vaiheessa meidän on käynnistettävä vsftpd uudelleen, jotta kaikki muutokset, jotka olemme tehneet edellä:

systemctl restart vsftpd

Vaihe 4: FTP-palvelimen testaus

8. Nyt testaamme FTP-palvelinta luomalla FTP-käyttäjän useradd-komennolla.

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

Tämän jälkeen meidän on lisättävä käyttäjä ravi tiedostoon /etc/vsftpd.userlist käyttämällä echo-komentoa seuraavasti:

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

9. Nyt on aika testata, toimivatko yllä olevat asetuksemme oikein. Aloitetaan testaamalla anonyymejä kirjautumisia. Alla olevasta kuvakaappauksesta näemme, että nimettömät kirjautumiset eivät ole sallittuja:

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. Testataan myös, myönnetäänkö käyttäjälle, jota ei ole mainittu tiedostossa /etc/vsftpd.userlist, sisäänkirjautumisoikeudet, mikä ei ole tilanne kuten kuvakaappauksessa alla:

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. Tarkista nyt, onko tiedostossa /etc/vsftpd.userlist lueteltu käyttäjä todella sijoitettu kotihakemistoonsa sisäänkirjautumisen jälkeen:

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

Aktivoi tämä vaihtoehto vain, jos tiedät tarkalleen mitä olet tekemässä. On tärkeää huomata, että nämä tietoturvavaikutukset eivät ole vsftpd-spesifisiä, ne koskevat kaikkia FTP-daemoneja, jotka tarjoavat myös paikalliset käyttäjät chroot-vankiloihin.

Siksi tarkastelemme seuraavassa osiossa turvallisempaa tapaa asettaa erilainen ei-kirjoitettava paikallinen juurihakemisto.

Vaihe 5: Määritä eri FTP-käyttäjien kotihakemistoja

12. Avaa vsftpd-määritystiedosto uudelleen ja aloita kommentoimalla alla olevaa suojaamatonta vaihtoehtoa:

#allow_writeable_chroot=YES

Luo sitten vaihtoehtoinen paikallinen juurihakemisto käyttäjälle (ravi, sinun on luultavasti erilainen) ja poista kaikkien käyttäjien kirjoitusoikeudet tähän hakemistoon:

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

13. Luo seuraavaksi paikallisen juuren alle hakemisto, johon käyttäjä tallentaa tiedostonsa:

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

Lisää/muokkaa sitten seuraavia asetuksia vsftpd-määritystiedostoon näillä arvoilla:

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

Tallenna tiedosto ja sulje se. Aloitetaan jälleen kerran palvelu uusilla asetuksilla:

systemctl restart vsftpd

14. Tee nyt viimeinen testi uudelleen ja katso, että käyttäjän paikallinen juurihakemisto on FTP-hakemisto, jonka loimme hänen kotihakemistoonsa.

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

Se siitä! Tässä artikkelissa kuvailimme, kuinka FTP-palvelin asennetaan, määritetään ja suojataan CentOS 7:ssä. Käytä alla olevaa kommenttiosaa kirjoittaaksesi meille tästä oppaasta/jakaaksesi hyödyllisiä tietoja tästä aiheesta.

Suositeltu luku: Asenna ProFTPD-palvelin RHEL/CentOS 7:ään

Seuraavassa artikkelissa näytämme myös, kuinka FTP-palvelin suojataan käyttämällä SSL/TLS-yhteyksiä CentOS 7:ssä. Pysy siihen asti yhteydessä TecMintiin.