Jinsi ya Kufunga na Kusanidi Seva ya FTP katika Ubuntu


FTP (Itifaki ya Uhawilishaji Faili) ni itifaki ya mtandao ya zamani na inayotumiwa sana kupakia/kupakua faili kati ya kompyuta mbili kwenye mtandao. Hata hivyo, FTP kwa ukosefu wake wa usalama wa asili, kwa sababu inasambaza data pamoja na vitambulisho vya mtumiaji (jina la mtumiaji na nenosiri) bila usimbaji fiche.

Onyo: Ikiwa unapanga kutumia FTP, zingatia kusanidi muunganisho wa FTP na SSL/TLS (itashughulikia katika makala inayofuata). Vinginevyo, ni bora kutumia FTP salama kama vile SFTP.

Katika somo hili, tutaonyesha jinsi ya kusakinisha, kusanidi na kulinda seva ya FTP (VSFTPD kwa ukamilifu \Salama Sana ya FTP Daemon\) katika Ubuntu ili kuwa na usalama thabiti dhidi ya udhaifu wa FTP.

Hatua ya 1: Kufunga Seva ya VsFTP katika Ubuntu

1. Kwanza, tunahitaji kusasisha orodha ya vyanzo vya kifurushi cha mfumo na kisha kusakinisha kifurushi cha binary cha VSFTPD kama ifuatavyo:

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

2. Mara tu usakinishaji utakapokamilika, huduma itazimwa hapo awali, kwa hivyo, tunahitaji kuianzisha kwa mikono kwa muda wa wastani na pia kuiwezesha kuanza kiotomatiki kutoka kwa mfumo wa buti unaofuata:

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

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

3. Ifuatayo, ikiwa una firewall ya UFW iliyowezeshwa ( haijawashwa kwa chaguo-msingi) kwenye seva, lazima ufungue bandari 21 na 20 ambapo daemoni za FTP zinasikiza, ili kuruhusu ufikiaji wa huduma za FTP kutoka kwa mashine za mbali, kisha uongeze. sheria mpya za firewall kama ifuatavyo:

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

Hatua ya 2: Kusanidi na Kulinda Seva ya VsFTP katika Ubuntu

4. Hebu sasa tufanye usanidi kadhaa ili kusanidi na kulinda seva yetu ya FTP, kwanza tutaunda nakala rudufu ya faili asili ya usanidi /etc/vsftpd/vsftpd.conf kama hivyo:

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

Ifuatayo, wacha tufungue faili ya usanidi ya vsftpd.

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

Ongeza/rekebisha chaguo zifuatazo na maadili haya:

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. Sasa, sanidi VSFTPD ili kuruhusu/kukataa ufikiaji wa FTP kwa watumiaji kulingana na faili ya orodha ya watumiaji /etc/vsftpd.userlist.

Kumbuka kuwa kwa chaguomsingi, watumiaji walioorodheshwa katika userlist_file=/etc/vsftpd.userlist wananyimwa ufikiaji wa kuingia kwa userlist_deny=YES chaguo ikiwa userlist_enable=YES.

Lakini, chaguo userlist_deny=NO hupotosha maana ya mpangilio chaguo-msingi, kwa hivyo ni watumiaji tu ambao jina lao la mtumiaji limeorodheshwa kwa uwazi katika userlist_file=/etc/vsftpd.userlist wataruhusiwa kuingia kwenye seva ya FTP.

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   

Muhimu: Watumiaji wanapoingia kwenye seva ya FTP, huwekwa kwenye jela iliyokatwa, hii ni saraka ya mizizi ya ndani ambayo itafanya kazi kama saraka yao ya nyumbani kwa kipindi cha FTP pekee.

Ifuatayo, tutaangalia hali mbili zinazowezekana za jinsi ya kuweka saraka ya jela iliyokatwa (mizizi ya ndani), kama ilivyoelezewa hapa chini.

6. Kwa wakati huu, hebu tuongeze/turekebishe/tutoe maoni chaguo hizi mbili zifuatazo ili kuwawekea kikomo watumiaji wa FTP kwenye saraka zao za Mwanzo.

chroot_local_user=YES
allow_writeable_chroot=YES

Chaguo chroot_local_user=YES muhimu ina maana kwamba watumiaji wa ndani watawekwa katika jela ya chroot, saraka yao ya nyumbani kwa chaguo-msingi baada ya kuingia.

