iptables防火墙分类:过滤防火墙和应用层防火墙
iptables 是 Linux 下的配置防火墙的工具,用于配置 Linux 内核集成的 IP 信息包过滤系统,使增 删改查信息包过滤表中的规则更加简单。
1.Linux 防火墙基础
Linux防火墙
主要工作在网络层,针对 TCP/IP
数据包实施过滤和限制,典型的包过滤防火墙,基于内核编码实现,具有非常稳定的性能和高效率。
-
iptables
:用来管理 Linux 防火墙的命令程序,位于/sbin/iptables
目录下,属于用户空间
的防火墙管理体系。 -
netfilter:Linux
内核中实现包过滤防火墙的内部结构,一般不以程序
或文件
的形式存在,属于内核空间
的防火墙管理体系。
iptables 的作用
:为包过滤机制的实现提供规则,通过各种不同的规则,来告诉netfilter
对来自某些源以及前往某些目的或具有某些协议特征的数据包是如何进行处理的。
iptables分为四表五链,表是链的容器,链是规则的容器,规则指定动作。
四表
filter(过滤器):用于包过滤,主要是跟进linux本机的数据包有关,默认的table
nat(地址转换):metwork address translation的缩写,网络地址转发,
主要用来进行来源和目的地的ip和port转换,与linux本机无关
mangle(破坏者):对特定数据包修改,主要是与特殊的数据包的路由标志有关
raw(源码包):不做数据包链接跟踪
五链
INPUT:本机数据包入口,想要进入linux本机的数据包有关
OUPUT:本机数据包出口,与linux所要送出去的数据包有关
FORWARD:经过本机转发的数据包,传递数据包到后端计算机
PREROUTING:防火墙之前,修改目的地址(DNAT) ,进行路由判断之前所要进行的规则(DNAT/REDIRECT)
POSTROUTING :防火墙之后,修改源地址(SNAT),进行路由判断之后所要进行的规则(SNAT/MASQUERADE)
表中的链:
表 链
filter INPUT、OUTPUT 和 FORWARD
filter 表
:用来对数据包进行过滤,具体的规则要求决定如何处理一个数据包。
对应的内核模块为:iptable_filter
,其表内包括三个链:input
、forward
、output
;
nat PREROUTING、POSTROUTING 和 OUTPUT
nat 表
:nat 全称:network address translation 网络地址转换,主要用来修改数据包的 IP 地址、端口号信息
。
对应的内核模块为:iptable_nat
,其表内包括三个链:prerouting
、postrouting
、output
;
mangle PREROUTING、POSTROUTING、INPUT、OUTPUT 和 FORWARD
mangle 表
:主要用来修改数据包的服务类型
,生存周期
,为数据包设置标记,实现流量整形、策略路由等。
对应的内核模块为:iptable_mangle
,其表内包括五个链:prerouting
、postrouting
、input
、output
、forward
;
raw PREROUTING 和 OUTPUT
raw 表
:主要用来决定是否对数据包进行状态跟踪。
对应的内核模块为:iptable_raw
,其表内包括两个链:output
、prerouting
;
规则表之间的顺序
当数据包到达防火墙时,如果对应的链内有规则存在,将按照顺序依次从raw 表
→mangle 表
→nat 表
→filter 表