在Windows操作系统中,防火墙是保障计算机安全的重要屏障,用于监控和控制进出网络的数据流,通过命令提示符(CMD)可以高效地管理防火墙规则,适用于批量操作、自动化脚本或无图形界面的服务器环境,以下将详细介绍CMD中与防火墙相关的命令及其使用方法。

基础防火墙命令
-
检查防火墙状态
使用netsh advfirewall show allprofiles命令可查看所有防火墙配置文件(域、专用、公用)的状态,输出中“State”显示“ON”表示防火墙已启用,“OFF”则表示禁用,若需查看特定配置文件,可添加参数profile=domain|private|public。 -
启用/禁用防火墙
- 启用所有配置文件的防火墙:
netsh advfirewall set allprofiles state on - 禁用公用配置文件的防火墙:
netsh advfirewall set publicprofile state off - 注意:禁用防火墙会降低系统安全性,建议仅在特定网络环境下临时操作。
- 启用所有配置文件的防火墙:
高级防火墙规则管理
-
添加入站规则
通过netsh advfirewall firewall add rule命令可创建自定义规则,允许特定端口的TCP连接:netsh advfirewall firewall add rule name="允许HTTP端口" dir=in action=allow protocol=TCP localport=80
参数说明:
name为规则名称,dir为数据流方向(in/out),action为操作(allow/block),protocol为协议类型,localport为本地端口。
(图片来源网络,侵删) -
添加出站规则
阻止特定应用程序的出站连接:netsh advfirewall firewall add rule name="阻止记事本出站" dir=out program="C:\Windows\System32\notepad.exe" action=block
-
删除规则
根据规则名称删除:netsh advfirewall firewall delete rule name="允许HTTP端口"
防火墙规则查询与导出
-
列出所有规则
使用netsh advfirewall firewall show rule name=all可查看当前所有规则,支持按协议、端口或程序过滤,仅显示TCP规则:netsh advfirewall firewall show rule protocol=TCP
-
导出/导入防火墙配置
(图片来源网络,侵删)- 导出当前配置到文件:
netsh advfirewall export "C:\firewall.wfw" - 导入配置:
netsh advfirewall import "C:\firewall.wfw"
此功能适用于快速备份或批量部署防火墙策略。
- 导出当前配置到文件:
防火墙日志与监控
-
启用日志记录
默认情况下,防火墙日志未启用,可通过以下命令开启并设置日志路径:netsh advfirewall set currentprofile logging filename "C:\firewall.log" netsh advfirewall set currentprofile logging enabled yes
日志文件记录被阻止或允许的连接,包含时间、源/目标IP、端口等信息。
-
查看日志
使用type命令查看日志内容:type "C:\firewall.log"
或通过
wevtutil qe Security /c:10 /rd:true /f:text查询Windows事件日志中的防火墙事件(需提前在“事件查看器”中启用防火墙审核策略)。
防火墙配置文件优先级
Windows防火墙支持三种配置文件,其优先级及适用场景如下表所示:
| 配置文件类型 | 适用网络环境 | 默认规则示例 | 优先级 |
|---|---|---|---|
| 域(Domain) | 域网络环境 | 信任域内计算机 | 最高 |
| 专用(Private) | 家庭或工作网络 | 允许文件共享 | 次高 |
| 公用(Public) | 公共网络(如咖啡厅) | 限制入站连接 | 最低 |
当网络类型变化时,系统会自动切换对应配置文件,可通过netsh advfirewall show currentprofile查看当前激活的配置文件。
常见操作场景示例
-
临时开放端口用于测试
netsh advfirewall firewall add rule name="临时测试端口" dir=in action=allow protocol=TCP localport=3389
测试完成后通过
delete rule删除规则。 -
阻止特定IP地址
netsh advfirewall firewall add rule name="阻止恶意IP" dir=in action=block remoteip=192.168.1.100
-
批量导入规则
将规则保存为文本文件(如rules.txt),每行一条命令,通过以下方式批量执行:for /f %i in (rules.txt) do netsh advfirewall firewall add rule %i
注意事项
- 管理员权限:所有防火墙命令均需以管理员身份运行CMD,否则会提示“拒绝访问”。
- 规则冲突:当多条规则匹配同一数据流时,优先级更高的规则(如按规则顺序、域专用公用配置文件顺序)生效。
- 第三方防火墙:若安装第三方安全软件,建议先禁用其防火墙,避免与Windows防火墙冲突。
相关问答FAQs
问题1:如何通过CMD快速检查防火墙是否已阻止某个端口?
解答:使用netsh advfirewall firewall show rule dir=in | findstr "80"命令,查看是否包含目标端口(如80)的规则,若输出中存在action=block且端口匹配,则表示该端口被阻止,若无相关规则,则需检查是否由其他安全软件拦截。
问题2:防火墙规则导出后如何在另一台电脑上应用?
解答:将导出的.wfw文件复制到目标电脑,以管理员身份运行CMD,执行netsh advfirewall import "文件路径"命令即可导入规则,导入前建议备份当前防火墙配置,避免覆盖现有策略。
