linux防火墙原理详细解释
1. 防火墙工具与服务
在CentOS操作系统中,主要使用的防火墙工具有system-config-firewall
、firewall-config
和firewall-cmd
。这些工具通过相应的服务,如iptables service
和firewalld daemon & service
,与内核的netfilter模块进行交互,来实现防火墙的功能。
1.1 system-config-firewall
- 描述: 一个用于图形化管理防火墙规则的工具。
- 服务: 使用
iptables service
来应用和管理防火墙规则。
1.2 firewall-config
- 描述: 一个图形化配置工具,用于管理
firewalld
服务。 - 服务: 依赖于
firewalld daemon & service
来管理规则和状态。
1.3 firewall-cmd
- 描述: 一个命令行工具,用于与
firewalld
服务进行交互。 - 服务: 直接与
firewalld daemon & service
通信,应用和修改规则。
2. Netfilter/iptables
netfilter
是Linux内核的一个数据包处理模块,iptables
是与之交互的用户空间工具。它们共同实现了防火墙的功能,主要包括以下几部分:
2.1 网络地址转换(NAT)
- 功能: 实现私有网络地址与公有网络地址之间的转换。
- 示例: 将内部网络的IP地址192.168.1.2转换为外部网络的IP地址203.0.113.2。
2.2 数据包内容修改(Mangle)
- 功能: 修改通过防火墙的数据包内容,例如修改IP头部。
- 示例: 改变数据包的TTL值(Time to Live),防止数据包无限制地在网络中传输。
2.3 数据包过滤(Filter)
- 功能: 根据预定义的规则过滤数据包,允许或拒绝数据包通过。
- 示例: 拒绝所有来自IP地址192.168.1.3的数据包,允许其他IP地址的数据包。
3. iptables命令
iptables
命令用于定义和管理防火墙规则,操作的核心对象是表(tables)、链(chains)和规则(rules)。
3.1 表(Tables)
- 描述: 存储相同功能规则的集合。
主要表:
filter
: 主要用于数据包过滤。nat
: 主要用于网络地址转换。mangle
: 主要用于数据包修改。raw
: 主要用于关闭nat表上启用的连接追踪机制。
3.2 链(Chains)
- 描述: 由表中的规则组成的一系列检查点。
主要链:
INPUT
: 处理入站数据包。FORWARD
: 处理转发的数据包。OUTPUT
: 处理出站数据包。PREROUTING
: 数据包在路由决策前处理。POSTROUTING
: 数据包在路由决策后处理。
3.3 规则(Rules)
- 描述: 每条规则定义了匹配条件和相应的处理动作。
示例:
- 匹配条件:
-s 192.168.1.2
(源地址为192.168.1.2) - 处理动作:
-j DROP
(丢弃数据包)
- 匹配条件:
4. 数据包的处理流程
数据包在通过防火墙时,会经过多个处理点,分别由不同的链和表进行处理。
4.1 处理步骤
- PREROUTING: 入站数据包在路由前处理。
- INPUT: 入站数据包处理。
- FORWARD: 转发数据包处理。
- OUTPUT: 出站数据包处理。
- POSTROUTING: 出站数据包在路由后处理。
4.2 示例流程
一个从外部网络进入本机的HTTP请求数据包的处理流程如下:
- PREROUTING: 进行NAT转换,将外部地址转换为内部地址。
- INPUT: 检查数据包是否符合入站规则。
- 用户空间: 数据包到达用户空间的HTTP服务器进程进行处理。
一个从本机发出的HTTP响应数据包的处理流程如下:
- OUTPUT: 检查数据包是否符合出站规则。
- POSTROUTING: 进行NAT转换,将内部地址转换为外部地址。
5. 防火墙表和链的优先级
不同的表和链在处理数据包时有优先级关系,通常优先级从高到低依次为:
- raw -> mangle -> nat -> filter
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。