日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)linux教程:11.2.3虛擬用戶模式

我們最后講解的虛擬用戶模式是這三種模式中最安全的一種認(rèn)證模式,當(dāng)然,因為安全性較之于前面兩種模式有了提升,所以配置流程也會稍微復(fù)雜一些。

第1步:創(chuàng)建用于進行FTP認(rèn)證的用戶數(shù)據(jù)庫文件,其中奇數(shù)行為賬戶名,偶數(shù)行為密碼。例如,我們分別創(chuàng)建出zhangsan和lisi兩個用戶,密碼均為redhat:

    [root@linuxprobe ~]# cd /etc/vsftpd/
    [root@linuxprobe vsftpd]# vim vuser.list
    zhangsan
    redhat
    lisi
    redhat

但是,明文信息既不安全,也不符合讓vsftpd服務(wù)程序直接加載的格式,因此需要使用db_load命令用哈希(hash)算法將原始的明文信息文件轉(zhuǎn)換成數(shù)據(jù)庫文件,并且降低數(shù)據(jù)庫文件的權(quán)限(避免其他人看到數(shù)據(jù)庫文件的內(nèi)容),然后再把原始的明文信息文件刪除。

    [root@linuxprobe vsftpd]# db_load -T -t hash -f vuser.list vuser.db
    [root@linuxprobe vsftpd]# file vuser.db
    vuser.db: Berkeley DB (Hash, version 9, native byte-order)
    [root@linuxprobe vsftpd]# chmod 600 vuser.db
    [root@linuxprobe vsftpd]# rm -f vuser.list

第2步:創(chuàng)建vsftpd服務(wù)程序用于存儲文件的根目錄以及虛擬用戶映射的系統(tǒng)本地用戶。FTP服務(wù)用于存儲文件的根目錄指的是,當(dāng)虛擬用戶登錄后所訪問的默認(rèn)位置。

由于Linux系統(tǒng)中的每一個文件都有所有者、所屬組屬性,例如使用虛擬賬戶“張三”新建了一個文件,但是系統(tǒng)中找不到賬戶“張三”,就會導(dǎo)致這個文件的權(quán)限出現(xiàn)錯誤。為此,需要再創(chuàng)建一個可以映射到虛擬用戶的系統(tǒng)本地用戶。簡單來說,就是讓虛擬用戶默認(rèn)登錄到與之有映射關(guān)系的這個系統(tǒng)本地用戶的家目錄中,虛擬用戶創(chuàng)建的文件的屬性也都?xì)w屬于這個系統(tǒng)本地用戶,從而避免Linux系統(tǒng)無法處理虛擬用戶所創(chuàng)建文件的屬性權(quán)限。

為了方便管理FTP服務(wù)器上的數(shù)據(jù),可以把這個系統(tǒng)本地用戶的家目錄設(shè)置為/var目錄(該目錄用來存放經(jīng)常發(fā)生改變的數(shù)據(jù))。并且為了安全起見,我們將這個系統(tǒng)本地用戶設(shè)置為不允許登錄FTP服務(wù)器,這不會影響虛擬用戶登錄,而且還可以避免黑客通過這個系統(tǒng)本地用戶進行登錄。

    [root@linuxprobe ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
    [root@linuxprobe ~]# ls -ld /var/ftproot/
    drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
    [root@linuxprobe ~]# chmod -Rf 755 /var/ftproot/

第3步:建立用于支持虛擬用戶的PAM文件。

PAM(可插拔認(rèn)證模塊)是一種認(rèn)證機制,通過一些動態(tài)鏈接庫和統(tǒng)一的API把系統(tǒng)提供的服務(wù)與認(rèn)證方式分開,使得系統(tǒng)管理員可以根據(jù)需求靈活調(diào)整服務(wù)程序的不同認(rèn)證方式。要想把PAM功能和作用完全講透,至少要一個章節(jié)的篇幅才可以(對該主題感興趣的讀者敬請關(guān)注本書的進階篇,里面會詳細(xì)講解PAM)。

通俗來講,PAM是一組安全機制的模塊,系統(tǒng)管理員可以用來輕易地調(diào)整服務(wù)程序的認(rèn)證方式,而不必對應(yīng)用程序進行任何修改。PAM采取了分層設(shè)計(應(yīng)用程序?qū)?、?yīng)用接口層、鑒別模塊層)的思想,其結(jié)構(gòu)如圖11-2所示。

圖11-2 PAM的分層設(shè)計結(jié)構(gòu)

