一、相关知识

1、什么是IPTABLES

Iptables是隔离主机以及网络的工具,通过自己设定的规则以及处理动作对数据报文进行检测以及处理。netfilter/iptables是表的容器,即表属于netfiletr
iptables 主要工作在OSI七层的第2,3,4层

2、什么是 表

表是链的容器,即所有的链都属于其对应的表。

3、什么是 链

链是规则的容器,

4、什么是规则

规则是iptables系统过滤信息的规范和具体条款。

表和链的关系

iptables 状态链接 iptables的表和链_iptables 状态链接


iptables 状态链接 iptables的表和链_加载_02

常用的是 filter ,nat

filter

iptables 状态链接 iptables的表和链_iptables 状态链接_03


nat

iptables 状态链接 iptables的表和链_iptables 状态链接_04


iptables 状态链接 iptables的表和链_加载_05

二、工作流程

iptables 状态链接 iptables的表和链_扩展模块_06

分析数据报文进入本机后应用了哪些表规则以及链规则

如filter表的规则,filter表决定是否放行数据包通过,那如果通过,则必须经由INPUT链流入数据包,INPUT链是处理入站数据的,如果没问题,继续放行到用户空间,再经由OUTPUT链将数据包流出

如nat表的规则,nat表主要实现转发功能,数据包先经由PREROUTING链进行路由选择,选择好路线后再经由FORWARD链转发数据,然后再进行一个路由选择,最后由POSTROUTING链流出数据

三、原理

linux的防火墙由netfilter和iptables组成

用户空间的iptables制定防火墙规则,内核空间的netfilter实现防火墙功能
netfilter(内核空间)位于Linux内核中的包过滤防火墙功能体系,称为Linux防火墙的“内核态”

iptables(用户空间)位于/sbin/iptables,是用来管理防火墙的命令的工具,为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包,称为Linux防火墙的“用户态”

四、详细语法与语法

1、命令

iptables 状态链接 iptables的表和链_数据_07


注:不指定表名时,默认表示filter表,不指定链名时,默认表示该表内所有链,除非设置规则链的缺省策略,否则需要指定匹配条件

2、语法

iptables—>表—>操作—>链—>条件匹配—>处理动作

3、管理选项

链管理–> 规则选项–>规则显示

链管理

iptables 状态链接 iptables的表和链_扩展模块_08

规则管理

iptables 状态链接 iptables的表和链_加载_09

4、条件匹配

条件匹配分为基本匹配和扩展匹配,扩展匹配又分为显示匹配和隐式匹配

基本匹配的特点是:无需加载扩展模块,匹配规则生效;

扩展匹配的特点是:需要加载扩展模块,匹配规则方可生效。

隐式匹配的特点:使用-p选项指明协议时,无需再同时使用-m选项指明扩展模块以及不需要手动加载扩展模块;

显示匹配的特点:必须使用-m选项指明要调用的扩展模块的扩展机制以及需要手动加载扩展模块

基本匹配

iptables 状态链接 iptables的表和链_加载_10

隐式匹配

iptables 状态链接 iptables的表和链_数据_11

显示匹配 more ipables-extensions

iptables 状态链接 iptables的表和链_iptables 状态链接_12

5、处理动作

iptables 状态链接 iptables的表和链_数据_13

6、保存和载入规则

iptables 状态链接 iptables的表和链_iptables 状态链接_14