91在线一级黄片|91视频在线观看18|成人夜间呦呦网站|91资源欧美日韩超碰|久久最新免费精品视频一区二区三区|国产探花视频在线观看|黄片真人免费三级片毛片|国产人无码视频在线|精品成人影视无码三区|久久视频爱久久免费精品

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

新聞中心

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

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

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

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

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

    [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服務程序用于存儲文件的根目錄以及虛擬用戶映射的系統(tǒng)本地用戶。FTP服務用于存儲文件的根目錄指的是,當虛擬用戶登錄后所訪問的默認位置。

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

為了方便管理FTP服務器上的數據,可以把這個系統(tǒng)本地用戶的家目錄設置為/var目錄(該目錄用來存放經常發(fā)生改變的數據)。并且為了安全起見,我們將這個系統(tǒng)本地用戶設置為不允許登錄FTP服務器,這不會影響虛擬用戶登錄,而且還可以避免黑客通過這個系統(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(可插拔認證模塊)是一種認證機制,通過一些動態(tài)鏈接庫和統(tǒng)一的API把系統(tǒng)提供的服務與認證方式分開,使得系統(tǒng)管理員可以根據需求靈活調整服務程序的不同認證方式。要想把PAM功能和作用完全講透,至少要一個章節(jié)的篇幅才可以(對該主題感興趣的讀者敬請關注本書的進階篇,里面會詳細講解PAM)。

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

圖11-2 PAM的分層設計結構

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

    [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服務程序的主配置文件中通過pam_service_name參數將PAM認證文件的名稱修改為vsftpd.vu,PAM作為應用程序層與鑒別模塊層的連接紐帶,可以讓應用程序根據需求靈活地在自身插入所需的鑒別功能模塊。當應用程序需要PAM認證時,則需要在應用程序中定義負責認證的PAM配置文件,實現所需的認證功能。

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

表11-4 利用PAM文件進行認證時使用的參數以及作用

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

    [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參數來定義這兩個虛擬用戶不同權限的配置文件所存放的路徑。為了讓修改后的參數立即生效,需要重啟vsftpd服務程序并將該服務添加到開機啟動項中:

    [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步:設置SELinux域允許策略,然后使用虛擬用戶模式登錄FTP服務器。相信大家可以猜到,SELinux會繼續(xù)來搗亂。所以,先按照前面實驗中的步驟開啟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
    [root@linuxprobe ~]# setsebool -P ftpd_full_access=on

此時,不但可以使用虛擬用戶模式成功登錄到FTP服務器,還可以分別使用賬戶zhangsan和lisi來檢驗他們的權限。當然,讀者在生產環(huá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): 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.

當前標題:創(chuàng)新互聯linux教程:11.2.3虛擬用戶模式
本文網址:http://m.jiaoqi3.com/article/coeipig.html