第220篇:全局白名单与黑名单策略

关键词:白名单、黑名单、访问控制、IP信誉、威胁情报、全局地址列表、自动化封堵、安全策略优先级、误报处理

一、引言

在前面的文章中,我们依次学习了 IPsec VPN 的各种组网模式、GRE 隧道技术、DNS 安全防护、DDoS 攻击原理与防护机制。无论是 VPN 策略、DNS 过滤还是 Anti-DDoS 防护,其底层都依赖一个核心概念:基于地址和域名的允许/拒绝列表——即白名单和黑名单。

白名单(Whitelist)和黑名单(Blacklist)是网络安全中最基础也最重要的访问控制手段。全局白名单与黑名单策略将分散在各个安全策略中的地址管理统一到全局层面,实现一次配置、多处引用、集中管理的目标。

二、核心概念

2.1 白名单与黑名单

列表类型 定义 默认策略 适用场景
白名单 明确允许的地址/域名/端口列表 默认拒绝所有 高安全要求、最小权限原则
黑名单 明确禁止的地址/域名/端口列表 默认允许所有 已知威胁封锁、通用防护

2.2 全局地址列表

全局地址列表(Global Address List)是一种将 IP 地址、地址范围、网段等统一定义的全局对象。安全策略中直接引用地址列表而非硬编码 IP 地址,当地址列表修改时,所有引用该列表的策略自动生效。

对象类型 说明 示例
单 IP 地址 单个 IP 203.0.113.1
地址范围 IP 地址范围 10.1.1.1-10.1.1.100
地址段 CIDR 网段 10.10.0.0/16
域名 域名列表 *.example.com
服务/端口 端口或服务定义 TCP 80/443

2.3 策略优先级

当白名单和黑名单对同一地址同时生效时,需要明确的优先级规则来判定最终动作:

策略优先级 - 图示

2.4 IP 信誉与威胁情报

现代黑名单不仅依赖管理员手动维护,更多依赖于自动化的威胁情报(Threat Intelligence)系统。威胁情报从多个来源采集恶意 IP、域名和 URL,实时更新到本地或云端的黑名单数据库中。

情报来源 说明 更新频率
云端威胁情报 安全厂商云端大数据平台 实时
行业共享情报 金融行业、运营商共享的威胁信息 小时级
本地学习 基于本地流量分析自动学习 持续
手动添加 管理员手动添加已知威胁 按需
API 对接 对接第三方威胁情报 API configurable

三、技术细节

3.1 白名单策略设计

白名单策略的核心设计原则是最小权限原则(Principle of Least Privilege):只允许已知的、必要的通信。

设计原则 说明
默认拒绝 所有未明确允许的流量默认拒绝
精确匹配 使用最小范围的 IP 地址和端口
定期审查 定期审计白名单条目,移除不再需要的条目
变更审批 白名单变更需要经过审批流程
灰度发布 新白名单条目先在测试环境验证
备份恢复 白名单变更前后做好备份

3.2 黑名单策略设计

设计原则 说明
自动化更新 通过威胁情报 API 自动更新黑名单
时效性管理 黑名单条目设置有效期,到期自动移除
误报处理 提供快速解除黑名单的应急通道
分类分级 按威胁等级分类(高/中/低),分别处理
日志审计 记录所有黑名单命中事件

3.3 黑白名单联动场景

场景 联动方式
Anti-DDoS 攻击源 IP 自动加入黑名单
DNS 过滤 恶意域名加入 DNS 黑名单
入侵检测 IDS 告警的源 IP 自动加入临时黑名单
漏洞防护 已知漏洞利用的来源 IP 加入黑名单
合规审计 白名单作为合规审计的基线配置

2.8 黑名单自动封堵流程

黑名单自动封堵流程 - 图示

四、实战配置/案例分析

4.1 华为 USG 防火墙:全局地址列表与黑白名单配置

# ========== 全局地址列表配置 ==========
system-view
sysname HQ-Firewall

# 1. 创建IP地址对象
ip address-object Trusted-DNS
 object 1 address 10.100.1.53
 object 2 address 8.8.8.8
 object 3 address 114.114.114.114
quit

ip address-object HQ-Internal
 object 1 address 10.100.0.0 mask 255.255.0.0
quit

ip address-object DMZ-Servers
 object 1 address 172.16.1.10
 object 2 address 172.16.1.11
 object 3 address 172.16.1.12
quit

# 2. 创建地址组(全局地址列表)
ip address-object-group WhiteList-DNS
 object Trusted-DNS
quit

ip address-object-group WhiteList-Internal
 object HQ-Internal
quit

ip address-object-group BlackList-Malicious
 object 1 address 185.220.101.0 mask 255.255.255.0
 object 2 address 23.129.64.0 mask 255.255.224.0
 object 3 address 171.25.193.0 mask 255.255.255.0
quit

# 3. 配置服务/端口对象
service-custom Web-Service
 tcp destination-port eq 80
 tcp destination-port eq 443
quit

service-custom DNS-Service
 udp destination-port eq 53
 tcp destination-port eq 53
quit

# ========== 白名单策略配置 ==========

