1. 首页
  2. 技术知识

编译安装 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中的用户名为认证方式。虚拟用户形式:支持将用户名和密码保存在文件或数据库中,将登录用户映X指定的系统账号(/sbin/nologin)来访问资源,其中这些虚拟用户是FTP的用户。实验环境: CentOS 7.5 192.168.2.3firewalld、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.htmlwget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gztar xf vsftpd-3.0.3.tar.gzcd 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.2ln -sv /usr/lib64/libcap.so.2 /usr/lib64/libcap.so

    默认配置: 默认配置: 主程序文件:/usr/local/sbin/vsftpd主配置文件:/etc/vsfptd.confPAM认证文件:/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.confcp /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 functiоn library.

. /etc/rc.d/init.d/functiоns

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ ${NEТWORKING} = “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 守护进程启动 vsftpdsed -in ‘s/disable.*=.*/disable = yes/g’ /etc/xinetd.d/vsftpdsed -in ‘s/disable.*=.*/disable = yes/g’ /etc/xinetd.d/vsftpdn

    启动 vsftpdservicevsftpd start

登陆测试

    开机启动,重启测试chkconfig vsftpd on

以上就是编译安装 vsFTP 3.0.3的详细内容,更多关于编译安装 vsFTP 3.0.3的资料请关注共生网络其它相关文章!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/106548.html

联系我们