简介

防火墙(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规则的保存与恢复

service iptables save# 规则默认会保存在/etc/sysconfig/iptables文件中# iptables启动时,也会读取此文件中的内容以设置规则iptables-save > /path/to/some_rulefile # 手动导出规则文件iptables-restore < /path/from/some_rulefile # 手动导入规则文件

远程修改iptables规则时的小技巧

在远程服务器上修改iptables规则时,防范规则生效错误(尤其是ssh对应端口)被意外断开连接的方法是:在执行任何iptables规则或脚本时,后跟一个计划任务,指定5分钟后清空所有规则,如

# 实际需执行的iptables规则在iptables.sh文件中,若规则执行成功无错误,取消计划任务即可sh /tmp/iptables.sh ; at -f clean_up.at now+5min

at计划任务可参考:

#!/bin/bashiptables -t raw -Fiptables -t mangle -Fiptables -t nat -Fiptables -t filter -Fiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPT

下一篇: