Iptables 之二扩展模块
问题一:如果开发被动模式的ftp服务?
21号端口是命令连接端口,数据连接端口不固定
三步骤:
(1)装载ftp追踪时的专用的模块
/lib/modules/$(uname-r)/kernel/kernel下有个trace模块
/lib/modules/$(uname-r)/kernel/net 下有个netfilter目录nf_conntrack_ftp.ko.xz 此模块 专门为ftp追踪RELATED连接的专用模块
#modprode nf_conntrack_ftp 手动装载此依赖模块
[ netfilter]# modinfo nf_conntrack_ftp.ko.xz filename: /lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/nf_conntrack_ftp.ko.xz alias: nfct-helper-ftp alias: ip_conntrack_ftp description: ftp connection tracking helper author: Rusty Russell <> license: GPL rhelversion: 7.4 srcversion: D43BF56A22E3D137BA1227B depends: nf_conntrack intree: Y vermagic: 3.10.0-693.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: DA:18:7D:CA:7D:BE:53:AB:05:BD:13:BD:0C:4E:21:F4:22:B6:A4:9C sig_hashalgo: sha256 parm: ports:array of ushort parm: loose:bool
(2)放行请求报文:
命令连接:NEW, ESTABLISHED
数据连接:RELATED(第一次建立连接--这个连接不是新连接而是RELATED), ESTABLISHED(所有的后续通信)
只有对数据连接的第一次请求叫做RELATED;后续请求一旦达成了,双方建立起来对话,后续所有数据传输连接过程都是ESTABLISHED
# iptables -A INPUT -d LocalIP -p tcp -m state --state RALETD,ESTABLISHED -j ACCEPT
# iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
(3)放行响应报文:ESTABLISHED
#iptables -A OUTPUT -s LocalIP -p tcp -m state --state ESTABLISHED -j ACCEPT
实例:
(1)yum -y install vsftp ll /var/ftp (2)cp /etc/issue /var/ftp/pub (3)start vsftpd.service (4)iptables-save > /root/iptables.1 另存为 (5)不加防火墙规则,ftp是否可以访问 iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F (6)iptables-restore < /root/iptables.1 重新载入 (7)modprode nf_conntrack_ftp lsmod | grep ftp(8)放行ftp策略这是新增规则iptables -I INPUT -d 192.168.1.101 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -I INPUT 1 -p tcp -m state --state RALETD,ESTABLISHED -j ACCEPTiptables -I OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT这是在原来规则上修改iptables -R INPUT -2 -d 192.168.1.101 -p tcp -m multiport --dport 21,22,80 -m state --state NEW,ESTABLISHED -j ACCEPT
二、如何保存及重载规则:
保存规则至指定文件:
iptables-save > /PATH/TO/SOMEFILE
从指定文件重载规则:
iptables-restore < /PATH/TO/SOMEFILE
CentOS 6 :
service iptables save 相当于 iptables-save > /etc/sysconfig/iptables
service iptables restart 比系统中的规则全清了,再把此路径下文件读进去
相当于 iptables-restore < /etc/sysconfig/iptables
CentOS 7:
引入了新的iptables的前端管理服务工具:firewalld
firewalld-cmd、firewalld-config
注:在CentOS 7上使用iptables需要首先禁用firewalld
systemctl disables firewalld.service
systemctl stop firewalld.servicer
CentOS 6环境
service iptables start 没反应说明此前禁用了iptables
如果此前禁用iptables那么就没有此文件/etc/sysconfig/iptables
可以先保存service iptables save 就会产生
再重启service iptables start
脚本:/etc/rc.d/init.d/iptables (此脚本不会启动任何服务,虽然叫服务脚本,也支持start,但它没有启动任何进程;仅仅是让那些规则生效而已)
另一个作用:此脚本能够在开机时候自动把我们某些所需要的模块装载进来;依赖于/etc/sysconfig/iptables/iptables-config此文件;
把需要开机启动的模块写于此处,多个模块之间用空格隔开