iptables设置访问规则

一、简介

iptables是一个很强大的设置防火墙的工具,可以使用它来限制所有对本机的访问,允许特定的主机、特定的端口才能访问本机,还能设置那些协议能够访问本机。总之,很强大,也很简单。

二、filter chain原理简述

在开始之前,先看一下iptables的filter chain是如何工作的:

 

注释:当Input进来之后,先通过first chain,如果符合直接本机接收;不符合传给second chain,依次到最后一个chain,着了third不一定是最后的chain,在最后chain都不符合就将包丢弃,符合的交给下层处理。

三、综合例子

通过下面的例子进行说明:

 

按箭头顺序来说明:

  1. 查看当前iptables配置好了的规则的命令。
  2. 拒绝所有的INPUT(访问),这里说明任何外来的主机都不能访问本机。

命令及详解:

iptables -P INPUT DROP

#      -P:--policy(策略),chain target(过滤目标),所有的输入(INPUT)就是要过滤的目标。

#      DROP:表示丢弃所有输入的数据包,不接受任何数据请求(拒绝所有访问),这个所有是相对的,在我们规则之内定义接收还是接收的。

  1. 指向两行数据,这里表示允许192.168.1.113这个ip地址访问。

命令及详解:

iptables -A INPUT -p tcp -s 192.168.1.113 -j ACCEPT

iptables -A INPUT -p udp -s 192.168.1.113 -j ACCEPT

#       -A:--append chain,添加一条过滤规则,这里是INPUT,还有OUTPUT、FORWARD。

#       -p:--protocol,表明协议。例如tcp、udp,icmp

#       -s:--source,源地址。接ip地址

#       -j:--jump target,当这条规则符合时,直接跳转到目标,不再进行下一条chain。目标有:ACCEPT、DROP、FORWARD、QUEUE

  1. 表示允许icmp协议type=8,code=0的访问,即ping。

iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT

这里只是在icmp协议后面指定那个type和code

  1. 表示允许icmp协议type=11,code=0的访问,即traceroute。

iptables -A INPUT -p icmp --icmp-type 11 -s 0/0 -j ACCEPT

这里只是在icmp协议后面指定那个type和code

  1. 表示可以转发数据包
  2. 表示可以发送数据包

四、其他使用

l  删除某条规则:当需要删除某条规则时,有2种方法:

  1. 根据列表序号来删除。规则是有一个序号的,通过:

iptables -L -n -line-number

来查看序号,不过本人尝试了并没成功。知道序号之后通过:

iptables -D ”number“ 来删除

  1. 根据规则内容来删除。使用

iptables -S

来查看规则

 

然后通过:

iptables -D “content  -A这类不需要写” 来删除,例如:

iptables -D INPUT -s 192.168.1.113/32 -p tcp -j ACCEPT      来删除本条规则

l  指定端口

通过 –dport “port” 来指定端口

l  保存规则

iptables-save

可以将规则保存到一个文件中,例如:

iptables-save /etc/iptables.rules

保存好之后去网卡文件(/etc/network/interface)中指定

 

posted @ 2014-08-11 22:48  追~  阅读(3173)  评论(0编辑  收藏  举报