Na lazima pia tuelewe kwamba VSFTPD hairuhusu saraka ya jela ya chroot kuandikwa, kwa chaguo-msingi kwa sababu za usalama, hata hivyo, tunaweza kutumia chaguo allow_writeable_chroot=YES kuzima mpangilio huu.

Hifadhi faili na uifunge. Kisha tunapaswa kuanzisha upya huduma za VSFTPD ili mabadiliko yaliyo hapo juu yaanze kutumika:

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

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

Hatua ya 3: Kujaribu Seva ya VsFTP katika Ubuntu

7. Sasa tutajaribu seva ya FTP kwa kuunda mtumiaji wa FTP kwa kutumia amri ya useradd kama ifuatavyo:

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

Kisha, tunapaswa kuorodhesha kwa uwazi aaronkilik ya mtumiaji kwenye faili /etc/vsftpd.userlist na amri ya mwangwi na amri ya tee kama ilivyo hapo chini:

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

8. Sasa ni wakati wa kujaribu usanidi wetu hapo juu unafanya kazi inavyohitajika. Tutaanza kwa kujaribu kuingia bila majina; tunaweza kuona kwa uwazi kutoka kwa matokeo yaliyo hapa chini kwamba kuingia bila majina hairuhusiwi kwenye seva ya FTP:

# 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. Kisha, hebu tujaribu ikiwa mtumiaji ambaye hajaorodheshwa kwenye faili /etc/vsftpd.userlist atapewa ruhusa ya kuingia, jambo ambalo si kweli kutokana na matokeo yafuatayo:

# 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. Sasa tutafanya jaribio la mwisho ili kubaini ikiwa mtumiaji aliyeorodheshwa kwenye faili /etc/vsftpd.userlist, amewekwa kwenye saraka yake ya nyumbani baada ya kuingia. Na hii ni kweli kutoka kwa matokeo hapa chini:

# 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

Onyo: Kuweka chaguo allow_writeable_chroot=YES kunaweza kuwa hatari sana, kuna uwezekano wa athari za usalama, haswa ikiwa watumiaji wana ruhusa ya kupakia, au zaidi, ufikiaji wa ganda. Itumie tu ikiwa unajua kabisa unachofanya.

Tunapaswa kukumbuka kuwa athari hizi za usalama sio mahususi kwa VSFTPD, zinaweza pia kuathiri daemons zingine zote za FTP ambazo hutoa kuweka watumiaji wa ndani katika jela za chroot.

Kwa sababu hii, katika sehemu iliyo hapa chini, tutaelezea mbinu salama zaidi ya kuweka saraka ya mizizi ya ndani isiyoweza kuandikwa kwa mtumiaji.

Hatua ya 4: Sanidi Saraka za Nyumbani za Mtumiaji wa FTP katika Ubuntu

11. Sasa, fungua faili ya usanidi ya VSFTPD kwa mara nyingine.

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

na utoe maoni kwa chaguo lisilo salama kwa kutumia # herufi kama inavyoonyeshwa hapa chini:

#allow_writeable_chroot=YES

Ifuatayo, unda saraka mbadala ya mizizi ya mtumiaji (aaronkilik, yako labda sio sawa) na uweke ruhusa zinazohitajika kwa kuzima ruhusa za uandishi kwa watumiaji wengine wote kwenye saraka hii:

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

12. Kisha, unda saraka chini ya mzizi wa ndani na ruhusa zinazofaa ambapo mtumiaji atahifadhi faili zake:

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

Baadaye, ongeza/rekebisha chaguo hapa chini kwenye faili ya usanidi ya VSFTPD na maadili yanayolingana:

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

Hifadhi faili na uifunge. Na anza tena huduma za VSFPDD na mipangilio ya hivi majuzi:

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

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

13. Sasa, hebu tufanye ukaguzi wa mwisho na tuhakikishe kwamba saraka ya mizizi ya ndani ya mtumiaji ni saraka ya FTP tuliyounda katika saraka yake ya Nyumbani.

# 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

Ni hayo tu! Kumbuka kushiriki maoni yako kuhusu mwongozo huu kupitia fomu ya maoni iliyo hapa chini au ikiwezekana kutupa taarifa yoyote muhimu kuhusu mada hiyo.

Mwisho kabisa, usikose makala yetu inayofuata, ambapo tutaelezea jinsi ya kupata seva ya FTP kwa kutumia miunganisho ya SSL/TLS katika Ubuntu 16.04/16.10, hadi wakati huo, endelea kuwa karibu na TecMint kila wakati.