Hvernig á að setja upp og stilla FTP netþjón í Ubuntu


FTP (File Transfer Protocol) er tiltölulega gömul og mest notuð staðlað netsamskiptaregla sem notuð er til að hlaða upp/niðurhala skrám á milli tveggja tölva yfir netkerfi. Hins vegar er FTP óöruggt vegna þess að það sendir gögn ásamt notandaskilríkjum (notendanafn og lykilorð) án dulkóðunar.

Viðvörun: Ef þú ætlar að nota FTP skaltu íhuga að stilla FTP tengingu með SSL/TLS (er fjallað um í næstu grein). Annars er alltaf betra að nota örugga FTP eins og SFTP.

Í þessari kennslu munum við sýna hvernig á að setja upp, stilla og tryggja FTP netþjón (VSFFTPD í fullu \Mjög öruggur FTP púki\) í Ubuntu til að hafa öflugt öryggi gegn FTP veikleikum.

Skref 1: Uppsetning VsFTP Server í Ubuntu

1. Í fyrsta lagi þurfum við að uppfæra heimildalistann fyrir kerfispakka og setja síðan upp VSFTPD tvöfalda pakka sem hér segir:

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

2. Þegar uppsetningunni er lokið verður þjónustan óvirk í upphafi, þess vegna þurfum við að ræsa hana handvirkt í meðaltíma og einnig gera henni kleift að ræsast sjálfkrafa frá næstu kerfisræsingu:

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

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

3. Næst, ef þú ert með UFW eldvegg virkan (hann er ekki virkur sjálfgefið) á þjóninum, þarftu að opna port 21 og 20 þar sem FTP púkarnir hlusta, til að leyfa aðgang að FTP þjónustu frá ytri vélum, bæta svo við nýju eldveggreglurnar sem hér segir:

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

Skref 2: Stilla og tryggja VsFTP Server í Ubuntu

4. Við skulum nú framkvæma nokkrar stillingar til að setja upp og tryggja FTP netþjóninn okkar, fyrst munum við búa til öryggisafrit af upprunalegu stillingarskránni /etc/vsftpd/vsftpd.conf svona:

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

Næst skulum við opna vsftpd stillingarskrána.

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

Bættu við/breyttu eftirfarandi valkostum með þessum gildum:

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. Stilltu nú VSFTPD til að leyfa/hafna FTP aðgangi notendum byggt á notendalistaskránni /etc/vsftpd.userlist.

Athugaðu að sjálfgefið er notendum sem skráðir eru í userlist_file=/etc/vsftpd.userlist meinaður aðgangur að innskráningu með userlist_deny=YES valmöguleikanum ef userlist_enable=YES.

En valmöguleikinn userlist_deny=NO snýr merkingu sjálfgefna stillingarinnar, þannig að aðeins notendur með notendanafn sem er sérstaklega skráð í userlist_file=/etc/vsftpd.userlist verður leyft að skrá sig inn á FTP þjóninn.

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   

Mikilvægt: Þegar notendur skrá sig inn á FTP netþjóninn eru þeir settir í chrooted fangelsi, þetta er staðbundin rót mappa sem mun virka sem heimaskrá þeirra fyrir FTP lotuna eingöngu.

Næst munum við skoða tvær mögulegar aðstæður um hvernig á að stilla chrooted jail (local root) möppuna, eins og útskýrt er hér að neðan.

6. Á þessum tímapunkti skulum við bæta við/breyta/aflýsa þessum tveimur eftirfarandi valkostum til að takmarka FTP notendur við heimaskrárnar sínar.

chroot_local_user=YES
allow_writeable_chroot=YES

Valkosturinn chroot_local_user=JÁ þýðir mikilvægur að staðbundnir notendur verða settir í chroot fangelsi, heimaskrá þeirra sjálfgefið eftir innskráningu.

