W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
前文提到,在vsftpd服務(wù)程序中,匿名開放模式是最不安全的一種認(rèn)證模式。任何人都可以無需密碼驗(yàn)證而直接登錄到FTP服務(wù)器。這種模式一般用來訪問不重要的公開文件(在生產(chǎn)環(huán)境中盡量不要存放重要文件)。當(dāng)然,如果采用第8章中介紹的防火墻管理工具(如Tcp_wrappers服務(wù)程序)將vsftpd服務(wù)程序允許訪問的主機(jī)范圍設(shè)置為企業(yè)內(nèi)網(wǎng),也可以提供基本的安全性。
vsftpd服務(wù)程序默認(rèn)開啟了匿名開放模式,我們需要做的就是開放匿名用戶的上傳、下載文件的權(quán)限,以及讓匿名用戶創(chuàng)建、刪除、更名文件的權(quán)限。需要注意的是,針對匿名用戶放開這些權(quán)限會帶來潛在危險(xiǎn),我們只是為了在Linux系統(tǒng)中練習(xí)配置vsftpd服務(wù)程序而放開了這些權(quán)限,不建議在生產(chǎn)環(huán)境中如此行事。表11-2羅列了可以向匿名用戶開放的權(quán)限參數(shù)以及作用。
表11-2 可以向匿名用戶開放的權(quán)限參數(shù)以及作用
參數(shù) | 作用 |
---|---|
anonymous_enable=YES | 允許匿名訪問模式 |
anon_umask=022 | 匿名用戶上傳文件的umask值 |
anon_upload_enable=YES | 允許匿名用戶上傳文件 |
anon_mkdir_write_enable=YES | 允許匿名用戶創(chuàng)建目錄 |
anon_other_write_enable=YES | 允許匿名用戶修改目錄名稱或刪除目錄 |
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=YES
2 anon_umask=022
3 anon_upload_enable=YES
4 anon_mkdir_write_enable=YES
5 anon_other_write_enable=YES
6 local_enable=YES
7 write_enable=YES
8 local_umask=022
9 dirmessage_enable=YES
10 xferlog_enable=YES
11 connect_from_port_20=YES
12 xferlog_std_format=YES
13 listen=NO
14 listen_ipv6=YES
15 pam_service_name=vsftpd
16 userlist_enable=YES
17 tcp_wrappers=YES
在vsftpd服務(wù)程序的主配置文件中正確填寫參數(shù),然后保存并退出。還需要重啟vsftpd服務(wù)程序,讓新的配置參數(shù)生效。在此需要提醒各位讀者,在生產(chǎn)環(huán)境中或者在RHCSA、RHCE、RHCA認(rèn)證考試中一定要把配置過的服務(wù)程序加入到開機(jī)啟動(dòng)項(xiàng)中,以保證服務(wù)器在重啟后依然能夠正常提供傳輸服務(wù):
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
現(xiàn)在就可以在客戶端執(zhí)行ftp命令連接到遠(yuǎn)程的FTP服務(wù)器了。在vsftpd服務(wù)程序的匿名開放認(rèn)證模式下,其賬戶統(tǒng)一為anonymous,密碼為空。而且在連接到FTP服務(wù)器后,默認(rèn)訪問的是/var/ftp目錄。我們可以切換到該目錄下的pub目錄中,然后嘗試創(chuàng)建一個(gè)新的目錄文件,以檢驗(yàn)是否擁有寫入權(quán)限:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此處敲擊回車即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.
系統(tǒng)顯示拒絕創(chuàng)建目錄!我們明明在前面清空了iptables防火墻策略,而且也在vsftpd服務(wù)程序的主配置文件中添加了允許匿名用戶創(chuàng)建目錄和寫入文件的權(quán)限啊。建議大家先不要著急往下看,而是自己思考一下這個(gè)問題的解決辦法,以鍛煉您的Linux系統(tǒng)排錯(cuò)能力。
前文提到,在vsftpd服務(wù)程序的匿名開放認(rèn)證模式下,默認(rèn)訪問的是/var/ftp目錄。查看該目錄的權(quán)限得知,只有root管理員才有寫入權(quán)限。怪不得系統(tǒng)會拒絕操作呢!下面將目錄的所有者身份改成系統(tǒng)賬戶ftp即可(該賬戶在系統(tǒng)中已經(jīng)存在),這樣應(yīng)該可以了吧:
[root@linuxprobe ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub
[root@linuxprobe ~]# chown -Rf ftp /var/ftp/pub
[root@linuxprobe ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 ftp root 16 Jul 13 14:38 /var/ftp/pub
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此處敲擊回車即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Create directory operation failed.
系統(tǒng)再次報(bào)錯(cuò)!盡管我們在使用ftp命令登入FTP服務(wù)器后,再創(chuàng)建目錄時(shí)系統(tǒng)依然提示操作失敗,但是報(bào)錯(cuò)信息卻發(fā)生了變化。在沒有寫入權(quán)限時(shí),系統(tǒng)提示“權(quán)限拒絕”(Permission denied)所以劉遄老師懷疑是權(quán)限的問題。但現(xiàn)在系統(tǒng)提示“創(chuàng)建目錄的操作失敗”(Create directory operation failed),想必各位讀者也應(yīng)該意識到是SELinux服務(wù)在“搗亂”了吧。
下面使用getsebool命令查看與FTP相關(guān)的SELinux域策略都有哪些:
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
我們可以根據(jù)經(jīng)驗(yàn)(需要長期培養(yǎng),別無它法)和策略的名稱判斷出是ftpd_full_access--> off策略規(guī)則導(dǎo)致了操作失敗。接下來修改該策略規(guī)則,并且在設(shè)置時(shí)使用-P參數(shù)讓修改過的策略永久生效,確保在服務(wù)器重啟后依然能夠順利寫入文件。
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
再次提醒各位讀者,在進(jìn)行下一次實(shí)驗(yàn)之前,一定記得將虛擬機(jī)還原到最初始的狀態(tài),以免多個(gè)實(shí)驗(yàn)相互產(chǎn)生沖突。
現(xiàn)在便可以順利執(zhí)行文件創(chuàng)建、修改及刪除等操作了。
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此處敲擊回車即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
257 "/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: