Kaip įdiegti ir konfigūruoti FTP serverį Ubuntu


FTP (Failų perdavimo protokolas) yra santykinai senas ir dažniausiai naudojamas standartinis tinklo protokolas, naudojamas failams įkelti/atsisiųsti iš dviejų kompiuterių tinkle. Tačiau FTP iš pradžių nesaugus, nes perduoda duomenis kartu su vartotojo kredencialais (naudotojo vardu ir slaptažodžiu) be šifravimo.

Įspėjimas: jei planuojate naudoti FTP, apsvarstykite galimybę sukonfigūruoti FTP ryšį su SSL/TLS (apims Kitas straipsnis). Priešingu atveju visada geriau naudoti saugų FTP, pvz., SFTP.

Siūlomas skaitymas: kaip įdiegti ir apsaugoti FTP serverį „CentOS 7“

Šiame vadove parodysime, kaip įdiegti, sukonfigūruoti ir apsaugoti FTP serverį (VSFTPD visiškai „Labai saugus FTP demonas“) Ubuntu, kad būtų užtikrinta galinga apsauga nuo FTP pažeidžiamumų.

1 veiksmas: VsFTP serverio įdiegimas Ubuntu

1. Pirmiausia turime atnaujinti sistemos paketų šaltinių sąrašą ir įdiegti VSFTPD dvejetainį paketą, kaip nurodyta toliau:

sudo apt-get update
sudo apt-get install vsftpd

2. Kai diegimas bus baigtas, paslauga iš pradžių bus išjungta, todėl turėsime ją paleisti rankiniu būdu tam tikrą laiką ir taip pat įgalinti automatiškai paleisti kitą sistemą:

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

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

3. Tada, jei serveryje įgalinta UFW užkarda (ji neįjungta pagal numatytuosius nustatymus), turite atidaryti prievadus 21 ir 20 kur klausosi FTP demonai, kad būtų galima pasiekti FTP paslaugas iš nuotolinių įrenginių, tada pridėkite naujas ugniasienės taisykles taip:

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

2 veiksmas: konfigūruokite ir apsaugokite VsFTP serverį Ubuntu

4. Dabar atlikime keletą konfigūracijų, kad nustatytume ir apsaugotume FTP serverį. Pirmiausia sukursime originalaus konfigūracijos failo /etc/vsftpd/vsftpd.conf atsarginę kopiją, pvz. taigi:

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

Tada atidarykime vsftpd konfigūracijos failą.

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

Pridėkite/pakeiskite šias parinktis naudodami šias reikšmes:

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. Dabar sukonfigūruokite VSFTPD, kad leistumėte/uždraustumėte FTP prieigą vartotojams pagal naudotojų sąrašo failą /etc/vsftpd.userlist.

Atminkite, kad pagal numatytuosius nustatymus naudotojams, išvardytiems userlist_file=/etc/vsftpd.userlist, neleidžiama prisijungti naudojant userlist_deny=YES parinktį, jei userlist_enable=YES .

Tačiau parinktis userlist_deny=NO pakeičia numatytojo nustatymo reikšmę, todėl tik tie naudotojai, kurių naudotojo vardas yra aiškiai nurodytas userlist_file=/etc/vsftpd.userlist, galės prisijungti prie FTP serverio.

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   

Svarbu: kai vartotojai prisijungia prie FTP serverio, jie patenka į chrootuotą kalėjimą, tai yra vietinis šakninis katalogas, kuris veiks kaip jų pagrindinis FTP seanso katalogas tik.

Toliau apžvelgsime du galimus scenarijus, kaip nustatyti chrootuotą kalėjimo (vietinės šakninės) katalogą, kaip paaiškinta toliau.

6. Šiuo metu pridėkime/pakeiskime/panaikinkime šias dvi parinktis, kad FTP naudotojai būtų apriboti savo namų katalogais.

chroot_local_user=YES
allow_writeable_chroot=YES

Parinktis chroot_local_user=YES svarbu tai, kad vietiniai vartotojai bus patalpinti į chroot kalėjimą – jų namų katalogą pagal numatytuosius nustatymus po prisijungimo.