Og við verðum líka að skilja að VSFTPD leyfir ekki að chroot fangelsisskráin sé skrifanleg, sjálfgefið af öryggisástæðum, hins vegar getum við notað valkostinn allow_writeable_chroot=YES til að slökkva á þessari stillingu.

Vistaðu skrána og lokaðu henni. Þá verðum við að endurræsa VSFTPD þjónustu til að breytingarnar hér að ofan taki gildi:

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

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

Skref 3: Prófaðu VsFTP Server í Ubuntu

7. Nú munum við prófa FTP miðlara með því að búa til FTP notanda með useradd skipun sem hér segir:

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

Síðan verðum við að skrá notandann aaronkilik sérstaklega í skrána /etc/vsftpd.userlist með echo skipuninni og tee skipuninni eins og hér að neðan:

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

8. Nú er kominn tími til að prófa að ofangreindar stillingar okkar virka eftir þörfum. Við byrjum á því að prófa nafnlausar innskráningar; við getum greinilega séð af úttakinu hér að neðan að nafnlaus innskráning er ekki leyfð á FTP þjóninum:

# 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. Næst skulum við prófa hvort notandi sem ekki er skráður í skránni /etc/vsftpd.userlist fær leyfi til að skrá sig inn, sem er ekki satt frá úttakinu sem fylgir:

# 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ú munum við framkvæma lokapróf til að ákvarða hvort notandi sem er skráður í skránni /etc/vsftpd.userlist, sé í raun settur í heimamöppuna sína eftir innskráningu. Og þetta er satt frá úttakinu hér að neðan:

# 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

Viðvörun: Að stilla valmöguleikann allow_writeable_chroot=YES getur verið svo hættulegt að það hefur mögulega öryggisáhrif, sérstaklega ef notendur hafa heimild til að hlaða upp, eða meira, skeljaraðgangi. Notaðu það bara ef þú veist nákvæmlega hvað þú ert að gera.

Við ættum að hafa í huga að þessar öryggisafleiðingar eru ekki sérstakar fyrir VSFTPD, þær geta líka haft áhrif á alla aðra FTP púka sem bjóða upp á að setja staðbundna notendur í chroot fangelsi.

Vegna þessa, í kaflanum hér að neðan, munum við útskýra öruggari aðferð til að setja upp aðra staðbundna rótarskrá sem ekki er hægt að skrifa fyrir notanda.

Skref 4: Stilltu FTP notendaheimaskrár í Ubuntu

11. Opnaðu nú VSFTPD stillingarskrána einu sinni enn.

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

og skrifaðu athugasemdir um óörugga valkostinn með því að nota # stafinn eins og sýnt er hér að neðan:

#allow_writeable_chroot=YES

Næst skaltu búa til aðra staðbundna rótarskrá fyrir notandann (aaronkilik, þín er hugsanlega ekki sú sama) og stilltu nauðsynlegar heimildir með því að slökkva á skrifheimildum fyrir alla aðra notendur í þessa möppu:

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

12. Búðu til möppu undir staðbundinni rót með viðeigandi heimildum þar sem notandinn mun geyma skrárnar sínar:

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

Síðan skaltu bæta við/breyta valkostunum hér að neðan í VSFTPD stillingarskránni með samsvarandi gildum þeirra:

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

Vistaðu skrána og lokaðu henni. Og endurræstu VSFTPD þjónustuna með nýlegum stillingum:

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

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

13. Nú skulum við framkvæma lokaathugun og ganga úr skugga um að staðbundin rótarskrá notandans sé FTP skráin sem við bjuggum til í heimaskránni hans.

# 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

Það er það! Mundu að deila skoðun þinni um þessa handbók í gegnum athugasemdareyðublaðið hér að neðan eða hugsanlega veita okkur mikilvægar upplýsingar um efnið.

Síðast en ekki síst, ekki missa af næstu grein okkar, þar sem við munum lýsa því hvernig á að tryggja FTP netþjón með SSL/TLS tengingum í Ubuntu 16.04/16.10, þangað til, vertu alltaf með TecMint.