修复VSFTPD漏洞——版本升级

第一步:备份相关文件

mkdir vsftpd-bak		#创建目录,用来做配置文件备份
cd vsftpd-bak/
cp -R /etc/vsftpd ./vsftpdbak`date +%F-%T`		#备份全部的配置文件
cp /etc/rc.d/init.d/vsftpd ./vsftpd.service.bak`date +%F-%T`		#备份服务文件,方便回退,如升级成功,该文件就没用了
cp /etc/pam.d/vsftpd ./vsftpd.pam`date +%F-%T`						#备份pam文件,方便回退,如升级成功,该文件就没用了
cp /usr/sbin/vsftpd ./vsftpd.`date +%F-%T`							#备份程序文件
rpm -qa | grep vsftpd > vsftpd.version								#记录就版本信息

yum -y remove vsftpd-*			## 可选操作,没必要卸载


第二步:编译安装新版本的VSFTPD

tar xf vsftpd-3.0.3.tar.gz 
cd vsftpd-3.0.3

[root@localhost vsftpd-3.0.3]# make
gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o seccompsandbox.o -Wl,-s -fPIE -pie -Wl,-z,relro -Wl,-z,now `./vsf_findlibs.sh`
/usr/bin/ld: cannot find -lcap		##缺少cap依赖
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
# 编译过程中报错

#安装如下软件包
yum -y install libcap
yum -y install libcap-devel 

make  
make install

第三步:将编译完成后的文件拷贝到该去的地方

# 以下文件均在源码VSFTPD目录中

### 除了程序文件以外,其它文件根据需要拷贝
\cp -f vsftpd.conf /etc/vsftpd/			
\cp -f RedHat/vsftpd.pam /etc/pam.d/vsftpd
\cp -f ftpusers /etc/vsftpd/
\cp -f chroot_list /etc/vsftpd/
\cp -f user_list /etc/vsftpd/

## 替换程序文件
\cp -f /usr/local/sbin/vsftpd /usr/sbin/vsftpd

#启动服务验证
/usr/local/sbin/vsftpd &
ss -ntulp | grep ftp
## 验证启动后,可以关闭

第四步:修改service文件

# 文件内容可以直接拷贝,有其它特殊管理方式的根据需要修改
[root@localhost ~]# grep -v ^# /etc/init.d/vsftpd | grep -v ^$
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
RETVAL=0
prog="vsftpd"
start() {
        # Start daemons.
        if [ -d /etc ] ; then
                for i in `ls /etc/vsftpd/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
}
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 
[root@localhost ~]# chmod 755 /etc/init.d/vsftpd
#启停验证
chkconfig vsftpd on
service vsftpd stop
service vsftpd start

其它:配置文件主要配置

[root@localhost ~]# grep -v ^# /etc/vsftpd/vsftpd.conf | grep -v ^$
#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
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=NO
### 配置文件根据需要添加


allow_writeable_chroot=YES	
#从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误,要修复这个错误,
#解决办法:可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在/etc/vsftpd.conf 的配置文件中增加allow_writeable_chroot=YES

升级过程中遇到的问题

kernel: lo: Dropping TSO features since no CSUM feature.
kernel: warning: `vsftpd' uses 32-bit capabilities (legacy support in use)
如系统出现宕机,并在/var/log/messages日志中出现以上两条报错信息
需要在配置文件中添加以下配置项

isolate=NO
isolate_network=NO

完整地service文件

vim  /etc/init.d/vsftpd
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: vsftpd
# Required-Start: $local_fs $network $named $remote_fs $syslog
# Required-Stop: $local_fs $network $named $remote_fs $syslog
# Short-Description: Very Secure Ftp Daemon
# Description: vsftpd is a Very Secure FTP daemon. It was written completely from
#              scratch
### END INIT INFO


# 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


RETVAL=0
prog="vsftpd"
start() {
        # Start daemons.
        if [ -d /etc ] ; then
                for i in `ls /etc/vsftpd/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 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: vsftpd 2.3.4 是一个包含漏洞的FTP服务器软件。这个漏洞版本的FTP服务器软件可以让攻击者远程攻击FTP服务器,从而访问FTP服务器上的敏感数据。这个漏洞是由于软件中存在的安全缺陷造成的。攻击者可以通过发送特殊数据包来利用这个漏洞,这个过程被称为缓冲区溢出攻击。这种攻击可以让攻击者注入恶意代码到服务器上,从而获取敏感信息或控制FTP服务器。因此,如果您使用vsftpd 2.3.4版本,建议您及时升级到最新版本来避免被攻击。同时,您还可以采取其他措施来保护FTP服务器的安全性,例如加强密码策略,限制FTP服务器的访问权限等等。确保FTP服务器的安全性对于任何类型的组织和个人来说都至关重要,因为FTP服务器承载着有关用户和业务的敏感信息。 ### 回答2: vsftpd是一个非常流行的FTP服务器软件,很多Linux发行版都会默认安装这个软件。然而,早期的版本中存在一个漏洞,即在处理传输过程中的命令时,如果恶意用户发送了一个命令包括 nul 字符(ASCII 0),则可能导致 vsftpd服务程序崩溃,并且这种情况下所创建的进程可以被攻击者所利用。 这个漏洞版本的 vsftpd 2.3.4,如果被攻击者利用,可以很容易地导致系统崩溃或远程执行代码。此外,在攻击者访问操作系统级别之前,不需要进行身份验证,这对服务器来说是非常危险的。 为了解决这个漏洞vsftpd的开发者已经针对这个版本发布了更新。用户应该确保他们的vsftpd版本是最新的,并采取适当的安全措施来保护服务器。最好的方法之一是限制使用vsftpd的用户,使他们只有必要的权限,还可以采用防火墙、IDS等技术来增加服务器安全性。此外,定期检查和升级相关软件也是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WYQXLGLM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值