Taip pat turime suprasti, kad pagal numatytuosius nustatymus saugumo sumetimais VSFTPD neleidžia įrašyti chroot jail katalogo, tačiau galime naudoti parinktį allow_writeable_chroot=YES, kad išjungtume šį nustatymą.

Išsaugokite failą ir uždarykite jį. Tada turime iš naujo paleisti VSFTPD paslaugas, kad anksčiau pateikti pakeitimai įsigaliotų:

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

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

3 veiksmas: VsFTP serverio testavimas Ubuntu

7. Dabar išbandysime FTP serverį sukurdami FTP naudotoją su komanda useradd, kaip nurodyta toliau:

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

Tada turime aiškiai įtraukti naudotoją aaronkilik į failą /etc/vsftpd.userlist su komanda echo ir tee komanda, kaip nurodyta toliau:

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

8. Dabar pats laikas patikrinti, ar anksčiau pateiktos konfigūracijos veikia taip, kaip reikia. Pradėsime nuo anoniminių prisijungimų testavimo; iš toliau pateiktos išvesties aiškiai matome, kad anoniminiai prisijungimai FTP serveryje neleidžiami:

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. Tada patikrinkime, ar vartotojui, nenurodytam faile /etc/vsftpd.userlist, bus suteiktas leidimas prisijungti, o tai nėra tiesa iš toliau pateiktos išvesties. :

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. Dabar atliksime paskutinį testą, kad nustatytume, ar vartotojas, nurodytas faile /etc/vsftpd.userlist, iš tikrųjų yra įtrauktas į savo namų katalogą po to, kai Prisijungti. Ir tai tiesa iš toliau pateiktos išvesties:

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

Įspėjimas: parinkties allow_writeable_chroot=YES nustatymas gali būti toks pavojingas, kad gali kilti pasekmių saugumui, ypač jei naudotojai turi įkėlimo leidimą arba tuo labiau, apvalkalo prieiga. Naudokite tik tuo atveju, jei tiksliai žinote, ką darote.

Turėtume atkreipti dėmesį, kad šie saugumo padariniai nėra būdingi VSFTPD, jie taip pat gali turėti įtakos visiems kitiems FTP demonams, kurie siūlo vietinius vartotojus įdėti į chroot kalėjimus.

Dėl šios priežasties toliau esančiame skyriuje paaiškinsime saugesnį būdą, kaip vartotojui nustatyti kitą neįrašomą vietinį šakninį katalogą.

4 veiksmas: sukonfigūruokite FTP vartotojo namų katalogus Ubuntu

11. Dabar dar kartą atidarykite VSFTPD konfigūracijos failą.

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

ir pakomentuokite nesaugią parinktį naudodami simbolį #, kaip parodyta toliau:

#allow_writeable_chroot=YES

Tada sukurkite alternatyvų vietinį vartotojo šakninį katalogą (aaronkilik, jūsų gali būti ne tas pats) ir nustatykite reikiamus leidimus, išjungdami rašymo leidimus visiems kitiems šio katalogo naudotojams:

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

12. Tada sukurkite katalogą vietinėje šaknyje su atitinkamais leidimais, kuriame naudotojas saugos savo failus:

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

Po to VSFTPD konfigūracijos faile pridėkite/pakeiskite toliau pateiktas parinktis su atitinkamomis reikšmėmis:

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

Išsaugokite failą ir uždarykite jį. Ir iš naujo paleiskite VSFTPD paslaugas naudodami naujausius nustatymus:

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

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

13. Dabar atlikime galutinį patikrinimą ir įsitikinkime, kad vartotojo vietinis šakninis katalogas yra FTP katalogas, kurį sukūrėme jo pagrindiniame kataloge.

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

Viskas! Nepamirškite pasidalinti savo nuomone apie šį vadovą naudodami toliau pateiktą komentarų formą arba galbūt pateikite mums bet kokios svarbios informacijos apie temą.

Paskutinis, bet ne mažiau svarbus dalykas – nepraleiskite mūsų kito straipsnio, kuriame aprašysime, kaip apsaugoti FTP serverį naudojant SSL/TLS ryšius Ubuntu 16.04/16.10 versijoje, iki tol visada būkite prisijungę prie TecMint.