iptables防火墙配置详解
iptables简介
iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。
(1)filter表负责过滤数据包,包括的规则链有,input,output和forward;
(2)nat表则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;
(3)mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;
input匹配目的IP是本机的数据包,
forward匹配流经本机的数据包,
prerouting用来修改目的地址用来做DNAT,
postrouting用来修改源地址用来做SNAT。
iptables主要参数
-A 向规则链中添加一条规则,默认被添加到末尾
-T指定要操作的表,默认是filter
-D从规则链中删除规则,可以指定序号或者匹配的规则来删除
-R进行规则替换
-I插入一条规则,默认被插入到首部
-F清空所选的链,重启后恢复
-N新建用户自定义的规则链
-X删除用户自定义的规则链
-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,
-s指定源地址
-d指定目的地址
-i进入接口
-o流出接口
-j采取的动作,accept,drop,snat,dnat,masquerade
--sport源端口
--dport目的端口,端口必须和协议一起来配合使用
注意:所有链名必须大写,表名必须小写,动作必须大写,匹配必须小写。
iptable配置实例
iptable基本操作
iptables -L 列出iptables规则
iptables -F 清除iptables内置规则
iptables -X 清除iptables自定义规则
设定默认规则
在iptables规则中没有匹配到规则则使用默认规则进行处理
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
[root@linux ~]# iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
参数:
-P :定义政策( Policy )。注意,这个 P 为大写啊!
ACCEPT :该封包可接受
DROP :该封包直接丢弃,不会让 client 端知道为何被丢弃。
范例:将本机的 INPUT 设定为 DROP ,其它设定为 ACCEPT
[root@linux ~]# iptables -P INPUT DROP
[root@linux ~]# iptables -P OUTPUT ACCEPT
[root@linux ~]# iptables -P FORWARD ACCEPT
[root@linux ~]# iptables -L -n
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
# 由于 INPUT 设定为 DROP 而又尚未有任何规则,所以上面的输出结果显示:
配置SSH规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。
只允许192.168.0.3的机器进行SSH连接
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
允许loopback回环通信
IPTABLES -A INPUT -i lo -p all -j ACCEPT IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
目的地址转换,映射内部地址
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.2:80 iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.1-192.168.0.10
源地址转换,隐藏内部地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
地址伪装,动态ip的NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
masquerade和snat的主要区别在于,snat是把源地址转换为固定的IP地址或者是地址池,而masquerade在adsl等方式拨号上网时候非常有用,因为是拨号上网所以网卡的外网IP经常变化,这样在进行地址转换的时候就要在每次都要修改转换策略里面的ip,使用masquerade就很好的解决了这个问题,他会自己去探测外网卡获得的ip地址然后自动进行地址转换,这样就算外网获得的ip经常变化也不用人工干预了。
开启转发功能
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 只允许已建连接及相关链接对内转发 ptables -A FORWARD -i eth1 -o eh0 -j ACCEPT 允许对外转发
过滤某个MAC
iptables -A FORWARD -m mac --mac -source MAC地址 -j DROP
报文经过路由后,数据包中原有的MAC信息会被替换,所以在路由后的iptables中使用mac匹配没有意义。
数据包整流
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT iptables -A FORWARD -d 192.168.0.1 -j DROP
多端口匹配
用以一次匹配多个端口
iptables -A INPUT -p tcp -m muliport --dport s 21,22,25,80,110 -j ACCEPT
丢弃非法连接
iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables-A FORWARD -m state --state INVALID -j DROP
存储于恢复iptables规则
iptables-save > somefile iptables-restore < somefile
iptables的基本语法规则参考:
1、查看现有的iptables规则:
sudo iptables -L
2、允许已建立的连接接收数据:
sudo ptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
3、开放常见端口22
sudo iptables -A INPUT -p tcp -i eth0 --dport ssh(22) -j ACCEPT sudo iptables -A INPUT -p tcp -i eth0 --dport telnet(23) -j ACCEPT sudo iptables -A INPUT -p tcp -i eth0 --dport www(80) -j ACCEPT
4、对每一个报文,iptables依次测试每一条规则,看报文于规则是否相匹配。一旦找到一条匹配的规则, 就根据此规则中指定的行动,对报文进行处置,而对后面的规则不再进行测试。因此,如果我们在规则表的 末尾添加一条规则,让iptables丢弃所有报
sudo iptables -A INPUT -j DROP
5、仍有一个问题,就是环回接口也被阻断了。刚才添加DROP规则的时候其实就可以使用-i eth0来解决这一
问题。然而我们也可以为环回接口添加一条新规则来解决这个问题。但是不能将新规则追加到末尾,因为前
一条规则已经把所有报文都丢弃了,而应该把它插到DROP规则前面,即规则表中第五行的位置(即DROP之前)
iptables -I INPUT 5 -i lo -j ACCEPT
6、sudo iptables -L -v查看详细详细
7、iptables-save > /etc/iptables.up.rules(保存当前iptables的设置)
可以vi编辑 /etc/iptables.up.rules
编辑后 iptables-restore < /etc/iptables.up.rules
8、这样设置的iptables每次开机后就失效了,开机自动配置
a. iptables-save > /etc/iptables.up.rules b. vi /etc/network/interfaces(最后-s 手动选择截图区域或者窗口两行为我们自己所加的) auto eth0 iface eth0 inet dhcp pre-up iptables-restore < /etc/iptables.up.rules post-down iptables-restore < /etc/iptables.down.rules
9、清楚iptables规则
sudo iptables -F
10、丢弃所有来自127.0.0.1的ICMP包(eg:ping)
sudo iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
11、有时一个包太大,不可能适合所有线路。这样的话,包会被分成片,然后当作多个包发送。最终重组这些分片来重建整个包
sudo iptables -A OUTPUT -f -d 192.168.1.1 -j DROP(丢弃任何发往192.168.1.1的分片)
12、有时只允许单向的TCP连接会很有用。例如,你可能会允许连接到外部WWW服务器,但不会允许来自那个服务器的连接。 最简单的举动可能是阻止来自那个服务器的包,可惜,TCP连接需要包双向传送(才能正常工作)。
解决办法是,只阻挡那些用来请求连接的包。这些包称为SYN包(OK,从技术上说,它们的SYN标志被设置,而没有设置RST和ACK标志,不过我们简单的称为SYN包)。通过只阻止这种包,我们就可以阻止来自那些地方的连接企图。'--syn'标志是这样用的:只对指定了TCP协议的规则有效。例如,指定来自192.168.1.1的连接请求。
sudo iptables -A INPUT -p TCP -s 192.168.1.1 --syn
书写规则:
iptables [-t table] command CHAIN [NUM ] match criteria -j TARGET
CHAIN: 对链进行的操作
-N:new 新建一条链
-X 删除一条用户自定义链(空链)
-F:flush 清空一条链,默认清空表中所有链
-Z:zero 清空计数器,
iptables中每条规则默认有两个计数器,用于记录本条规则所匹配到的数据包的个数和本条规则所匹配到的数据包的总大小
-P:policy 定义链的默认处理策略
-E 重命名链
RULE:对规则进行的操作
-A:append 追加,在链的最后加一条规则
-I:insert 插入一条规则 一般使用-I CHAIN NUM 给规则加一个编号。
-R:replace 替换某条规则,规则被替换并不会改变顺序,必须要指定替换的规则编号:-R CHAIN NUM。
-D:delete 删除一条规则,可以输入完整规则,或者直接指定标号加以删除:-D CHAIN NUM。
LIST:查看
-L:list 列出链中的所有规则
辅助性子命令:-n numeric 以数字的形式来显示地址,默认显示主机名称
-v verbose 显示详细信息 ,支持-vv -vvv格式,v越多,信息越详细。
-x 显示原有信息,不要做单位换算
--line-numbers 显示规则的行号
Match Creteria(匹配规则):
基本匹配
-s,--src,--source 匹配数据包的源地址
-d,--dst,--destination 匹配数据包的目标地址
-i, 指定数据包的流入接口(逻辑接口)
-o, 指定数据包的流出接口
-p, 做协议匹配 protocol,(tcp|udp|icmp)
扩展匹配:对某一种功能的扩展
隐含扩展 :对某一种协议的扩展
-p tcp
--sport 指定源端口
--dport 指定目的端口
--tcp-flags(SYN,ACK,FIN,PSH,URG,RST,ALL,NONE)指定TCP的标志位
需要跟两个标志位列表,如:SYN,ACK,FIN,RST SYN
第一个列表表示要检查的位,第二个列表表示第一个列表中出现的位必须为1,未出现的必须为0
--syn 只允许新连接
-p udp 无连接协议
--sport 指定源端口
--dport 指定目的端口
-p icmp
--icmp-type echo-request,8(ping出去,请求回应,) echo-reply,0(给予回应)
显式扩展 :额外附加的更多的匹配规则,功能性地扩展
-m state 状态检测扩展
NEW 用户发起一个全新的请求
ESTABLISHED 对一个全新的请求进行回应
RELATED 两个完整连接之间的相互关系,一个完整的连接,需要依赖于另一个完整的连接
INVALID 无法识别的状态
-m multiport --sports 22,80,443 指定多个源端口
--dports 22,80,443 指定多个目标端口
--ports 非连续端口
-m connlimit 限定并发连接速率
!--connlimit-above 5 高于五个将拒绝
-m string 字符串匹配
--algo bm|kmp 指定算法
--string pattern
-m time 基于时间的匹配
--timestart
--timestop
--days
-j TARGET 处理动作
ACCEPT 接受
DROP 悄悄丢弃,请求端没有任何回应
REJECT 明确拒绝
SNAT 源地址转换
DNAT 目标地址转换
REDIRECT 端口重定向
LOG 将访问记录下来
[root@server27 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
下面我们写两条规则:
只允许192.168.0.0网段的主机通过SSH访问该主机
允许本机通过SSH连接192.168.0.0网段的其他主机
[root@server27 ~]# iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.127 -p tcp --dport 22 -j ACCEPT
[root@server27 ~]# iptables -A OUTPUT -s 192.168.0.127 -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT
[root@server27 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.0.0/24 192.168.0.127 tcp dpt:22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.0.127 192.168.0.0/24 tcp spt:22
定义默认策略
[root@server27 ~]# iptables -t filter -P INPUT DROP
[root@server27 ~]# iptables -t filter -P OUTPUT DROP
PS:上面规则一定不要写错了,否则你将会把自己拒之门外。
允许本机PING本网段任何主机
[root@server27 ~]# iptables -t filter -A OUTPUT -s 192.168.0.127 -d 0.0.0.0/0.0.0.0 -p icmp --icmp-type 8 -j ACCEPT //**出去的数据包
[root@server27 ~]# iptables -t filter -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.0.127 -p icmp --icmp-type 0 -j ACCEPT //** 回来的数据包
[root@server27 ~]# ping 192.168.0.236 -c 4
PING 192.168.0.236 (192.168.0.236) 56(84) bytes of data.
64 bytes from 192.168.0.236: icmp_seq=1 ttl=64 time=0.242 ms
64 bytes from 192.168.0.236: icmp_seq=2 ttl=64 time=0.249 ms
64 bytes from 192.168.0.236: icmp_seq=3 ttl=64 time=0.437 ms
64 bytes from 192.168.0.236: icmp_seq=4 ttl=64 time=0.204 ms
允许本网段任何主机PING本机
[root@server27 ~]# iptables -t filter -A OUTPUT -s 192.168.0.127 -d 0.0.0.0/0.0.0.0 -p icmp --icmp-type 0 -j ACCEPT
[root@server27 ~]# iptables -t filter -A INPUT -d 192.168.0.127 -s 0.0.0.0/0.0.0.0 -p icmp --icmp-type 8 -j ACCEPT
PS:当目标网络指定为任意主机时,应该为0.0.0.0/0.0.0.0
凡是来自192.168.0.0/24网段的主机均使用一个自定义的新链
先开启http服务
自定义一条链,拒绝192.168.0.0/24网段的主机对http服务的访问
[root@server27 ~]# iptables -N attach-input
[root@server27 ~]# iptables -A attach-input -s 192.168.0.0/24 -d 192.168.0.127 -p tcp --dport 80 -j DROP
[root@server27 ~]# iptables -L -n
此时,自定义链依旧无法使用,我们只能在固定链上做转发请求数据包到自定义链上,才能实现自定义链的功能。
[root@server27 ~]# iptables -A INPUT -s 192.168.0.0/24 -j attach-input
[root@server27 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
attach-input all -- 192.168.0.0/24 0.0.0.0/0
此时已经无法访问到网页。
将INPUT链删除之后,马上又可以访问了。
[root@server27 ~]# iptables -F INPUT
删除自定义链,先清空链,再清空规则
[root@server27 ~]# iptables -F attach-input
[root@server27 ~]# iptables -X attach-input
PS:每条规则都可以使用“!”取反。如: -s '!' 192.168.0.0/24,加单引号防止被识别成其他字符。
下面我们来实现显式扩展状态检测的功能:
先将默认策略置为DROP
[root@server27 ~]# iptables -P INPUT DROP
[root@server27 ~]# iptables -P OUTPUT DROP
[root@server27 ~]# iptables -P FORWARD DROP
[root@server27 ~]# iptables -A INPUT -d 192.168.0.127 -p tcp --dport 80 -j ACCEPT //*进来的数据包
[root@server27 ~]# iptables -A OUTPUT -s 192.168.0.127 -p tcp --sport 80 -j ACCEPT //*出去的数据包
但是这两条规则对于反弹式木马是无效的。
我们可以基于显式扩展写这样两条规则:
[root@server27 ~]# iptables -I INPUT 1 -d 192.168.0.127 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT //**进来的数据包
[root@server27 ~]# iptables -I OUTPUT -s 192.168.0.127 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT //**出去的数据包
删除我们之前建立的那两条规则:
[root@server27 ~]# iptables -D INPUT 2
[root@server27 ~]# iptables -D OUTPUT 2
此时,已经可以正常访问http服务。
我们试一下ftp服务:
先开启ftp服务
先建立这样四条规则,看看能不能达到效果,
[root@server27 ~]# iptables -A INPUT -d 192.168.0.127 -p tcp --dport 21 -j ACCEPT
[root@server27 ~]# iptables -A INPUT -d 192.168.0.127 -p tcp --dport 20 -j ACCEPT
[root@server27 ~]# iptables -A OUTPUT -s 192.168.0.127 -p tcp --sport 21 -j ACCEPT
[root@server27 ~]# iptables -A OUTPUT -s 192.168.0.127 -p tcp --sport 20 -j ACCEPT
客户端请求是被动模式,实验证明,我们仅仅开始21 20端口无法达到效果。这样我们就得用到状态检测的RELATED机制。
PS:要想实现FTP的访问需先手动加载额外的模块:ip_conntrack_ftp,ip_conntrack_tftp,ip_nat_ftp,,ip_nat_tftp(and others)
[root@server27 ~]# modprobe ip_conntrack_ftp
[root@server27 ~]# modprobe ip_nat_ftp
[root@server27 ~]# modprobe ip_nat_tftp
[root@server27 ~]# modprobe ip_conntrack_tftp
实现自动加载的功能:编辑/etc/sysconfig/iptables-config文件,在“IPTABLES_MODULES=”后面写上要添加的模块就可以了。
[root@server27 ~]# iptables -A INPUT -d 192.168.0.127 -p tcp --dport 21 -j ACCEPT
[root@server27 ~]# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
[root@server27 ~]# iptables -A INPUT -d 192.168.0.127 -p tcp -m state --state RELATED -j ACCEPT
[root@server27 ~]# iptables -R OUTPUT 2 -m state --state ESTABLISHED,RELATED -j ACCEPT //**修改上一条规则,增加RELATED状态
[root@server27 ~]# iptables -R INPUT 3 -d 192.168.0.127 -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT //**修改INPUT第三条规则,增加NEW,ESTABLISHED状态
此时ftp已经可以访问了,要保证所有的规则能够永久有效需要使用:service iptables save来保存。
基于字符串匹配的显式扩展功能:
[root@server27 ~]# iptables -A INTPUT -d 192.168.0.127 -p tcp --dport 80 -m string --algo kmp --string 'qq.com' -j REJECT
PS:iptables工作在OSI第三层,第四层。默认情况下,iptables无法限定第七层的应用程序,要想实现限制七层某些应用程序的功能,需要重编译内核,在内核上打上补丁 layer7。.
源地址换换和目标地址转换:
PS:源地址转换必须在POSTROUTING链上做。
目标地址转换必须在PREROUTING链上做。
下面我们来实现源地址的功能:
我们假设这样一种场景:
192.168.0.254是工作在外网的一台WEB服务器,中间的那台是企业里的NAT服务器,我们在上面添加iptables的规则,使其实现地址转换的功能,PC机是工作在企业内部。我们的最终目的是192.168.80.30这台计算机通过NAT服务器可以访问到192.168.0.254的WEB服务。
实验环境搭建:192.168.0.254 192.168.0.127使用虚拟机网卡的桥接功能;
192.168.80.129 192.168.080.130使用虚拟机网卡的仅主机功能;
为PC机设置网关:
[root@station39 ~]# route add default gw 192.168.80.129
下面开始来配置NAT服务器:
首先要开启NAT服务器的内核路由功能:
[root@server27 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@server27 ~]# cat /proc/sys/net/ipv4/ip_forward
1
设置规则:
[root@server27 ~]# iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.127
[root@server27 ~]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.80.0/24 192.168.0.0/24 to:192.168.0.127
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
OK,我们用192.168.80.130这台主机访问一下192.168.0.254,看,已经可以了!
只需一条规则就可以搞定,很方便吧!
PS:如果我们使用路由功能来访问254这台主机的话,WEB服务器的访问日志将记录的访问地址是192.168.80.130,而如果我们使用地址转换的功能来访问的话,访问日志记录的访问地址则是192.168.0.127。.
一般我们上网的时候,所获得的IP都是动态的,怎么办?
做源地址转换的时候,还有一个小功能MASQUERADE(地址伪装),使用这个功能,我们不需要
指定目标地址,它会自动探测能够上互联网的地址,并自动将内网地址转换过来。缺陷:比较耗费资源。
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
接下来开始实现目标地址转换功能:
场景:假设192.168.80网段为一个提供WEB服务的网站的内网,中间的为网站的NAT服务器,远端的客户端192.168.0.26想通过中间的NAT服务器来访问内部的192.168.80.130提供的WEB服务,这里就要用到目标地址转换了。
环境搭设:192.168.80.130 192.168.80.129使用虚拟机网卡的仅主机功能
192.168.0.26 192.168.0.127使用虚拟机网卡的桥接功能
设置192.168.80.130的网关:
[root@station39 ~]# route add default gw 192.168.80.129
开始在NAT服务器上设置规则:
这里依然要打开内核的路由功能。
开始之前先将刚才做的源地址转换实验的规则给清除了
[root@server27 ~]# iptables -t nat -F
开始写规则:
[root@server27 ~]# iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.127 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.130
[root@server27 ~]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 192.168.0.0/24 192.168.0.127 tcp dpt:80 to:192.168.80.130
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
OK!规则已经写好了,我们使用192.168.0.26来访问一下192.168.0.127试试,已经可以访问了,其实提供WEB服务的是192.168..80.130这台主机,这就是目标地址转换的功能。
我们再查看一下192.168.80.130这台WEB服务器的访问日志:
看,源地址并没有发生改变!只是访问的目标地址被转换到192.168.80.130上来了,这就是目标地址转换。
l7-filter 七层过滤,对内核打补丁之后,能够支持对应用层数据的过滤。
编译过程相对繁琐一些,也不是本文主要讲述内容,所以就不在此详细说明,有兴趣的朋友可以去网上查找相关教程。
编译完成并启用内核之后,就可以使用l7filter的过滤功能了。
我们添加这样两条规则:
[root@server27 ~]# iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.127
[root@server27 ~]# iptables -t nat -A FORWARD -m layer7 --l7proto qq -j REJECT
这里就不再演示效果了。
保存iptables规则:
/etc/init.d/iptables save
service iptables save
保存位置:在/etc/sysconfig/iptables文件内:
# Generated by iptables-save v1.3.5 on Fri Mar 4 19:44:47 2011
*filter
:INPUT DROP [33:2399]
:FORWARD DROP [0:0]
:OUTPUT DROP [7:540]
-A INPUT -d 192.168.0.127 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -d 192.168.0.127 -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Fri Mar 4 19:44:47 2011
指定规则保存位置:
iptables-save > /etc/sysconfig/iptables/iptables.20110307
生效保存的规则
iptables-restore < /etc/sysconfig/iptables/iptables.20110307
避免在远程连接写规则的时候一不小心自己被防火墙拒之门外,可以写一个小脚本:
#!/bin/bash
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
at now+10min