|
很多初学iptables的朋友针对ftp服务"屡试不爽",而导致没有兴趣深入学习iptables,其实想写出高效的防火墙策略不仅仅是对iptables的熟悉,更重要的是能深入理解数据包的流向,掌握其数据包的流向才能更有效的对其限制。而ftp不同于其它服务,因为其涉及到主动被动(pasv),主动模式方便server管理,而被动模式不宜管理。 下面以PASV(被动)mode为例:
1、建立命令连接: client----> server:21
2、开启数据连接端口 server----> client
server通过命令端口告知client将要开放的非特权端口(通常>1024)
3、client请求server已开启的数据端口
4、通过命令端口控制数据端口的传输。
环境准备:
server 192.168.0.106 (RedHat 6.6)
client 192.168.0.107 ( win 7)
server:
需要加载iptables中对应ftp服务的模块:
编辑iptables配置文件 : vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
保存后重新加载配置文件
server iptables reload
查看模块是否加载成功:
[iyunv@localhost ~]# lsmod | grep nat
nf_nat_ftp 3507 0
nf_nat 23316 1 nf_nat_ftp
nf_conntrack_ftp 12913 1 nf_nat_ftp
nf_conntrack_ipv4 9506 5 nf_nat
nf_conntrack 80390 5 nf_nat_ftp,nf_nat,nf_conntrack_ftp,nf_conntrack_ipv4,xt_state
如果没有加载成功则手动加载:
[iyunv@localhost ~]# modprobe ip_nat_ftp
好了需要的模块加载完了,我们就可以写规则了
[iyunv@localhost ~]# iptables -P INPUT DROP //INPUT链默认拒绝 如果使用ssh的请提前添加22端口放行
[iyunv@localhost ~]# iptables -P OUTPUT DROP //OUTPUT链默认拒绝
[iyunv@localhost ~]# iptables -A INPUT -s 192.168.0.107 -d 192.168.0.106 -p tcp -m state --state NEW,RELATED,ESTABLISH -j ACCEPT
[iyunv@localhost ~]# iptables -A OUTPUT -s 192.168.0.106 -d 192.168.0.107 -p tcp -m state --state RELATED,ESTABLISH -j ACCEPT
//RELATED 相关联的连接
//ESTABLISH 已建立的连接
OK!现在我们就完成ftp被动模式iptables的处理了
|
|
|