# 4. 配置安全策略-白名单模式
security-policy
 # 黑名单优先:拒绝所有已知恶意地址
 rule name BlackList-Deny
  source-zone any
  destination-zone any
  source-address BlackList-Malicious
  action deny
  log enable
  description "全局黑名单-拒绝已知恶意地址"

 # 内网到DMZ:仅允许必要服务
 rule name Internal-to-DMZ
  source-zone trust
  destination-zone dmz
  source-address WhiteList-Internal
  destination-address DMZ-Servers
  action permit
  service Web-Service
  log enable
  description "白名单-内网访问DMZ Web服务"

 # DNS:仅允许配置的DNS服务器
 rule name DNS-Allow
  source-zone trust
  destination-zone untrust
  destination-address WhiteList-DNS
  action permit
  service DNS-Service
  log enable
  description "白名单-仅允许配置的DNS服务器"

 # 默认策略:拒绝所有
 rule name Default-Deny
  source-zone any
  destination-zone any
  action deny
  log enable
  description "默认拒绝策略"
quit

4.2 自动黑名单联动 Anti-DDoS

# ========== 自动黑名单联动配置 ==========

# 1. 配置动态黑名单
address dynamic Dynamic-BlackList
 # 动态黑名单最大条目数
 max-entry 10000
 # 动态条目过期时间(秒)
 expire-time 3600
quit

# 2. 配置Anti-DDoS联动动态黑名单
anti-attack
 ip-frequency
  syn
   enable
   reference-time 5
   threshold 200
   # 超过阈值自动加入动态黑名单
   action dynamic-black-list
   black-list Dynamic-BlackList
   # 黑名单持续时间(秒)
   black-list-time 1800
  quit
  icmp
   echo-flood
    enable
    reference-time 5
    threshold 500
    action dynamic-black-list
    black-list Dynamic-BlackList
    black-list-time 1800
   quit
  quit
quit

# 3. 安全策略引用动态黑名单
security-policy
 rule name Dynamic-BlackList-Deny
  source-zone any
  destination-zone any
  source-address Dynamic-BlackList
  action deny
  log enable
  description "动态黑名单-Anti-DDoS联动自动封堵"
quit

# 4. 查看动态黑名单状态
display address dynamic Dynamic-BlackList

4.3 故障排查案例:黑名单误封导致业务中断

故障现象:某企业客户的 Web 服务器突然无法被外部用户访问。防火墙日志显示大量来自某个 IP 段(203.0.113.0/24)的请求被黑名单策略拦截。经确认,该 IP 段为企业合作方的办公网络。

排查步骤:

  1. 检查黑名单命中日志
display security log | begin "BlackList-Deny"

显示合作方 IP 段 203.0.113.0/24 的所有流量被黑名单规则拒绝。

  1. 检查黑名单来源
display ip address-object-group BlackList-Malicious

发现 203.0.113.0/24 被威胁情报系统标记为"可疑扫描源",自动加入黑名单。

  1. 根因分析 合作方网络中存在一台感染病毒的终端,该终端对外进行了端口扫描行为。威胁情报系统检测到扫描行为,将合作方整个 /24 网段标记并加入黑名单。由于黑名单规则优先级高于业务白名单规则,合作方所有访问被拦截。

  2. 解决方案

# 紧急恢复:从黑名单中移除合作方网段
ip address-object-group BlackList-Malicious
 undo object 1 address 203.0.113.0 mask 255.255.255.0
quit

# 添加合作方到白名单(白名单优先级高于黑名单)
ip address-object Partner-Network
 object 1 address 203.0.113.0 mask 255.255.255.0
quit

ip address-object-group WhiteList-Partners
 object Partner-Network
quit

# 调整安全策略优先级:白名单在黑名单之前
security-policy
 # 白名单优先
 rule name WhiteList-Allow-Partners
  source-zone untrust
  destination-zone dmz
  source-address WhiteList-Partners
  action permit
  service Web-Service
  log enable
  description "白名单优先-合作伙伴网络"

 # 黑名单次之
 rule name BlackList-Deny
  source-zone any
  destination-zone any
  source-address BlackList-Malicious
  action deny
  log enable
  description "全局黑名单"
quit

# 长期改进:配置威胁情报置信度阈值
threat-intelligence
 # 仅自动封堵高置信度的威胁(置信度>90)
 auto-blacklist confidence-threshold 90
 # 中置信度仅告警不封堵
 alarm-only confidence-threshold 60
quit

此次事件暴露了两个问题:黑名单规则的粒度不够精确(封整个 /24 而非单个 IP),以及缺少白名单优先于黑名单的机制。修复后,通过配置白名单优先和威胁情报置信度阈值,避免了类似的误封事件。

五、总结

知识点 要点
白名单 最小权限原则,仅允许已知必要通信
黑名单 封锁已知威胁,依赖威胁情报自动更新
全局地址列表 统一地址管理,一处修改,全局生效
策略优先级 白名单优先于黑名单优先于默认策略
动态黑名单 Anti-DDoS/IPS 联动,自动封堵攻击源
威胁情报 云端大数据 + 本地学习 + 手动维护
误报处理 白名单豁免、置信度阈值、快速解封机制
审计合规 定期审查黑白名单,记录变更历史

思考

  1. 在"白名单优先"和"黑名单优先"两种策略执行顺序中,各自适用于什么安全场景?是否存在"白名单+黑名单"双校验的必要性?
  2. 动态黑名单的条目设置过期时间(如 1800 秒)后自动移除。如果攻击者在黑名单过期后继续攻击,防护系统应如何设计才能实现"攻击持续则黑名单持续"的效果?
  3. 当黑白名单规模达到数十万条时,防火墙的策略匹配性能会受到什么影响?有哪些技术手段可以优化大规模黑白名单的匹配效率?

下篇预告:第221篇:应用层识别与深度包检测 DPI