您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何編譯安裝 vsFTP 3.0.3的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
漏洞詳情
VSFTP是一套基于GPL發布的類Unix系統上使用的FTP服務器軟件。該軟件支持虛擬用戶、支持兩種認證方式(PAP或xinetd/tcp_wrappers)、支持帶寬限制等。
VSFTP中存在安全漏洞,該漏洞源于程序沒有正確處理‘deny_file'選項。遠程攻擊者可利用該漏洞繞過訪問限制。
以下產品及版本受到影響:VSFTP3.0.2及之前版本,opensuse13.1版本和13.2版本。
受影響的產品
Vsftpd Vsftpd 3.0.2
FTP的登錄一般有三種方式,分別是:
匿名用戶形式:默認安裝的情況下,系統只提供匿名用戶訪問,只需要輸入用戶anonymous/ftp,并將自己的Email作為口令即可登錄。
本地用戶形式:以/etc/passwd中的用戶名為認證方式。
虛擬用戶形式:支持將用戶名和密碼保存在文件或數據庫中,將登錄用戶映射到指定的系統賬號(/sbin/nologin)來訪問資源,其中這些虛擬用戶是FTP的用戶。
實驗環境: CentOS 7.5 192.168.2.3
firewalld、iptables 及 SElinux 均為關閉狀態
下面實驗采用基于PAM的虛擬用戶,需要先用yum來安裝PAM的組件:
需要使用 epel 源
yum -y install epel-release && yum -y install pam pam-devel db4-utils
在默認配置下 vsftpd 需要使用 nobody 用戶
從官網上下載 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
如果編譯的時候報錯
/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
默認配置:
默認配置:
主程序文件:/usr/local/sbin/vsftpd
主配置文件:/etc/vsfptd.conf
PAM認證文件:/etc/pam.d/vsftpd
匿名用戶主目錄:/var/ftp
匿名用戶的下載目錄:/var/ftp/pub
vsftpd的安全原則主要有兩個:
只允許支持虛擬用戶登錄,關閉本地用戶和匿名用戶。
不允許使用root權限運行。
創建配置文件存放目錄
mkdir /etc/vsftpd
拷貝新的配置文件到 /etc/vsftpd 目錄
創建用戶以及共享目錄、目錄權限
創建虛擬用戶口令明文文件,使用前面安裝的db4-utils組件生成口令認證文件:
vim /etc/vsftpd/access.txt
zhangsan #用戶名
123456 #密碼
lisi
123456使用
前面安裝的db4-utils組件生成口令認證文件:
db_load -T -t hash -f /etc/vsftpd/access.txt /etc/vsftpd/access.db
編輯vsftpd的PAM認證文件:
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 #不啟動鎖定用戶名單,所有的用戶都將被鎖定不允許訪問上級目錄,只允許訪問其主目錄 chroot_local_user=YES chroot_list_enable=NO #啟動log xferlog_enable=YES xferlog_std_format=YES xferlog_file=/etc/vsftpd/vsftpd.log #開啟虛擬用戶 guest_enable=YES #FTP虛擬用戶對應的系統用戶 guest_username=vsftpd #PAM認證文件/etc/pam.d/vsftpd pam_service_name=vsftpd virtual_use_local_privs=YES
編寫 vsftpd 啟動 腳本:/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
增加執行權限
修改文件 /etc/xinetd.d/vsftpd ,不使用 xinetd 守護進程啟動 vsftpd
sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpd
sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpdn
啟動 vsftpd
servicevsftpd start
登陸測試
開機啟動,重啟測試
chkconfig vsftpd on
感謝各位的閱讀!關于“如何編譯安裝 vsFTP 3.0.3”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。