iptables 防火墙工作原理及知识点图文详解

防火墙相关概念

 

——————防火墙相关概念———————-

 LINUX防火墙:隔离内部网络和外部网络的隔离技术

                                                介于3-4层的传输  ——管理控制 服务的提供。

系统安全

1.第三方监控杀毒软件

2.系统策略

3.文件权限

4.防火墙规则 :原地址 目标地址 端口 协议 mac 数据包中的标志

类似ACL访问控制列表: 过滤

从逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。

主机防火墙针对于单个主机进行防护

网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。
                          网络防火和主机防火墙并不中突,可以理解为,网络防火墙主外(集体),主机防火墙主内(个人)。
                          从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。

硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。如:思科ASA 华为防火墙  天融信防火墙 等。
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。如:iptables firewall(CentOS7独有的)等。

iptables相关概念

iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过 iptables这个代理,将用户的安全设定执行到对应的安全框架中,这个安全框架”才是直正的防火墙,这个框架的名字叫 netfilter。

netfilter才是防火墙真正的安全框架( framework), netfilter位于内核空间

iptables其实是个命令行工具,位于用户空间,我们用这个工具操作真正的框架。

netfilter/ iptables(下文中简称为 iptables)组成 Linux平台下的包过滤防火墙,与大多数的 Linux软件一样,这个包过滤防火墙是兔费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

Netfilter是 Linux操作系统核心层内部的—一个数据包处理模块,它具有如下功能:

网络地址转换( Network Address Translate)

数据包内容修改以及数据包过滤的防火墙功能。所以说,虽然我们使用 service iptables start启动 iptables”服务”,但是其实准确的来说, iptables并没有一个守护进程,所以并不能算是真正意义上的服务,而应该算是内核提供的功能。

iptables基础工作原理

        我们知道 iptables是按照规则来办事的,我们就来说说规则( rules),规则其实就是网络管理员预定义的条件,规则一般的定义为”如果数据包头符合这样的条件,就这样处理
这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、|CMP)和服务类型(如HTP、FP和SMTP)等。
数据包与规则匹配时, iptables就根据规则所定义的方法来处理这些数据包,如放行( accept)、拒绝( reject))和丢弃(drop)等。配置防火墙的主要工作就是添加、修改
和删除这些规则。

这样说可能并不容易理解,我们来换个容易理解的角度,从头说起
          当客户端访问服务器web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务
中,而此时,客户端报文的目标终点为web服务所监听的套接字(P:Por)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时
候,web服务所监听的P与端囗反而变成了原点,我们说过, netfilter 才是真正的防火墙,它是内核的部分,所以,如果我们想要防火墙能够达到”防火”的目的,则需要在
核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是,就出现了input关卡和 output关卡,而这些
关卡在 iptables中不被称为关卡”而被称为链”。

iptables 防火墙工作原理及知识点图文详解

其实我们上面描述的场景并不完善,因为客户端发来的报文访问的目标地址可能并不是本机,而是其他服务器,当本机的内核支持 IP FORWARD时,我们可以将报文转发给其
他服务器,所以,这个时候,我们就会提到 iptables中的其他”关卡,也就是其他链”,他们就是”路由前”、“转发”、”路由后”,他们的英文名是
PREROUTING、 FORWARD、 POSTROUTING
也就是说,当我们启用了防火墙功能时,报文需要经过如下关卡,也就是说,根据实际情况的不同,报文经过链可能不同。如果报文需要转发,那么报文则不会经过 Input链
发往用户空间,而是直接在内核空间中经过 forward链和 postrouting链转发出去的。

iptables 防火墙工作原理及知识点图文详解

所以,根据上图,我们能够想象出某些常用场景中,报文的流向
到本机某进程的报文: PREROUTING->|NPUT
由本机转发的报文: PREROUTING-> FORWARD-> POSTROUTING
由本机的某进程发出报文(通常为响应报文): OUTPUT-> POSTROUTING

1. 规则表

表的概念
我们再想想另外一个问题,我们对每个”链”上都放置了一串规则,但是这些规则有些很相似,比如,A类规则都是对ip或者端囗的过滤,B类规则是修改报文,那么这个时候,我
们是不是能把实现相同功能的规则放在一起呢,必须能的
我们把具有相同功能的规则的集合叫做表”,所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每种表对应了不同的功
能,而我们定义的规则也都逃脫不了这4种功能的范围,所以,学习 iptables之前,我们必须先搞明白每种表的作用

