編譯安裝 vsFTP 3.0.3的詳細(xì)解析
漏洞詳情
VSFTP是一套基于GPL發(fā)布的類Unix系統(tǒng)上使用的FTP服務(wù)器軟件。該軟件支持虛擬用戶、支持兩種認(rèn)證方式(PAP或xinetd/tcp_wrappers)、支持帶寬限制等。
VSFTP中存在安全漏洞,該漏洞源于程序沒有正確處理‘deny_file'選項(xiàng)。遠(yuǎn)程攻擊者可利用該漏洞繞過訪問限制。
以下產(chǎn)品及版本受到影響:VSFTP3.0.2及之前版本,opensuse13.1版本和13.2版本。
受影響的產(chǎn)品
Vsftpd Vsftpd 3.0.2
- FTP的登錄一般有三種方式,分別是:
- 匿名用戶形式:默認(rèn)安裝的情況下,系統(tǒng)只提供匿名用戶訪問,只需要輸入用戶anonymous/ftp,并將自己的Email作為口令即可登錄。
- 本地用戶形式:以/etc/passwd中的用戶名為認(rèn)證方式。
- 虛擬用戶形式:支持將用戶名和密碼保存在文件或數(shù)據(jù)庫中,將登錄用戶映射到指定的系統(tǒng)賬號(hào)(/sbin/nologin)來訪問資源,其中這些虛擬用戶是FTP的用戶。
- 實(shí)驗(yàn)環(huán)境: CentOS 7.5 192.168.2.3
- firewalld、iptables 及 SElinux 均為關(guān)閉狀態(tài)
- 下面實(shí)驗(yàn)采用基于PAM的虛擬用戶,需要先用yum來安裝PAM的組件:
- 需要使用 epel 源
- yum -y install epel-release && yum -y install pam pam-devel db4-utils
- 在默認(rèn)配置下 vsftpd 需要使用 nobody 用戶
- 從官網(wǎng)上下載 https://www.linuxfromscratch.org/blfs/view/svn/server/vsftpd.html
- wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz
- tar xf vsftpd-3.0.3.tar.gz
- cd vsftpd-3.0.3/
- vsftpd的源碼包里并沒有configure文件,直接編譯安裝
- make clean && make -j 4 && make install
- 如果編譯的時(shí)候報(bào)錯(cuò)
- /usr/bin/ld: cannot find -lcap
- 查找該 .so 文件
- find / -name "*libcap.so*"
- /usr/lib64/libcap.so.2.22
- /usr/lib64/libcap.so.2
- ln -sv /usr/lib64/libcap.so.2 /usr/lib64/libcap.so
- 默認(rèn)配置:
- 默認(rèn)配置:
- 主程序文件:/usr/local/sbin/vsftpd
- 主配置文件:/etc/vsfptd.conf
- PAM認(rèn)證文件:/etc/pam.d/vsftpd
- 匿名用戶主目錄:/var/ftp
- 匿名用戶的下載目錄:/var/ftp/pub
- vsftpd的安全原則主要有兩個(gè):
- 只允許支持虛擬用戶登錄,關(guān)閉本地用戶和匿名用戶。
- 不允許使用root權(quán)限運(yùn)行。
- 創(chuàng)建配置文件存放目錄
- mkdir /etc/vsftpd
- 拷貝新的配置文件到 /etc/vsftpd 目錄
創(chuàng)建用戶以及共享目錄、目錄權(quán)限
- 創(chuàng)建虛擬用戶口令明文文件,使用前面安裝的db4-utils組件生成口令認(rèn)證文件:
- vim /etc/vsftpd/access.txt
zhangsan #用戶名
123456 #密碼
lisi
123456使用
- 前面安裝的db4-utils組件生成口令認(rèn)證文件:
- db_load -T -t hash -f /etc/vsftpd/access.txt /etc/vsftpd/access.db
- 編輯vsftpd的PAM認(rèn)證文件:
- vim /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/access
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/access
- 編輯配置主文件 /etc/vsftpd/vsftpd.conf
- cp /etc/vsftpd/vsftpd.conf{,.bak}
- vim /etc/vsftpd/vsftpd.conf
- #禁止匿名用戶
anonymous_enable=NO local_enable=YES write_enable=YES #不啟動(dòng)鎖定用戶名單,所有的用戶都將被鎖定不允許訪問上級(jí)目錄,只允許訪問其主目錄 chroot_local_user=YES chroot_list_enable=NO #啟動(dòng)log xferlog_enable=YES xferlog_std_format=YES xferlog_file=/etc/vsftpd/vsftpd.log #開啟虛擬用戶 guest_enable=YES #FTP虛擬用戶對(duì)應(yīng)的系統(tǒng)用戶 guest_username=vsftpd #PAM認(rèn)證文件/etc/pam.d/vsftpd pam_service_name=vsftpd virtual_use_local_privs=YES
編寫 vsftpd 啟動(dòng) 腳本:/etc/init.d/vsftpd
#!/bin/bash # # vsftpd This shell script takes care of starting and stopping # standalone vsftpd. # # chkconfig: - 60 50 # description: Vsftpd is a ftp daemon, which is the program # that answers incoming ftp service requests. # processname: vsftpd # config: /etc/vsftpd/vsftpd.conf # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x /usr/local/sbin/vsftpd ] || exit 0 RETVAL=0 prog="vsftpd" start() { # Start daemons. if [ -d /etc/vsftpd ] ; then for i in `ls /etc/vsftpd/*.conf`; do site=`basename $i .conf` echo -n $"Starting $prog for $site: " /usr/local/sbin/vsftpd $i & RETVAL=$? [ $RETVAL -eq 0 ] && { touch /var/lock/subsys/$prog success $"$prog $site" } echo done else RETVAL=1 fi return $RETVAL } stop() { # Stop daemons. echo -n $"Shutting down $prog: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start RETVAL=$? ;; condrestart) if [ -f /var/lock/subsys/$prog ]; then stop start RETVAL=$? fi ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL
增加執(zhí)行權(quán)限
- 修改文件 /etc/xinetd.d/vsftpd ,不使用 xinetd 守護(hù)進(jìn)程啟動(dòng) vsftpd
- sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpd
- sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpdn
- 啟動(dòng) vsftpd
- servicevsftpd start
登陸測(cè)試
- 開機(jī)啟動(dòng),重啟測(cè)試
- chkconfig vsftpd on
以上就是編譯安裝 vsFTP 3.0.3的詳細(xì)內(nèi)容,更多關(guān)于編譯安裝 vsFTP 3.0.3的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
云服務(wù)器Windows?Server2012配置FTP服務(wù)器詳細(xì)圖文教程
這篇文章主要介紹了云服務(wù)器Windows?Server2012配置FTP服務(wù)器詳細(xì)圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Win10系統(tǒng)搭建ftp文件服務(wù)器詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了Win10系統(tǒng)搭建ftp文件服務(wù)器詳細(xì)教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Windows?Server?2012下FTP服務(wù)器站點(diǎn)搭建程序
這篇文章主要為大家詳細(xì)介紹了Windows?Server?2012下FTP服務(wù)器站點(diǎn)搭建程序,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Serv-U占用IIS的80端口造成沖突導(dǎo)致iis無法運(yùn)行的解決方法(serv_u6-8版本)
今天有朋友反映我負(fù)責(zé)維護(hù)的一臺(tái)服務(wù)器的iis無法運(yùn)行了,原來是因?yàn)閟erv_u占用了iis的80端口。2011-10-10Windows系統(tǒng)中FTP配置流程(超詳細(xì))
這篇文章主要為大家詳細(xì)介紹了Windows系統(tǒng)中配置FTP的超詳細(xì)流程,文中通過示例圖片進(jìn)行了詳細(xì)的講解,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08FTP 550 Permission denied 只能建文件夾,沒法刪除及上傳文件的原因說明
FTP 550 Permission denied 只能建文件夾,沒法刪除及上傳文件的解決方法,需要的朋友可以參考下。2011-03-03FTP服務(wù)器的防火墻通用設(shè)置規(guī)則介紹
此FTP服務(wù)器的防火墻通用設(shè)置規(guī)則適用于Windows、Linux服務(wù)器以及可能的其他操作系統(tǒng),設(shè)置步驟如下,感興趣的朋友可以參考下哈2013-06-06Win10搭建FTP服務(wù)器實(shí)現(xiàn)局域網(wǎng)內(nèi)訪問
這篇文章主要為大家詳細(xì)介紹了Win10搭建FTP服務(wù)器實(shí)現(xiàn)在局域網(wǎng)內(nèi)訪問,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Serv_U 安全設(shè)置以后出現(xiàn)530 Not logged in, home directory does not ex
今天幫客戶服務(wù)器安全設(shè)置以后,serv_u設(shè)置了普通用戶啟動(dòng)并開啟了防火墻,客戶端連接后就出現(xiàn)530 Not logged in, home directory does not exist,經(jīng)過多次測(cè)試與搜索發(fā)現(xiàn)了如下問題。2011-03-03