什么是防火墙最小权限原则?

1 人参与

防火墙最小权限原则(Least Privilege)要求只在必要的网络区域或配置文件中开放业务所需的端口和协议,所有未明确放行的流量默认被阻断。该原则的核心在于将攻击面压缩到最小范围,防止因多余开放导致的横向渗透或服务被利用。实现时必须先明确业务流向:哪些服务需要入站访问,哪些仅需出站请求,然后在对应的防火墙模型中精确限定。

linux 环境下,基于 firewalld 的实现通常通过 zone 来划分安全等级。以内部服务器所在的 internal 区域为例,只需在该 zone 中永久添加业务端口即可:

sudo firewall-cmd --permanent --zone=internal --add-port=8080/tcp   # Web 应用
sudo firewall-cmd --permanent --zone=internal --add-port=3306/tcp   # MySQL
sudo firewall-cmd --permanent --zone=internal --add-port=9200/tcp   # Elasticsearch
sudo firewall-cmd --permanent --zone=internal --add-port=6379/tcp   # Redis
sudo firewall-cmd --reload

上述命令确保只有 internal 区域的流量可以访问四个端口,公共区域仍保持默认阻断,符合最小权限的要求。

在 Windows 环境,Windows Defender 防火墙 采用入站/出站规则配合网络配置文件(Domain、Private、Public)实现同等控制。针对内部网络(Private 配置文件),可使用 PowerShell 创建对应规则:

New-NetFirewallRule -DisplayName "Allow TCP 8080 - WebApp" `
    -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Private
New-NetFirewallRule -DisplayName "Allow TCP 3306 - MySQL" `
    -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow -Profile Private
New-NetFirewallRule -DisplayName "Allow TCP 9200 - Elasticsearch" `
    -Direction Inbound -Protocol TCP -LocalPort 9200 -Action Allow -Profile Private
New-NetFirewallRule -DisplayName "Allow TCP 6379 - Redis" `
    -Direction Inbound -Protocol TCP -LocalPort 6379 -Action Allow -Profile Private

同样,仅在 Private 网络下放行,Public 网络保持阻断,形成跨平台的最小权限基线。

实施要点

  • 明确业务需求:先列出必须开放的端口和对应协议,避免盲目放行。
  • 统一安全基线linux 使用统一的 internal(或自定义)zone,Windows 统一使用 Private 配置文件,确保两套系统的权限范围相匹配。
  • 审计与验证linux 可通过 firewall-cmd --list-all --zone=internal 检查已放行端口;Windows 则使用 Get-NetFirewallRule -Profile Private | Where-Object {$_.Direction -eq "Inbound"} 列出入站规则。
  • 定期清理:对不再使用的端口及时删除对应规则,防止权限漂移。

通过上述步骤,防火墙的访问控制严格限定在业务必需范围内,最大限度降低潜在攻击面,真正落地最小权限原则。

参与讨论

1 条评论
  • Deathwhisper

    默认全部阻断确实是最稳妥的

    回复