iptables是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置.iptables 的一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤.您可以定制自己的规则来满足您的特定需求,从而只允许您想要的网络流量进入系统.另外,iptables 是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案,并且其性能不输于一些专业的硬件防火墙.
iptables的管理命令介绍
在iptables防火墙中,它所有功能都是通过命令的形式实现的,因此iptables命令格式非常重要.iptables命令的操作对象包括:
规则表(table):由规则链的集合组成,不同的规则表用于实现不同的功能
规则链(chain):由规则的集合组成,保存在规则表中;不同规则链代表了不同的数据包流向.
规则(rule):用于对防火墙策略进行设置,流经某个数据链的数据将按照先后顺序进行过滤.
一条完整的iptables命令由以下几个部分组成:
iptables [-t 表名] <命令> [链名] [规则号] [规则] [-j 目标]
-t选项用于指定所使用的表,iptables防火墙默认有filter、nat和mangle这3张表,也可以是用户自定义的表.表中包含了分布在各个位置的链,iptables命令所管理的规则就是存在于各种链中的.该选项不是必需的,如果未指定一个具体的表,则默认使用的是filter表.
命令选项是要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则.有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作.还有一些命令要指定规则号.具体的命令选项名称及其与后续选项的搭配形式如下所示.
针对规则链<命令>的操作有:
-L 列出链中所有的规则
-F 清除链中的所有规则
-P 设置链的默认动作(ACCEPT/REJECT/DROP)
-Z 计数器清零
-N 定义一个新的规则链
-X 删除定义的规则链
针对规则<命令>的操作有:
-A 追加一个规则
-I 插入一个规矩
-D 删除一个规则
-R 在指定的链中用新的规则置换掉某一规则号的旧规则
查询iptables防火墙的状态(列出所有规则)
iptables –L
由上图可知,iptables设有三个[链名],即input、forward和output,默认规则均为accept放行,我们可以分别通过这三个规则链调用不同的策略.
以上是有关iptables命令格式中有关命令和规则链选项部分的解释.iptables命令格式中的规则部分由很多选项构成,主要指定一些IP数据包的特征.例如,上一层的协议名称、源IP地址、目的IP地址、进出的网络接口名称等,下面列出构成[规则号] [规则]的常见选项.
-p <协议类型>:指定上一层协议,可以是icmp、tcp、udp和all.
-s <IP地址/掩码>:指定源IP地址或子网.
-d <IP地址/掩码>:指定目的IP地址或子网.
-i <网络接口>:指定数据包进入的网络接口名称.
-o <网络接口>:指定数据包出去的网络接口名称.
注意:上述选项可以进行组合,每一种选项后面的参数前可以加"!",表示取反.
对于-p选项来说,确定了协议名称后,还可以有进一步的子选项,以指定更细的数据包特征.常见的子选项如下所示.
-p tcp --sport <port>:指定TCP数据包的源端口.
-p tcp --dport <port>:指定TCP数据包的目的端口.
-p tcp --syn:具有SYN标志的TCP数据包,该数据包要发起一个新的TCP连接.
-p udp --sport <port>:指定UDP数据包的源端口.
-p udp --dport <port>:指定UDP数据包的目的端口.
-p icmp --icmp-type <type>:指定icmp数据包的类型,可以是e |