iptables为我们提供了如下规则的分类,或者说, iptables为我们提供了如下”表”:
filter表:负责过滤功能,防火墙;内核模块: iptables_filter
nat 表: network address translation,网络地址转换功能;内核模块: iptables_nat
mangle表:拆解报文,做出修改,并重新封装的功能; iptables_mangle
raw表:关闭nat表上启用的连接追踪机制; iptables_raw

也就是说,我们自定义的所有规则,都是这四种分类中的规则,或者说,所有规则都存在于这4张表中。

 

iptables 防火墙工作原理及知识点图文详解

  1. raw高级功能,如:网址过滤。

  2. mangle:数据包修改(QOS),用于实现服务质量

  3. nat:地址转换,用于网关路由器。Nat地址转换

  4. filter:包过滤,用于防火墙规则。过滤数据包,通还是不通

数据包经过防火墙的处理顺序

2. 规则链处理时机

链的概念
现在,我们想象一下,这些”关卡在 tables中为什么被称作”链呢?���们知道,防火墙的作用就在于对经过的报文匹配”规则”,然后执行对应的”动作“所以,当报文经过这些
关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了“链所以,我们
把每一个关卡”想象成如下图中的模样,这样来说,把他们称为链更为合适,每个经过这个关卡的报文,都要将这条链”上的所有规则匹配遍,如果有符合条件的规则,
则执行规则对应的动作。

iptables 防火墙工作原理及知识点图文详解

iptables 防火墙工作原理及知识点图文详解

INPUT:处理输入数据包。入站数据包处理

OUTPUT:处理输出数据包。出站数据包处理

PORWARD:处理转发数据包。

PREROUTING:用于目标地址转换(DNAT)进站进行的过滤。

POSTOUTING:用于源地址转换(SNAT)出站进行的过滤。

3.表链关系

首先
我们需要注意的是,某些“链中注定不会包含某类规则°,就像某些”关卡”天生就不具备某些功能一样,比如,A”关卡”只负责打击陆地敌人,没有防空能力,B”关卡“只负
责打击空中敌人,没有防御步兵的能力,C关卡”可能比较NB,既能防空,也能防御陆地敌人,D”关卡·最屌,海陆空都能防。
让我们来看看,每个关卡都有哪些能力,或者说,让我们看看每个”链”上的规则都存在于哪些表”中。
我们还是以图为例,先看看 prerouting “链”上的规则都存在于哪些表中。
注意:下图只用于说明 prerouting 链上的规则存在于哪些表中,并没有描述表的顺序。

iptables 防火墙工作原理及知识点图文详解

这幅图是什么意思呢?它的意思是说, prerouting链只拥有nat表、raw表和 mangle表所对应的功能,所以, prerouting中的规则只能存放于nat表、raw表和 mangle表中
那么,根据上述思路,我们来总结一下,每个关卡”都拥有什么功能,
或者说,每个”链中的规则都存在于哪些”表”中。

PREROUTING的规则可以存在于:raw表, mangle表,nat表
NPUT的规则可以存在于: mangle表, filter表,( centos7中还有nat表, centos6中没有)。
FORWARD的规则可以存在于: mangle表, filter表
OUTPUT的规则可以存在于:raw表 mangle表,nat表,filter表
POSTROUTING的规则可以存在于: mangle表,nat表。

但是,我们在实际的使用过程中,往往是通过”表作为操作入口,对规则进行定义的,之所以按照上述过程介绍 iptables,是因为从关卡的角度更容易从入门的角度理解,但
是为了以便在实际使用的时候,更加顺畅的理解它们,此处我们还要将各”表”与”链”的关系罗列出来,
表(功能)<->链(钩子)
raw表中的规则可以被哪些链使用: PREROUTING, OUTPUT
mangle表中的规则可以被哪些链使用: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
nat表中的规则可以被哪些链使用: PREROUTING, OUTPUT, POSTROUTING( centos7中还有NPUT, centos6中没有)
filter表中的规则可以被哪些链使用: INPUT, FORWARD, OUTPUT

其实我们还需要注意一点,因为数据包经过一个链的时候,会将当前链的所有规则都匹配遍,但是匹配时总归要有顺序,我们应该一条一条的去匹配,而且我们说过,相同
功能类型的规则会汇聚在一张”表中,那么,哪些“表”中的规则会放在链”的最前面执行呢,这时候就需要有一个优先级的问题,我们还拿 prerouting”链”做图示

