Kā instalēt un konfigurēt FTP serveri Ubuntu


FTP (File Transfer Protocol) ir samērā vecs un visbiežāk izmantots standarta tīkla protokols, ko izmanto failu augšupielādei/lejupielādei starp diviem datoriem tīklā. Tomēr FTP sākotnēji ir nedrošs, jo tas pārraida datus kopā ar lietotāja akreditācijas datiem (lietotājvārdu un paroli) bez šifrēšanas.

Brīdinājums: Ja plānojat izmantot FTP, apsveriet iespēju konfigurēt FTP savienojumu ar SSL/TLS (tas tiks aplūkots nākamajā rakstā). Pretējā gadījumā vienmēr ir labāk izmantot drošu FTP, piemēram, SFTP.

Šajā apmācībā mēs parādīsim, kā Ubuntu instalēt, konfigurēt un aizsargāt FTP serveri (VSFTPD pilnībā “Ļoti drošs FTP dēmons”), lai nodrošinātu spēcīgu drošību pret FTP ievainojamībām.

1. solis: VsFTP servera instalēšana Ubuntu

1. Pirmkārt, mums jāatjaunina sistēmas pakotņu avotu saraksts un pēc tam jāinstalē VSFTPD binārā pakotne šādi:

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

2. Kad instalēšana būs pabeigta, pakalpojums sākotnēji tiks atspējots, tāpēc mums tas jāuzsāk manuāli uz vidējo laiku un jāļauj arī automātiski startēt no nākamās sistēmas sāknēšanas:

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

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

3. Pēc tam, ja serverī ir iespējots UFW ugunsmūris (tas pēc noklusējuma nav iespējots), jums jāatver 21. un 20. ports, kur klausās FTP dēmoni, lai atļautu piekļuvi FTP pakalpojumiem no attālajām mašīnām, pēc tam pievienojiet jaunie ugunsmūra noteikumi ir šādi:

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

2. solis: VsFTP servera konfigurēšana un drošināšana Ubuntu

4. Tagad veiksim dažas konfigurācijas, lai iestatītu un aizsargātu mūsu FTP serveri, vispirms izveidosim sākotnējā konfigurācijas faila /etc/vsftpd/vsftpd.conf dublējumu:

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

Pēc tam atvērsim vsftpd konfigurācijas failu.

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

Pievienojiet/modificējiet šādas opcijas ar šīm vērtībām:

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. Tagad konfigurējiet VSFTPD, lai atļautu/liegtu FTP piekļuvi lietotājiem, pamatojoties uz lietotāju saraksta failu /etc/vsftpd.userlist.

Ņemiet vērā, ka pēc noklusējuma lietotājiem, kas uzskaitīti userlist_file =/etc/vsftpd.userlist, tiek liegta pieteikšanās piekļuve, izmantojot opciju userlist_deny = YES , ja userlist_enable = YES .

Bet opcija userlist_deny = NO uzlabo noklusējuma iestatījuma nozīmi, tāpēc FTP serverī drīkst pieteikties tikai tie lietotāji, kuru lietotājvārds ir nepārprotami norādīts 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   

Svarīgi: Kad lietotāji piesakās FTP serverī, viņi tiek ievietoti ieslodzījuma vietā. Šis ir vietējais saknes direktorijs, kas darbosies kā viņu mājas katalogs tikai FTP sesijai.

Tālāk mēs aplūkosim divus iespējamos scenārijus, kā iestatīt sakņoto ieslodzījuma vietu (vietējās saknes) direktoriju, kā paskaidrots zemāk.

6. Šajā brīdī pievienosim/modificēsim/noņemsim komentārus šīm divām tālāk norādītajām opcijām, lai ierobežotu FTP lietotāju viņu mājas direktorijus.

chroot_local_user=YES
allow_writeable_chroot=YES

Opcija chroot_local_user = YES svarīgi nozīmē, ka vietējie lietotāji pēc pieteikšanās pēc noklusējuma tiks ievietoti Chroot cietumā - viņu mājas direktorijā.

