iptables防火墙
四表五链

默认的4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标ip地址或端口
filter表:确定是否放行该数据包(过滤)
默认的5种规则链:
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING:在进行路由选择后处理数据包
PREROUTING:在进行路由选择前处理数据包
其中input、output链主要用在“主机型防火墙”中,主要针对服务器本机进行保护;
而FORWARD\POSTROUTING\PREROUTING多用在“网络型防火墙”中,如使用Linux防火墙作为网关服务器,在公司内网与Ineternet之间进行安全控制。
匹配顺序
(1)规则表之间的顺序: raw mangle nat filter (从左到右)
(2)规则链之间的顺序:不同链的处理时机比较固定,顺序取决于数据包的流向。
入站数据流向: 来自外界的数据包到达防火墙后,首选被PREROUTING链处理,然后进行路由选择;如果数据包的目的地址是防火墙本机,交给INPUT链进行处理,通过以后再交给系统上层应用程序进行响应。
转发数据流向: 来自外界的数据包到达防火墙后,首选被PREROUTING链处理,然后进行路由选择;如果数据包的目标地址是其他外部地址,则交给FORWARD链进行处理,最后交给POSTROUTING链进行处理。
出站数据流向:防火墙本机向外部地址发送数据包,首选被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链进行处理。
(3)规则链内部各条防火墙规则之间的顺序:从上往下,一旦匹配,立即终止。
常用的管理选项
-A:在链尾追加一条新的规则
-I:在指定位置(或链首)插入一条新的规则
-P:设置指定链的默认策略
-L:列表查看各条规则信息
-D:删除指定位置或内容的规则-F:清空规则链内的所有规则
-h:查看iptables命令的使用帮助
目标动作
ACCEPT:放行数据包
DROP:丢弃数据包
REJECT:拒绝数据包
SNAT:修改数据包的源地址信息
DNAT:修改数据包的目标地址信息
条件匹配
(1)通用匹配:
可直接使用。不依赖于其他的条件或扩展模块;
包括网络协议、IP地址、网络接口等匹配方式。
(2)协议匹配
使用“-p协议名”的形式;
协议名可使用在“letc/protocols”文件中定义的名称;
常用的协议包括tcp、 udp、icmp等。
(3)地址匹配
使用“-s源地址”、“-d目标地址”的形式;
地址可以是单个IP地址、网络地址(带掩码长度)。
(4)接口匹配
使用“-i网络接口名”、“-o网络接口名”的形式,分别对应接收、发送数据包的网络接口。
(5)隐含条件匹配
一般以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等匹配方式。
• 端口匹配
使用“–sport源端口”、“–dport目标端口”的形式;
采用“端口1:端口2””的形式可以指定一个范围的端口。
• TCP标记匹配
使用“–tcp-flags检查范围被设置的标记”的形式;
如“–tcp-flags sYN,RST,ACK SYN”表示检查SYN、
RST、ACK这3个标记,只有SYN为1时满足条件。
• ICMP类型匹配
使用“–icmp-type ICMP类型”的形式;
ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply。
(5)显式条件匹配
需要使用“-m扩展模块”的形式明确指定匹配方式。
• MAC地址匹配
使用“-m mac”结合“–mac-source MAC地址”的形式
• 多端口匹配
使用“-m multiport””结合“–sports源端口列表”或者“–dports目标端口列表”的形式
多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔。
• IP地址范围匹配
使用“-m iprange”结合“–src-range源IP范围”或者–dst-range目标IP范围”的形式
以“-”符号连接起始P地址、结束IP地址
iptables语法格式
iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作]
iptables基本配置案例
(1)查看的是fileter表中的信息,并显示行号
# iptables -L –line-number
# iptables -L INPUT –line-number
(2) 没有-t 指定表名,默认清空fileter表中的信息
# iptables -F
(3) 在链首追加一条规则
# iptables -t filter -I INPUT -d 192.168.181.151 -p tcp –dport 80 -j ACCEPT
(4) 在第一个位置插入一条规则
# iptables -I INPUT -s 192.168.10.1 -d 192.168.10.132 -p tcp –dport 22 -j ACCEPT
(5) 在第5条规则前插入一条规则
# iptables -t filter -I INPUT 5 -d 192.168.181.151 -p tcp –dport 22 -j REJECT
(6) 删除INPUT链中的第一条规则
# iptables -D INPUT 1
(7) 设置默认策略为拒绝所有连接
# iptables -P INPUT DROP
(8) 设置默认策略为允许已建立的规则进行连接
# iptables -P INPUT ACCEPT
(9) 查看帮助信息
# iptables -h
(10)查看iptables手册
# man iptables
(11)拒绝192.168.0.1访问web服务
# iptables -A INPUT -s 192.168.0.1 -p tcp –dport 80 -j REJECT
(12)拒绝192.168.0.0/24ping通服务器
# iptables -A INPUT -s 192.168.0.0/24 -p icmp -j REJECT
(13)允许192.168.1.0/24访问服务器的21与80端口
# iptables -A INPUT -s 192.168.1.0/24 -m multiport -p tcp –dports 21,80 -j ACCEPT
注意
不指定表名时,默认表示**filter表**
不指定链名时,默认表示该表内所有链
除非设置规则链的缺省策略,否则需要指定匹配条件