iptables 防火墙工作原理及知识点图文详解

prerouting链中的规则存放于三张表中,而这三张表中的规则执行的优先级如下
raw –> mangle—> nat

但是我们知道, iptables为我们定义了4张长”表”当他们处于同一条”链”时,执行的优先级如下
优先级次序(由高而低):
raw — mangle –> nat—> filter
但是我们前面说过,某些链天生就不能使用某些表中的规则,所以,4张长表中的规则处于同一条链的目前只有 output链,它就是传说中海陆空都能防守的关卡。

为了更方便的管理,我们还可以在某个表里面创建自定义链,将针对某个应用程序所设置的规则放置在这个自定义链中,但是自定义链接不能直接使用,只能被某个默认的链当
做动作去调用才能起作用,我们可以这样想象,自定义链就是一段比较”短”的链子,这条短”链子上的规则都是针对某个应用程序制定的,但是这条短的链子并不能直接使用
而是需要焊接在 Iptables默认定义链子上,才能被 iptables使用,这就是为什么默认定义的链需要把自定义链当做动作去引用的原因这是后话,后面再聊,在实际使用
时我们即可更加的明白。

数据经过防火墙的流程

综上所述,我们可以将数据包通过防火墙的流程总结为下图:

iptables 防火墙工作原理及知识点图文详解

我们在写 Iptables规则的时候,可以时刻牢记这张路由次序图,灵活配置规则。

我们将经常用到的对应关系重新写在此处,方便对应图例查看。

链的规则存放于哪些表中(从链到表的对应关系)
· REROUTING的规则可以存在于:raw表, mangle表,nat表。
·NPUT的规则可以存在于: mangle表, filter表,( centos7中还有nat表, centos6中没有)。
·FORWARD的规则可以存在于: mangle表, filter表。
·OUTPUT的规则可以存在于:raw表 mangle表,nat表, filter表。
·POSTROUTING的规则可以存在于: mangle表,nat表。

