Giunsa ang Pag-install, Pag-configure ug Pag-secure sa FTP Server sa CentOS 7 - [Komprehensibo nga Giya]


Ang FTP (File Transfer Protocol) usa ka tradisyonal ug kaylap nga gigamit nga sumbanan nga himan alang sa pagbalhin sa mga file tali sa usa ka server ug mga kliyente sa usa ka network, labi na kung wala’y kinahanglan nga pag-authenticate (gitugotan ang mga wala mailhi nga tiggamit nga magkonektar sa usa ka server). Kinahanglan natong masabtan nga ang FTP dili luwas pinaagi sa default, tungod kay kini nagpadala sa mga kredensyal sa user ug data nga walay encryption.

Niini nga giya, atong ihulagway ang mga lakang sa pag-instalar, pag-configure ug pag-secure sa usa ka FTP server (VSFTPD nagbarog alang sa Very Secure FTP Daemon) sa CentOS/RHEL 7 ug Fedora distributions.

Timan-i nga ang tanan nga mga mando sa kini nga giya ipadagan ingon gamut, kung wala ka nag-operate sa server nga adunay root account, gamita ang sudo nga mando aron makakuha mga pribilehiyo sa gamut.

Lakang 1: Pag-instalar sa FTP Server

1. Ang pag-instalar sa vsftpd server diretso sa unahan, padagana lang ang mosunod nga sugo sa terminal.

# yum install vsftpd

2. Human makompleto ang pag-instalar, ang serbisyo ma-disable sa una, mao nga kinahanglan natong sugdan kini nga mano-mano sa pagkakaron ug i-enable kini nga awtomatiko nga magsugod gikan sa sunod nga boot sa sistema usab:

# systemctl start vsftpd
# systemctl enable vsftpd

3. Sunod, aron tugotan ang pag-access sa mga serbisyo sa FTP gikan sa mga eksternal nga sistema, kinahanglan natong ablihan ang port 21, diin ang mga FTP daemon naminaw sama sa mosunod:

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

Lakang 2: Pag-configure sa FTP Server

4. Karon kita mobalhin sa paghimo sa pipila ka mga configuration sa setup ug pagsiguro sa atong FTP server, magsugod kita pinaagi sa paghimo sa usa ka backup sa orihinal nga config file /etc/vsftpd/vsftpd.conf:

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

Sunod, ablihi ang config file sa ibabaw ug itakda ang mga mosunud nga kapilian nga adunay kini nga katugbang nga mga kantidad:

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. Karon i-configure ang FTP sa pagtugot/pagdumili sa FTP access sa mga tiggamit base sa user list file /etc/vsftpd.userlist.

Pinaagi sa default, ang mga tiggamit nga nalista sa userlist_file=/etc/vsftpd.userlist gibalibaran sa pag-login nga akses sa userlist_deny nga opsyon gitakda sa YES, kung userlist_enable=YES.

Bisan pa, ang userlist_deny=NO nagbag-o sa setting, nagpasabut nga ang mga tiggamit ra nga klaro nga nalista sa userlist_file=/etc/vsftpd.userlist ang tugutan nga maka-login.

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   

Dili lang kana, kung ang mga tiggamit mag-login sa FTP server, ibutang sila sa usa ka chroot'ed jail, kini ang lokal nga direktoryo sa ugat nga molihok ingon ilang direktoryo sa balay alang sa sesyon sa FTP lamang.

Sunod, atong tan-awon ang duha ka posible nga mga senaryo kung giunsa ang pag-chroot sa mga tiggamit sa FTP sa direktoryo sa Home (lokal nga gamut) alang sa mga tiggamit sa FTP, ingon sa gipasabut sa ubos.

6. Karon idugang kining duha ka mosunod nga mga kapilian sa pagpugong sa FTP tiggamit sa ilang Home direktoryo.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=OO nagpasabot nga ang lokal nga mga tiggamit ibutang sa chroot jail, ang ilang home directory human sa pag-login pinaagi sa default settings.

Ug usab sa default, ang vsftpd wala magtugot sa direktoryo sa chroot jail nga masulat alang sa mga hinungdan sa seguridad, bisan pa, mahimo naton gamiton ang kapilian allow_writeable_chroot=OO aron ma-override kini nga setting.

I-save ang file ug isira kini.

