Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

OPNsense 防火牆封包正規化(Firewall Normalization)原理與應用

Posted on 2025-11-122025-11-12 by Rico

🧭 一、什麼是封包正規化 (Packet Normalization)?

在 OPNsense 中,Normalization(封包正規化) 是一項低層級的防火牆安全機制,
透過 pf(packet filter)防火牆內建的 scrub 功能,
在封包進入或離開防火牆時,強制進行格式檢查與結構修正,
確保所有 TCP/IP 封包都符合標準協定格式。

主要目的:

  • 移除或修正異常封包;
  • 防止封包分段攻擊 (Fragmentation Attack);
  • 改善封包一致性與傳輸穩定性;
  • 減少非標準 TCP flag 導致的潛在安全風險。

這個功能位於:

Firewall → Settings → Normalization

⚙️ 二、運作原理

封包通過防火牆時,pf 會先執行「scrub」動作,
對封包進行結構檢查、重組與正規化,確保後續規則匹配與流量分析的可靠性。

🔧 常見 scrub 動作:

動作功能說明
reassemble tcp將 TCP 分段封包重新組合,防止利用分段繞過偵測。
random-id隨機化 IP 封包 ID,防止外部主機透過 IP ID 進行流量分析。
min-ttl 64強制封包 TTL 不低於指定值,避免因過低 TTL 被中途丟棄。
max-mss 1460限制 TCP 最大封包段長度,避免過大封包造成傳輸錯誤。
no-df移除「Don’t Fragment」標記,允許防火牆重新分段。

🧩 三、Normalization 設定項目說明

設定選項說明
Disable packet reassembly關閉 IP 封包重組,僅在特定情況下(例如效能優先)才建議停用。
Randomize ID啟用後,封包 ID 會被隨機化以提升隱私與防偵測能力。
Min TTL設定封包最小 TTL 值(例如 64)。
Max MSS限制 TCP 最大封包長度,常用值為 1460。
No-df移除 DF 標記,使防火牆可在必要時重組封包。
Adaptive timeouts根據系統負載自動調整連線 timeout,提高效能。

🧠 四、應用場景與範例

1️⃣ 防止封包分段攻擊

攻擊者可能利用碎片封包 (fragmented packets) 來繞過 IDS/IPS 偵測。
啟用封包重組 (reassemble tcp) 可在防火牆層統一重構封包,有效阻止此類攻擊。

2️⃣ 改善 MTU 不一致造成的中斷

當跨網段連線(如 VPN、PPPoE)時,過大的 MSS 可能導致連線異常。
設定 Max MSS = 1460 可避免此類問題。

3️⃣ 強化匿名性與安全性

啟用 Randomize ID 可隱藏內部主機活動模式,防止外部透過封包 ID 進行追蹤。

4️⃣ 增加跨區連線穩定度

設定 Min TTL = 64 可避免中繼路由器因 TTL 過低提前丟棄封包。


⚙️ 五、設定範例

假設你要保護 WAN 介面,確保對外封包乾淨且符合標準,可設定如下:

介面選項設定
WANEnable reassembly✅ 啟用
Randomize ID✅ 啟用
Min TTL64
Max MSS1460
No-df✅ 啟用

對應的 pf 規則:

scrub on em0 reassemble tcp random-id min-ttl 64 max-mss 1460 no-df

🧩 六、建議實務

使用情境建議設定
一般企業網路reassemble tcp + random-id + min-ttl=64
VPN 使用環境加上 max-mss 1400~1420
高效能伺服器可視需求關閉 reassembly
高安全性網路啟用 random-id + no-df

✅ 七、結論

封包正規化(Normalization)是一項強而有力的防線,
在流量進入防火牆之前就先「清洗」封包,
能顯著降低異常封包、分段攻擊與協定不一致造成的風險。

對企業而言,建議保持此功能啟用,
並依實際連線需求微調 TTL 與 MSS,
以兼顧安全性與連線穩定性。

Recent Posts

  • Postfix + Let’s Encrypt + BIND9 + DANE Fully Automated TLSA Update Guide
  • Postfix + Let’s Encrypt + BIND9 + DANE TLSA 指紋自動更新完整教學
  • Deploying DANE in Postfix
  • 如何在 Postfix 中部署 DANE
  • DANE: DNSSEC-Based TLS Protection

Recent Comments

  1. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on High Availability Architecture, Failover, GeoDNS, Monitoring, and Email Abuse Automation (SOAR)
  2. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on MariaDB + PostfixAdmin: The Core of Virtual Domain & Mailbox Management
  3. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Daily Operations, Monitoring, and Performance Tuning for an Enterprise Mail System
  4. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Final Chapter: Complete Troubleshooting Guide & Frequently Asked Questions (FAQ)
  5. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Network Architecture, DNS Configuration, TLS Design, and Postfix/Dovecot SNI Explained

Archives

  • December 2025
  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2025 Nuface Blog | Powered by Superbs Personal Blog theme