iptables
iptables
0.前言
首先在学习iptables之前,需要区分一些概念,从逻辑出发,现有的防火墙大致上可以分为主机防火墙和网络防火墙,前者针对于单个主机进行防护,后者则往往放置在网络的入口或边缘处,针对网络入口进行防护,服务于防火墙背后的本地局域网,可以理解为主机防火墙主内保护个人,网络防火墙主外保护集体
从物理出发,防火墙有分为硬件防火墙和软件防火墙,硬件防火墙顾名思义是在硬件级别实现部分防火墙功能,而软件防火墙则是用软件处理逻辑运行于通用硬件平台上的防火墙
1.基础了解
实现一般而言,Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤盒限制,属于典型的包过滤防火墙。而iptables本质上并不是一个真正的防火墙,可以连接为一个客户端代理,我们通过iptables代理,将用户的安全设定执行到对应的安全框架中,而这里涉及到的安全框架才是真正的防火墙,也就是netfilter。
netfilter作为防火墙真正的安全框架,位于内核空间中,iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。netfilter/iptables组成的就是前文所提到的Linux平台下的包过滤防火墙
提到防火墙就必然需要知道防火墙的运行是按照规则进行运行的,规则是我们网络管理员预定义的条件,对于数据包符合不同的条件就按照不同的处理办法,规则的存储位置是在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议以及服务类型等内容,当数据包与规则匹配时,iptables就会工具规则所定义的方法来处理这些数据包,处理行为包括放行、拒绝和丢弃等操作。
2.链的概念
在防火墙中,我们会提及到发送的概念,不同转发场景所需要进入的关卡路径也不同,而这些关卡就是我们所称呼的“链”,为什么称呼为链呢,这是以为在防火墙的使用中,其对结果的报文进行规则匹配,然后执行对应的动作,当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了”链”
3.表的概念
有了链的概念,接下来就是表的概念了,我们对每个链上都会放置相应的一串规则,而有些规则是有部分相似的,所以我们是不是也能够实现见关晓彤的规则放在一起呢,答案是肯定的,我们把具有相同功能的规则的集合叫做”表”,所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每种表对应了不同的功能,而我们定义的规则也都逃脱不了这4种功能的范围
1 |
|
4.链表关系
如前文所说的,链与表的概念都基本了解了,那接下来就是链表的结合
以上图为例,这表示着prerouting”链”只拥有nat表、raw表和mangle表所对应的功能,所以,prerouting中的规则只能存放于nat表、raw表和mangle表中,在上述的思路中,每一个关卡所对应的功能都各不相同,规则可存在的表也各有差异:
1 |
|
当然,我们在实际的使用过程中,往往是通过”表”作为操作入口,对规则进行定义的,所以上面所表达的也仅仅是为更好的理解,在实际的设置和使用中还是安装表对应链的关系进行罗列
1 |
|
5.数据经过防火墙的流程
根据前面的相关介绍和理解,我们已经能够初步的建立出iptables的初步流程,而数据经过防火墙的大体流程如下
通过图表进行了解,对于我们编写iptables的规则会有很大的帮助,链的规则存放与哪个表中也是一目了然
6.规则的概念
前文多次提到了规则的概念,那具体的规则在iptables中是体现在哪呢,其实规则的概念与其他相关的程序大抵相同,无非是进行了一些条件的限定,并对进入的数据进行条件判断和对应的处理方式。总而言之,过载就是有匹配条件和处理动作组成。
在iptables 的匹配条件中,有区分为基本匹配条件与扩展匹配条件,基本匹配条件就是源地址Source IP,目标地址 Destination IP,而扩展匹配条件则是除了上述的条件可以用于匹配,还有很多其他的条件可以用于匹配,这种条件则称为扩展匹配条件,这里就不就行过多的阐述,后面会有相关的实例理解可能更好一些。
处理动作而言,在iptables中被称为target,如同匹配条件一般,动作也分为了基本动作和扩展动作,首先是简单动作:
1 |
|
接下来是扩展动作:
1 |
|