简介
防火墙(Firewall): 工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是二者的结合
Firewall分类:主机防火墙(工作于主机边缘);网络防火墙(工作于网络边缘)
iptables:只是防火墙规则的编写工具,工作于用户空间,编写规则并发送到netfilter
netfilter:能使规则生效的防护框架,工作于内核空间
Netfilter防护原理
在内核中的TCP/IP协议栈上选择了5个点(又称为“卡哨”),这5个点是报文一定会流经的位置,并配置5个钩子函数(hook_function);当有报文经过时,被钩子函数钩起,对规则进行检查,并按照一定的机制(又可称为“功能”)完成处理
原理图
说明:上图显示了Netfilter的实现原理,以及其主要的4大功能:raw,mangle,nat,filter
数据包经Netfilter的过滤匹配流程
图1
<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKiom1M2R0qA-hIpAAcIr8FurZg420.jpg" target="_blank"></a>
图2
<a href="http://s3.51cto.com/wyfs02/M01/23/6F/wKiom1M2R5nQ8yJdAA-8ENuAcv4511.jpg" target="_blank"></a>
说明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
<code>service iptables save</code>
<code># 规则默认会保存在/etc/sysconfig/iptables文件中</code>
<code># iptables启动时,也会读取此文件中的内容以设置规则</code>
<code>iptables-save > </code><code>/path/to/some_rulefile</code> <code># 手动导出规则文件</code>
<code>iptables-restore < </code><code>/path/from/some_rulefile</code> <code># 手动导入规则文件</code>
远程修改iptables规则时的小技巧
在远程服务器上修改iptables规则时,防范规则生效错误(尤其是ssh对应端口)被意外断开连接的方法是:在执行任何iptables规则或脚本时,后跟一个计划任务,指定5分钟后清空所有规则,如
<code># 实际需执行的iptables规则在iptables.sh文件中,若规则执行成功无错误,取消计划任务即可</code>
<code>sh </code><code>/tmp/iptables</code><code>.sh ; at -f clean_up.at now+5min</code>
at计划任务可参考:
6
7
<code>#!/bin/bash</code>
<code>iptables -t raw -F</code>
<code>iptables -t mangle -F</code>
<code>iptables -t nat -F</code>
<code>iptables -t filter -F</code>
<code>iptables -P INPUT ACCEPT</code>
<code>iptables -P OUTPUT ACCEPT</code>
本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1386435,如需转载请自行联系原作者