ホストベースファイアウォールとアプリケーション許可リスト
ホストベースのファイアウォール(Windows Defender Firewall、iptables)と、未承認ソフトウェアの実行をブロックするアプリケーション許可リストを設定します。
「ホストベースファイアウォールとアプリケーション許可リスト」はCoddyKit上の無料Security+ Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSecurity+ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Security+ Academyコースには全4レッスンが含まれています。
ホストベースファイアウォールとネットワークファイアウォール
ネットワークファイアウォールはネットワークの境界に配置され、ネットワークセグメント間のトラフィックをフィルタリングします。一方、ホストベースファイアウォールは個々のエンドポイント上で動作し、その特定のマシンとの間のトラフィックをフィルタリングします。ホストベースファイアウォールは多層防御を実現します。攻撃者がVPN、侵害された内部関係者、または別の感染ホストからのラテラルムーブメントによってネットワークファイアウォールを回避しても、ホストファイアウォールがローカルのトラフィックルールを適用します。企業ネットワークの境界外へ持ち出され、信頼できないネットワークに接続されるノートPCでは、特に重要です。
Windows Defender Firewall
Windows Defender Firewall(WDF)は、最新のすべてのWindowsバージョンに組み込まれているホストファイアウォールです。3つのプロファイルをサポートしています。Domain(企業ドメインに接続 — 通常はより許可的)、Private(信頼できるホームネットワーク)、Public(信頼できないネットワーク — 最も制限が厳しい)です。WDFのルールでは、ポート、プロトコル、アプリケーションパス、リモートIP、ユーザーIDに基づいてフィルタリングできます。Windows Defender Firewall with Advanced Security(WFAS)のMMCスナップインとGroup Policyを使用すると、ドメインに参加しているすべてのマシンのファイアウォールルールをエンタープライズ環境で一元管理できます。
# Windows: create inbound firewall rule
netsh advfirewall firewall add rule \
name='Block Telnet' \
dir=in \
action=block \
protocol=TCP \
localport=23
# PowerShell equivalent
New-NetFirewallRule \
-DisplayName 'Block Telnet Inbound' \
-Direction Inbound \
-Protocol TCP \
-LocalPort 23 \
-Action BlockLinuxのiptablesとnftables
LinuxのホストファイアウォールはNetfilterカーネルフレームワークを使用し、iptables(レガシーですが、現在も広く使用されています)または最新のnftablesで設定できます。ルールは、テーブル(filter、nat、mangle)内のチェーン(INPUT、OUTPUT、FORWARD)に整理されます。デフォルトポリシーはDROPとし、必要なトラフィックに対して明示的なACCEPTルールを設定する必要があります。これはデフォルト拒否の姿勢です。ufw(Ubuntu)やfirewalld(RHEL/CentOS)などの高レベルツールは、内部ではNetfilterを使用しながら、より扱いやすいインターフェースを提供します。
# iptables: deny-by-default with selective allow
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Allow established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow SSH from specific subnet only
iptables -A INPUT -s 10.10.0.0/24 -p tcp --dport 22 -j ACCEPT
# Allow HTTPS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Save rules
iptables-save > /etc/iptables/rules.v4アプリケーション層のファイアウォールルール
ホストベースファイアウォールはアプリケーション層でルールを適用できます。つまり、単にポートだけでなく、トラフィックを生成したアプリケーションに基づいてフィルタリングできます。Windows Defender Firewallは、アプリケーションベースのルールをサポートしています。たとえば、C:\Program Files\MyApp\app.exeにはアウトバウンド接続を許可し、同じポート上の他のすべての通信をブロックできます。これにより、マルウェアが信頼されたアプリケーションを装って、許可されたポートを乗っ取ることを防止できます。アプリケーション層のルールは、ポートだけに基づくルールよりも大幅に効果的です。ポートだけのルールは、マルウェアを443などの一般的なポートにバインドすることで回避される可能性があるためです。
# Windows: firewall rule scoped to a specific app
New-NetFirewallRule \
-DisplayName 'Allow Chrome HTTPS' \
-Direction Outbound \
-Program 'C:\Program Files\Google\Chrome\Application\chrome.exe' \
-Protocol TCP \
-RemotePort 443 \
-Action Allow
# Blocks any OTHER process trying to use port 443
# unless that process also has an explicit ALLOW ruleアプリケーションのAllowlistingとは
アプリケーションのallowlisting(以前はwhitelistingと呼ばれていました)は、エンドポイント上で実行できるアプリケーションを、明示的に承認されたものだけに制限するセキュリティ制御です。allowlistにない実行可能ファイルは、マルウェアであるか、単に未承認のソフトウェアであるかにかかわらず、すべてブロックされます。これはマルウェアに対する強力な防御策です。未知の新種やゼロデイのマルウェアであっても、承認済みリストにない限りブロックできるためです。課題は運用面にあります。大規模で変化の多い環境でallowlistを管理するには成熟した変更管理プロセスが必要で、調整が不十分だと大量のサポートチケットが発生します。
Windows AppLocker
AppLockerは、EnterpriseエディションとEducationエディションで利用できる、Windows組み込みのアプリケーション制御機能です。実行を次の基準でフィルタリングします。path(%TEMP%やユーザーが書き込み可能なディレクトリからの実行可能ファイルをブロック)、file hash(既知の安全なハッシュだけを許可)、publisher(MicrosoftやAdobeによって署名されたソフトウェアを許可)。AppLockerポリシーはGroup Policyで展開され、Windows Event Logに記録されます(Event ID 8003 = ブロック)。まずAppLockerをAudit Modeで実行すると、ブロックを適用せずに記録できるため、適用を開始する前にチームでallowlistを調整できます。
# AppLocker rule examples (Group Policy)
# Block executables in user-writable locations
Path Rule: C:\Users\*\AppData\*.exe -> DENY
Path Rule: C:\Windows\Temp\*.exe -> DENY
# Allow by publisher (certificate)
Publisher Rule: O=Microsoft, CN=* -> ALLOW
Publisher Rule: O=Adobe, CN=Adobe Acrobat -> ALLOW
# Hash rule for specific approved version
Hash Rule: SHA256:a1b2c3d4... -> ALLOW
# Check AppLocker events:
Get-WinEvent -LogName 'Microsoft-Windows-AppLocker/EXE and DLL'Windows Defender Application Control(WDAC)
WDACはAppLockerを後継する、より強力な機能であり、ユーザー空間ではなくカーネルレベルで適用されます。AppLockerとは異なり、WDACはローカル管理者権限を持つ攻撃者にも回避されにくいため、高セキュリティ環境で推奨される制御です。WDACポリシーはXMLで記述し、MDM(Intune)またはGroup Policyで展開するバイナリポリシーファイルに変換します。また、WDACではIntelligent Security Graph(ISG)との統合も可能です。これはMicrosoftのクラウドレピュテーションサービスを使用して、信頼できる評価を持つソフトウェアを自動的に許可し、allowlistを手作業で管理する運用負担を軽減します。
Allowlistingの課題
Allowlistingは強力ですが、運用上の負担が大きくなります。一般的な課題には次のようなものがあります。LOLBins(Living-Off-the-Land Binaries)では、攻撃者がPowerShell、wscript.exe、mshta.exeなど、通常はすべてのallowlistに含まれるWindowsシステムツールを使用します。そのため、実行を許可するかどうかだけでなく、これらのツールの呼び出し方法も制限する必要があります。スクリプト言語(PowerShell、Python)はallowlistに含まれることが多い一方で、悪意のあるコードを実行できます。誤検知、つまりallowlistによって正規のソフトウェアがブロックされると、ヘルプデスクへの問い合わせが増え、制御を緩める圧力につながります。成熟したallowlistingプログラムでは、追加のConstrained Language ModeポリシーによってLOLBinsに対処します。
# Restricting PowerShell with Constrained Language Mode
# Applied via WDAC when non-WDAC code runs
$ExecutionContext.SessionState.LanguageMode
# Full Language mode -> normal PowerShell
# Constrained Language -> no .NET, no COM objects
# Blocks many attack techniques
# Via Group Policy: force PowerShell logging
# Computer Config > Admin Templates > Windows Components
# > Windows PowerShell
# Enable: Module Logging, Script Block Logging, TranscriptionAllowlistingとDenylisting
Allowlistingは明示的に承認された項目だけを許可し、それ以外をすべてブロックするため、より強固なセキュリティ態勢になります。Denylisting(blacklisting)は明らかに悪意のある項目だけをブロックし、それ以外はすべて許可する、従来のアンチウイルスのモデルです。Denylistingは未知の脅威に対しては機能せず、allowlistingはLOLBinsや範囲が広すぎる許可エントリに対しては機能しません。成熟したセキュリティプログラムの多くは、重要なシステムではallowlistingを主要な制御として使用し、許可されたアプリケーションの悪用をbehavioral detection(EDR)で検知します。重要度の低いシステムでは、適切に調整したdenylistと振る舞いの監視の組み合わせが許容される場合があります。
ファイアウォールとAllowlistingの組み合わせ
ホストベースファイアウォールとアプリケーションのallowlistingは、相互補完的な多層の制御です。allowlistは未承認のコードが実行されるのを防ぎ、ファイアウォールは、承認済みであっても侵害されたコードによる未承認のネットワーク接続を防ぎます。両者を組み合わせることで、エンドポイントのアプリケーション層とネットワーク層の両方に最小権限の原則を適用できます。さらに第3の層としてEDRを追加すると、多層防御の構成になり、各制御が他の制御の見逃しを補完します。その結果、エンドポイントへの攻撃を成功させるためのコストと複雑さが大幅に高まります。
# Endpoint defense-in-depth stack
Layer 1: Application Allowlisting (WDAC)
-> Blocks unauthorized executables from running
Layer 2: Host-Based Firewall (WDF)
-> Blocks unauthorized network connections
-> Even from allowlisted apps on non-standard ports
Layer 3: EDR (CrowdStrike/Defender for Endpoint)
-> Detects behavioral anomalies in allowed processes
-> Catches LOLBin misuse, process injection
-> Provides forensic telemetry for investigationファイアウォールのログ記録と監視
ホストベースファイアウォールの価値は、生成するログの質に左右されます。攻撃の試行やポリシー違反を記録するため、ブロックされた接続のログ記録を有効にしてください。監査証跡を維持するため、管理ツールを許可するルールなど、機密性の高いルールでは許可された接続のログ記録も有効にしてください。ファイアウォールログをSIEMに転送して相関分析します。1台のホストからアウトバウンド接続のブロックが繰り返し発生している場合、マルウェアがC2へのコールバックを試みている可能性があります。Windowsでは、ファイアウォールログはデフォルトで%systemroot%\System32\LogFiles\Firewall\pfirewall.logに書き込まれるため、Windows Event Forwarding(WEF)またはログエージェントを介して転送する必要があります。
# Enable Windows Firewall logging via PowerShell
Set-NetFirewallProfile -All \
-LogBlocked True \
-LogAllowed True \
-LogMaxSizeKilobytes 16384 \
-LogFileName '%systemroot%\System32\LogFiles\Firewall\pfirewall.log'
# Linux: log dropped packets with iptables
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 5/min -j LOG \
--log-prefix 'IPtables-Dropped: ' --log-level 4
iptables -A LOGGING -j DROPクイックチェック
このレッスンで扱ったCompTIA Security+(SY0-701)の概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、ホストベースファイアウォール(Windows Defender Firewall、iptables)が、デフォルト拒否の姿勢とアプリケーション単位のルールによってエンドポイントごとにトラフィックをフィルタリングすること、アプリケーションのallowlisting(AppLocker、WDAC)がマルウェアを含む未承認の実行可能ファイルの実行をブロックすること、そしてファイアウォール、allowlisting、EDRの多層化によって多層防御が実現し、攻撃のコストが大幅に高まることを学びました。次は、メール認証のSPF、DKIM、DMARCについて学びます。
よくある質問
「ホストベースファイアウォールとアプリケーション許可リスト」レッスンは無料ですか?
はい。「ホストベースファイアウォールとアプリケーション許可リスト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Security+ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Security+ Academyコースには全4レッスンが含まれています。
「ホストベースファイアウォールとアプリケーション許可リスト」で何を学びますか?
ホストベースのファイアウォール(Windows Defender Firewall、iptables)と、未承認ソフトウェアの実行をブロックするアプリケーション許可リストを設定します。 ブラウザで直接実行するハンズオンコードでSecurity+ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Security+ Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSecurity+ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ホストベースファイアウォールとアプリケーション許可リスト」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSecurity+ Academyレッスンでコードを書いて実行できますか?
はい。すべてのSecurity+ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- アンチウイルス、EDR、XDRプラットフォーム
- OSハードニング:パッチ適用、ベースライン設定、CISベンチマーク
- モバイルデバイス管理(MDM)とBYODポリシー
- ホストベースファイアウォールとアプリケーション許可リスト