漏洞详情
VSFTP是一套基于GPL发布的类Unix系统上使用的FTP服务器软件。该软件支持虚拟用户、支持两种认证方式(PAP或xinetd/tcp_wrappers)、支持带宽限制等。
VSFTP中存在安全漏洞,该漏洞源于程序没有正确处理‘deny_file'选项。远程攻击者可利用该漏洞绕过访问限制。
以下产品及版本受到影响:VSFTP3.0.2及之前版本,opensuse13.1版本和13.2版本。
受影响的产品
Vsftpd Vsftpd 3.0.2
- 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的详细内容,更多关于编译安装 vsFTP 3.0.3的资料请关注脚本之家其它相关文章!
来源:互联网
免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作! |