mcpField
C
configuring-pfsense-firewall-rules

configuring-pfsense-firewall-rules

github.com/mukul975セキュリティ35.2k140 回インストール8 週間前に更新
リポジトリ

configuring-pfsense-firewall-rules について

pfSenseでネットワーク分割、ファイアウォールのアクセスルール、NATを設定するネットワーク管理向けスキルです。VPN、ログ監視、設定バックアップ、ルールテストも扱います。

主な機能

  1. 01インターフェースとVLANの分割設定
  2. 02ゾーン別アクセスルールの作成
  3. 03NATポートフォワーディングの設定
  4. 04ログ、バックアップ、ルールテスト

活用シーン

  1. 01オフィス、ゲスト、IoTネットワークの分離
  2. 02VLAN間の通信制限
  3. 03NATによる内部サービスの公開

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill configuring-pfsense-firewall-rules

インストール後、Claude Code で/configuring-pfsense-firewall-rulesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

pfSense ファイアウォールルールの設定

使用する場面

  • DMZ、内部、ゲスト、IoT などのネットワークゾーンを分離して保護するため、境界ファイアウォールまたは内部ファイアウォールを導入する場合
  • VLAN とネットワークセグメント間のトラフィックを制限するため、きめ細かなアクセス制御ルールを作成する場合
  • インターネットに公開する内部サービスへのポート転送用に NAT ルールを設定する場合
  • IPsec または OpenVPN を使用して、拠点間またはリモートアクセス VPN トンネルを構築する場合
  • サービス品質要件に対応するため、トラフィックシェーピングと帯域幅管理を実装する場合

次の用途には使用しないでください:個々のシステムのホストベースのファイアウォールの代替、専用のハードウェアアクセラレーションなしでの SSL/TLS ディープパケットインスペクション、または IDS/IPS を併用しない単独のセキュリティ対策。

