ファイアウォール構成

効果的なファイアウォール構成は、企業ネットワークにおける境界防御の重要な基盤であり、事前に定義されたセキュリティポリシーに基づいてインフラへ出入りするすべてのトラフィックを制御する gatekeeper として機能します。不適切な実装は、内部サービスを不必要に露出させる過度に緩いルールによるものであれ、攻撃の検知を妨げる不十分なロギングによるものであれ、重大な脆弱性を生み出し、攻撃者によるネットワーク偵察、初期侵害後のラテラルムーブメント、想定外のポートを介したデータ流出、許可されたプロトコルの悪用によるセキュリティ制御の回避に利用されかねません。最新のファイアウォールは、IP/ポートに基づく単純なパケットフィルター(stateless、セッションのコンテキストなしに各パケットを個別に検査)から、ハンドシェイクと状態を理解して完全な TCP 接続を追跡する stateful ファイアウォールへと進化し、現在では、攻撃シグネチャ検知のための IPS(Intrusion Prevention System)、使用ポートに依存せずアプリケーションを識別する application awareness(HTTPS を装ってポート 443 で動作する Skype を検知)、暗号化トラフィックを復号して payload を検査する SSL/TLS inspection、既知の悪意ある IP/ドメインを自動的にブロックする threat intelligence feeds を統合した Next-Generation Firewalls(NGFWs)へと至っています。堅牢な構成は、明示的に許可されたものを除くすべてのトラフィックをブロックする deny-by-default(default deny)の原則に従い、複数の層で defense-in-depth を実装し(境界ファイアウォール + 内部セグメンテーションファイアウォール + ホストベースのファイアウォール)、異なる信頼レベルを持つセキュリティゾーン(信頼できないインターネット、公開サーバーを置く DMZ、内部ネットワーク、管理ネットワーク)を使用し、監査と threat hunting のために許可された接続と拒否された接続の詳細なロギングを有効にし、時間とともに蓄積して不要な攻撃対象領域を生み出す陳腐化した許可を削除するために定期的なルールレビューを維持します。

Deny-by-Default と最小権限の原則

Deny-by-default はファイアウォール構成の基本理念であり、デフォルトポリシーはすべてのトラフィックを拒否することであり、管理者は事業運営に必要なフローのみを許可する明示的なルールを作成しなければなりません。これは、「すべてを許可して悪いものをブロックする」という安全でないモデル(攻撃が絶えず進化するため維持不可能)を、「すべてをブロックして必要なものを許可する」(事業要件の変化頻度が低いため持続可能)へと反転させます。実際には、ファイアウォール ruleset の最後のルールは、それ以前のルールに一致しないトラフィックを破棄する implicit deny であるべきであり、この拒否ルールには、スキャン、構成ミス、標的型攻撃を示しうるブロックされた試行の可視性のためにロギングを有効にすべきです。ファイアウォールに適用される最小権限とは、広範な範囲ではなく、必要な特定のプロトコルとポートのみを許可することを意味します。Web アプリケーションが HTTPS のみを必要とするなら "any" プロトコルではなく TCP 443 を許可し、SSH 管理アクセスが必要なら 0.0.0.0/0 ではなく特定の管理サブネットからのみ許可します。監査で危険信号となる "any any permit" ルールは避けてください。各許可には、責任を負う owner とレビュー日を伴う、文書化された事業上の正当化が必要です。ルールの追加に承認を要し、既定で有効期限付きの一時的なものとし、継続的な必要性を確認するため四半期ごとにレビューする change management プロセスを実装してください。90 日間 hits がないルールは削除の候補です。

ネットワークセグメンテーションとセキュリティゾーン

ネットワークセグメンテーションは、インフラを異なる信頼レベルと適切なセキュリティ制御を持つ隔離されたゾーンに分割し、ゾーン間のポリシー適用にファイアウォール(物理または仮想)を使用します。これにより、あるゾーンへのアクセスを得た攻撃者が自動的に他のゾーンにはアクセスできないため、侵害の blast radius が制限され、ラテラルムーブメントは監視された chokepoints を通過せざるを得なくなり、より重要なゾーンにはより厳格な防御を適用できます。典型的なアーキテクチャには次が含まれます:組織の管理外で zero trust とする Untrusted Zone (Internet)、インターネットからアクセス可能だが内部ネットワークから隔離された公開サーバー(web servers、mail relays、権威 DNS)を含む DMZ (Demilitarized Zone)、workstations と business-critical アプリケーションを持つ企業ネットワークである Internal Zone、アクセスが厳しく制限された管理インフラ(jump hosts、configuration management、backup servers)のための Management Zone、機密データを持つ database servers と file servers のための Data Zone、そして内部リソースへのアクセスを持たず完全に隔離された Guest WiFi Zone。ゾーン間のファイアウォールは特定のポリシーを実装します:インターネットから DMZ へのトラフィックは load balancers/proxies 向けの特定の公開ポート(80、443)のみを許可し、DMZ から Internal へのトラフィックは最小化すべきであり(理想的にはゼロ、または app servers から Data Zone の DB servers へのデータベース接続のみ)、Internal からインターネットへのトラフィックは content filtering と SSL inspection を備えた proxy を経由し、Management Zone へのアクセスは MFA を要し、特定の管理 workstations のみを発信元とします。論理セグメンテーションには VLANs を、ゾーン内のマイクロセグメンテーションには仮想ファイアウォール(VM-series、virtual appliances)を使用してください。

ロギング、モニタリング、トラフィック分析

