configuring-pfsense-firewall-rules
配置 pfSense 防火墙规则、NAT 策略、VPN 隧道和流量整形,以强制实施网络分段(network segmentation)、 控制流量,并保护企业及中小型企业环境中的内部网络区域。
Best use case
configuring-pfsense-firewall-rules is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
配置 pfSense 防火墙规则、NAT 策略、VPN 隧道和流量整形,以强制实施网络分段(network segmentation)、 控制流量,并保护企业及中小型企业环境中的内部网络区域。
Teams using configuring-pfsense-firewall-rules should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/configuring-pfsense-firewall-rules/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How configuring-pfsense-firewall-rules Compares
| Feature / Agent | configuring-pfsense-firewall-rules | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
配置 pfSense 防火墙规则、NAT 策略、VPN 隧道和流量整形,以强制实施网络分段(network segmentation)、 控制流量,并保护企业及中小型企业环境中的内部网络区域。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 配置 pfSense 防火墙规则 ## 适用场景 - 部署边界或内部防火墙(firewall)以分段和保护网络区域(DMZ、内部、访客、IoT) - 创建细粒度访问控制规则,限制 VLAN 和网络分段之间的流量 - 配置 NAT 规则,将端口转发到暴露于互联网的内部服务 - 使用 IPsec 或 OpenVPN 建立站点到站点或远程访问 VPN 隧道 - 实施流量整形和带宽管理以满足服务质量(QoS)需求 **不适用于**:替代单个系统上的基于主机的防火墙、无专用硬件加速的 SSL/TLS 深度包检测,或作为不配合 IDS/IPS 的唯一安全控制。 ## 前置条件 - pfSense 2.7+ 安装在专用硬件或虚拟机上,至少有两个网络接口 - 访问 pfSense WebConfigurator(默认:https://192.168.1.1) - 显示所有接口、VLAN 和期望流量流向的网络拓扑图 - 为每个网络区域规划好 DNS 和 DHCP 配置 - 了解 TCP/IP、NAT 和有状态防火墙概念 ## 工作流程 ### 步骤 1:配置网络接口和 VLAN 访问 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 ``` ### 步骤 2:为每个区域配置 DHCP 和 DNS ``` 导航: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 服务器转发 ``` ### 步骤 3:创建防火墙规则别名 ``` 导航: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 小时 ``` ### 步骤 4:按区域实施防火墙规则 ``` 导航: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 访问内部 ``` ### 步骤 5:配置 NAT 规则 ``` 导航: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 ``` ### 步骤 6:启用日志记录和监控 ``` 导航: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 进行恶意软件域名阻断 ``` ### 步骤 7:备份和测试配置 ```bash # 导出配置备份 导航: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 在每个接口标签内从上到下评估规则;第一个匹配优先,未匹配的流量默认被阻止 | ## 工具与系统 - **pfSense 2.7+**:基于 FreeBSD 的开源防火墙和路由器平台,具有 Web 管理和丰富的包生态系统 - **pfBlockerNG**:用于自动化威胁情报集成的 IP 和 DNS 黑名单包 - **Snort/Suricata 包**:作为 pfSense 包提供的 IDS/IPS 集成,用于内联流量检查 - **OpenVPN/IPsec**:内置 VPN 实现,用于站点到站点和远程访问连接 - **Netgate AutoConfigBackup**:pfSense 灾难恢复的基于云的配置备份服务 ## 常见场景 ### 场景:使用 pfSense 为小型企业网络分段 **场景背景**:一家医疗实践机构需要对其网络进行分段以满足 HIPAA 要求。他们有一个互联网连接、一台电子健康记录(EHR)服务器、员工工作站、访客 WiFi 网络和医疗 IoT 设备(生命体征监护仪、影像设备)。预算限制要求使用开源解决方案。 **方法**: 1. 在 Netgate 4100 设备上部署 pfSense,配备四个物理接口(WAN、LAN、DMZ、MGMT) 2. 为员工(VLAN 10)、EHR 服务器(VLAN 20)、访客 WiFi(VLAN 30)和医疗设备(VLAN 40)创建 VLAN 3. 配置严格规则:员工 VLAN 只能通过 HTTPS 访问 EHR 服务器;医疗设备只能通过特定端口与 EHR 服务器通信;访客 WiFi 获得仅互联网访问权限,无内部路由 4. 使用医疗行业特定威胁源和恶意软件域名阻断启用 pfBlockerNG 5. 配置出站 NAT,防止内部 IP 地址泄露到互联网 6. 启用全面日志记录,通过 syslog 将所有防火墙日志转发到 SIEM 7. 设置自动配置备份并记录规则库以供审计合规 **常见陷阱**: - 创建过于宽松的规则("allow any any")而非基于特定端口的规则 - 忘记规则处理顺序——将宽泛的 PASS 规则放在特定 BLOCK 规则之上 - 关键规则未启用日志记录,导致事件调查无法进行 - 允许 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) ```
Related Skills
performing-web-application-firewall-bypass
使用编码技术、HTTP 方法操控、参数污染和载荷混淆绕过 Web 应用防火墙保护,将 SQL 注入、XSS 及其他攻击载荷穿透 WAF 检测规则。
performing-threat-hunting-with-yara-rules
使用 YARA 模式匹配规则在文件系统和内存转储中狩猎恶意软件、可疑文件和入侵指标。 涵盖规则编写、yara-python 扫描以及与威胁情报源的集成。
implementing-siem-correlation-rules-for-apt
编写多事件关联规则,通过链接跨主机的 Windows 身份验证事件、进程执行遥测和网络连接日志, 检测高级持续性威胁(APT)的横向移动。使用 Splunk SPL 和 Sigma 规则格式, 在滑动时间窗口内关联事件 ID 4624、4648、4688 和 Sysmon 事件 1/3, 以发现单一事件检测无法识别的攻击序列。
implementing-semgrep-for-custom-sast-rules
使用 YAML 编写自定义 Semgrep SAST 规则,以检测应用程序特定漏洞、执行编码标准并集成到 CI/CD 管道中。
implementing-next-generation-firewall-with-palo-alto
配置和部署 Palo Alto Networks 下一代防火墙(NGFW),实现 App-ID 应用识别、User-ID 用户身份、基于区域的策略、SSL 解密以及威胁防御配置文件,为企业网络安全提供全面保护。
implementing-network-segmentation-with-firewall-zones
使用防火墙安全区域、VLAN、ACL 和微分段(Microsegmentation)策略设计并实施网络分段,以限制横向移动(Lateral Movement)并强制执行最小权限网络访问。
implementing-ics-firewall-with-tofino
部署和配置Belden/Hirschmann的Tofino工业防火墙,利用深度包检测(DPI)保护SCADA系统和PLC,支持包括Modbus、EtherNet/IP、OPC和S7comm在内的OT协议,在ICS安全区域之间强制执行精细化访问控制。
implementing-gcp-vpc-firewall-rules
实施和审计 GCP VPC 防火墙规则,强制执行网络分段,限制入站和出站流量,在整个组织范围内应用分层防火墙策略,并使用 VPC 流日志监控防火墙规则有效性。
implementing-cloud-waf-rules
部署和调优 AWS WAF、Azure WAF 和 Cloudflare 上的 Web 应用防火墙规则,保护云托管应用免受 OWASP Top 10 攻击。详细介绍配置托管规则集、创建业务逻辑保护自定义规则、实施速率限制、部署机器人管理,以及通过规则调优和日志分析减少误报。
implementing-aws-config-rules-for-compliance
实施 AWS Config 规则,对 AWS 资源进行持续合规监控,部署符合 CIS 和 PCI DSS 框架的托管和自定义规则,使用 SSM Automation 配置自动修复,并在多账户之间聚合合规数据。
detecting-email-forwarding-rules-attack
检测攻击者创建的恶意邮件转发规则,以维持对邮件通信的持久访问,用于情报收集和商业电子邮件入侵(BEC)攻击。
detecting-container-escape-with-falco-rules
使用 Falco 运行时安全规则实时检测容器逃逸尝试,监控系统调用、文件访问和权限提升。