Configures pfSense firewall rules, NAT policies, VPN tunnels, and traffic shaping for network segmentation, traffic control, and protecting SMB/enterprise internal networks.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 部署边界或内部防火墙(firewall)以分段和保护网络区域(DMZ、内部、访客、IoT)
Configures pfSense firewall rules, NAT, VPN tunnels, traffic shaping, VLANs, DHCP, and DNS for network segmentation and zone protection in enterprise/SMB setups.
Configures pfSense firewall rules, NAT policies, VPN tunnels, and traffic shaping to enforce network segmentation, control traffic, and secure zones in enterprise/SMB networks.
Manages UniFi firewall policies using natural language to create, modify, review rules, content filters, and traffic policies. Applies templates for IoT isolation, guest lockdown, and time-based controls.
Share bugs, ideas, or general feedback.
不适用于:替代单个系统上的基于主机的防火墙、无专用硬件加速的 SSL/TLS 深度包检测,或作为不配合 IDS/IPS 的唯一安全控制。
访问 pfSense WebConfigurator 并定义接口:
导航:Interfaces > Assignments
WAN 接口(igb0):
- 类型:来自 ISP 的 DHCP 或静态 IP
- 阻止私有网络:启用
- 阻止 bogon 网络:启用
LAN 接口(igb1):
- IPv4:10.10.1.1/24
- 描述:CORPORATE_LAN
创建 VLAN:
导航:Interfaces > VLANs > Add
- igb1 上的 VLAN 10:DMZ(10.10.10.1/24)
- igb1 上的 VLAN 20:SERVERS(10.10.20.1/24)
- igb1 上的 VLAN 30:GUEST(10.10.30.1/24)
- igb1 上的 VLAN 40:IOT(10.10.40.1/24)
分配 VLAN:
导航:Interfaces > Assignments > 为每个 VLAN 添加
启用每个接口并分配网关 IP
导航:Services > DHCP Server
CORPORATE_LAN(10.10.1.0/24):
范围:10.10.1.100 - 10.10.1.200
DNS:10.10.20.10(内部 DNS 服务器)
网关:10.10.1.1
DMZ(10.10.10.0/24):
范围:10.10.10.100 - 10.10.10.200
DNS:10.10.20.10
网关:10.10.10.1
GUEST(10.10.30.0/24):
范围:10.10.30.100 - 10.10.30.200
DNS:1.1.1.1, 8.8.8.8(仅公共 DNS)
网关:10.10.30.1
导航:Services > DNS Resolver
在除 GUEST 外的所有接口上启用 DNS Resolver
启用 DNSSEC
配置向上游 DNS 服务器转发
导航:Firewall > Aliases
RFC1918_Networks:
类型:网络
值:10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
WebPorts:
类型:端口
值:80, 443
ManagementPorts:
类型:端口
值:22, 3389, 5900
CriticalServers:
类型:主机
值:10.10.20.10, 10.10.20.11, 10.10.20.12
BlockedCountries:
类型:URL 表
URL: https://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
更新:每 24 小时
导航:Firewall > Rules
=== WAN 规则 ===
# 默认阻止所有入站(隐式拒绝)
# 允许已建立/相关流量(pfSense 有状态模式下自动处理)
# 允许入站到 DMZ Web 服务器(通过 NAT)
动作:Pass | 接口:WAN | 协议:TCP
来源:任意 | 目标:WAN 地址 | 端口:80, 443
描述:允许 HTTP/HTTPS 到 DMZ Web 服务器
=== LAN 规则 ===
# 允许 LAN 访问内部服务器
动作:Pass | 接口:LAN | 协议:TCP
来源:LAN net | 目标:SERVERS net | 端口:WebPorts, 3306, 5432
描述:允许 LAN 访问内部 Web 和数据库服务器
# 允许 LAN 访问互联网
动作:Pass | 接口:LAN | 协议:任意
来源:LAN net | 目标:! RFC1918_Networks
描述:允许 LAN 访问互联网(通过 RFC1918 排除阻止 VLAN 间流量)
# 阻止 LAN 到 IoT(在隐式允许前明确拒绝)
动作:Block | 接口:LAN | 协议:任意
来源:LAN net | 目标:IOT net
描述:阻止 LAN 到 IoT 的直接通信
=== DMZ 规则 ===
# 允许 DMZ Web 服务器查询内部 DNS
动作:Pass | 接口:DMZ | 协议:TCP/UDP
来源:DMZ net | 目标:10.10.20.10 | 端口:53
描述:允许 DMZ DNS 查询到内部解析器
# 仅允许 DMZ 访问互联网进行更新
动作:Pass | 接口:DMZ | 协议:TCP
来源:DMZ net | 目标:任意 | 端口:80, 443
描述:允许 DMZ 出站 HTTP/HTTPS 进行更新
# 阻止所有其他 DMZ 流量
动作:Block | 接口:DMZ | 协议:任意
来源:DMZ net | 目标:任意
描述:DMZ 默认拒绝
=== GUEST 规则 ===
# 仅允许访客访问互联网(DNS 和 Web)
动作:Pass | 接口:GUEST | 协议:TCP/UDP
来源:GUEST net | 目标:! RFC1918_Networks | 端口:53, 80, 443
描述:仅允许访客访问互联网
# 阻止所有访客到内部的流量
动作:Block | 接口:GUEST | 协议:任意
来源:GUEST net | 目标:RFC1918_Networks
描述:阻止访客访问所有内部网络
=== IOT 规则 ===
# 允许 IoT 访问特定云端点
动作:Pass | 接口:IOT | 协议:TCP
来源:IOT net | 目标:! RFC1918_Networks | 端口:443, 8883
描述:允许 IoT HTTPS 和 MQTT 到云端
# 阻止 IoT 设备间通信
动作:Block | 接口:IOT | 协议:任意
来源:IOT net | 目标:IOT net
描述:防止 IoT 横向移动
# 阻止 IoT 到所有内部网络
动作:Block | 接口:IOT | 协议:任意
来源:IOT net | 目标:RFC1918_Networks
描述:阻止 IoT 访问内部
导航:Firewall > NAT > Port Forward
# DMZ 中的 Web 服务器
接口:WAN | 协议:TCP
目标:WAN 地址 | 端口:443
重定向目标 IP:10.10.10.50 | 端口:443
NAT 反射:启用
描述:HTTPS 到 DMZ Web 服务器
# SSH 跳板机(非标准端口)
接口:WAN | 协议:TCP
目标:WAN 地址 | 端口:2222
重定向目标 IP:10.10.20.11 | 端口:22
描述:通过端口 2222 SSH 到内部跳板机
导航:Firewall > NAT > Outbound
模式:混合出站 NAT
# 添加规则使 DMZ 服务器使用专用公网 IP
接口:WAN | 来源:10.10.10.0/24
转换地址:<dedicated_public_ip>
描述:DMZ 通过专用 IP 出站 NAT
导航:Status > System Logs > Settings
远程日志:启用
远程日志服务器:10.10.20.15:514(Syslog/SIEM)
记录防火墙默认阻止:启用
导航:Firewall > Rules
在关键规则上启用日志记录:
- 所有 BLOCK 规则
- WAN 入站 PASS 规则
- VLAN 间 PASS 规则
导航:Diagnostics > pfTop
监控实时连接状态和带宽使用
安装 pfBlockerNG 包:
导航:System > Package Manager > Available Packages
安装 pfBlockerNG-devel
配置 IP 黑名单(Spamhaus DROP、Emerging Threats)
配置 DNSBL 进行恶意软件域名阻断
# 导出配置备份
导航:Diagnostics > Backup & Restore
下载 XML 配置文件
# 从每个区域测试规则
# 从 LAN:
curl -I https://10.10.20.10 # 应成功(LAN 到 SERVERS)
curl -I https://10.10.40.5 # 应失败(LAN 到 IOT 被阻止)
# 从 GUEST:
curl -I https://www.google.com # 应成功(互联网访问)
curl -I https://10.10.20.10 # 应失败(访客到内部被阻止)
# 从 DMZ:
nslookup google.com 10.10.20.10 # 应成功(允许 DNS)
ssh 10.10.1.50 # 应失败(DMZ 到 LAN 被阻止)
# 验证日志记录
导航:Status > System Logs > Firewall
检查被阻止和通过的流量是否正确记录
# 计划自动配置备份
导航:Diagnostics > AutoConfigBackup
启用自动备份到 Netgate 云或本地存储
| 术语 | 定义 |
|---|---|
| 有状态防火墙(Stateful Firewall) | 跟踪网络连接状态的防火墙,自动允许已建立会话的返回流量,无需明确规则 |
| 别名(Alias) | pfSense 中 IP 地址、网络或端口的命名组,简化规则管理并提高可读性 |
| NAT(网络地址转换) | 内部和外部网络之间的 IP 地址转换,包括入站访问内部服务的端口转发 |
| 浮动规则(Floating Rules) | 同时跨多个接口应用的 pfSense 规则,在每接口规则之前处理 |
| pfBlockerNG | 集成 IP 信誉黑名单和基于 DNS 的黑名单进行自动威胁阻断的 pfSense 包 |
| 规则处理顺序 | pfSense 在每个接口标签内从上到下评估规则;第一个匹配优先,未匹配的流量默认被阻止 |
场景背景:一家医疗实践机构需要对其网络进行分段以满足 HIPAA 要求。他们有一个互联网连接、一台电子健康记录(EHR)服务器、员工工作站、访客 WiFi 网络和医疗 IoT 设备(生命体征监护仪、影像设备)。预算限制要求使用开源解决方案。
方法:
常见陷阱:
## pfSense 防火墙配置报告
**设备**: pfSense 2.7.2(Netgate 4100)
**接口**: WAN (igb0), LAN (igb1), DMZ (igb2), MGMT (igb3)
**VLAN**: 已配置 4 个(员工、服务器、访客、IoT)
**总规则数**: 所有接口共 28 条活跃规则
### 各接口规则摘要
| 接口 | Pass 规则 | Block 规则 | 已启用日志 |
|-----------|-----------|-------------|-----------------|
| WAN | 2 | 1(默认) | 是 |
| LAN | 4 | 2 | 是(阻止) |
| DMZ | 3 | 1(默认) | 是 |
| GUEST | 1 | 2 | 是 |
| IOT | 1 | 3 | 是 |
### 安全控制
- pfBlockerNG:12 个 IP 黑名单 + 已启用 DNSBL
- Snort IDS:在 WAN 和 LAN 接口上运行
- VPN:已配置带 MFA 的 OpenVPN 远程访问
- 日志:所有流量转发至 SIEM(10.10.20.15)