iptables实现放行FTP服务

    很多初学iptables的朋友针对ftp服务"屡试不爽",而导致没有兴趣深入学习iptables,其实想写出高效的防火墙策略不仅仅是对iptables的熟悉,更重要的是能深入理解数据包的流向,掌握其数据包的流向才能更有效的对其限制。而ftp不同于其它服务,因为其涉及到主动被动(pasv),主动模式方便server管理,而被动模式不宜管理。

    下面以PASV(被动)mode为例:

    wKioL1XYD_ORBlMiAAB4AhZZHjM962.jpg

    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

    查看模块是否加载成功:


[root@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


如果没有加载成功则手动加载:

[root@localhost ~]# modprobe ip_nat_ftp

好了需要的模块加载完了,我们就可以写规则了

[root@localhost ~]# iptables -P INPUT DROP //INPUT链默认拒绝   如果使用ssh的请提前添加22端口放行

[root@localhost ~]# iptables -P OUTPUT DROP //OUTPUT链默认拒绝


[root@localhost ~]# iptables -A INPUT  -s 192.168.0.107 -d 192.168.0.106 -p tcp -m state --state NEW,RELATED,ESTABLISH -j ACCEPT

[root@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的处理了

你可能感兴趣的:(ftp,防火墙,iptables,pasv)