CentOS6源码安装VSFTPD3

还是碰到老问题:安全扫描,由于CentOS6上VSFTPD最高支持到V2.2.2,目前已经是官方支持的最新版本(发布了几年...)
但有安全漏洞,又没法通过限制访问进行控制,只能想办法升级到最新版本了。

关闭服务 service vsftpd stop service iptables stop sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config;
检查旧版vsftpd版本 vsftpd -v
卸载旧版vsftpd yum remove -y vsftpd

安装依赖包: yum install -y libcap libcap-devel tcp_wrappers tcp_wrappers-devel
编译安装源码包 tar -xzvf vsftpd-3.0.3.tar.gz cd vsftpd-3.0.3
修改显示 sed -i 's/UTF8 ON/DISABLE UTF8 ON/g' opts.c
编译安装

make &;&; make install`
mkdir /etc/vsftpd/ 
cp vsftpd.conf /etc/vsftpd/
cp RedHat/vsftpd.pam /etc/pam.d/vsftpd #PAM认证文件 
sed -i 's/lib///lib64///g' /etc/pam.d/vsftpd 
如果不成功,手动修改/etc/pam.d/vsftpd中的lib为lib64

启动并查看

vsftpd /usr/local/sbin/vsftpd &
netstat -tunlp | grep 21 
/usr/local/sbin/vsftpd -v 
cp /usr/local/sbin/vsftpd /usr/sbin/vsftpd 

制作启动脚本 vim /etc/xinetd.d/vsftpd disable = yes
重启xinetd服务service xinetd restart

修改启动脚本:

vim  /etc/init.d/vsftpd 
	#!/bin/bash
	#
	# vsftpd      This shell script takes care of starting and stopping
	#             standalone vsftpd. Customized to be used with CentOS 5.4
	#             and Monit by creating PID files for each process
	#
	# 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

	RETVAL=0
	prog="vsftpd"
	site="$prog"
	sbin="/usr/sbin/vsftpd"
	conf="/etc/vsftpd/vsftpd.conf"
	pidfile="/var/run/vsftpd/vsftpd.pid"

	[ -d /var/run/$prog ] || mkdir -p /var/run/$prog

	start() {

		[ -x $sbin ] || exit 1
		[ -r $conf ] || exit 1

		if [ -f $pidfile ]; then
			pid=`cat $pidfile`
			ps -ef | grep -v grep | grep $pid | grep $sbin > /dev/null
			if [ $? -eq 0 ]; then
				echo "$prog already running!"
				exit 1
			else
				rm -f $pidfile
			fi
		fi

		echo -n $"Starting $prog: "
		$sbin $conf &
		[ $? -eq 0 ] && success || failure
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
		pidcmd=`ps -ef | grep -v grep | grep $sbin | awk '{print $2}'`
		echo $pidcmd > $pidfile
		echo
		return $RETVAL
	}


	stop() {

		echo -n $"Shutting down $prog: "
		killproc $prog
		RETVAL=$?
		echo
		[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
		rm -f $pidfile
		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 2
	esac

	exit $RETVAL

授权755

chmod  755  /etc/init.d/vsftpd 
chkconfig vsftpd on 

修改配置文件

vim /etc/vsftpd/vsftpd.conf
---

验证

service vsftpd restart 
vsftpd -v

贴一个主要配置:

local_root=/home
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES

chroot_list文件不包含要使用的FTP用户名!

解决报错500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

另,和以前版本不一样配置(估计没用):

cat /etc/vsftpd/user_config/ftpuser
write_enable=YES
posted @ 2018-09-27 14:05  bamboo233  阅读(752)  评论(0)    收藏  举报