一、ftp部署

继上文对ftp原理的分析说明,接下实战部署ftp服务器。

1、环境

    CentOS6.8 X64    vsftp

#yum install vsftpd -y

#rpm -qa |grep vsftpd
#vsftpd-2.2.2-21.el6.x86_64


2、配置

   cat /etc/vsftpd/vsftpd.conf|egrep -v '(^$|^#)'

#修改默认连接端口为10021
listen_port=10021
#不允许匿名连接
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
#开启访问日志
xferlog_file=/var/log/xferlog
dual_log_enable=YES
#开启连接日志
vsftpd_log_file=/var/log/vsftpd.log
connect_from_port_20=YES
#不允许切换到其他目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
max_clients=20
max_per_ip=2
#限制连接速率4M
local_max_rate=409600
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#开启被动连接模式
pasv_enable=YES
#被动连接端口
pasv_min_port=65530
pasv_max_port=65535

重启vsftpd服务一个侦听在10021上的ftp服务配置完成,注意被动的数据传输端口在没有客户端连接时是不会侦听的,只有当客户端成功连接了10021连接端口时,才会从被动连接的端口池中侦听并等待客户端连接传输数据。

二、添加ftp账号

#useradd -s /sbin/nologin -g ftp -d /data1/ftp/ftpuser  ftpuser

说明:

添加一个本地用户名ftp 加入到ftp用户组,shell设置成nologin    家目录(ftp目录) /data1/ftp/ftpuser

另外请将ftpuser添加到/etc/vsftp/chroot_list文件中,如果文件不存在请创建,以后添加ftp用户名都添加这里

目换就是锁定用户在自己指定的ftp家目录中.

# cat chroot_list 
ftpuser


三、防火墙的配置

    防火墙是很重要的服务器安全保护措施,切勿在生产线上关闭防火墙,最好是默认进出和forward都为拒绝的策略。本次实战就是这样!

cat /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Wed Apr  1 11:31:59 2017
*filter
#默认进入的策略为拒绝
:INPUT DROP [14:3408]
#默认forward 策略为拒绝
:FORWARD DROP [0:0]
#默认出去的策略为拒绝
:OUTPUT DROP [0:0]
#允许本地网段访问
-A INPUT -s 192.168.118.0/24  -j ACCEPT
-A INPUT -s 127.0.0.0/8  -j ACCEPT
#允许访问ftp 10021
-A INPUT -p tcp --dport 10021 -m state --state NEW,ESTABLISHED -j ACCEPT
#允许访问 65530- 65535 ftp数据传输端口池
-A INPUT -p tcp --dport 65530:65535 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -s 127.0.0.1 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 123 -j ACCEPT

#允许本地访问本地网段
-A OUTPUT -d 192.168.118.0/24 -j ACCEPT
-A OUTPUT -d 127.0.0.0/8 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
-A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp --sport 10021 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 65530:65535 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT  -m state --state ESTABLISHED -j ACCEPT
COMMIT
# Completed on Wed Apr  1 11:31:59 2017

重启防火墙即可在服务器开启防火墙状态下,客户端访问ftp服务!

补充:

在CentOS7上部署,配置和以上一样,但出现类似如下错误:

Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

如图:

FTP(二)ftp部署与防火墙配置_第1张图片

选区_035.png

原因与解决方法:

根本原因在于,从vsftpd_2.3.5版开始,取消了根目录的可写权限。因此,网上的普遍解决方案是以下两种:

方案一
$ chmod a-w /vaf/ftp
 
方案二
$ vim /etc/vsftpd.conf add the following
   allow_writeable_chroot=YES

在vsftpd.conf中添加如下配置 重启vsftpd服务即可!

allow_writeable_chroot=YES