Windows防火墙规则导出工具:让安全配置可备份、可迁移、可审计

Windows 防火墙规则导出工具:让安全配置可备份、可迁移、可审计

一、痛点:Windows 防火墙规则管理的三大难题

作为安全工程师和系统管理员,日常面对 Windows 防火墙规则时,往往会遇到这几个头疼的问题:

1. 导出格式不可读

Windows 自带的防火墙导出功能(通过「高级安全 Windows Defender 防火墙」界面或 netsh advfirewall export 命令),导出来的是 .wfw 格式的二进制文件。直接打开是这样的乱码:

复制代码
████░░░░░░░░░░░  ← 不可读

运维人员根本无法肉眼核对规则内容,无法做 diff 对比,也无法在代码仓库中管理这些配置。

2. 导入会覆盖已有规则

用 Windows 自带的导入功能,会直接覆盖现有的防火墙策略。在生产环境操作时,这意味着:一旦导入出问题,所有现有规则全部丢失,风险极高。

3. 规则迁移困难

换机器、换环境、克隆系统时,好不容易配好的防火墙策略无法方便地迁移。手动一条条复制?几百条规则根本不可能。


二、解决方案:export_firewall_rules

这个开源工具用 Python 写,专门解决上述三个痛点:

GitHub 地址: https://github.com/hyang0/export_firewall_rules

核心功能

  • 将 Windows 防火墙规则导出为 可读的 netsh 脚本格式
  • 导出的脚本直接可用,复制到新机器执行即可恢复规则
  • 支持导出后学习 netsh 语法,提升对防火墙规则的理解

支持导出的规则类型

类型 说明
出站 / 入站规则 dir=in / dir=out
TCP / UDP / ICMP 协议 protocol=tcp/udp/icmpv4
应用程序路径规则 program= 参数
IP 段规则 remoteip= 支持 CIDR 和范围
指定端口规则 localport= / remoteport=

三、使用方法

第一步:安装 Python 环境

工具基于 Python,需要 Python 3.x。macOS / Linux 可以直接执行,Windows 上建议使用 Python 3。

bash 复制代码
git clone https://github.com/hyang0/export_firewall_rules.git
cd export_firewall_rules
pip install -r requirements.txt

第二步:查看当前防火墙规则

在导出之前,可以先查看系统当前的防火墙规则:

bash 复制代码
# 查看所有入站规则(Windows PowerShell)
Get-NetFirewallRule -Direction Inbound | Get-NetFirewallPortFilter | Select-Object -First 20

# 查看出站规则
Get-NetFirewallRule -Direction Outbound | Select-Object -First 10

第三步:使用工具导出规则

bash 复制代码
python export_rules.py

工具会连接到 Windows 防火墙 API,读取所有规则,然后输出为 netsh 格式的脚本文件。

第四步:备份导出的脚本

导出的内容示例:

bash 复制代码
# ============================================
# Windows 防火墙规则导出
# 导出时间: 2026-04-19
# 规则总数: 若干
# ============================================

# 规则示例1:允许特定程序
netsh advfirewall firewall add rule \
    name="360ceupdate.exe" \
    dir=in \
    action=allow \
    enable=yes \
    profile=public \
    protocol=tcp \
    program="C:\Users\Administrator\AppData\Local\360ChromeX\Chrome\Application\22.3.3087.64\installer\360ceupdate.exe" \
    remoteip=192.168.1.1-192.168.1.20

# 规则示例2:允许内网网段
netsh advfirewall firewall add rule \
    name="inner" \
    dir=out \
    action=allow \
    enable=yes \
    remoteip=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

# 规则示例3:允许 ICMP Ping
netsh advfirewall firewall add rule \
    name="ping" \
    dir=in \
    action=allow \
    enable=yes \
    protocol=icmpv4

第五步:导入到新机器

将导出的脚本复制到目标机器,直接运行即可批量导入规则:

powershell 复制代码
# 方法1:直接执行脚本中的命令
netsh advfirewall import "backup.wfw"   # 先导入标准格式备份

# 方法2:手动执行导出的netsh命令
# (直接复制工具导出的脚本内容到 PowerShell 执行)

💡 建议: 先在测试环境执行,确认无误后再到生产环境操作。


四、进阶用法

4.1 定时备份防火墙规则(结合计划任务)

将导出操作写成脚本,加入 Windows 任务计划程序,实现自动化备份:

powershell 复制代码
# backup_firewall.ps1
$date = Get-Date -Format "yyyyMMdd"
$backupDir = "C:\FirewallBackups"
if (!(Test-Path $backupDir)) { New-Item -ItemType Directory -Path $backupDir }
python C:\Tools\export_firewall_rules\export_rules.py > "$backupDir\fw_rules_$date.txt"

注册计划任务:

powershell 复制代码
# 每天凌晨 2:00 自动备份
schtasks /create /tn "FirewallBackup" /tr "powershell.exe -File C:\backup_firewall.ps1" /sc daily /st 02:00

4.2 与 Git 版本控制结合

将导出的规则脚本纳入代码仓库管理,好处显而易见:

  • 📋 历史可追溯:每次修改都有 commit 记录

  • 🔄 变更可对比 :通过 git diff 清晰看到规则增减

  • 🔄 回滚容易:出问题时一键恢复到上一版本

  • 👥 团队协作:多人维护时规则变更可 review

    firewall-config/
    ├── rules/
    │ ├── base.txt # 基础规则(服务器必开端口)
    │ ├── dev.txt # 开发环境规则
    │ ├── prod.txt # 生产环境规则
    │ └── .gitignore
    └── backup_firewall.ps1 # 备份脚本

