vsftpd 安全漏洞(CVE-2021-30047)修复过程
经过核实, vsftpd 安全漏洞(CVE-2021-30047)是由于VSFTPD 3.0.3版本存在拒绝服务漏洞,该漏洞源于程序未正确限制允许连接的设备数量,攻击者可利用该漏洞导致拒绝服务。如果不及时修复,可能会面临服务异常,被攻击的难题。解决方法就是升级到新版3.0.5版本(RPM resource vsftpd (rpmfind.net)),我获取的是二进制包,人家的网盘获取的,这个只有靠你自己去找了。
下面是下载 地址,看看能否拿到吧
安装之前需要先卸载旧版的vsftp
[root@test pkg]# rpm -qa|grep vsftpd vsftpd-3.0.3-32.el8.x86_64
[root@test pkg]# rpm -e vsftpd-3.0.3-32.el8.x86_64
旧的vsftpd.conf会改名为 vsftpd.conf.rpmsave
vsftpd-3.0.5 源码下载 http://vsftpd.beasts.org/ 链接:https://pan.baidu.com/s/1raN4EMANfFxAjS8zjIu3Mw?pwd=p86x
安装之前需要补充libcap-dev开发包和gcc编译器
yum -y install libcap-devel gcc
接下来解压
tar -zcvf vsftpd-3.0.5.tar.gz
进入解压后的目录执行更改和编译操作
cd vsftpd-3.0.5 #sed -i 's#lib/#lib64/#g' vsf_findlibs.sh sed -i 's#/etc/vsftpd.#/etc/vsftpd/#g' tunables.c sed -i 's#/etc/vsftpd.conf#/etc/vsftpd/vsftpd.conf#g' defs.h make make install # vsftpd 会复制到 /usr/local/sbin/
编译完成之后,在当前目录下会有几个关键文件,比如
[root@test vsftpd-3.0.5]# ls RedHat/ vsftpd xinetd.d/ vsftpd.conf vsftpd vsftpd.conf RedHat/: README.spec vsftpd.log vsftpd.pam xinetd.d/: vsftpd
需要执行如下操作:
cp vsftpd.conf /etc/vsftpd cp xinetd.d/vsftpd /etc/xinetd.d/ cp RedHat/vsftpd.pam /etc/pam.d/vsftpd sed -i -e 's/lib/lib64/g' /etc/pam.d/vsftpd
准备好了配置文件和环境,接下来需要配置vsftpd.conf
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf sed -i 's/#local_enable=YES/local_enable=YES/' /etc/vsftpd/vsftpd.conf sed -i 's/#write_enable=YES/write_enable=YES/' /etc/vsftpd/vsftpd.conf sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf sed -i 's!#chroot_list_file=/etc/vsftpd.chroot_list!chroot_list_file=/etc/vsftpd/chroot_list!' /etc/vsftpd/vsftpd.conf echo allow_writeable_chroot=YES >> /etc/vsftpd/vsftpd.conf
最后vsftpd.conf的重要配置内容如下
## vsftpd.conf关键配置如下 anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list allow_writeable_chroot=YES
需要在创建文件/etc/vsftpd/chroot_list,并把需要开放的ftp用户名称放进去,配置好用户
useradd test -d /home/test/FTP -s /sbin/nologgin
passwd test
echo test >> /etc/vsftpd/chroot_list
新增systemd配置文件
# vim /usr/lib/systemd/system/vsftpd.service [Unit] Description=Vsftpd ftp daemon After=network.target [Service] Type=forking ExecStart=/bin/bash -c "/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &" [Install] WantedBy=multi-user.target
允许vsftpd在服务器启动后自行启动
systemctl daemon-reload
systemctl enable vsftpd.service
systemctl start vsftpd.service
# 如果无法使用systemctl start vsftpd.service 启动vsftpd,采用下面的方法可以启动
# nohup /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
最后查看当前版本,已经是最新版了
[root@test~]# vsftpd -version vsftpd: version 3.0.5
如果出现登录验证失败,可以从下面几个方面入手:
1. setenforce 0
2. 看看是否增加了chroot_list文件以及文件位置是否正确
3. 是否增加了vsftpd启动文件
4. 查看/etc/pam.d/vsftpd文件里的so文件是否存在
5. 重启试试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下