11.2.2 本地用戶模式

2022-05-31 15:42 更新

相較于匿名開放模式,本地用戶模式要更安全,而且配置起來也很簡單。如果大家之前用的是匿名開放模式,現(xiàn)在就可以將它關(guān)了,然后開啟本地用戶模式。針對本地用戶模式的權(quán)限參數(shù)以及作用如表11-3所示。

表11-3 本地用戶模式使用的權(quán)限參數(shù)以及作用

參數(shù) 作用
anonymous_enable=NO 禁止匿名訪問模式
local_enable=YES 允許本地用戶模式
write_enable=YES 設(shè)置可寫權(quán)限
local_umask=022 本地用戶模式創(chuàng)建文件的umask值
userlist_deny=YES 啟用“禁止用戶名單”,名單文件為ftpusers和user_list
userlist_enable=YES 開啟用戶作用名單文件功能
    [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
    1 anonymous_enable=NO
    2 local_enable=YES
    3 write_enable=YES
    4 local_umask=022
    5 dirmessage_enable=YES
    6 xferlog_enable=YES
    7 connect_from_port_20=YES
    8 xferlog_std_format=YES
    9 listen=NO
    10 listen_ipv6=YES
    11 pam_service_name=vsftpd
    12 userlist_enable=YES
    13 tcp_wrappers=YES

在vsftpd服務(wù)程序的主配置文件中正確填寫參數(shù),然后保存并退出。還需要重啟vsftpd服務(wù)程序,讓新的配置參數(shù)生效。在執(zhí)行完上一個實驗后還原了虛擬機的讀者,還需要將配置好的服務(wù)添加到開機啟動項中,以便在系統(tǒng)重啟自后依然可以正常使用vsftpd服務(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)在已經(jīng)完全可以本地用戶的身份登錄FTP服務(wù)器了。但是在使用root管理員登錄后,系統(tǒ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): root
    530 Permission denied.
    Login failed.
    ftp>

可見,在我們輸入root管理員的密碼之前,就已經(jīng)被系統(tǒng)拒絕訪問了。這是因為vsftpd服務(wù)程序所在的目錄中默認(rèn)存放著兩個名為“用戶名單”的文件(ftpusers和user_list)。不知道大家是否已看過一部日本電影“死亡筆記”(劉遄老師在上學(xué)期間的最愛),里面就提到有一個黑色封皮的小本子,只要將別人的名字寫進去,這人就會掛掉。vsftpd服務(wù)程序目錄中的這兩個文件也有類似的功能—只要里面寫有某位用戶的名字,就不再允許這位用戶登錄到FTP服務(wù)器上。

    [root@linuxprobe ~]# cat /etc/vsftpd/user_list 
    1 # vsftpd userlist
    2 # If userlist_deny=NO, only allow users in this file
    3 # If userlist_deny=YES (default), never allow users in this file, and
    4 # do not even prompt for a password.
    5 # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
    6 # for users that are denied.
    7 root
    8 bin
    9 daemon
    10 adm
    11 lp
    12 sync
    13 shutdown
    14 halt
    15 mail
    16 news
    17 uucp
    18 operator
    19 games
    20 nobody
    [root@linuxprobe ~]# cat /etc/vsftpd/ftpusers 
    # Users that are not allowed to login via ftp
    1 root
    2 bin
    3 daemon
    4 adm
    5 lp
    6 sync
    7 shutdown
    8 halt
    9 mail
    10 news
    11 uucp
    12 operator
    13 games
    14 nobody

果然如此!vsftpd服務(wù)程序為了保證服務(wù)器的安全性而默認(rèn)禁止了root管理員和大多數(shù)系統(tǒng)用戶的登錄行為,這樣可以有效地避免黑客通過FTP服務(wù)對root管理員密碼進行暴力破解。如果您確認(rèn)在生產(chǎn)環(huán)境中使用root管理員不會對系統(tǒng)安全產(chǎn)生影響,只需按照上面的提示刪除掉root用戶名即可。我們也可以選擇ftpusers和user_list文件中沒有的一個普通用戶嘗試登錄FTP服務(wù)器:

    [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): linuxprobe
    331 Please specify the password.
    Password:此處輸入該用戶的密碼
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> mkdir files
    550 Create directory operation failed.

在采用本地用戶模式登錄FTP服務(wù)器后,默認(rèn)訪問的是該用戶的家目錄,也就是說,訪問的是/home/linuxprobe目錄。而且該目錄的默認(rèn)所有者、所屬組都是該用戶自己,因此不存在寫入權(quán)限不足的情況。但是當(dāng)前的操作仍然被拒絕,是因為我們剛才將虛擬機系統(tǒng)還原到最初的狀態(tài)了。為此,需要再次開啟SELinux域中對FTP服務(wù)的允許策略:

    [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
    [root@linuxprobe ~]# setsebool -P ftpd_full_access=on

劉遄老師再啰嗦幾句。在實驗課程和生產(chǎn)環(huán)境中設(shè)置SELinux域策略時,一定記得添加-P參數(shù),否則服務(wù)器在重啟后就會按照原有的策略進行控制,從而導(dǎo)致配置過的服務(wù)無法使用。

在配置妥當(dāng)后再使用本地用戶嘗試登錄下FTP服務(wù)器,分別執(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): linuxprobe
    331 Please specify the password.
    Password:此處輸入該用戶的密碼
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> mkdir files
    257 "/home/linuxprobe/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.

請注意:當(dāng)您完成本實驗后請還原虛擬機快照再進行下一個實驗,否則可能導(dǎo)致配置文件沖突而報錯。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號