linux系统中查看⼰设置iptables规则
1、iptables -L
查看filter表的iptables规则,包括所有的链。filter表包含INPUT、OUTPUT、FORWARD三个规则链。
说明:-L是--list的简写,作⽤是列出规则。
2、iptables -L [-t 表名]
只查看某个表的中的规则。
说明:表名⼀共有三个:filter,nat,mangle,如果没有指定表名,则默认查看filter表的规则列表(就相当于第⼀条命令)。举例:iptables -L -t filter
3、iptables -L [-t 表名] [链名]
这⾥多了个链名,就是规则链的名称。
说明:iptables⼀共有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五个规则链。
举例:iptables -L INPUT
注意:链名必须⼤写。在Linux系统上,命令的⼤⼩写很敏感。
4、iptables -n -L
说明:以数字形式显⽰规则。如果没有-n,规则中可能会出现anywhere,有了-n,它会变成0.0.0.0/0
5、iptables -nv -L
说明:你也可以使⽤“iptables -L -nv”来查看,这个列表看起来更详细,对技术⼈员更友好,呵呵。
如果想删除iptables规则我们可以如下操作
删除⽤-D参数
删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):
[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP
有时候要删除的规则太长,删除时要写⼀⼤串,既浪费时间⼜容易写错,这时我们可以
先使⽤–line-number出该条规则的⾏号,再通过⾏号删除规则。
[root@test ~]# iptables -nv --line-number
iptables v1.4.7: no command specified
Try `iptables -h' or 'iptables --help' for more information.
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target    prot opt source              destination
1    DROP      all  --  192.168.1.1          0.0.0.0/0
2    DROP      all  --  192.168.1.2          0.0.0.0/0
3    DROP      all  --  192.168.1.3          0.0.0.0/0
删除第⼆⾏规则
[root@test ~]# iptables -D INPUT 2
[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
(注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这⼀部,好多⼈都是忘了写这⼀部规则导致,始终⽆法SSH.在远程⼀下,是不是好了.其他的端⼝也⼀样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加⼀条链:
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT)
如果做了WEB服务器,开启80端⼝.
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端⼝.
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
如果做了FTP服务器,开启21端⼝
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
如果做了DNS服务器,开启53端⼝
[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
上⾯主要写的都是INPUT链,凡是不在上⾯的规则⾥的,都DROP
允许icmp包通过,也就是允许ping,
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话) [root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT设置成DROP的话)
允许loopback!(不然会导致DNS⽆法正常关闭等问题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
下⾯写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.减少不安全的端⼝连接
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
.
下⾯写⼀下更加细致的规则,就是限制到某台机器
如:我们只允许192.168.0.3的机器进⾏SSH连接
[root@tp ~]# 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.
24表⽰⼦⽹掩码数.但要记得把 /etc/sysconfig/iptables ⾥的这⼀⾏删了.
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表⽰所有地址都可以登陆.
或采⽤命令⽅式:
[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样写 !192.168.0.3 表⽰除了192.168.0.3的ip地址
其他的规则连接也⼀样这么设置.
在下⾯就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
处理IP碎⽚数量,防⽌攻击,允许每秒100个
[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
我在前⾯只所以允许ICMP包通过,就是因为我在这⾥有限制.
3、删除
删除⽤-D参数
删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):
[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP有时候要删除的规则太长,删除时要写⼀⼤串,既浪费时间⼜容易写错,这时我们可以先使⽤–line-number出该条规则的⾏号,再通过⾏号删除规则。
[root@test ~]# iptables -nv --line-number
iptables v1.4.7: no command specified
Try `iptables -h' or 'iptables --help' for more information.
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target    prot opt source              destination
1    DROP      all  --  192.168.1.1          0.0.0.0/0
2    DROP      all  --  192.168.1.2          0.0.0.0/0
3    DROP      all  --  192.168.1.3          0.0.0.0/0
删除第⼆⾏规则
[root@test ~]# iptables -D INPUT 24、
不管你在安装linux时是否启动了防⽕墙,如果你想配置属于⾃⼰的防⽕墙,那就清除现在filter的所有规则.
[root@tp ~]# iptables -F        清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X        清除预设表filter中使⽤者⾃定链中的规则
我们在来看⼀下
[root@tp ~]# 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
[root@tp ~]# /etc/rc.d/init.d/iptables save
linux系统登录这样就可以写到/etc/sysconfig/iptables⽂件⾥了.写⼊后记得把防⽕墙重起⼀下,才能起作⽤.
[root@tp ~]# service iptables restart
现在IPTABLES配置表⾥什么配置都没有了,那我们开始我们的配置吧
(3)设定预设规则
[root@tp ~]# iptables -p INPUT DROP
[root@tp ~]# iptables -p OUTPUT ACCEPT
[root@tp ~]# iptables -p FORWARD DROP
上⾯的意思是,当超出了IPTABLES⾥filter表⾥的两个链规则(INPUT,FORWARD)时,不在这两个规则⾥的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流⼊数据包
⽽对于OUTPUT链,也就是流出的包我们不⽤做太多限制,⽽是采取ACCEPT,也就是说,不在着个规则⾥的包怎么办呢,那就是通过.
可以看出INPUT,FORWARD两个链采⽤的是允许什么包通过,⽽OUTPUT链采⽤的是不允许什么包通过.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。