周旭光unixzhou@sina
Linux防火墙iptables
周旭光
unixzhou@sina
2011年5月10日
目录
1、Linux防火墙基础 (2)
1、iptables的规则表、链结构 (2)
1.1 规则表 (2)
1.2 规则链 (2)
2、数据包的匹配流程 (2)
2.1 规则表之间的优先级 (2)
2.2 规则链之间的优先级 (2)
2.3 规则链内部各防火墙规则之间的优先顺序 (3)
2、管理和设置iptables规则 (3)
2.1 iptables的基本语法格式 (3)
2.2 管理iptables规则 (3)
iptables命令的管理控制项 (3)
2.3 条件匹配 (5)
2.3.1 通用(general)条件匹配 (5)
2.3.2 隐含(implicit)条件匹配 (6)
2.3.3 显示(explicit)条件匹配 (6)
2.4 数据包控制 (7)
3、使用防火墙脚本 (8)
3.1 导出、导入防火墙规则 (8)
3.2 编写防火墙脚本 (8)
1、Linux防火墙基础
1、iptables的规则表、链结构
1.1 规则表
iptables管理4个不同的规则表,其功能由独立的内核模块实现。
filter表:包含三个链INPUT , OUTPUT , FORWARD
nat表:PREROUTING , POSTROTING , OUTPUT
mangle表:PREROUTING , POSTROUTING , INPUT , OUTPUT , FORWARD
raw表:OUTPUT , PREROUTING
1.2 规则链
INPUT链当收到访问防火墙本机的数据包(入站)时,应用此链中的规则
OUTPUT链当防火墙本机向外发送数据包(出站)时,应用此链中的规则
linux版本命令FORWARD链收到需要通过防火墙发送给其他地址的数据包,应用此链
PREROUTING链做路由选择之前,应用此链
POSTROUTING链对数据包做路由选择之后,应用此链中的规则
2、数据包的匹配流程
2.1 规则表之间的优先级
Raw mangle nat filter
2.2 规则链之间的优先级
入站数据流向:来自外界的数据包到达防火墙,首先呗PREROUTING规则链处理(是否被修改地址),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机,那么内核将其传递给INPUT 链进行处理,通过以后再交给上次的应用程序进行响应
转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后进行路由选择,如果数据包的目标地址是其他外部地址,则内核将其传递给FPRWARD链进行处理,然后再交给POSTROUTIING 规则链(是否修改数据包的地址等)进行处理。
出站数据流向:防火墙本身向外部地址发送数据包,首先被OUTPUT规则链处理,之后进行路由选择,然后
交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。
2.3 规则链内部各防火墙规则之间的优先顺序
依次按第1条规则、第2条规则、第3条规则……的顺序进行处理,到一条能够匹配的数据包规则,则不再继续检查后面的规则(使用LOG记录日志的规则例外)。如果不到匹配规则,就按照规则链的默认策略进行处理
2、管理和设置iptables规则
2.1 iptables的基本语法格式
iptables [-t 表名] 命令选项[链名] [条件匹配] [-j 目标动作或跳转]
2.2 管理iptables规则
iptables命令的管理控制项
2.2.1 添加及输入规则
# iptables -t filter -A INPUT -p tcp -j ACCEPT
在filter表的INPUT链的末尾添加一条防火墙规则
# iptables -I INPUT -p udp -j ACCEPT
在filter表的INPUT链中插入一条防火墙规则(省略–t filter,按默认处理filter表)
# iptables -I INPUT 2 -p icmp -j ACCEPT
在filter表的INPUT链中插入一条防火墙规则,作为链中的第二条规则
2.2.2 查看规则表
# iptables -L INPUT - -line-numbers
查看filter表中INPUT链中的所有规则,同时显示各条规则的顺序号
# iptables –nvL
-
L选项放在最后,否则会将vn当成链名。查看filter表各链中所有规则的详细信息,同时以数字形式显示地址和端口号
2.2.3删除、清空规则
# iptables -D INPUT 2
删除filter表INPUT链中的第二条规则
# iptables -F
不指定表名时,默认情况filter表
# iptables -t nat –F
清空nat表中各链的所有规则
# iptables -t mangle -F
清空mangle表中各链的所有规则
2.2.4 设置规则链的默认策略
# iptables -t filter -P FORWARD DROP
将filter表中FORWARD规则的默认策略设为DROP
# iptables -P OUTPUT ACCEPT
将filter表中OUTPUT规则的默认策略设为ACCEPT
2.2.5 获得iptables相关选项的帮助信息
# iptables -p icmp –h
查看iptables命令中关于icmp协议的帮助信息
2.2.6 新增、删除自定义规则链
# iptables -t raw -N TCP_PACKETS
在raw表中新增一条自定义的规则链,链名为TCP_PACKETS
# iptables -t raw -X
清空raw表中用户自定义的所有规则链
2.3 条件匹配
2.3.1 通用(general)条件匹配
直接使用,而不依赖于其他的条件匹配及其扩展
2.3.1.1 协议匹配(允许使用的协议名包含在/etc/protocols文件中)
# iptables -I INPUT -p icmp REJECT
拒绝进入防火墙的所有icmp数据包
# iptables -I FORWARD -p ! icmp -j ACCEPT
允许防火墙转发icmp协议以外的所有数据包(叹号表示取反)
2.3.1.2 地址匹配
拒绝转发来自192.168.1.11主机的数据,允许转发来自192.168.0./24网段的数据
# iptables -A FORWARD -s 192.168.1.11 -j REJECT
# iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
2.3.1.3 网络接口匹配
丢弃从外网接口eth1进入防火墙本机的源地址为私网地址的数据
# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
管理员在网关服务器上检测到来自某个IP网段(如10.10.30.0./24)的频繁扫描,希望设置iptables规则封堵IP 地址段,两个小时后解封
# iptables -I INPUT -s 10.20.30.0/24 -j DROP//设置封堵策略
# iptables -I FORWARD -s 10.20.30.0/24 -j DROP
# at now +2 hours
at> iptables -D INPUT 1
at>iptables -D FORWAD 1
at> <EOT>

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