iptables放开ftp规则配置

1)      控制连接

客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。

2)      数据连接

FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

 

iptables -A INPUT -d x.x.x.x -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT ###放开控制连接端口

iptables -A INPUT -d x.x.x.x -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT ###不想开启20端口,设置ftp数据连接为被动模式

iptables -A OUTPUT -s x.x.x.x -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT ###出去只放开ESTABLISHED,RELATED状态的报文

modprobe ip_conntrack_ftp

modprobe ip_nat_ftp ###手动加载这两个模块否则,不能建立数据连接 lsmod|grep ip ###查看是否加载成功,modprobe -r 模块名###手动卸载

iptables手动重启之后,这些模块又没被加载过去,需要配置 /etc/sysconfig/iptables-config

IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_ftp" ###多个模块空格分割

service iptables restart ###重启iptables服务,发现ip_conntrack_ftp、ip_nat_ftp模块被加载

 

posted @ 2016-12-13 23:15  FlyBack  阅读(448)  评论(0编辑  收藏  举报