Kuinka asentaa ja määrittää FTP-palvelin Ubuntussa


FTP (File Transfer Protocol) on suhteellisen vanha ja eniten käytetty vakioverkkoprotokolla, jota käytetään tiedostojen lataamiseen kahden tietokoneen välillä verkon kautta. FTP on kuitenkin alkuperäisen epävarma, koska se lähettää tietoja yhdessä käyttäjän tunnistetietojen (käyttäjänimen ja salasanan) kanssa ilman salausta.

Varoitus: Jos aiot käyttää FTP: tä, harkitse FTP-yhteyden määrittämistä SSL/TLS: n kanssa (kerrotaan seuraavassa artikkelissa). Muussa tapauksessa on aina parempi käyttää suojattua FTP: tä, kuten SFTP.

Tässä opetusohjelmassa näytetään, kuinka FTP-palvelin (VSFTPD kokonaisuudessaan ”erittäin turvallinen FTP-demoni”) asennetaan, konfiguroidaan ja suojataan Ubuntussa tehokkaan suojauksen FTP-haavoittuvuuksia vastaan.

Vaihe 1: VsFTP-palvelimen asentaminen Ubuntuun

1. Ensinnäkin meidän on päivitettävä järjestelmäpakettilähdeluettelo ja asennettava sitten VSFTPD-binaaripaketti seuraavasti:

$ sudo apt-get update
$ sudo apt-get install vsftpd

2. Kun asennus on valmis, palvelu poistetaan käytöstä aluksi, joten meidän on käynnistettävä se manuaalisesti keskimääräiseksi ajaksi ja myös sallittava se käynnistää automaattisesti seuraavasta järjestelmän käynnistämisestä:

------------- On SystemD ------------- 
# systemctl start vsftpd
# systemctl enable vsftpd

------------- On SysVInit ------------- 
# service vsftpd start
# chkconfig --level 35 vsftpd on

3. Seuraavaksi, jos palvelimessa on käytössä UFW-palomuuri (se ei ole oletusarvoisesti käytössä), sinun on avattava portit 21 ja 20, joissa FTP-demonit kuuntelevat, jotta FTP-palveluihin voidaan päästä etäkoneilta, ja lisää sitten uudet palomuurisäännöt seuraavasti:

$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
$ sudo ufw status

Vaihe 2: VsFTP-palvelimen määrittäminen ja suojaaminen Ubuntussa

4. Suoritetaan nyt muutama kokoonpano FTP-palvelimen asentamiseksi ja suojaamiseksi, ensin luomme varmuuskopion alkuperäisestä asetustiedostosta /etc/vsftpd/vsftpd.conf näin:

$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Seuraavaksi avataan vsftpd-määritystiedosto.

$ sudo vi /etc/vsftpd.conf
OR
$ sudo nano /etc/vsftpd.conf

Lisää/muokkaa seuraavia vaihtoehtoja näillä 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 VSFTPD sallimaan/estämään FTP-käyttö käyttäjille käyttäjäluettelotiedoston /etc/vsftpd.userlist perusteella.

Huomaa, että oletusarvoisesti käyttäjäluettelossa userlist_file =/etc/vsftpd.userlist luetelluilta käyttäjiltä evätään sisäänkirjautumisoikeus userlist_deny = YES -vaihtoehdolla, jos userlist_enable = YES .

Mutta vaihtoehto userlist_deny = NO vääntää oletusasetuksen merkityksen, joten vain käyttäjät, joiden käyttäjänimi on nimenomaisesti lueteltu kohdassa userlist_file =/etc/vsftpd.userlist, voivat kirjautua FTP-palvelimeen.

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ärkeää: Kun käyttäjät kirjautuvat FTP-palvelimelle, heidät asetetaan vankilaan, tämä on paikallinen juurihakemisto, joka toimii heidän kotihakemistona vain FTP-istunnossa.

Seuraavaksi tarkastelemme kahta mahdollista skenaariota siitä, miten chrootoitu vankila (paikallinen päähakemisto) asetetaan, kuten alla selitetään.

6. Tässä vaiheessa lisätään/muokataan/poistetaan kommentti näistä kahdesta seuraavasta vaihtoehdosta rajoittaa FTP-käyttäjät heidän kotihakemistoonsa.

chroot_local_user=YES
allow_writeable_chroot=YES

Vaihtoehto chroot_local_user = YES tarkoittaa ennen kaikkea sitä, että paikalliset käyttäjät sijoitetaan chroot-vankilaan, heidän kotihakemistoonsa oletusarvoisesti sisäänkirjautumisen jälkeen.

Ja meidän on yhtä hyvin ymmärrettävä, että VSFTPD ei salli chroot-vankilahakemiston olevan kirjoitettavissa, oletusarvoisesti turvallisuussyistä. Voimme kuitenkin käyttää asetusta allow_writeable_chroot = YES tämän asetuksen poistamiseksi käytöstä.

