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


FTP (File Transfer Protocol) on suhteellisen vanha ja eniten käytetty standardiverkkoprotokolla, jota käytetään tiedostojen lähettämiseen tai lataamiseen kahden tietokoneen välillä verkon kautta. Kuitenkin FTP sen alkuperäisen turvallisuuden vuoksi, koska se lähettää tiedot yhdessä käyttäjän tunnistetietojen (käyttäjätunnus ja salasana) kanssa ilman salausta.

Varoitus: jos aiot käyttää FTP:tä, harkitse FTP-yhteyden määrittämistä SSL/TLS:llä (kattaa seuraava artikkeli). Muuten on aina parempi käyttää suojattua FTP:tä, kuten SFTP:tä.

Suositeltu luku: FTP-palvelimen asentaminen ja suojaaminen CentOS 7:ssä

Tässä opetusohjelmassa näytämme, kuinka FTP-palvelin (VSFTPD) asennetaan, määritetään ja suojataan kokonaisuudessaan "Very Secure FTP Daemon" Ubuntu, jolla on tehokas suojaus FTP-haavoittuvuuksia vastaan.

Vaihe 1: VsFTP-palvelimen asentaminen Ubuntuun

1. Ensin meidän on päivitettävä järjestelmäpakettien lä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 toistaiseksi manuaalisesti ja sallittava se käynnistyä automaattisesti järjestelmän seuraavasta käynnistyksestä:

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

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

3. Seuraavaksi, jos UFW-palomuuri on käytössä (se ei ole oletuksena käytössä) palvelimella, sinun on avattava portit 21 ja 20 missä FTP-demonit kuuntelevat, jotta etäkoneista saataisiin pääsy FTP-palveluihin, 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. Tehdään nyt muutamia määrityksiä FTP-palvelimemme asentamiseksi ja suojaamiseksi. Ensin luomme varmuuskopion alkuperäisestä konfiguraatiotiedostosta /etc/vsftpd/vsftpd.conf, kuten niin:

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

Avataan seuraavaksi 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 tai estämään FTP-käyttö käyttäjiltä käyttäjäluettelotiedoston /etc/vsftpd.userlist perusteella.

Huomaa, että oletuksena userlist_file=/etc/vsftpd.userlist-luettelossa lueteltujen käyttäjien kirjautuminen estetään userlist_deny=YES-vaihtoehdolla, jos userlist_enable=YES .

Mutta vaihtoehto userlist_deny=NO vääristää oletusasetuksen merkitystä, joten vain käyttäjät, joiden käyttäjänimi on nimenomaisesti lueteltu kohdassa userlist_file=/etc/vsftpd.userlist, saavat kirjaudu sisään FTP-palvelimelle.

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, he joutuvat chroot-tilaan. Tämä on paikallinen juurihakemisto, joka toimii heidän kotihakemistonaan FTP-istunnossa. vain.

Seuraavaksi tarkastellaan kahta mahdollista skenaariota chrooted jail (local root) -hakemiston asettamisesta, kuten alla on selitetty.

6. Tässä vaiheessa lisätään/muokataan näitä kahta vaihtoehtoa/poistetaan kommentit, jotta FTP-käyttäjät voidaan rajoittaa kotihakemistoihinsa.

chroot_local_user=YES
allow_writeable_chroot=YES

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

Meidän on myös ymmärrettävä, että VSFTPD ei salli chroot jail -hakemiston olevan kirjoitettavaa, oletusarvoisesti turvallisuussyistä, mutta voimme käyttää vaihtoehtoa 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 testaus Ubuntussa

7. Nyt testaamme FTP-palvelinta luomalla FTP-käyttäjän useradd-komennolla seuraavasti:

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

Sitten meidän on 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, että yllä olevat kokoonpanomme toimivat tarpeen mukaan. Aloitamme testaamalla anonyymejä kirjautumisia; näemme selvästi alla olevasta lähdöstä, että anonyymit kirjautumiset eivät ole sallittuja 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. Testataan seuraavaksi, myönnetäänkö käyttäjälle, jota ei ole mainittu tiedostossa /etc/vsftpd.userlist, kirjautumisoikeudet, 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. Nyt suoritamme viimeisen testin selvittääksemme, onko tiedostossa /etc/vsftpd.userlist lueteltu käyttäjä todella sijoitettu hänen kotihakemistoonsa Kirjaudu sisään. Ja tämä on totta alla olevasta 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.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 latauslupa tai enemmänkin, shell pääsy. Käytä sitä vain, jos tiedät tarkalleen mitä olet tekemässä.

Huomaa, että nämä turvallisuusvaikutukset eivät koske VSFTPD:tä, vaan ne voivat vaikuttaa myös kaikkiin muihin FTP-daemoneihin, jotka tarjoavat paikallisille käyttäjille chroot-vankiloita.

Tästä syystä alla olevassa osiossa selitämme turvallisemman tavan määrittää käyttäjälle erilainen ei-kirjoitettava paikallinen juurihakemisto.

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 epäturvallinen vaihtoehto käyttämällä #-merkkiä alla olevan kuvan mukaisesti:

#allow_writeable_chroot=YES

Luo seuraavaksi käyttäjälle vaihtoehtoinen paikallinen juurihakemisto (aaronkilik, omasi ei välttämättä ole sama) ja aseta tarvittavat käyttöoikeudet poistamalla kirjoitusoikeudet kaikilta muilta käyttäjiltä tähän hakemistoon:

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

12. Luo sitten paikallisen juuren alle hakemisto, jossa on asianmukaiset oikeudet, johon käyttäjä tallentaa tiedostonsa:

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

Lisää/muokkaa sen jälkeen alla olevia asetuksia VSFTPD-määritystiedostoon vastaavine arvoineen:

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. Ja käynnistä VSFTPD-palvelut uudelleen uusimmilla asetuksilla:

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

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

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

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 kautta tai mahdollisesti antaa meille tärkeitä aiheeseen liittyviä tietoja.

Viimeisenä, mutta ei vähäisimpänä, älä missaa seuraavaa artikkeliamme, jossa kuvataan, kuinka FTP-palvelin suojataan SSL/TLS-yhteyksillä Ubuntu 16.04/16.10:ssä. Pysy aina TecMintissä siihen asti.