注意:部分文章发布时间较长,可能存在未知因素,购买时建议在本站搜索商家名称,先充分了解商家动态。
交流:唯一投稿邮箱:hostvps@88.com。
  	 贝壳主机网、bkvps.com
贝壳主机网、bkvps.com
漏洞详情
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
- #禁止匿名用户
|   								1   								2   								3   								4   								5   								6   								7   								8   								9   								10   								11   								12   								13   								14   								15   								16   								17   								18   								19   								20   								21 | anonymous_enable=nolocal_enable=yeswrite_enable=yes#不启动锁定用户名单,所有的用户都将被锁定不允许访问上级目录,只允许访问其主目录chroot_local_user=yeschroot_list_enable=no#启动logxferlog_enable=yesxferlog_std_format=yesxferlog_file=/etc/vsftpd/vsftpd.log#开启虚拟用户guest_enable=yes#ftp虚拟用户对应的系统用户guest_username=vsftpd#pam认证文件/etc/pam.d/vsftpdpam_service_name=vsftpdvirtual_use_local_privs=yes | 
  	
编写 vsftpd 启动 脚本:/etc/init.d/vsftpd
|   								1   								2   								3   								4   								5   								6   								7   								8   								9   								10   								11   								12   								13   								14   								15   								16   								17   								18   								19   								20   								21   								22   								23   								24   								25   								26   								27   								28   								29   								30   								31   								32   								33   								34   								35   								36   								37   								38   								39   								40   								41   								42   								43   								44   								45   								46   								47   								48   								49   								50   								51   								52   								53   								54   								55   								56   								57   								58   								59   								60   								61   								62   								63   								64   								65   								66   								67   								68   								69   								70   								71   								72   								73   								74   								75   								76 | #!/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"] && exit0[ -x /usr/local/sbin/vsftpd] || exit0retval=0prog="vsftpd"start() {        # start daemons.        if[ -d /etc/vsftpd] ; then                fori in`ls/etc/vsftpd/*.conf`; do                        site=`basename$i .conf`                        echo-n $"starting $prog for $site: "                        /usr/local/sbin/vsftpd$i &                        retval=$?                        [ $retval -eq0 ] && {                           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 -eq0 ] && 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}"        exit1esacexit$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的资料请关注服务器之家其它相关文章!
 贝壳主机网
贝壳主机网