表中的规则可以被哪些链使用(从表到链的对应关系):
·raw表中的规则可以被哪些链使用: PREROUTING, OUTPUT
·mangle表中的规则可以被哪些链使用: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
·nat表中的规则可以被哪些链使用: PREROUTING, OUTPUT, POSTROUTING( centos7中还有|NPUT, centos6中没有
·filter表中的规则可以被哪些链使用: INPUT, FORWARD, OUTPUT

下图中nat表在 centos7中的情况就不再标明。

iptables 防火墙工作原理及知识点图文详解

规则的概念

规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理
那么我们来通俗的解释一下什么是 Iptables的规则,之前打过一个比方,每条链都是一个“关卡,每个通过这个”关卡”的报文都要匹配这个关卡上的规则,如果配,则对报
文进行对应的处理,比如说,你我二人此刻就好两个报文”,你我二人此刻都要入关,可是城主有命,只有器宇轩昂的人才能入关,不符合此条件的人不能入关,于是守关将
土按照城主制定的规则”,开始打量你我二人,最终,你顺利入关了,而我已被拒之门外,因为你符合器宇轩昂的标准,所以把你放行”了,而我不符合标谁,所以没有被放
行,其实,“宇轩昂就是种匹配条件”,“放行就是种动作,”匹配条件”与”动作“组成了规则

了解了规则的概念,那我们来聊聊规则的组成部分此处只是大概的将规则的结构列出,后面的文章中会单独对规则时进行总结。
规则由匹配条件和处理动作组成

匹配 条件
匹配条件分为基本匹配条件与扩展匹配条件

基本匹配条件
源地址 Source IP,目标地址 Destination|P
上述内容都可以作为基本匹配条件

扩展匹配条件
除了上述的条件可以用于匹配,还有很多其他的条件可以用于匹配,这些条件泛称为扩展条件,这些扩展条件其实也是 netfilter中的部分,只是以模块的形式存在,如果想要
使用这些条件,则需要依赖对应的扩展模块
源端口 Source port,目标端口 Destination Port
上述内容都可以作为扩展匹配条件

  • ACCEPPT:接受数据包。

  • DROP:直接丢弃数据包。不给任何回应信息,这时候客户端会感觉自己的请求沉入大海,等过了超时时间会有反应。

  • REDIRECT:重定向、映射、透明代理。

  • SNAT:源地址转换。

  • DNAT:目标地址转换。

  • MASQUERADE:IP伪装(NAT),用于ADSL。是SNAT的一种特殊形式,适用于动态的,临时会变的IP上。

  • LOG日志记录。在/var/log/messages文件中记录日志信息。除了记录对数据包不做任何动作。

基础命令

-t<表>:   指定要操纵的表

-A:  向规则链末尾中添加,追加条目;(append)

-D:  从规则链中删除条目;(delete)

-I:  向规则链的开头(或者指定序号)中插入条目,未指定规则序号时,默认作为第一规则;(insert)

-R:  替换规则链中的条目;

-L:  显示规则链中已有的条目;(list)

-F:  清除规则链中已有的条目,若位置定规则序号,则默认清空所有;(flush)

-v:    查看规则列表时显示详细信息(verbose)

-Z:  清空规则链中的数据包计算器和字节计数器;

-N:  创建新的用户自定义规则链;

-P:  定义规则链中的默认目标;(police)

-h:  显示帮助信息;

-p:  指定要匹配的数据包协议类型;

-s:  指定要匹配的数据包源ip地址;

-j<目标>:指定要跳转的目标;

-i<网络接口>:指定数据包进入本机的网络接口;

-o<网络接口>:指定数据包要离开本机所使用的网络接口。

iptables命令选项输入顺序:

iptables  -t 表名 <-A/I/D/R>  规则链名  [规则号]  <-i/o 网卡名>  -p  协议名  <-s  源IP/源子网>  — sport  源端口  <-d 目标IP/目标子网>  — dport  目标端口  -j  动作

PS:

LUNIX7 上面独有的firewall 区域划分  public 默认区域信任区域 非信任区域

systemctl start firewalld.service LINUX7上面独有的防火墙firewall

NAT表基础拓扑实验

NAT

NAT 地址转换

SNAT source 源地址 转换  作用场景:内部网络访问广域网

DNAT destnation 目标地址转换  作用场景:广域网主机访问内部网络服务器

1.拓扑实验环境

iptables 防火墙工作原理及知识点图文详解

搭建以上iptables规则。

一共开三个虚拟机 全部网络适配器设置为仅主机模式

web1:一台centos6.5  作为内部网络内的客户端,设置ip地址为192.168.100.101

web2:一台centos7 作为外部网络,设置ip地址12.0.0.12

一台centos6.5 作为iptables防火墙(要有双网卡)一个网卡设置为内部网的网卡192.168.100.1,一个设置为外部网的网卡12.0.0.1,service network restart 重启下网卡

iptables 防火墙工作原理及知识点图文详解

2.实验思路

在iptables防火墙上配置

· 清空防火墙的规则filter 默认规则

· 清空防火墙 nat规则

· vim /etc/sysctl.conf——net.ipv4.ip_forward = 1            #永久开启路由功能

· sysctl –p                    #重新加载配置文件

· 开始进行iptables的规则设置

3.操作步骤

1)iptables防火墙 :修改配置文件,开启路由功能

iptables 防火墙工作原理及知识点图文详解

iptables 防火墙工作原理及知识点图文详解

iptables 防火墙工作原理及知识点图文详解

清除iptables防火墙中原有的规则(因为是实验所以删除所有iptables规则,现实中按实际情况操作)

iptables 防火墙工作原理及知识点图文详解

2)SNAT source : 源地址转换

POSTOUTING:用于源地址转换(SNAT)出站进行的过滤。

命令是:

[ root@linuxidc  ~]#  iptables –t nat –A POSTROUTING –s 192.168.100.0/24 –o eth0 –j SNAT –to-source 12.0.0.1

#使192.168.100.0网段的内网web服务数据包出站转换成12.0.0.1的IP地址

iptables 防火墙工作原理及知识点图文详解

3)DNAT destination : 目标地址转换

PREROUTING:用于目标地址转换(DNAT)进站进行的过滤。

命令是:

[ root@linuxidc  ~]# iptables –t nat –A PREROUTING –d 12.0.0.1 –p tcp –dport 80 –i eth1  –j DNAT — to-destination 192.168.100.101

#使通过12.0.0.1网卡的数据包发送的ip地址指向为192.168.100.101的内网web服务

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

栗子博客 软件 iptables 防火墙工作原理及知识点图文详解 https://www.lizi.tw/soft/10313.html

常见问题
  • 1、杰齐1.7仅适用于PHP5.2 2、需Zend支持 3、尽量使用宝塔面板 4、尽量使用Windows 系统,关关对Linux支持不太友好。
查看详情

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

iptables 防火墙工作原理及知识点图文详解-海报

分享本文封面