Ubuntu-da FTP serwerini nädip gurmaly we sazlamaly


FTP (Faýl geçirmek protokoly), bir kompýuteriň üsti bilen iki kompýuteriň arasynda faýl ýüklemek/göçürip almak üçin ulanylýan, köne we iň köp ulanylýan standart protokol. Şeýle-de bolsa, FTP asyl ygtybarsyzlygy sebäpli maglumatlary ulanyjy şahsyýetnamalary (ulanyjy ady we paroly) bilen şifrlemezden geçirýär.

Duýduryş: FTP ulanmagy meýilleşdirýän bolsaňyz, FTP birikmesini SSL/TLS bilen sazlamagy göz öňünde tutuň (indiki makalada görkeziler). Otherwiseogsam, SFTP ýaly ygtybarly FTP ulanmak elmydama gowudyr.

Bu gollanmada, Ubuntu-da FTP gowşaklyklaryna garşy güýçli howpsuzlygy üpjün etmek üçin FTP serwerini (VSFTPD doly\Örän ygtybarly FTP Daemon \) nädip gurmalydygyny, sazlamalydygyny we goramalydygyny görkezeris.

1-nji ädim: Ubuntu-da VsFTP serwerini gurmak

1. Ilki bilen ulgam paket çeşmeleriniň sanawyny täzelemeli, soňra bolsa VSFTPD ikilik paketini aşakdaky ýaly gurmaly:

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

2. Gurmak tamamlanandan soň, hyzmat başda öçüriler, şonuň üçin ony ortaça wagt bilen el bilen başlamaly we indiki ulgam ýüklemesinden awtomatiki başlamaga mümkinçilik bermeli:

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

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

3. Ondan soň, serwerde UFW firewall işledilen bolsa (deslapky görnüşde işlemeýär), uzakdaky enjamlardan FTP hyzmatlaryna girmäge rugsat bermek üçin FTP daýonlarynyň diňleýän ýerinde 21 we 20 portlaryny açmaly, soň goşuň gorag diwarynyň täze düzgünleri:

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

2-nji ädim: Ubuntu-da VsFTP serwerini sazlamak we goramak

4. Geliň, indi FTP serwerimizi gurmak we goramak üçin birnäçe konfigurasiýa edeliň, ilki bilen asyl konfigurasiýa faýlynyň ätiýaçlyk nusgasyny dörederis /etc/vsftpd/vsftpd.conf:

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

Indiki, vsftpd konfigurasiýa faýlyny açalyň.

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

Şu bahalar bilen aşakdaky wariantlary goşuň/üýtgediň:

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. Indi, ulanyjy sanawy faýly /etc/vsftpd.userlist esasynda ulanyjylara FTP girmegine rugsat bermek/ret etmek üçin VSFTPD sazlaň.

Düzgüne görä, ulanyjy sanawy_file =/etc/vsftpd.userlist sanawynda görkezilen ulanyjylara userlist_enable=YES userlist_deny=YES opsiýasy bilen girmek gadagan edilýär.

Emma, userlist_deny=NOOK opsiýasy deslapky sazlamanyň manysyny üýtgedýär, şonuň üçin diňe ulanyjy ady_file =/etc/vsftpd.userlist sanawynda ulanyjy ady açyk görkezilen ulanyjylara FTP serwerine girmäge rugsat berler.

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   

Üns beriň: Ulanyjylar FTP serwerine girenlerinde, tussag edilen türmä salýarlar, bu diňe FTP sessiýasy üçin öý bukjasy hökmünde çykyş etjek ýerli kök katalogydyr.

Geljekde, aşakda düşündirilişi ýaly, kesilen türme (ýerli kök) katalogyny nädip düzmelidiginiň iki mümkin bolan ssenarisine serederis.

6. Şu wagt, FTP ulanyjylaryny Öý kataloglaryna çäklendirmek üçin aşakdaky iki warianty goşalyň/üýtgedeliň/çykaralyň.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=YES opsiýasy, ýerli ulanyjylaryň girişden soň öý bukjasy, tertipli türmä ýerleşdiriljekdigini aňladýar.

