天天看点

iptables/netfilter原理及基本操作

简介

防火墙(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 &gt; </code><code>/path/to/some_rulefile</code> <code># 手动导出规则文件</code>

<code>iptables-restore &lt; </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,如需转载请自行联系原作者

继续阅读