#iptables(1):基础概念
##1.防火墙相关概念
###1.1分类
逻辑上 主机防火墙 网络防火墙 (前者针对单个主机进行防护,后者位于网络入口或边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网)
物理上 硬件防火墙 软件防火墙
##2.iptables理解
- iptables可以理解成一个用户代理,真正的防火墙(安全)是netfilter位于内核空间,而iptables是一个命令行工具位于用户空间,我们通过这个工具来操作真正的框架。
- Netfilter是操作系统核心层内部的一个数据包处理模块,它具有以下功能:网络地址转换、数据包内容修改、数据包过滤的防火墙功能
所以说,虽然我们使用service iptables start启动iptables 服务,但是准确的说,iptables并没有一个守护进程,若依并不能算是真正意义上的服务,而应该算是内核提供的功能。
##3.iptables基础
**iptables是按规则办事,而规则储存在内核空间的信息包过滤表中。**这些规则分别指定了源地址、目的地址、传输协议和服务类型等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,accept(接受)、reject(拒绝)、丢弃(drop)
**墙需要设置“关卡”,也就是“链”。**比如INPUT OUTPUT FORWARD PREROUTING POSTROUTING。当我们用了防火墙功能后,报文根据实际情况的不同就要通过不同的链。
##4.链的概念
防火墙的作用就在于对经过的报文匹配“规则”,然后执行相应的动作,所以,当报文经过这些关卡时,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则。而一条条规则串起来就是链
##5.表的概念
我们把具有相同功能的规则的集合叫做“表”,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每个表对应了不同的功能。
- filter表:负责过滤功能,防火墙;内核模块:iptables_filter
- nat表:网络地址转换功能;内核模块:iptable_nat
- mangle表:拆解报文,做出修改,并重新封装的功能;内核模块:iptable_mangle
- raw表:关闭nat表上启用的连接追踪机制;内核模块:iptable_raw
##6.表链关系
某些链注定不会包含某类规则
比如 prerouting链只拥有nat、raw、mangle表中的规则
PREROUTING 的规则可以存在于:nat、raw、mangle 表中
INPUT 的规则可以存在于:mangle、filter表中(centos7还有nat表)
FORWARD 的规则可以存在于:mangle 、filter表中
OUTPUT :raw、mangle、nat、filter表中国
POSTROUTING 的规则可以存在于:mangle表,nat表
- 但是我们实际使用过程中,时通过“表”作为操作入口,对规则进行定义的。实际使用中的表链关系应该为
表(功能)<————>链(钩子)
raw 表中的规则可以被:PREROUTING OUTPUT链使用
mangle表中的规则可以被:PREROUTING INPUT FORWARD POSTROUTING OUTPUT链使用
nat表中的规则可以被:PREROUTING OUTPUT POSTROUTING使用(centos7还有INOUT)
filter表中的规则可以被:INPUT FORWARD OUTPUT使用
- 一个数据包经过链的时候,会将当前链的规则全部匹配一次,但是是有优先级的。由高到低位raw、mangle、nat、filter
- 注意:为了方便管理,我们还可以在某个表中创建自定义链,将针对应用程序所设置的规则放置在自定义的链中,但是要注意自定义的链不能直接使用,只能被某个默认的链当做动作去调用才能起作用。
##7.规则的概念
- 规则:根据指定的匹配条件来尝试匹配某个经流此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理。
- 匹配条件 :除了源地址source IP、目的地址destination IP基本匹配条件外,还有扩展匹配条件
- 处理动作
- 常用:ACCEPT(允许通过)、DROP(直接丢弃,并不给回应信息)、REJECT(拒绝通过,必要时会给数据发送端一个回应)
- SNAT(源地址转换,解决内网用户用同一个公网地址上网的功能)
##总结
也就是说规则是在链上的,一条链可能会有多条规则。相同功能的规则可放在一个表中。链表关系是某些表中的规则没办法被链使用,也就是说某些链无法调用内核的相应模块。一般来讲,是通过“表“作为操作入口来对规则进行定义的