Şeýle hem, VSFTPD-iň howpsuzlyk sebäpleri boýunça deslapky türme katalogynyň ýazylmagyna ýol bermeýändigine düşünmelidiris, ýöne bu sazlamany öçürmek üçin allow_writeable_chroot=YES opsiýasyny ulanyp bileris.

Faýly ýazdyryň we ýapyň. Soňra ýokardaky üýtgeşmeleriň güýje girmegi üçin VSFTPD hyzmatlaryny täzeden açmaly:

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

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

3-nji ädim: Ubuntu-da VsFTP serwerini barlamak

7. Indi useradd buýrugy bilen FTP ulanyjysyny döredip, FTP serwerini synagdan geçireris:

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

Soňra, ulanyjy buýrugy we tee buýrugy bilen /etc/vsftpd.userlist faýlyndaky aaronkilik ulanyjysyny aç-açan sanamaly:

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

8. Indi ýokardaky konfigurasiýalarymyzyň talap edilişi ýaly işleýändigini barlamak wagty geldi. Anonim girişleri barlamak bilen başlarys; aşakdaky çykyşdan FTP serwerinde näbelli girişlere rugsat berilmeýändigini aýdyň görüp bileris:

# 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. Indiki, /etc/vsftpd.userlist faýlynda görkezilmedik bir ulanyja girmäge rugsat beriljekdigini barlap göreliň, bu aşakdaky çykyşdan dogry däl:

# 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. Indi /etc/vsftpd.userlist faýlynda görkezilen ulanyjynyň, girişden soň öz öý bukjasyna ýerleşdirilendigini ýa-da ýokdugyny anyklamak üçin soňky synag geçireris. Bu aşakdaky çykyşdan dogry:

# 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

Duýduryş: allow_writeable_chroot=YES opsiýasyny düzmek gaty howply bolup biler, esasanam ulanyjylar ýüklemäge rugsat beren bolsa ýa-da has köp bolsa, gabyk ygtyýary bar bolsa, howpsuzlyga täsir edip biler. Näme edýändigiňizi anyk bilýän bolsaňyz ulanyň.

Bu howpsuzlyk netijeleriniň VSFTPD-e mahsus däldigini, ýerli ulanyjylary türmä salmagy teklip edýän beýleki FTP daemonlaryna hem täsir edip biljekdigini bellemelidiris.

Şol sebäpli aşakdaky bölümde ulanyjy üçin başga ýazylmaýan ýerli kök katalogyny düzmegiň has ygtybarly usulyny düşündireris.

4-nji ädim: Ubuntu-da FTP Ulanyjy Öý Direktorlaryny sazlaň

11. Indi, VSFTPD konfigurasiýa faýlyny ýene bir gezek açyň.

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

we aşakda görkezilişi ýaly # nyşany ulanyp, ygtybarly däl opsiýany düşündiriň:

#allow_writeable_chroot=YES

Ondan soň, ulanyjy üçin alternatiw ýerli kök katalogyny dörediň (aaronkilik, siziňki ýaly däl bolmagy mümkin) we beýleki ulanyjylara bu kataloga ýazmak rugsatlaryny öçürip, zerur rugsatlary belläň:

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

12. Soňra, ulanyjynyň faýllaryny saklaýan degişli rugsatlary bilen ýerli köküň aşagynda bir katalog dörediň:

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

Ondan soň, degişli bahalary bilen aşakdaky VSFTPD konfigurasiýa faýlyndaky opsiýalary goşuň/üýtgediň:

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

Faýly ýazdyryň we ýapyň. Soňky sazlamalar bilen VSFTPD hyzmatlaryny täzeden açyň:

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

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

13. Indi, iň soňky barlagy geçireliň we ulanyjynyň ýerli kök katalogynyň Öý bukjasynda döreden FTP katalogydygyna göz ýetireliň.

# 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

Bu! Bu gollanma baradaky pikiriňizi aşakdaky düşündiriş formasy arkaly paýlaşmagy ýatdan çykarmaň ýa-da mowzuk bilen baglanyşykly möhüm maglumatlary bermegiňizi unutmaň.

Iň soňkusy, indiki makalamyzy sypdyrmaň, bu ýerde Ubuntu 16.04/16.10-da SSL/TLS birikmelerini ulanyp, FTP serwerini nädip gorap boljakdygyny düşündireris, şoňa çenli hemişe TecMint bilen habarlaşyň.