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


FTP (File Transfer Protocol) on perinteinen ja laajasti käytetty vakiotyökalu tiedostojen siirtämiseen palvelimen ja asiakkaiden välillä verkon kautta, varsinkin kun todentamista ei tarvita (sallii nimettömien käyttäjien muodostaa yhteyden palvelimeen). Meidän on ymmärrettävä, että FTP on oletusarvoisesti suojaamaton, koska se lähettää käyttäjän tunnistetietoja ja tietoja ilman salausta.

Tässä oppaassa kuvataan vaiheet FTP-palvelimen asentamiseksi, määrittämiseksi ja suojaamiseksi (VSFTPD tarkoittaa "erittäin turvallista FTP-demonia") CentOS/RHEL 7- ja Fedora-jakelussa.

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

Vaihe 1: FTP-palvelimen asentaminen

1. vsftpd-palvelimen asennus on suoraviivaista, suorita seuraava komento terminaalissa.

# yum install vsftpd

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

# systemctl start vsftpd
# systemctl enable vsftpd

3. Seuraavaksi, jotta voimme sallia pääsyn FTP-palveluihin 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ääritys

4. Nyt siirrymme suorittamaan muutaman kokoonpanon FTP-palvelimen asentamiseksi ja suojaamiseksi. Aloitetaan tekemällä varmuuskopio alkuperäisestä asetustiedostosta /etc/vsftpd/vsftpd.conf:

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

Avaa seuraavaksi yllä oleva määritystiedosto 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/estämään FTP-käyttö käyttäjille käyttäjäluettelotiedoston /etc/vsftpd.userlist perusteella.

Oletusarvon mukaan userlist_file =/etc/vsftpd.userlist -luettelossa luetelluilta käyttäjiltä evätään sisäänkirjautumisoikeudet, kun userlist_deny-asetuksena on YES, jos userlist_enable = YES.

Userlist_deny = EI muuttaa asetusta, mikä tarkoittaa, että vain käyttäjät, jotka on nimenomaisesti lueteltu userlist_file =/etc/vsftpd.userlist -palvelussa, 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   

Tämä ei ole kaikki, kun käyttäjät kirjautuvat FTP-palvelimelle, heidät asetetaan chroot’ed-vankilaan, tämä on paikallinen juurihakemisto, joka toimii heidän kotihakemistona vain FTP-istunnossa.

Seuraavaksi tarkastellaan kahta mahdollista skenaariota siitä, miten FTP-käyttäjät voidaan chroottaa FTP-käyttäjien kotihakemistoihin (paikallinen juurihakemisto), kuten alla selitetään.

6. Lisää nyt nämä kaksi seuraavaa vaihtoehtoa rajoittaa FTP-käyttäjien kotihakemistoihin.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user = KYLLÄ tarkoittaa, että paikalliset käyttäjät sijoitetaan chroot-vankilaan, heidän kotihakemistoonsa sisäänkirjautumisen jälkeen oletusasetuksilla.

Ja myös oletusarvoisesti vsftpd ei salli chroot-vankilahakemiston kirjoittamista turvallisuussyistä, mutta voimme kuitenkin käyttää asetusta allow_writeable_chroot = YES tämän asetuksen ohittamiseen.

Tallenna tiedosto ja sulje se.

FTP-palvelimen suojaaminen SELinuxilla

7. Nyt asetetaan alla oleva SELinux-totuusarvo sallimaan FTP: n lukea käyttäjän kotihakemiston tiedostoja. Huomaa, että tämä tehtiin alun perin komennolla:

# setsebool -P ftp_home_dir on

ftp_home_dir -direktiivi on kuitenkin oletusarvoisesti 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 asettamaan 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 voimme tehdä kaikki tähän mennessä tekemämme muutokset:

# systemctl restart vsftpd

Vaihe 4: FTP-palvelimen testaus

8. Nyt testataan FTP-palvelin luomalla FTP-käyttäjä useradd -komennolla.

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

Myöhemmin meidän on lisättävä käyttäjän 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 anonyymit kirjautumistiedot. Näemme alla olevasta kuvakaappauksesta, että nimettömiä kirjautumisia ei sallita:

# 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, saako käyttäjälle, jota ei ole luettelossa /etc/vsftpd.userlist, kirjautumisoikeus, mikä ei ole asia kuten alla olevassa kuvakaappauksessa:

# 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 kirjautumisen 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ä turvallisuusvaikutukset eivät ole spesifisiä vsftpd: lle, vaan ne koskevat kaikkia FTP-demoneja, jotka tarjoavat paikallisten käyttäjien asettamista myös chroot-vankiloihin.

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

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

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 todennäköisesti erilainen) ja poista kirjoitusoikeudet kaikille tämän hakemiston käyttäjille:

# 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 tiedostot:

# 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ääritystiedostossa 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. Käynnistetään jälleen palvelu uudella asetuksella:

# systemctl restart vsftpd

14. Tee nyt viimeinen testi uudelleen ja huomaa, että käyttäjien 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 kuvattiin, kuinka FTP-palvelin asennetaan, konfiguroidaan ja suojataan CentOS 7: ssä, käytä alla olevaa kommenttiosaa kirjoittaaksesi meille takaisin tästä oppaasta/jakaaksesi hyödyllisiä tietoja tästä aiheesta.

Seuraavassa artikkelissa näytämme myös, kuinka FTP-palvelin voidaan suojata SSL/TLS-yhteyksillä CentOS 7: ssä, kunnes olet pysynyt yhteydessä TecMintiin.