您的位置:首页 > 服务器 > > 正文

vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

更多 时间:2022-03-28 13:38:55 类别:服务器 浏览量:133

vsftpd详细教程

编译安装 vsFTP 3.0.3的详细解析

vsftpd详细教程(编译安装 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

vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

  • 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详细教程(编译安装 vsFTP 3.0.3的详细解析)

vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

vsftpd详细教程(编译安装 vsFTP 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

vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

  • 默认配置: 
  • 默认配置: 
  • 主程序文件:/usr/local/sbin/vsftpd
  • 主配置文件:/etc/vsfptd.conf
  • pam认证文件:/etc/pam.d/vsftpd
  • 匿名用户主目录:/var/ftp
  • 匿名用户的下载目录:/var/ftp/pub
  •  
  • vsftpd的安全原则主要有两个:
  • 只允许支持虚拟用户登录,关闭本地用户和匿名用户。
  • 不允许使用root权限运行。
  •  
  • 创建配置文件存放目录
  • mkdir /etc/vsftpd
  • 拷贝新的配置文件到 /etc/vsftpd 目录

vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

创建用户以及共享目录、目录权限

vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

  • 创建虚拟用户口令明文文件,使用前面安装的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详细教程(编译安装 vsFTP 3.0.3的详细解析)

  • 编辑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

vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

  • 编辑配置主文件 /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=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详细教程(编译安装 vsFTP 3.0.3的详细解析)

    编写 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" ] && 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
  • vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    增加执行权限

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    • 修改文件 /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详细教程(编译安装 vsFTP 3.0.3的详细解析)

    • 启动 vsftpd
    • servicevsftpd start

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    登陆测试

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

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

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)

    以上就是编译安装 vsftp 3.0.3的详细内容,更多关于编译安装 vsftp 3.0.3的资料请关注开心学习网其它相关文章!

    原文链接:https://blog.csdn.net/gaofei0428/article/details/117151295

    标签:安装 编译 VSFTP
    您可能感兴趣