linux防火墙原理详细解释

1. 防火墙工具与服务

在CentOS操作系统中,主要使用的防火墙工具有system-config-firewallfirewall-configfirewall-cmd。这些工具通过相应的服务,如iptables servicefirewalld 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请求数据包的处理流程如下:

  1. PREROUTING: 进行NAT转换,将外部地址转换为内部地址。
  2. INPUT: 检查数据包是否符合入站规则。
  3. 用户空间: 数据包到达用户空间的HTTP服务器进程进行处理。

一个从本机发出的HTTP响应数据包的处理流程如下:

  1. OUTPUT: 检查数据包是否符合出站规则。
  2. POSTROUTING: 进行NAT转换,将内部地址转换为外部地址。

5. 防火墙表和链的优先级

不同的表和链在处理数据包时有优先级关系,通常优先级从高到低依次为:

  • raw -> mangle -> nat -> filter

本文由mdnice多平台发布


逼格高的汤圆
10 声望2 粉丝