ファイアウォール活動の堅牢なロギングは、攻撃の検知、接続のトラブルシューティング、規制(PCI-DSS、LGPD は audit trails を要求)への準拠、およびインシデント後のフォレンジックに不可欠です。ファイアウォールはブロックされたトラフィック(denied connections はスキャンや exploit の試行を明らかにします)だけでなく、許可されたトラフィックもロギングすべきです(accepted connections は正常な振る舞いの baseline を確立し、データ流出を示す疑わしい外部 IP への送信接続の急増などの異常を識別するために必要です)。ログ内の重要な情報:source IP/ポート、destination IP/ポート、プロトコル、アクション(allow/deny)、一致したルール番号、正確な timestamp、転送バイト数(異常な量はデータ窃取を示しうる)、セッション継続時間。ファイアウォールのログを集中型 SIEM(Splunk、QRadar、ELK stack)に送信し、他のソース(EDR、web proxy、authentication logs)のイベントとの correlation を行い、ファイアウォールのローカルストレージ容量を超える長期保持を行ってください。疑わしいパターンに対して alerting を構成します:同一の source からの複数の denied connections(port scanning)、threat intelligence blacklists 上の IP への許可された接続(command and control callbacks)、想定外のプロトコルを使用するトラフィック(インターネットへ出ていくデータベーストラフィック)、geo-IP ポリシー違反(事業を行っていない国からの接続)。Dashboards は次を表示すべきです:top talkers(最も多くのトラフィックを生成する IP)、denied connections の傾向、アプリケーションごとの帯域幅使用率、rule hit counts(一度も hit しないルールは削除可能)。full packet capture なしでトラフィックパターンを可視化するために flow analysis(NetFlow、sFlow)を検討してください。これはフローの量、方向、timing に基づいて異常を検知します。

Next-Generation Firewalls (NGFW) と高度な機能

Next-Generation Firewalls は、アプリケーションの詳細な検査機能と threat intelligence との統合を追加することで、traditional stateful firewalls を超えています。主要な差別化要因は、使用ポートやプロトコルに依存せずアプリケーションを識別する application awareness(ポート 443 で動作する BitTorrent、Tor hidden services、ポリシー回避のための VPN の使用、HTTP/HTTPS 内での禁止プロトコルの tunneling を検知)であり、「Slack は許可するが Slack 内のファイル転送はブロックする」や「YouTube は許可するが帯域幅節約のため 720p に制限する」といったきめ細かなポリシーを可能にします。統合された Intrusion Prevention System (IPS) は、パケットの payload を検査して既知の exploits のシグネチャ(buffer overflows、SQL injection パターン、command injection)を探し、自動的にブロックします。新たな脆弱性が日々発見されるため、signature database の継続的な更新が極めて重要です。SSL/TLS Inspection(SSL decryption または man-in-the-middle inspection とも呼ばれる)は、HTTPS 接続を傍受し、dynamic certificate generation を使用して復号し、malware の検出と data loss prevention のために payload を検査し、宛先へ送信する前に再暗号化します。今日では大多数の malware delivery と C2 通信が検知回避のために暗号化を使用しているため必要ですが、クライアントへの enterprise root CA の deployment と、プライバシーのために機密サイト(健康、銀行)を慎重に除外することを要します。Sandboxing は、Web またはメール経由で受信した疑わしいファイル(executables、PDFs、Office 文書)を隔離された仮想化環境に送って分析し、その振る舞い(registry modifications、network connections、file creation)を観察して、既知のシグネチャを持たない zero-day malware を検知します。URL Filtering は特定カテゴリのサイト(gambling、アダルトコンテンツ、reputation databases による malware/phishing サイト)へのアクセスをブロックし、DNS Security は既知の悪意あるドメインへのクエリを防ぎ、botnets が C2 サーバーを特定するために使用する DGA(Domain Generation Algorithms)を検知します。

ルールのレビューと保守

ファイアウォール rulesets は、積極的に保守されなければ時間とともに劣化します。一時的なプロジェクトのために追加されたルールが決して削除されず、緊急性から作成された過度に広範な許可が後で洗練されず、インフラの変更(廃止されたサーバー、クラウドへの移行)が混乱と潜在的な security gaps を生む陳腐化したルールを残します。正式な firewall rule lifecycle management プロセスを実装してください:新しいルールはすべて owner(責任者)、business justification(チケットまたは承認)、expiration date(一時ルールは既定で 90 日)、review date(最低でも年次)を含めるべきです。未使用のルールを識別するために rule hit counters を使用します。6 か月間 hits がないルールは、owner との確認後に削除の候補となります。定期的に(四半期ごとに)完全な ruleset をエクスポートし、次を問いながら 1 行ずつレビューします:このルールはまだ必要か? source/destination は正しく最小限か? プロトコル/ポートはより具体的にできるか? shadow rules を生む他のルールとの重複はないか? ルールの順序は最適化されているか(性能のため最も頻繁に一致するルールを先頭に)? 各ルールの根拠を構成内のコメントに文書化してください。何年も後に元の構成が忘れられたとき、コメントが意図を説明し、安全な変更を容易にします。数百から数千のルールを持つ複雑なファイアウォールには、ルールレビューを自動化し、競合を検出し、deployment 前に変更の影響をシミュレートする firewall management tools(Tufin、AlgoSec、Firemon)を使用してください。変更が意図しない影響を引き起こした場合に rollback できるよう、バージョン管理(Git)で構成 backups を維持し、本番に適用する前に、本番トポロジーを複製したラボ環境で変更をテストしてください。