4.3 导出规则学习 netsh 语法

工具还有一个隐藏价值:学习 Windows 防火墙规则语法

很多安全工程师会用图形界面配置防火墙,但不知道怎么用命令行写规则。有了这个工具:

  1. 在图形界面手工创建一条规则 ✅
  2. 用工具导出为 netsh 格式 ✅
  3. 读懂语法结构,理解每行参数含义 ✅
  4. 以后直接写命令,不用开图形界面 ✅

五、安全加固建议

5.1 常用安全规则示例

powershell 复制代码
# 禁止所有入站连接(默认阻止策略)
netsh advfirewall set allprofiles firewallpolicy inboundblock,outboundallow

# 仅允许指定 IP 访问 RDP(3389)
netsh advfirewall firewall add rule \
    name="RDP-from-Office" \
    dir=in \
    action=allow \
    enable=yes \
    protocol=tcp \
    localport=3389 \
    remoteip=203.0.113.0/24   # 仅允许办公室 IP 段

# 禁止特定程序联网
netsh advfirewall firewall add rule \
    name="Block-P2P" \
    dir=out \
    action=block \
    enable=yes \
    program="C:\Tools\p2p.exe"

# 限制 SSH 仅对运维网段开放
netsh advfirewall firewall add rule \
    name="SSH-from-Admin" \
    dir=in \
    action=allow \
    enable=yes \
    protocol=tcp \
    localport=22 \
    remoteip=10.10.0.0/16

# 允许 Ping(ICMP)
netsh advfirewall firewall add rule \
    name="Allow-Ping" \
    dir=in \
    action=allow \
    enable=yes \
    protocol=icmpv4

5.2 导出前检查清单

导出规则前,建议先做以下检查:

复制代码
✅ 检查是否有重复规则(同名规则会冲突)
✅ 检查规则方向是否正确(in=入站,out=出站)
✅ 检查 IP 范围是否过宽(如 0.0.0.0/0 表示允许全网)
✅ 检查是否有过于宽松的 any/any 规则
✅ 确认 profile 设置(domain/private/public)

5.3 查看当前宽松规则

powershell 复制代码
# 查找允许所有流量的规则(高危)
Get-NetFirewallRule | Where-Object {
    $_.Action -eq 'Allow' -and
    ($_.Enabled -eq $true)
} | Get-NetFirewallPortFilter | Where-Object {
    $_.LocalPort -eq 'Any' -or $_.RemotePort -eq 'Any'
} | Select-Object -First 20

六、常见问题

Q1:导出的规则在新机器上执行报错?

A: 部分规则含绝对路径(如用户目录 C:\Users\xxx\),换了机器路径不匹配时该规则会失败。建议用 %USERPROFILE% 环境变量替代绝对路径:

powershell 复制代码
# 修改前
program="C:\Users\Administrator\...\app.exe"

# 修改后
program="%USERPROFILE%\...\app.exe"

Q2:导入时会不会覆盖现有规则?

A: 导出的 netsh 脚本不会覆盖 现有规则,它只是用 add rule 追加规则。如果需要全新导入,先清空现有规则:

powershell 复制代码
# 清空所有自定义规则(慎用!)
netsh advfirewall reset

Q3:macOS/Linux 能用吗?

A: 该工具依赖 Windows 防火墙 API,只能在 Windows 上运行。macOS 请使用 pfctl / ipfw,Linux 请使用 iptables / nftables


七、总结

痛点 解决方案
导出格式不可读 ✅ 导出为可读的 netsh 脚本
导入会覆盖规则 ✅ 使用 add rule 追加,安全
规则迁移困难 ✅ 脚本复制即可在新机器执行
无法版本管理 ✅ 纳入 Git 仓库管理
不懂 netsh 语法 ✅ 通过导出结果学习命令写法

这个工具虽然小,但解决的都是真实痛点。对于安全工程师、运维人员来说,将防火墙规则纳入版本控制、做到可备份可迁移,是安全运营的基本功。

工具地址: https://github.com/hyang0/export_firewall_rules
适用系统: Windows 10/11, Windows Server 2016+
依赖环境: Python 3.x
开源协议: MIT License

相关推荐
随身数智备忘录1 天前
安全巡检执行率能解决哪些场景痛点?一套安全巡检执行率提升方案实战
安全
流浪0011 天前
Linux基础篇(三)轻松拿捏入门级指令
linux·运维·服务器
爱喝水的鱼丶1 天前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载) 第二篇:ADT客户端完整安装与初始配置教程
运维·开发语言·学习·sap·abap
其实防守也摸鱼1 天前
Upload-labs:部署靶场及Pass-01实战解析
服务器·网络·安全·web安全·教程·文件上传·工具
菱玖1 天前
等保2.0及其测评
网络·安全·web安全
数字护盾(和中)1 天前
终端安全破局:银狐木马防御的 EDR 核心能力详解
网络·人工智能·安全
nature_forest1 天前
vivado2018.2固化程序方法之.bin文件固化法
windows·fpga开发
wanhengidc1 天前
云手机的兼容性与稳定性
大数据·运维·服务器·网络·人工智能·智能手机
团象科技1 天前
合规收紧,出海云账号如何稳、准、安全落地?
安全
Web极客码1 天前
2026年自建网站实战指南:从服务器到上线的完整方案
运维·服务器·php