Tallenna tiedosto ja sulje se. Sitten meidän on käynnistettävä VSFTPD-palvelut uudelleen, jotta yllä olevat muutokset tulevat voimaan:

------------- On SystemD ------------- 
# systemctl restart vsftpd

------------- On SysVInit ------------- 
# service vsftpd restart

Vaihe 3: VsFTP-palvelimen testaaminen Ubuntussa

7. Testataan nyt FTP-palvelin luomalla FTP-käyttäjä, jolla on useradd-komento, seuraavasti:

$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
$ sudo passwd aaronkilik

Sitten meidän on nimenomaisesti lueteltava käyttäjä aaronkilik tiedostoon /etc/vsftpd.userlist echo-komennolla ja tee-komennolla seuraavasti:

$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
$ cat /etc/vsftpd.userlist

8. Nyt on aika testata yllä olevat kokoonpanomme toimivat tarvittaessa. Aloitamme testaamalla anonyymit kirjautumistiedot; näemme alla olevasta lähdöstä selvästi, että nimettömiä kirjautumisia ei sallita FTP-palvelimella:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Seuraavaksi testataan, saako käyttäjälle, jota ei ole lueteltu tiedostossa /etc/vsftpd.userlist, kirjautumisoikeus, mikä ei pidä paikkaansa seuraavasta lähdöstä:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Suoritamme nyt viimeisen testin sen selvittämiseksi, onko tiedosto /etc/vsftpd.userlist lueteltu käyttäjä todella sijoitettu kotihakemistoonsa sisäänkirjautumisen jälkeen. Ja tämä pätee alla olevaan tulokseen:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Varoitus: Vaihtoehdon allow_writeable_chroot = YES asettaminen voi olla niin vaarallista, että sillä voi olla turvallisuusvaikutuksia, varsinkin jos käyttäjillä on lähetyslupa tai enemmänkin shell-käyttöoikeus. Käytä sitä vain, jos tiedät tarkalleen mitä olet tekemässä.

Meidän on huomattava, että nämä turvallisuusvaikutukset eivät ole ominaisia VSFTPD: lle, ne voivat vaikuttaa myös kaikkiin muihin FTP-demoneihin, jotka tarjoavat paikallisten käyttäjien asettamista chroot-vankiloihin.

Tästä syystä seuraavassa osassa selitämme turvallisemman menetelmän asettaa toinen ei-kirjoitettava paikallinen juurihakemisto käyttäjälle.

Vaihe 4: Määritä FTP-käyttäjien kotihakemistot Ubuntussa

11. Avaa nyt VSFTPD-määritystiedosto vielä kerran.

$ sudo vi /etc/vsftpd.conf
OR
$ sudo nano /etc/vsftpd.conf

ja kommentoi suojaamaton vaihtoehto käyttämällä # -merkkiä alla esitetyllä tavalla:

#allow_writeable_chroot=YES

Luo seuraavaksi vaihtoehtoinen paikallinen juurihakemisto käyttäjälle (aaronkilik, sinun ei ehkä ole sama) ja aseta tarvittavat oikeudet poistamalla kirjoitusoikeudet käytöstä kaikille muille tämän hakemiston käyttäjille:

$ sudo mkdir /home/aaronkilik/ftp
$ sudo chown nobody:nogroup /home/aaronkilik/ftp
$ sudo chmod a-w /home/aaronkilik/ftp

12. Luo sitten hakemistoon paikallisen juuren alle tarvittavat oikeudet, joihin käyttäjä tallentaa tiedostot:

$ sudo mkdir /home/aaronkilik/ftp/files
$ sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
$ sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Tämän jälkeen lisää/muokkaa alla olevia asetuksia VSFTPD-määritystiedostossa vastaavilla 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äynnistä VSFTPD-palvelut uudestaan viimeisimmillä asetuksilla:

------------- On SystemD ------------- 
# systemctl restart vsftpd

------------- On SysVInit ------------- 
# service vsftpd restart

13. Suoritetaan nyt viimeinen tarkistus ja varmista, että käyttäjän paikallinen juurihakemisto on hänen kotihakemistoonsa luoma FTP-hakemisto.

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Se siitä! Muista jakaa mielipiteesi tästä oppaasta alla olevan kommenttilomakkeen avulla tai mahdollisesti antaa meille tärkeitä tietoja aiheesta.

Viimeisenä mutta ei vähäisimpänä, älä missaa seuraavaa artikkeliamme, jossa kuvataan, kuinka FTP-palvelin voidaan suojata SSL/TLS-yhteyksillä Ubuntu 16.04/16.10: ssa, pysy aina siihen saakka TecMint.