Pagsiguro sa FTP Server gamit ang SELinux

7. Karon, atong ibutang ang SELinux boolean sa ubos aron tugotan ang FTP sa pagbasa sa mga file sa home directory sa usa ka user. Timan-i nga kini sa sinugdan gihimo gamit ang sugo:

# setsebool -P ftp_home_dir on

Apan, ang ftp_home_dir nga direktiba gi-disable pinaagi sa default sama sa gipatin-aw niining bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Karon atong gamiton ang semanage command aron itakda ang SELinux nga lagda aron tugotan ang FTP sa pagbasa/pagsulat sa home directory sa user.

# semanage boolean -m ftpd_full_access --on

Niini nga punto, kinahanglan namon nga i-restart ang vsftpd aron ma-epekto ang tanan nga mga pagbag-o nga among gihimo hangtod sa taas:

# systemctl restart vsftpd

Lakang 4: Pagsulay sa FTP Server

8. Karon atong sulayan ang FTP server pinaagi sa paghimo og FTP user nga adunay useradd command.

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

Pagkahuman, kinahanglan natong idugang ang user ravi sa file /etc/vsftpd.userlist gamit ang echo command sama sa mosunod:

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

9. Karon na ang panahon sa pagsulay kon ang atong mga setting sa ibabaw nagtrabaho sa husto. Magsugod kita pinaagi sa pagsulay sa anonymous logins, atong makita gikan sa screen shot sa ubos nga ang anonymous logins dili tugutan:

# 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. Susihon usab nato kung ang usa ka user nga wala malista sa file /etc/vsftpd.userlist hatagan og permiso sa pag-login, nga dili mao ang kaso sama sa screen shot sa ubos:

# 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. Karon buhata ang usa ka katapusan nga pagsusi kung ang usa ka tiggamit nga nalista sa file /etc/vsftpd.userlist, sa tinuud gibutang sa iyang direktoryo sa balay pagkahuman sa pag-login:

# 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

I-aktibo lamang kini nga kapilian kung nahibal-an nimo kung unsa ang imong gibuhat. Mahinungdanon nga hinumdoman nga kini nga mga implikasyon sa seguridad dili piho sa vsftpd, kini magamit sa tanan nga FTP daemon nga nagtanyag nga ibutang usab ang mga lokal nga tiggamit sa mga bilanggoan sa chroot.

Busa, atong tan-awon ang usa ka mas luwas nga paagi sa pagpahimutang sa usa ka lahi nga dili masulat nga lokal nga direktoryo sa ugat sa sunod nga seksyon.

Lakang 5: I-configure ang Lainlaing FTP User Home Directories

12. Ablihi ang vsftpd configuration file pag-usab ug sugdi pinaagi sa pagkomento sa dili luwas nga kapilian sa ubos:

#allow_writeable_chroot=YES

Dayon paghimo ug alternatibong lokal nga root directory para sa user (ravi, ang imoha tingali lahi) ug kuhaa ang mga permiso sa pagsulat sa tanang tiggamit niini nga direktoryo:

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

13. Sunod, paghimo og direktoryo ubos sa lokal nga gamut diin ang user magtipig sa iyang mga file:

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

Dayon idugang/usba ang mosunod nga mga kapilian sa vsftpd config file uban niini nga mga bili:

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

I-save ang file ug isira kini. Sa makausa pa, atong i-restart ang serbisyo gamit ang bag-ong mga setting:

# systemctl restart vsftpd

14. Karon buhata ang usa ka katapusan nga pagsulay pag-usab ug tan-awa nga ang mga tiggamit sa lokal nga direktoryo sa ugat mao ang FTP nga direktoryo nga among gihimo sa iyang home directory.

# 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

Mao na! Sa kini nga artikulo, among gihulagway kung giunsa ang pag-install, pag-configure ingon man pag-secure sa usa ka FTP server sa CentOS 7, gamita ang seksyon sa komento sa ubos aron isulat kami balik bahin sa kini nga giya/ipaambit ang bisan unsang mapuslanon nga kasayuran bahin sa kini nga hilisgutan.

Sa sunod nga artikulo, ipakita usab namo kanimo kung giunsa ang pag-secure sa usa ka FTP server gamit ang mga koneksyon sa SSL/TLS sa CentOS 7, hangtod unya, magpabilin nga konektado sa TecMint.