前提条件

  • 2 つ以上のネットワークインターフェースを備えた専用ハードウェアまたは仮想マシンに、pfSense 2.7 以降がインストールされていること
  • pfSense WebConfigurator へのアクセス(デフォルト:https://192.168.1.1)
  • すべてのインターフェース、VLAN、想定されるトラフィックフローを示すネットワークトポロジ図
  • 各ネットワークゾーンの DNS および DHCP 設定が計画されていること
  • TCP/IP、NAT、ステートフルファイアウォールの概念を理解していること

ワークフロー

ステップ 1:ネットワークインターフェースと VLAN を設定する

pfSense WebConfigurator にアクセスして、インターフェースを定義します。

Navigate: Interfaces > Assignments

WAN Interface (igb0):
  - Type: DHCP or Static IP from ISP
  - Block private networks: Enabled
  - Block bogon networks: Enabled

LAN Interface (igb1):
  - IPv4: 10.10.1.1/24
  - Description: CORPORATE_LAN

Create VLANs:
  Navigate: Interfaces > VLANs > Add
  - VLAN 10 on igb1: DMZ (10.10.10.1/24)
  - VLAN 20 on igb1: SERVERS (10.10.20.1/24)
  - VLAN 30 on igb1: GUEST (10.10.30.1/24)
  - VLAN 40 on igb1: IOT (10.10.40.1/24)

Assign VLANs:
  Navigate: Interfaces > Assignments > Add each VLAN
  Enable each interface and assign the gateway IP
ステップ 2:各ゾーンの DHCP と DNS を設定する
Navigate: Services > DHCP Server

CORPORATE_LAN (10.10.1.0/24):
  Range: 10.10.1.100 - 10.10.1.200
  DNS: 10.10.20.10 (internal DNS server)
  Gateway: 10.10.1.1

DMZ (10.10.10.0/24):
  Range: 10.10.10.100 - 10.10.10.200
  DNS: 10.10.20.10
  Gateway: 10.10.10.1

GUEST (10.10.30.0/24):
  Range: 10.10.30.100 - 10.10.30.200
  DNS: 1.1.1.1, 8.8.8.8 (public DNS only)
  Gateway: 10.10.30.1

Navigate: Services > DNS Resolver
  Enable DNS Resolver on all interfaces except GUEST
  Enable DNSSEC
  Configure forwarding to upstream DNS servers
ステップ 3:ファイアウォールルールのエイリアスを作成する
Navigate: Firewall > Aliases

RFC1918_Networks:
  Type: Network
  Values: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

WebPorts:
  Type: Port
  Values: 80, 443

ManagementPorts:
  Type: Port
  Values: 22, 3389, 5900

CriticalServers:
  Type: Host
  Values: 10.10.20.10, 10.10.20.11, 10.10.20.12

BlockedCountries:
  Type: URL Table
  URL: https://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
  Update: 24 hours
ステップ 4:ゾーンごとにファイアウォールルールを実装する
Navigate: Firewall > Rules

=== WAN Rules ===
# Block all inbound by default (implicit deny)
# Allow established/related traffic (automatic in pfSense stateful mode)

# Allow inbound to DMZ web server (via NAT)
Action: Pass | Interface: WAN | Protocol: TCP
Source: any | Destination: WAN Address | Port: 80, 443
Description: Allow HTTP/HTTPS to DMZ web server

=== LAN Rules ===
# Allow LAN to access internal servers
Action: Pass | Interface: LAN | Protocol: TCP
Source: LAN net | Destination: SERVERS net | Port: WebPorts, 3306, 5432
Description: Allow LAN to internal web and database servers

# Allow LAN to internet
Action: Pass | Interface: LAN | Protocol: any
Source: LAN net | Destination: ! RFC1918_Networks
Description: Allow LAN to internet (block inter-VLAN via RFC1918 exclusion)

# Block LAN to IoT (explicit deny before implicit allow)
Action: Block | Interface: LAN | Protocol: any
Source: LAN net | Destination: IOT net
Description: Block direct LAN to IoT communication

=== DMZ Rules ===
# Allow DMZ web servers to query internal DNS
Action: Pass | Interface: DMZ | Protocol: TCP/UDP
Source: DMZ net | Destination: 10.10.20.10 | Port: 53
Description: Allow DMZ DNS queries to internal resolver

# Allow DMZ to internet for updates only
Action: Pass | Interface: DMZ | Protocol: TCP
Source: DMZ net | Destination: any | Port: 80, 443
Description: Allow DMZ outbound HTTP/HTTPS for updates

# Block all other DMZ traffic
Action: Block | Interface: DMZ | Protocol: any
Source: DMZ net | Destination: any
Description: Default deny for DMZ

=== GUEST Rules ===
# Allow guest to internet only (DNS and web)
Action: Pass | Interface: GUEST | Protocol: TCP/UDP
Source: GUEST net | Destination: ! RFC1918_Networks | Port: 53, 80, 443
Description: Allow guest internet access only

# Block all guest to internal
Action: Block | Interface: GUEST | Protocol: any
Source: GUEST net | Destination: RFC1918_Networks
Description: Block guest access to all internal networks

=== IOT Rules ===
# Allow IoT to specific cloud endpoints
Action: Pass | Interface: IOT | Protocol: TCP
Source: IOT net | Destination: ! RFC1918_Networks | Port: 443, 8883
Description: Allow IoT HTTPS and MQTT to cloud

# Block IoT inter-device communication
Action: Block | Interface: IOT | Protocol: any
Source: IOT net | Destination: IOT net
Description: Prevent IoT lateral movement

# Block IoT to all internal networks
Action: Block | Interface: IOT | Protocol: any
Source: IOT net | Destination: RFC1918_Networks
Description: Block IoT access to internal
ステップ 5:NAT ルールを設定する
Navigate: Firewall > NAT > Port Forward

# Web server in DMZ
Interface: WAN | Protocol: TCP
Destination: WAN address | Port: 443
Redirect target IP: 10.10.10.50 | Port: 443
NAT Reflection: Enable
Description: HTTPS to DMZ web server

# SSH jump host (non-standard port)
Interface: WAN | Protocol: TCP
Destination: WAN address | Port: 2222
Redirect target IP: 10.10.20.11 | Port: 22
Description: SSH to internal jump host via port 2222

Navigate: Firewall > NAT > Outbound
Mode: Hybrid Outbound NAT
# Add rule for DMZ servers to use a dedicated public IP
Interface: WAN | Source: 10.10.10.0/24
Translation Address: <dedicated_public_ip>
Description: DMZ outbound NAT via dedicated IP
ステップ 6:ロギングとモニタリングを有効にする
Navigate: Status > System Logs > Settings
  Remote Logging: Enable
  Remote log servers: 10.10.20.15:514 (Syslog/SIEM)
  Log firewall default blocks: Enabled

Navigate: Firewall > Rules
  Enable logging on critical rules:
  - All BLOCK rules
  - WAN inbound PASS rules
  - Inter-VLAN PASS rules

Navigate: Diagnostics > pfTop
  Monitor real-time connection states and bandwidth usage

Install pfBlockerNG package:
  Navigate: System > Package Manager > Available Packages
  Install pfBlockerNG-devel
  Configure IP blocklists (Spamhaus DROP, Emerging Threats)
  Configure DNSBL for malware domain blocking
ステップ 7:設定をバックアップしてテストする
# Export configuration backup
Navigate: Diagnostics > Backup & Restore
Download XML configuration file

# Test rules from each zone
# From LAN:
curl -I https://10.10.20.10  # Should succeed (LAN to SERVERS)
curl -I https://10.10.40.5   # Should fail (LAN to IOT blocked)

# From GUEST:
curl -I https://www.google.com  # Should succeed (internet)
curl -I https://10.10.20.10     # Should fail (guest to internal blocked)

# From DMZ:
nslookup google.com 10.10.20.10  # Should succeed (DNS allowed)
ssh 10.10.1.50                    # Should fail (DMZ to LAN blocked)

# Verify logging
Navigate: Status > System Logs > Firewall
Check that blocked and passed traffic is logging correctly

# Schedule automated config backups
Navigate: Diagnostics > AutoConfigBackup
Enable automatic backups to Netgate cloud or local storage

主な概念

用語定義
ステートフルファイアウォールネットワーク接続の状態を追跡し、確立済みのセッションへの応答トラフィックを明示的なルールなしで自動的に許可するファイアウォール
エイリアスpfSense で IP アドレス、ネットワーク、またはポートをまとめた名前付きグループ。ルール管理を簡素化し、可読性を高めます
NAT(ネットワークアドレス変換)内部ネットワークと外部ネットワーク間で IP アドレスを変換する仕組み。内部サービスへのインバウンドアクセス向けのポート転送も含みます
フローティングルール複数のインターフェースに同時に適用され、インターフェースごとのルールより先に処理される pfSense のルール
pfBlockerNGIP レピュテーションブロックリストと DNS ベースのブロックリストを統合し、脅威を自動的にブロックする pfSense パッケージ
ルールの処理順序pfSense は各インターフェースタブ内のルールを上から順に評価します。最初に一致したルールが適用され、一致しないトラフィックはデフォルトでブロックされます

ツールとシステム

  • pfSense 2.7+:FreeBSD をベースとするオープンソースのファイアウォールおよびルータープラットフォーム。ウェブベースの管理機能と豊富なパッケージエコシステムを備えています
  • pfBlockerNG:脅威インテリジェンスを自動的に統合する IP および DNS ブロックリストパッケージ
  • Snort/Suricata パッケージ:インラインのトラフィック検査に利用できる、pfSense パッケージとしての IDS/IPS 統合機能
  • OpenVPN/IPsec:拠点間およびリモートアクセス接続に対応する、組み込みの VPN 実装
  • Netgate AutoConfigBackup:pfSense の災害復旧に利用できる、クラウドベースの設定バックアップサービス

よくあるシナリオ

シナリオ:pfSense による小規模事業所ネットワークのセグメント化

背景:医療機関が、HIPAA の要件を満たすためにネットワークをセグメント化する必要があります。インターネット接続は 1 つで、電子カルテ(EHR)サーバー、スタッフ用ワークステーション、ゲスト用 Wi-Fi ネットワーク、医療用 IoT デバイス(バイタルサインモニター、画像診断機器)があります。予算の制約から、オープンソースのソリューションが必要です。

アプローチ:

  1. 4 つの物理インターフェース(WAN、LAN、DMZ、MGMT)を備えた Netgate 4100 アプライアンスに pfSense を導入します
  2. スタッフ用(VLAN 10)、EHR サーバー用(VLAN 20)、ゲスト Wi-Fi 用(VLAN 30)、医療機器用(VLAN 40)の VLAN を作成します
  3. 厳格なルールを設定します:スタッフ用 VLAN は HTTPS のみで EHR サーバーにアクセスできます。医療機器は、特定のポートで EHR サーバーとのみ通信できます。ゲスト Wi-Fi はインターネットのみにアクセスでき、内部ルーティングはできません
  4. 医療分野に特化した脅威フィードとマルウェアドメインのブロックを備えた pfBlockerNG を有効にします
  5. 内部 IP アドレスがインターネットに漏えいしないよう、送信 NAT を設定します
  6. 包括的なログ記録を有効にし、すべてのファイアウォールログを syslog 経由で SIEM に転送します
  7. 設定の自動バックアップを設定し、監査要件への準拠のためにルールベースを文書化します

落とし穴:

  • ポートを指定したルールではなく、許可範囲が広すぎるルール(「allow any any」)を作成してしまう
  • ルールの処理順序を忘れ、広範な PASS ルールを特定の BLOCK ルールより上に配置してしまう
  • 重要なルールでログ記録を有効にせず、インシデント調査が不可能になる
  • IoT デバイスにインターネットへの無制限のアクセスを許可し、データ流出の経路を作ってしまう

出力形式

## pfSense Firewall Configuration Report

**Device**: pfSense 2.7.2 on Netgate 4100
**Interfaces**: WAN (igb0), LAN (igb1), DMZ (igb2), MGMT (igb3)
**VLANs**: 4 configured (Staff, Servers, Guest, IoT)
**Total Rules**: 28 active rules across all interfaces

### Rule Summary by Interface

| Interface | Pass Rules | Block Rules | Logging Enabled |
|-----------|-----------|-------------|-----------------|
| WAN | 2 | 1 (default) | Yes |
| LAN | 4 | 2 | Yes (blocks) |
| DMZ | 3 | 1 (default) | Yes |
| GUEST | 1 | 2 | Yes |
| IOT | 1 | 3 | Yes |

### Security Controls
- pfBlockerNG: 12 IP blocklists + DNSBL enabled
- Snort IDS: Running on WAN and LAN interfaces
- VPN: OpenVPN remote access configured with MFA
- Logging: All traffic forwarded to SIEM (10.10.20.15)

コメント