FTP-serveri installimine ja konfigureerimine Ubuntu


FTP (File Transfer Protocol) on suhteliselt vana ja enamkasutatav standardne võrguprotokoll, mida kasutatakse failide üleslaadimiseks/allalaadimiseks kahe arvuti vahel võrgu kaudu. Kuid FTP oma algse ebaturvalisuse tõttu, kuna see edastab andmeid koos kasutaja mandaatidega (kasutajanimi ja parool) ilma krüpteerimiseta.

Hoiatus: kui plaanite kasutada FTP-d, kaaluge FTP-ühenduse konfigureerimist SSL/TLS-iga (käsitletakse järgmises artiklis). Muidu on alati parem kasutada turvalist FTP-d, näiteks SFTP.

Selles õpetuses näitame, kuidas Ubuntu FTP-serverit (VSFTPD täielikult\"väga turvaline FTP-deemon \") installida, konfigureerida ja turvata, et FTP-nõrkuste vastu oleks võimas turvalisus.

1. samm: installige VsFTP-server Ubuntu

1. Kõigepealt peame värskendama süsteemipaketi allikate loendit ja seejärel installima VSFTPD kahendpakett järgmiselt:

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

2. Kui installimine on lõppenud, keelatakse teenus esialgu, seetõttu peame selle keskmise aja jooksul käsitsi käivitama ja võimaldama ka järgmisel süsteemi käivitamisel automaatselt käivitada:

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

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

3. Järgmisena, kui teil on serveris lubatud UFW tulemüür (see pole vaikimisi lubatud), peate avama pordid 21 ja 20, kus FTP deemonid kuulavad, et võimaldada kaugmasinatelt juurdepääsu FTP-teenustele, seejärel lisage uued tulemüüri reeglid järgmiselt:

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

2. samm: Ubuntu VsFTP-serveri konfigureerimine ja turvamine

4. Tehkem nüüd mõned seadistused FTP-serveri seadistamiseks ja turvamiseks, kõigepealt loome algse konfigureerimisfaili /etc/vsftpd/vsftpd.conf varukoopia nii:

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

Järgmiseks avame vsftpd konfiguratsioonifaili.

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

Lisage/muutke järgmisi suvandeid nende 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 VSFTPD, et lubada/keelata FTP juurdepääs kasutajatele kasutajaloendifaili /etc/vsftpd.userlist põhjal.

Pange tähele, et vaikimisi keelatakse kasutajate loendis userlist_file =/etc/vsftpd.userlist loetletud kasutajatele sisselogimisvalik userlist_deny = YES , kui userlist_enable = YES .

Kuid valik userlist_deny = NO muudab vaikesätte tähenduse keerulisemaks, seega lubatakse FTP-serverisse sisse logida ainult need kasutajad, kelle kasutajanimi on sõnaselgelt loetletud jaotises userlist_file =/etc/vsftpd.userlist.

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ähtis: Kui kasutajad FTP-serverisse sisse logivad, paigutatakse nad chrootitud vanglasse. See on kohalik juurkataloog, mis toimib nende kodukataloogina ainult FTP-seansi jaoks.

Järgmisena vaatame kahte võimalikku stsenaariumi, kuidas seadistada chrooted jail (local root) kataloogi, nagu allpool selgitatud.

6. Siinkohal lisame/muudame/eemaldame need kaks järgmist valikut, et piirata FTP kasutajate kodukatalooge.

chroot_local_user=YES
allow_writeable_chroot=YES

Valik chroot_local_user = YES tähendab tähtsat, et kohalikud kasutajad paigutatakse pärast sisselogimist vaikimisi chroot vanglasse, nende kodukataloogi.

Ja peame mõistma ka seda, et VSFTPD ei luba chroot jail kataloogi kirjutada, vaikimisi turvalisuse huvides, kuid selle sätte keelamiseks võime kasutada valikut allow_writeable_chroot = YES.

Salvestage fail ja sulgege see. Seejärel peame ülaltoodud muudatuste jõustumiseks VSFTPD teenused taaskäivitama:

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

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

3. samm: VsFTP-serveri testimine Ubuntu

7. Nüüd testime FTP-serverit, luues FTP-kasutaja käsuga useradd järgmiselt:

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

Seejärel peame kasutaja aaronkilik selgesõnaliselt loetlema failis /etc/vsftpd.userlist koos käsu echo ja tee abil:

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

8. Nüüd on aeg testida, kas meie ülaltoodud konfiguratsioonid toimivad vastavalt vajadusele. Alustame anonüümsete sisselogimiste testimisest; allpool olevast väljundist näeme selgelt, et anonüümsed sisselogimised pole FTP-serveris lubatud:

# 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. Järgmisena proovime, kas kasutajale, kes pole failis /etc/vsftpd.userlist loetletud, antakse sisselogimiseks luba, mis ei kehti järgmisest väljundist:

# 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. Nüüd viime läbi viimase testi, et teha kindlaks, kas failis /etc/vsftpd.userlist loetletud kasutaja on pärast sisselogimist tegelikult oma kodukataloogis. Ja see kehtib allpool toodud väljundi kohta:

# 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

Hoiatus: Valiku allow_writeable_chroot = YES määramine võib olla nii ohtlik, kuna sellel võivad olla ka turvalisuse tagamised, eriti kui kasutajatel on üleslaadimisluba või veelgi enam, juurdepääs shellile. Kasutage seda ainult siis, kui teate täpselt, mida teete.

Peaksime märkima, et need turvalisuse tagamõtted ei ole VSFTPD-le omased, need võivad mõjutada ka kõiki teisi FTP-deemoneid, mis pakuvad kohalikke kasutajaid chroot-vanglatesse.

Sel põhjusel selgitame allpool olevas jaotises turvalisemat meetodit kasutaja jaoks teise kirjutamatu kohaliku juurkataloogi määramiseks.

4. samm: konfigureerige Ubuntu FTP kasutajate kodukataloogid

11. Nüüd avage veel kord VSFTPD konfiguratsioonifail.

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

ja kommenteerige ebaturvaline valik, kasutades märki # , nagu allpool näidatud:

#allow_writeable_chroot=YES

Järgmisena looge kasutaja jaoks alternatiivne kohalik juurkataloog (aaronkilik, teie oma pole tõenäoliselt sama) ja määrake vajalikud õigused, keelates kõigi teiste selle kataloogi kasutajate kirjutamisõigused:

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

12. Seejärel looge kohaliku juure alla asjakohaste õigustega kataloog, kuhu kasutaja oma failid salvestab:

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

Seejärel lisage/muutke allpool olevaid suvandeid VSFTPD konfiguratsioonifailis nende vastavate 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. Ja taaskäivitage VSFTPD teenused viimaste seadetega:

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

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

13. Nüüd kontrollime lõplikult ja veendume, et kasutaja kohalik juurkataloog on FTP-kataloog, mille lõime tema kodukataloogis.

# 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

See on kõik! Jagage kindlasti oma arvamust selle juhendi kohta alloleva kommentaarivormi kaudu või andke meile selle teema kohta olulist teavet.

Viimasena, kuid mitte vähem tähtsana, ärge jätke kasutamata meie järgmist artiklit, kus me kirjeldame, kuidas FTP-serverit SSL/TLS-ühenduste abil Ubuntu 16.04/16.10 abil kaitsta, püsige alati TecMintiga kursis.