Hvernig á að setja upp, stilla og tryggja FTP netþjón í CentOS 7 - [Ítarleg handbók]


FTP (File Transfer Protocol) er hefðbundið og mikið notað staðlað tól til að flytja skrár á milli netþjóns og viðskiptavina yfir netkerfi, sérstaklega þar sem engin auðkenning er nauðsynleg (leyfir nafnlausum notendum að tengjast netþjóni). Við verðum að skilja að FTP er sjálfgefið óöruggt, vegna þess að það sendir notendaskilríki og gögn án dulkóðunar.

Í þessari handbók munum við lýsa skrefunum til að setja upp, stilla og tryggja FTP netþjón (VSFFTPD stendur fyrir „Very Secure FTP Daemon“) í CentOS/RHEL 7 og Fedora dreifingum.

Athugaðu að allar skipanir í þessari handbók verða keyrðar sem rót, ef þú ert ekki að reka þjóninn með rótarreikningnum, notaðu sudo skipunina til að fá rótarréttindi.

Skref 1: Uppsetning FTP netþjóns

1. Uppsetning vsftpd miðlara er einfalt, keyrðu bara eftirfarandi skipun í flugstöðinni.

# yum install vsftpd

2. Eftir að uppsetningunni er lokið verður þjónustan óvirk í fyrstu, svo við þurfum að ræsa hana handvirkt í bili og gera henni kleift að ræsast sjálfkrafa frá næstu kerfisræsingu:

# systemctl start vsftpd
# systemctl enable vsftpd

3. Næst, til að leyfa aðgang að FTP þjónustu frá utanaðkomandi kerfum, verðum við að opna port 21, þar sem FTP púkarnir hlusta sem hér segir:

# firewall-cmd --zone=public --permanent --add-port=21/tcp
# firewall-cmd --zone=public --permanent --add-service=ftp
# firewall-cmd --reload

Skref 2: Stilla FTP miðlara

4. Nú munum við fara yfir til að framkvæma nokkrar stillingar til að setja upp og tryggja FTP netþjóninn okkar, við skulum byrja á því að taka öryggisafrit af upprunalegu stillingarskránni /etc/vsftpd/vsftpd.conf:

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

Næst skaltu opna stillingarskrána hér að ofan og stilla eftirfarandi valkosti með þessum samsvarandi 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ú FTP til að leyfa/neita FTP aðgangi notendum byggt á notendalistaskránni /etc/vsftpd.userlist.

Sjálfgefið er að notendum sem skráðir eru í userlist_file=/etc/vsftpd.userlist er neitað um innskráningaraðgang með valmöguleikanum userlist_deny stillt á YES, ef userlist_enable=YES.

Hins vegar, userlist_deny=NO breytir stillingunni, sem þýðir að aðeins notendum sem eru sérstaklega skráðir í userlist_file=/etc/vsftpd.userlist er heimilt að skrá sig inn.

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   

Það er ekki allt, þegar notendur skrá sig inn á FTP netþjóninn eru þeir settir í chroot'ed 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ð skipta FTP notendum í heimamöppur (staðbundin rót) möppu fyrir FTP notendur, eins og útskýrt er hér að neðan.

6. Bættu nú við þessum tveimur eftirfarandi valkostum til að takmarka FTP notendur við heimaskrárnar sínar.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=JÁ þýðir að staðbundnir notendur verða settir í chroot fangelsi, heimaskrá þeirra eftir innskráningu sem sjálfgefnar stillingar.

Og einnig sjálfgefið leyfir vsftpd ekki að chroot fangelsisskráin sé skrifanleg af öryggisástæðum, hins vegar getum við notað valkostinn allow_writeable_chroot=JÁ til að hnekkja þessari stillingu.

Vistaðu skrána og lokaðu henni.

Að tryggja FTP netþjón með SELinux

7. Nú skulum við stilla SELinux boolean fyrir neðan til að leyfa FTP að lesa skrár í heimaskrá notanda. Athugaðu að þetta var upphaflega gert með því að nota skipunina:

# setsebool -P ftp_home_dir on

Hins vegar hefur ftp_home_dir tilskipunin verið slökkt sjálfkrafa eins og útskýrt er í þessari villuskýrslu: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Nú munum við nota semanage skipun til að stilla SELinux reglu til að leyfa FTP að lesa/skrifa heimaskrá notanda.

# semanage boolean -m ftpd_full_access --on

Á þessum tímapunkti verðum við að endurræsa vsftpd til að framkvæma allar breytingar sem við gerðum hingað til hér að ofan:

# systemctl restart vsftpd

Skref 4: Prófaðu FTP netþjón

8. Nú munum við prófa FTP miðlara með því að búa til FTP notanda með useradd skipun.

# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
# passwd ravi

Síðan verðum við að bæta notandanum ravi við skrána /etc/vsftpd.userlist með því að nota echo skipunina sem hér segir:

# echo "ravi" | tee -a /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist

9. Nú er kominn tími til að prófa hvort stillingarnar okkar hér að ofan virka rétt. Við skulum byrja á því að prófa nafnlausar innskráningar, við getum séð á skjámyndinni hér að neðan að nafnlaus innskráning er ekki leyfð:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>

10. Við skulum líka 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 raunin eins og á skjámyndinni hér að neðan:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>

11. Gerðu nú lokaathugun hvort notandi sem er skráður í skránni /etc/vsftpd.userlist er í raun settur í heimamöppuna sína eftir innskráningu:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Virkjaðu þennan valkost aðeins ef þú veist nákvæmlega hvað þú ert að gera. Það er mikilvægt að hafa í huga að þessar öryggisafleiðingar eru ekki vsftpd sérstakar, þær eiga við um alla FTP púka sem bjóða upp á að setja staðbundna notendur í chroot fangelsi líka.

Þess vegna munum við skoða öruggari leið til að stilla aðra óskrifanlega staðbundna rótarskrá í næsta kafla.

Skref 5: Stilltu mismunandi FTP notandaheimaskrár

12. Opnaðu vsftpd stillingarskrána aftur og byrjaðu á því að skrifa athugasemdir við óörugga valkostinn hér að neðan:

#allow_writeable_chroot=YES

Búðu síðan til aðra staðbundna rótarskrá fyrir notandann (ravi, þín er líklega önnur) og fjarlægðu skrifheimildir fyrir alla notendur í þessa möppu:

# mkdir /home/ravi/ftp
# chown nobody:nobody /home/ravi/ftp
# chmod a-w /home/ravi/ftp

13. Næst skaltu búa til möppu undir staðbundinni rót þar sem notandinn mun geyma skrárnar sínar:

# mkdir /home/ravi/ftp/files
# chown ravi:ravi  /home/ravi/ftp/files
# chmod 0700 /home/ravi/ftp/files/

Bættu síðan við/breyttu eftirfarandi valkostum í vsftpd stillingarskránni með þessum gildum:

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. Enn og aftur skulum við endurræsa þjónustuna með nýju stillingunum:

# systemctl restart vsftpd

14. Gerðu nú lokapróf aftur og sjáðu að staðbundin rótarskrá notenda er FTP skráin sem við bjuggum til í heimaskránni hans.

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
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ð! Í þessari grein lýstum við hvernig á að setja upp, stilla og tryggja FTP netþjón í CentOS 7, notaðu athugasemdahlutann hér að neðan til að skrifa okkur til baka varðandi þessa handbók/deila öllum gagnlegum upplýsingum um þetta efni.

Í næstu grein munum við einnig sýna þér hvernig á að tryggja FTP netþjón með SSL/TLS tengingum í CentOS 7, þangað til, vertu tengdur við TecMint.