编译安装 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的详细内容,更多关于编译安装 vsFTP 3.0.3的资料请关注我们其它相关文章!

(0)

相关推荐

  • vsftp上传553 Could not create file错误解决

    搭建一个ftp服务器,我使用ubuntu 10.04操作系统,下载vsftpdy源代码, 进行了编译,安装,然后按照INSTALL文件,创建了用户等操作. 因为时间比较紧,我采用匿名用户,进行文件的上传测试.修改了/etc/vsftpd.conf文件, 将默认注释不让匿名用户上传文件的注释去掉,然后保存,然后杀死vsftpd进程,然后重新运行 $ sudo vsftpd & 进行ftp服务器的启动. 使用一个客户端,可以正常的连接,但是当上传文件时,总是报553 Could not create

  • vsftpd匿名用户上传和下载的配置方法

    看到很多朋友配置vsftpd时不能使用匿名用户上传和下载(创建目录或删除.重命名文件夹),本文主要解决vsftpd的匿名用户权限配制问题. 配置要注意三部分,请一一仔细对照: 1.vsftpd.conf文件的配置(vi /etc/vsftpd/vsftpd.conf) #允许匿名用户登录FTP anonymous_enable=YES #打开匿名用户的上传权限 anon_upload_enable=YES #打开匿名用户创建目录的权限 anon_mkdir_write_enable=YES #打

  • Linux编译安装vsftpd服务器(本地用户验证方式)

    Linux vsftpd编译安装和配置允许本地用户登录FTP 1.下载vsftpd源码 wget https://security.appspot.com/downloads/vsftpd-2.3.4.tar.gz 2.编译vsftpd源码 64位的系统编译之前先要执行cp /lib64/libcap.so.1 /lib/libcap.so.1命令: 复制代码 代码如下: tar xzvf vsftpd-2.3.4.tar.gz cd vsftpd-2.3.4 make make install

  • linux下vsftpd的安装及配置使用详细步骤(推荐)

    vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点. vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征. 比如:非常高的安全性需求.带宽限制.良好的可伸缩性.可创建虚拟用户.支持IPv6.速率高等. vsftpd是一款在Linux发行版中最受推崇的FT

  • Linux下使用vsftp搭建FTP服务器(附参数说明)

    介绍 本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置. 知识点 在linux中使用的FTP是vsftp FTP可以有三种登入方式分别是: 匿名登录方式:不需要用户密码 本地用户登入:使用本地用户和密码登入 虚拟用户方式:也是使用用户和密码登入,但是该用户不是linux中创建的用户 安装FTP 使用YUM安装 yum -y install vsftpd 文件配置 安装完之后在/etc/vsftpd/路径下会存在三个配置文件. vsftpd.conf: 主配置文

  • 编译安装 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的登录一般有三种方式,分别是:

  • Centos 6.5系统下编译安装PHP 7.0.13的方法

    PHP7.0正式版也出来了,今天编译安装了一下,写下安装步骤,我是在centos6.6 环境中编译的,下面是详细的安装步骤 环境依赖 yum install gcc gcc-c++ libxml2 libxml2-python libxml2-devel -y 下载 wget http://cn2.php.net/distributions/php-7.0.13.tar.gz 解压 tar -zxvf php-7.0.13.tar.gz cd php-7.0.13 ./configure --e

  • Centos6.4编译安装mysql 8.0.0 详细教程

    本文实例为大家分享了Centos6.4编译mysql  8.0.0 安装配置方法,供大家参考,具体内容如下 操作系统说明:CentOS 6.4 数据库版本:MySQL 8.0.0 一.环境准备 yum install ncurses-devel -y yum install libaio -y yum install glibc-devel.i686 glibc-devel -y yum install gcc gcc-c++ -y 另外,MySQL8.0需要用gcc的版本为 4.8以上,而ce

  • AlmaLinux 9 安装 MySQL 8.0.32的详细过程

    目录 1.配置安装源 2.安装MySQL 3.配置MySQL 4.修改配置文件 5.启动MySQL 6.安全配置 1.配置安装源 # 安装 dnf install http://mirrors.ustc.edu.cn/mysql-repo/mysql80-community-release-el9.rpm -y # 修改配置 sed -i 's@http://repo.mysql.com/@http://mirrors.ustc.edu.cn/mysql-repo/@g' /etc/yum.re

  • CentOS 6.3下编译安装Ruby 2.0笔记

    LINUX操作系统: CentOS6.3 64bit Ruby: ruby-2.0.0-p247 一.安装开发包(使用默认CENTOS更新源) 复制代码 代码如下: # yum install openssl* openssl-devel zlib-devel gcc gcc-c++ make autoconf readline-devel curl-devel expat-devel gettext-devel 二.关闭iptables和SELINUX 复制代码 代码如下: # service

  • CentOS 7.0编译安装lnmp教程(Nginx1.6.0+MySQL5.6.19+PHP5.5.14)

    准备篇: CentOS 7.0系统安装配置图解教程 http://www.jb51.net/os/188487.html 一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2.安装iptab

  • centos7利用yum安装mysql 8.0.12

    本文为大家分享了centos7利用yum安装mysql 8.0.12的详细步骤,供大家参考,具体内容如下 清理原有的mysql rpm -qa | grep mysql #可能的显示情况如下 #mysql-community-libs-8.0.12-1.el7.x86_64 #mysql80-community-release-el7-1.noarch #mysql-community-client-8.0.12-1.el7.x86_64 #mysql-community-common-8.0.

  • 源码编译安装MySQL8.0.20的详细教程

    在上篇文章给大家介绍了: MySQL8.0.20安装教程及其安装问题详细教程  https://www.jb51.net/article/186202.htm mysql8.0.20下载安装及遇到的问题(图文详解)  https://www.jb51.net/article/186208.htm CentOS7安装Mysql8.0.20步骤: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html 1 概述 本文章主要讲述

  • 详解Centos7.2编译安装zabbix3.2(详细步骤)

    Zabbix简介 zabbix简介zabbix是完全开源的工具,整合了cacti和nagios等特性,SNMP(udp 161  udp 162)众多网络工具都支持此协议,比如常见路由交换,常见OS可以做管理端,也可以做被管理端,snmp大致的三个版本分为v1 v2 v3,无论是v1和v2他们的安全性还是比较差的,因为传输的是明文的,v3的认证密码用 MD5/SHA摘要算法加密. 很多工具都支持网络管理的功能,而对非网络设备(操作系统)可以完全抛开snmp这种不安全的架构来实现监控的,所以很多工

  • linux下使用cmake编译安装mysql的详细教程

    一.安装cmake 1.解压cmake压缩包 [root@mysql tools]# tar -zvxf cmake-2.8.8.tar.gz [root@mysql tools]# ls cmake-2.8.8 cmake-2.8.8.tar.gz mysql-5.5.16.tar.gz scripts 2.解析 [root@mysql tools]# cd cmake-2.8.8 [root@mysql cmake-2.8.8]# ./configure ------------------

随机推荐