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
- 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的资料请关注开心学习网其它相关文章!
原文链接:https://blog.csdn.net/gaofei0428/article/details/117151295
- docker部署mysql如何访问(完美解决docker安装mysql后Navicat连接不上的问题)
- python搭建django框架(详解Python网络框架Django和Scrapy安装指南)
- 腾讯云服务器安装需要什么(免费的云服务器怎么申请?腾讯云服务器的申请流程)
- linux宝塔面板安装后怎么打开(Linux宝塔面板7.30推出文件外链分享功能)
- linux lnmp安装教程(LNMP系列教程之 SSL安装WordPress博客程序下载与安装)
- win10怎么安装apache(apache启动失败怎么办 快速解决Win10系统apache启动失败的方法教程)
- mysql5.7详细安装教程(MySQL5.7.33安装过程图文详解)
- deepin的简单安装与全盘安装(Deepin下安装神器Pyenv的步骤记录)
- apache服务配置详解(Apache Web服务器的完全安装指南)
- 怎么安装xftp(Xftp的下载和安装教程图文教程)
- h5实现唤起本地app(h5页面唤起app如果没安装就跳转下载iOS和Android)
- dedecms安装使用教程(网站子目录安装dedecms导致网页布局混乱的解决方法)
- sqlserver2016的安装(Sql Server2016 正式版安装程序图解教程)
- 如何搭建pxe服务器(使用vmware测试PXE批量安装服务器的详细过程)
- mysql 8.0.22 winx64安装配置方法图文教程(mysql 8.0.22 winx64安装配置方法图文教程)
- linux服务器安装宝塔(linux宝塔面板安装Zabbix监控服务器资源使用状态)
- 小说 小伙穿越成刘备,用现代知识指挥作战,众谋士都看呆了(小伙穿越成刘备)
- 解析葡萄牙6-1瑞士 进攻多点开花,贡萨洛-拉莫斯一战成名(解析葡萄牙6-1瑞士)
- 这支 奇兵队 腕大 有范儿还各怀绝技,毒贩杀人犯见了都要仓皇而逃(这支奇兵队腕大)
- 雄藩崛起 奇兵队与幕末长州藩军事改革(雄藩崛起奇兵队与幕末长州藩军事改革)
- 九月初,爱如蜜糖,甜到心扉,迷恋彼此,一日不见兮,思之若狂(九月初爱如蜜糖)
- ()
热门推荐
- pyclips入门(phpinfo的知识点总结)
- dedecms添加底部链接(详解如何修改织梦模板dedeCMS友情链接为下拉式)
- python继承重写构造函数(Python子类继承父类构造函数详解)
- sql内连接和外连接(SQL左连接和右连接原理及实例解析)
- 阿里云服务器ecs环境配置(阿里云ECS服务器的购买、配置升级和续费教程)
- python将网站图片本地存储(详解Python下载图片并保存本地的两种方式)
- sql两列内容合并(分组字符合并SQL语句 按某字段合并字符串之一简单合并)
- 云服务器好在哪你知道吗(美国云服务器怎么选择?美国云服务器选择技巧分享)
- win10下ftp服务器怎么配置(个人主机如何搭建FTP服务器?win10版本)
- sql取整数函数(SQL中位数函数实例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9