简介
防火墙(Firewall): 工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是二者的结合
Firewall分类:主机防火墙(工作于主机边缘);网络防火墙(工作于网络边缘)
iptables:只是防火墙规则的编写工具,工作于用户空间,编写规则并发送到netfilter
netfilter:能使规则生效的防护框架,工作于内核空间
Netfilter防护原理
在内核中的TCP/IP协议栈上选择了5个点(又称为“卡哨”),这5个点是报文一定会流经的位置,并配置5个钩子函数(hook_function);当有报文经过时,被钩子函数钩起,对规则进行检查,并按照一定的机制(又可称为“功能”)完成处理
原理图
说明:上图显示了Netfilter的实现原理,以及其主要的4大功能:raw,mangle,nat,filter
数据包经Netfilter的过滤匹配流程
图1
图2
说明1:图1和图2都是数据包流向的描述,个人感觉图2更加形象,可以看出数据包经Netfilter的过滤匹配流程就是针对Netfilter的4大功能,在5个卡哨间停留匹配的过程
说明2:借用的网络上的2张图片,版权归原作者所有
iptables的规则
表和链:
四表(对应4大功能):raw,mangle,nat,filter
五链(对应5个卡哨):PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
表和链的对应关系:
raw:PREROUTING,OUTPUT
mangle:5链中的任意位置
nat:PREROUTING,POSTROUTING,OUTPUT
filter:INPUT,FORWARD,OUTPUT
iptables的规则匹配原理
说明:iptables规则的添加需在指定表下的可用链上,即注意表和链的对应关系
iptables规则的保存与恢复
1
2
3
4
5
|
service iptables save
# 规则默认会保存在/etc/sysconfig/iptables文件中
# iptables启动时,也会读取此文件中的内容以设置规则
iptables-save >
/path/to/some_rulefile
# 手动导出规则文件
iptables-restore <
/path/from/some_rulefile
# 手动导入规则文件
|
远程修改iptables规则时的小技巧
在远程服务器上修改iptables规则时,防范规则生效错误(尤其是ssh对应端口)被意外断开连接的方法是:在执行任何iptables规则或脚本时,后跟一个计划任务,指定5分钟后清空所有规则,如
1
2
|
# 实际需执行的iptables规则在iptables.sh文件中,若规则执行成功无错误,取消计划任务即可
sh
/tmp/iptables
.sh ; at -f clean_up.at now+5min
|
at计划任务可参考:
1
2
3
4
5
6
7
|
#!/bin/bash
iptables -t raw -F
iptables -t mangle -F
iptables -t nat -F
iptables -t filter -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
|