https://www.cnblogs.com/kqdssheng/p/16405868.html
https://zhuanlan.zhihu.com/p/580178712
1、netfilter、iptables、firewall、ufw之间的关系:netfilter-->iptables-->[ firewall | ufw ]。netfilter处在最底层(内核),负责根据上层下达的规则对报文进行处理【实际干活的】;iptables属于一个应用层临时命令工具,负责制定一系列的规则然后提交给netfilter【部门领导】;firewall和ufw属于一个应用层常驻服务工具,负责用人性化的语言制定最齐全的规则并将其转换为iptables理解的规则,然后让iptables再提交给netfilter进行处理【公司领导】。
- iptables属于一个应用层临时命令工具:规则制定之后iptables便不再参与什么活动,等系统重启之后之前配置的规则全部都丢失,只能再次通过iptables-restore来手动恢复之前通过iptables-save保存的规则。(有些linux发行版中,iptables也属于一种常驻服务,可以通过服务管理工具统一对其进行管理。但是似乎不支持规则动态加载。)
- firewall和ufw属于一个应用层常驻服务工具:服务在启用之后便将自身此前存储的规则自动通过iptables进行加载,而后如果有新的规则变动,它们都可以支持规则的动态加载让其立即生效(ufw存疑)。
2、应用平台。iptables是红帽系列6及以下的默认防火墙(如CentOS6.x),firewall 是红帽系列7及以上的默认防火墙(如CentOS7.x),UFW是Debian系列的默认防火墙。虽然都是在不同平台下的默认防火墙,但并非ufw就不能再红帽系列使用。3、兼容性。iptables是linux防火墙的基石,所以存在firewall、ufw的地方就一定会看到iptables。而在不启用firewall、ufw服务的情况下,也依旧可以通过iptables来使用防火墙。不过firewall和ufw同时存在并启的情况下,规则会很混乱。4、Firewall防火墙与华为下一代USG防火墙 区域对比。USG也使用了区域的概念,不过在使用上与firewall有很大的区别。
- Firewall 区域:多规则的集合,将区域与流量通道(网络接口)进行绑定,达到对过往流量的控制。【面向单主机】 例,当一个报文从网卡进入时,系统便根据网卡绑定的区域进行对应区域规则的逐条匹配。
- USG 区域:多接口的集合,将区域当做规则五元组(源/目的区域、源/目的ip-port、动作)的一部分。整体使用上就是:接口划区-->进入策略-->创建规则。【面向多网络】 例,当一个报文从网卡进入时,系统根据网卡的来源得知其来源区域,又根据目的ip路由得出其去往网卡的目的区域,然后根据得到的信息(源/目的区域、源/目的ip-port)开始逐条匹配策略中的规则。
Netfilter
Netfilter是Linux 2.4内核引入的全新的包过滤引擎,位于Linux内核中的包过滤功能体系,基于内核控制,实现防火墙的相关策略。Netfilter 由一些数据包过滤表组成,这些表包含内核用来控制信息包过滤的规则集。Netfilter在数据包必须经过且可以读取规则的位置,设有5个控制关卡。这5个关卡处的检查规则分别放在5个规则链中叫钩子函数(hook functions)。也就是说5条链对应着数据包传输路径中的5个控制关卡,链中的规则会在对应的关卡检查和处理。任何一个数据包,只要经过本机,必然经过5个链中的某个或某几个。
Netfilter中的五个规则链
规则链 | 作用 |
---|---|
PREROUTING | 数据包刚进入网络接口之后,路由之前 |
INPUT | 数据包从内核流入用户空间 |
FORWARD | 在内核空间中,从一个网络接口进入,到另一个网络接口去。转发过滤。 |
OUTPUT | 数据包从用户空间流出到内核空间 |
POSTROUTING | 路由后,数据包离开网络接口前 |