Un mums tāpat ir jāsaprot, ka VSFTPD neļauj chroot jail direktoriju rakstīt, pēc noklusējuma drošības apsvērumu dēļ, tomēr mēs varam izmantot iespēju allow_writeable_chroot = YES, lai atspējotu šo iestatījumu.

Saglabājiet failu un aizveriet to. Tad mums ir jārestartē VSFTPD pakalpojumi, lai stātos spēkā iepriekš minētās izmaiņas:

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

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

3. solis: VsFTP servera pārbaude Ubuntu

7. Tagad mēs pārbaudīsim FTP serveri, izveidojot FTP lietotāju ar komandu useradd šādi:

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

Pēc tam mums ir skaidri jāuzskaita lietotājs aaronkilik failā /etc/vsftpd.userlist ar komandu echo un tee tee, kā norādīts zemāk:

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

8. Tagad ir pienācis laiks pārbaudīt, kā iepriekš minētās konfigurācijas darbojas pēc nepieciešamības. Mēs sāksim pārbaudīt anonīmus pieteikumvārdus; no zemāk esošās izejas skaidri redzam, ka anonīmi pieteikšanās FTP serverī nav atļautas:

# 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. Pēc tam pārbaudīsim, vai lietotājam, kurš nav norādīts failā /etc/vsftpd.userlist, tiks piešķirta atļauja pieteikties, kas nav taisnība no šādas izejas:

# 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. Tagad mēs veiksim pēdējo pārbaudi, lai noteiktu, vai failā /etc/vsftpd.userlist uzskaitītais lietotājs pēc pieteikšanās tiešām ir ievietots viņa/viņas mājas direktorijā. Tas attiecas uz zemāk redzamo rezultātu:

# 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

Brīdinājums: opcijas allow_writeable_chroot = YES iestatīšana var būt tik bīstama, ka tai var būt drošības sekas, it īpaši, ja lietotājiem ir augšupielādes atļauja vai vēl vairāk - piekļuve čaulai. Izmantojiet to tikai tad, ja precīzi zināt, ko darāt.

Jāatzīmē, ka šīs drošības sekas nav specifiskas VSFTPD, tās var ietekmēt arī visus citus FTP dēmonus, kas piedāvā vietējos lietotājus ievietot ieslodzījuma vietās.

Šī iemesla dēļ zemāk esošajā sadaļā mēs izskaidrosim drošāku metodi, kā lietotājam iestatīt citu nerakstāmu vietējo saknes direktoriju.

4. solis: Konfigurējiet FTP lietotāju mājas direktorijus Ubuntu

11. Tagad vēlreiz atveriet VSFTPD konfigurācijas failu.

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

un komentējiet nedrošo opciju, izmantojot rakstzīmi # , kā parādīts zemāk:

#allow_writeable_chroot=YES

Pēc tam izveidojiet lietotājam alternatīvu vietējo saknes direktoriju (aaronkilik, iespējams, jūsu nav tas pats) un iestatiet nepieciešamās atļaujas, atspējojot rakstīšanas atļaujas visiem citiem lietotājiem šajā direktorijā:

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

12. Pēc tam izveidojiet direktoriju zem vietējās saknes ar atbilstošām atļaujām, kur lietotājs glabās savus failus:

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

Pēc tam pievienojiet/modificējiet tālāk norādītās opcijas VSFTPD konfigurācijas failā ar attiecīgajām vērtībām:

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

Saglabājiet failu un aizveriet to. Un restartējiet VSFTPD pakalpojumus, izmantojot jaunākos iestatījumus:

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

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

13. Tagad veiksim pēdējo pārbaudi un pārliecinieties, ka lietotāja vietējais saknes direktorijs ir FTP direktorijs, kuru mēs izveidojām viņa mājas direktorijā.

# 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

Tieši tā! Atcerieties dalīties ar savu viedokli par šo ceļvedi, izmantojot zemāk esošo komentāru veidlapu, vai, iespējams, sniedziet mums svarīgu informāciju par šo tēmu.

Visbeidzot, nepalaidiet garām mūsu nākamo rakstu, kur mēs aprakstīsim, kā aizsargāt FTP serveri, izmantojot SSL/TLS savienojumus Ubuntu 16.04/16.10, līdz tam vienmēr palieciet TecMint.