iptables配置vsftp访问
一、FTP服务简介
FTP服务器有两种工作模式:主动模式和被动模式。这两种方式的特点如下:
(1)主动模式下:
tcp, 20(20号端口用于数据传输),21(21号端口用于控制连接)
(2)被动模式:
tcp, 21(用于控制连接) >1023(端口号大于1023的随机端口用于数据传输)
所以如果FTP工作在被动模式下,无法指定数据传输的端口,于是引入了RELATED状态。RELATED主要用于 追踪与其相关的端口。注意:ftp工作在主动模式或者被动模式与客户端的请求有关。
tcp, 20(20号端口用于数据传输),21(21号端口用于控制连接)
(2)被动模式:
tcp, 21(用于控制连接) >1023(端口号大于1023的随机端口用于数据传输)
所以如果FTP工作在被动模式下,无法指定数据传输的端口,于是引入了RELATED状态。RELATED主要用于 追踪与其相关的端口。注意:ftp工作在主动模式或者被动模式与客户端的请求有关。
二、开放被动模式下的FTP服务。
具体步骤如下:
1、先开放ssh:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -i lo -j ACCEPT(先开放本地连接)
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT(放行所有的ESTABLISHED连接)
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 3 -j ACCEPT (放行ssh连接,并将其最大连接数设为3)
iptables -P INPUT DROP
iptables -P OUTPUT DROP (将默认策略设置为禁止)
iptables -L -n -v (查看iptables详细信息)
2、开放ftp服务:
注意要开放被动模式下的服务需要用到,ftp的追踪模块:
#cat /etc/sysconfig/iptables-config(查看iptables需要的模块,主要是ip_nat_ftp模块,属于内核模块)
#lsmod | grep ftp (查看是否加载ftp模块)
#modprobe ip_nat_ftp(加载ftp模块)
#lsmod | grep ftp (查看模块是否被加载)
这样RELATED就可以被使用了:
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 21 -m state --state NEW -j ACCEPT(允许21号端口进入,即:开放控制连接)
iptables -A INPUT -m state --state RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED -j ACCEPT
具体步骤如下:
1、先开放ssh:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -i lo -j ACCEPT(先开放本地连接)
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT(放行所有的ESTABLISHED连接)
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 3 -j ACCEPT (放行ssh连接,并将其最大连接数设为3)
iptables -P INPUT DROP
iptables -P OUTPUT DROP (将默认策略设置为禁止)
iptables -L -n -v (查看iptables详细信息)
2、开放ftp服务:
注意要开放被动模式下的服务需要用到,ftp的追踪模块:
#cat /etc/sysconfig/iptables-config(查看iptables需要的模块,主要是ip_nat_ftp模块,属于内核模块)
#lsmod | grep ftp (查看是否加载ftp模块)
#modprobe ip_nat_ftp(加载ftp模块)
#lsmod | grep ftp (查看模块是否被加载)
这样RELATED就可以被使用了:
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 21 -m state --state NEW -j ACCEPT(允许21号端口进入,即:开放控制连接)
iptables -A INPUT -m state --state RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED -j ACCEPT