运维——Linux防火墙iptables语法详解

来源:互联网 发布:手机淘宝淘宝客 编辑:程序博客网 时间:2024/06/05 09:05

运维——Linux防火墙iptables语法详解

在Linux防火墙中,对于数据报而言,有以下几个流向:

PREROUTING–>FORWARD–>POSTROUTING

PREROUTING–>INPUT–>本机OUTPUT–>POSTROUTING

数据报的流向主要流向其实也是iptables的两种工作模式:

  • 用作NAT路由器
  • 用作主机防火墙

iptables会根据不同的数据处理包处理功能不同的规则表。它包括如下3个表:filter、nat和mangle。

  • filter是默认的表,包含真正的防火墙过滤规则。内建的规则链包括:INPUT、OUTPUT和FORWARD。
  • nat表包含源、目的地址及端口转换使用的规则,内建的规则链包括PERROUTING、OUTPUT和POSTROUTING。
  • mangle表包含用于设置特殊的数据包路由标志的规则。随后filter表中的规则会检查这些标志。内建的规则链包括:PERROUTING、INPUT、FORWARD、POSTROUTING和OUTPUT。

表中相应的相关规则链功能如下:

  • INPUT链:当一个数据包由内核中的路由计算确定为本地的Linux系统后,它会通过INPUT链的检查。
  • OUTPUT链:保留给系统自身生出的数据包
  • FORWARD键:经过Linux系统路由的数据包(即当iptables防火墙用于连接两个网络时,两个网络之间的数据包必须流经该防火墙)
  • PREROUTING链:用于修改目的地址(DNAT) POSTROUTING链:用于修改源地址(SNAT)

iptables详细语法

iptables [-t 表名] <-A|I|D|R> 链名[规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源IP地址|源子网] [--sport 源端口号] [-d 目标IP地址|目标子网] [--dport 目标端口号] <-j 动作>

注意:此语法规则详细,逻辑清晰,推荐记忆此语法格式。在刚开始写iptables规则时就应该养成良好的习惯,用此语法规则来规范脚本,对今后的工作会大有帮助。

下面关于语法的详细说明:

(1)、定义默认策略

作用:当数据包不符合链中任意一条规则时,iptables将根据该链预先定义的默认策略来处理数据包。

默认策略定义格式为:

iptables [-t 表名] <-P> <链名> <动作>

参数说明如下:

  • [-t 表名] :将指定默认策略应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表
  • <-P> :定义默认策略
  • <链名> :指定默认策略应用于哪个链,可以使用INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING。
  • <动作> : 处理数据包的动作,可以使用ACCEPT(接收数据包)和DROP(丢弃数据包)。

(2)查看iptables规则

查看iptables规则的命令格式为:

iptables [-t 表名] <-L> [链名]

参数说明如下:

  • [-t 表名] :指查看哪个表的规则列表,表名可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables默认会查看filter。
  • <-L> :查看指定表和指定链的规则列表。
  • [链名]:指定查看表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTER,如果不注明哪个链,则查看某个表中所有链的规则列表。

(3)增加、插入、删除、替换iptables规则

iptables [-t 表名] <-A|I|D|R> 链名[规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源IP地址|源子网] [--sport 源端口号] [-d 目标IP地址|目标子网] [--dport 目标端口号] <-j 动作>

参数说明如下:

  • [-t 表名] :指查看哪个表的规则列表,表名可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables默认使用filter。
  • -A :新增一条规则,该规则会增加到规则列表的最后一行,该参数不能使用规则编号。
  • -I : 插入一条规则,原本该位置上的规则将会往后顺序移动,如果没有指定规则编号,则在第一条规则前插入。
  • -D:从规则列表中删除一条规则,可以输入要删除的完整规则,或者直接指定规则编号加以删除。
  • -R:替换某条规则,规则被替换并不会改变顺序,必须要指定被替换的规则编号。
  • <链名>:指定查看表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTER
  • [规则编号] :规则编号在插入、删除和替换规则时使用,编号是按照规则列表的顺序排列的,规则列表中的第一条规则的编号为1。
  • [-i | o 网卡名称] :是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出。网卡名称可以使用ppp0、eth0和eth1等。
  • [-p 协议类型]:可以指定规则应用的协议,包含TCP、UDP和ICMP等。
  • [-s 源IP地址|源子网] :-s后面接源主机的IP地址或子网地址。
  • [–sport 源端口号] : –sport后面接数据包的IP源端口号。
  • [-d 目标IP地址|目标子网] :-d后面接目标主机的IP地址或子网地址
  • [–dport 目标端口号] :–dport后面接数据包的IP目标端口号。
  • <-j 动作>

下面是处理数据包的动作,以及各个动作的详细说明。

  • ACCEPT:接收数据包。
  • DROP:丢弃数据包。
  • REDIRECT:将数据包重新转向到本机或另一台主机的某一个端口,通常实现透明代理或对外开放内网的某些服务。
  • REJECT:拦截该数据封包,并发回封包通知对方。
  • SNAT:源地址转换,即改变数据包的源地址。例如:将局域网的IP(10.0.0.1/24)转化为广域网的IP(203.93.236.141/24),在NAT表的POSTROUTING链上进行该动作。
  • DNAT:目标地址转换,即改变数据包的目标地址。例如:将广域网的IP(203.93.236.141/24)转化为局域网的IP(10.0.0.1/24),在NAT表的PREROUTING链上进行该动作。
  • MASQUERADE:IP伪装,即常说的NAT技术,MASQUERADE只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP动态分配的,如果主机的IP地址是静态固定的,就要使用SNAT。
  • LOG:日志功能,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错。

(4)清除规则和计数器

在新建规则时,往往需要清除原有的旧规则,以免它们影响新设定的规则。如果规则比较多,逐条删除就会十分麻烦,这时可以使用iptables提供的清除规则参数达到快速删除所有的规则的目的。

定义参数的格式为:

iptables [-t 表名] <-F | Z>

参数说明如下:

  • [-t 表名] :指定将默认策略应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。
  • -F :通过如下命令删除指定表中的所有规则。
  • -Z :将指定表中的数据包计数器和流量计数器归零。
原创粉丝点击