iptables

iptables

0.前言

  首先在学习iptables之前,需要区分一些概念,从逻辑出发,现有的防火墙大致上可以分为主机防火墙和网络防火墙,前者针对于单个主机进行防护,后者则往往放置在网络的入口或边缘处,针对网络入口进行防护,服务于防火墙背后的本地局域网,可以理解为主机防火墙主内保护个人,网络防火墙主外保护集体

  从物理出发,防火墙有分为硬件防火墙和软件防火墙,硬件防火墙顾名思义是在硬件级别实现部分防火墙功能,而软件防火墙则是用软件处理逻辑运行于通用硬件平台上的防火墙

1.基础了解

  实现一般而言,Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤盒限制,属于典型的包过滤防火墙。而iptables本质上并不是一个真正的防火墙,可以连接为一个客户端代理,我们通过iptables代理,将用户的安全设定执行到对应的安全框架中,而这里涉及到的安全框架才是真正的防火墙,也就是netfilter。

  netfilter作为防火墙真正的安全框架,位于内核空间中,iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。netfilter/iptables组成的就是前文所提到的Linux平台下的包过滤防火墙

  提到防火墙就必然需要知道防火墙的运行是按照规则进行运行的,规则是我们网络管理员预定义的条件,对于数据包符合不同的条件就按照不同的处理办法,规则的存储位置是在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议以及服务类型等内容,当数据包与规则匹配时,iptables就会工具规则所定义的方法来处理这些数据包,处理行为包括放行、拒绝和丢弃等操作。

2.链的概念

  在防火墙中,我们会提及到发送的概念,不同转发场景所需要进入的关卡路径也不同,而这些关卡就是我们所称呼的“链”,为什么称呼为链呢,这是以为在防火墙的使用中,其对结果的报文进行规则匹配,然后执行对应的动作,当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了”链”

3.表的概念

  有了链的概念,接下来就是表的概念了,我们对每个链上都会放置相应的一串规则,而有些规则是有部分相似的,所以我们是不是也能够实现见关晓彤的规则放在一起呢,答案是肯定的,我们把具有相同功能的规则的集合叫做”表”,所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每种表对应了不同的功能,而我们定义的规则也都逃脱不了这4种功能的范围

1
2
3
4
5
6
7
8
9
10
11
filter表:
负责过滤功能,防火墙;内核模块:iptables_filter

nat表:
network address translation,网络地址转换功能;内核模块:iptable_nat

mangle表:
拆解报文,做出修改,并重新封装 的功能;iptable_mangle

raw表:
关闭nat表上启用的连接追踪机制;iptable_raw

4.链表关系

  如前文所说的,链与表的概念都基本了解了,那接下来就是链表的结合

  以上图为例,这表示着prerouting”链”只拥有nat表、raw表和mangle表所对应的功能,所以,prerouting中的规则只能存放于nat表、raw表和mangle表中,在上述的思路中,每一个关卡所对应的功能都各不相同,规则可存在的表也各有差异:

1
2
3
4
5
6
7
8
9
PREROUTING的规则可以存在于:raw表,mangle表,nat表。

INPUT的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。

FORWARD的规则可以存在于:mangle表,filter表。

OUTPUT的规则可以存在于:raw表mangle表,nat表,filter表。

POSTROUTING的规则可以存在于:mangle表,nat表。

  当然,我们在实际的使用过程中,往往是通过”表”作为操作入口,对规则进行定义的,所以上面所表达的也仅仅是为更好的理解,在实际的设置和使用中还是安装表对应链的关系进行罗列

1
2
3
4
5
6
7
raw表中的规则可以被哪些链使用:PREROUTING,OUTPUT

mangle表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

nat表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)

filter表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPU

5.数据经过防火墙的流程

  根据前面的相关介绍和理解,我们已经能够初步的建立出iptables的初步流程,而数据经过防火墙的大体流程如下

  通过图表进行了解,对于我们编写iptables的规则会有很大的帮助,链的规则存放与哪个表中也是一目了然

6.规则的概念

  前文多次提到了规则的概念,那具体的规则在iptables中是体现在哪呢,其实规则的概念与其他相关的程序大抵相同,无非是进行了一些条件的限定,并对进入的数据进行条件判断和对应的处理方式。总而言之,过载就是有匹配条件和处理动作组成。

  在iptables 的匹配条件中,有区分为基本匹配条件与扩展匹配条件,基本匹配条件就是源地址Source IP,目标地址 Destination IP,而扩展匹配条件则是除了上述的条件可以用于匹配,还有很多其他的条件可以用于匹配,这种条件则称为扩展匹配条件,这里就不就行过多的阐述,后面会有相关的实例理解可能更好一些。

  • 处理动作

  处理动作而言,在iptables中被称为target,如同匹配条件一般,动作也分为了基本动作和扩展动作,首先是简单动作:

1
2
3
4
5
ACCEPT:允许数据包通过。

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

REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
  • 扩展动作

  接下来是扩展动作:

1
2
3
4
5
6
7
8
9
LOG:记录数据包的信息到系统日志中,以便后续分析和调试。

SNAT:源地址转换,将数据包的源IP地址替换为指定的IP地址。

DNAT:目标地址转换,将数据包的目标IP地址替换为指定的IP地址。

MASQUERADE:动态NAT,将内部网络的私有IP地址映射为公共IP地址。

REDIRECT:重定向数据包到指定的端口或IP地址。

iptables
https://one-null-pointer.github.io/2023/06/17/Linux运维——iptable/
Author
liaoyue
Posted on
June 17, 2023
传送口