新建一個用于虛擬用戶認(rèn)證的PAM文件vsftpd.vu,其中PAM文件內(nèi)的“db=”參數(shù)為使用db_load命令生成的賬戶密碼數(shù)據(jù)庫文件的路徑,但不用寫數(shù)據(jù)庫文件的后綴:

    [root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu
    auth       required     pam_userdb.so db=/etc/vsftpd/vuser
    account    required     pam_userdb.so db=/etc/vsftpd/vuser

第4步:在vsftpd服務(wù)程序的主配置文件中通過pam_service_name參數(shù)將PAM認(rèn)證文件的名稱修改為vsftpd.vu,PAM作為應(yīng)用程序?qū)优c鑒別模塊層的連接紐帶,可以讓應(yīng)用程序根據(jù)需求靈活地在自身插入所需的鑒別功能模塊。當(dāng)應(yīng)用程序需要PAM認(rèn)證時,則需要在應(yīng)用程序中定義負(fù)責(zé)認(rèn)證的PAM配置文件,實現(xiàn)所需的認(rèn)證功能。

例如,在vsftpd服務(wù)程序的主配置文件中默認(rèn)就帶有參數(shù)pam_service_name=vsftpd,表示登錄FTP服務(wù)器時是根據(jù)/etc/pam.d/vsftpd文件進行安全認(rèn)證的?,F(xiàn)在我們要做的就是把vsftpd主配置文件中原有的PAM認(rèn)證文件vsftpd修改為新建的vsftpd.vu文件即可。該操作中用到的參數(shù)以及作用如表11-4所示。

表11-4 利用PAM文件進行認(rèn)證時使用的參數(shù)以及作用

參數(shù) 作用
anonymous_enable=NO 禁止匿名開放模式
local_enable=YES 允許本地用戶模式
guest_enable=YES 開啟虛擬用戶模式
guest_username=virtual 指定虛擬用戶賬戶
pam_service_name=vsftpd.vu 指定PAM文件
allow_writeable_chroot=YES 允許對禁錮的FTP根目錄執(zhí)行寫入操作,而且不拒絕用戶的登錄請求
    [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
    1 anonymous_enable=NO
    2 local_enable=YES
    3 guest_enable=YES
    4 guest_username=virtual
    5 allow_writeable_chroot=YES
    6 write_enable=YES
    7 local_umask=022
    8 dirmessage_enable=YES
    9 xferlog_enable=YES
    10 connect_from_port_20=YES
    11 xferlog_std_format=YES
    12 listen=NO
    13 listen_ipv6=YES
    14 pam_service_name=vsftpd.vu
    15 userlist_enable=YES
    16 tcp_wrappers=YES

第5步:為虛擬用戶設(shè)置不同的權(quán)限。雖然賬戶zhangsan和lisi都是用于vsftpd服務(wù)程序認(rèn)證的虛擬賬戶,但是我們依然想對這兩人進行區(qū)別對待。比如,允許張三上傳、創(chuàng)建、修改、查看、刪除文件,只允許李四查看文件。這可以通過vsftpd服務(wù)程序來實現(xiàn)。只需新建一個目錄,在里面分別創(chuàng)建兩個以zhangsan和lisi命名的文件,其中在名為zhangsan的文件中寫入允許的相關(guān)權(quán)限(使用匿名用戶的參數(shù)):

    [root@linuxprobe ~]# mkdir /etc/vsftpd/vusers_dir/
    [root@linuxprobe ~]# cd /etc/vsftpd/vusers_dir/
    [root@linuxprobe vusers_dir]# touch lisi
    [root@linuxprobe vusers_dir]# vim zhangsan
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES

然后再次修改vsftpd主配置文件,通過添加user_config_dir參數(shù)來定義這兩個虛擬用戶不同權(quán)限的配置文件所存放的路徑。為了讓修改后的參數(shù)立即生效,需要重啟vsftpd服務(wù)程序并將該服務(wù)添加到開機啟動項中:

    [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO
    local_enable=YES
    guest_enable=YES
    guest_username=virtual
    allow_writeable_chroot=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd.vu
    userlist_enable=YES
    tcp_wrappers=YES
    user_config_dir=/etc/vsftpd/vusers_dir
    [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

第6步:設(shè)置SELinux域允許策略,然后使用虛擬用戶模式登錄FTP服務(wù)器。相信大家可以猜到,SELinux會繼續(xù)來搗亂。所以,先按照前面實驗中的步驟開啟SELinux域的允許策略,以免再次出現(xiàn)操作失敗的情況:

    [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

此時,不但可以使用虛擬用戶模式成功登錄到FTP服務(wù)器,還可以分別使用賬戶zhangsan和lisi來檢驗他們的權(quán)限。當(dāng)然,讀者在生產(chǎn)環(huán)境中一定要根據(jù)真實需求來靈活配置參數(shù),不要照搬這里的實驗操作。

    [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): lisi
    331 Please specify the password.
    Password:此處輸入虛擬用戶的密碼
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> mkdir files
    550 Permission denied.
    ftp> exit
    221 Goodbye.
    [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): zhangsan
    331 Please specify the password.
    Password:此處輸入虛擬用戶的密碼
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> mkdir files
    257 "/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.

網(wǎng)頁名稱:創(chuàng)新互聯(lián)linux教程:11.2.3虛擬用戶模式
網(wǎng)站地址:http://www.dlmjj.cn/article/coeipig.html