AWS Network Firewallを使用すると、Network Securityの管理された脅威インテリジェンスのサブセットを使用して、一般的なネットワークベースの脅威を検出および阻止できます。これにより、AWSが管理するネットワークインフラストラクチャを展開し、業界をリードするパートナーがサポートする脅威インテリジェンスと組み合わせることができます。この脅威インテリジェンスは、不正プログラムの検出と阻止に重点を置いています。この脅威インテリジェンスには、AWS
Network Firewallサービスのすべての利用可能なリージョンで共有できるリソースとRuleグループが含まれています。
共有を有効にする
この共有を有効にして、Network SecurityルールグループをAWS Network Firewallに適用できるようにします。
手順
- ナビゲーションバーからポリシーアイコン
をクリックし、同期管理を選択します。
- AWS Network Firewallセクションで、Configure Sharingをクリックします。
- Share Threat Intelligence with AWSダイアログで、脅威インテリジェンスを共有したいAWSアカウントIDを入力します。アカウントを追加すると、そのアカウントでの脅威インテリジェンスの共有を無効にしたり、さらに管理したりすることはできません。
- 利用規約に同意し、共有を有効にするをクリックしてください。
ルールGroupの共有を確認
次のいずれかのインターフェイスを使用して、ルールグループが正常に共有されたことを確認してください:
-
AWS Resource Access Manager
-
AWS Network firewall
![]() |
注意構成後に共有を有効にするをクリックすると、AWS Resource Access ManagerでNetwork Securityによって共有されたルールグループを一度だけ承認します。ルールグループは毎週自動的に更新されます。
|
アカウントの管理者がアカウント上の非管理者ユーザとリソースを共有できるようにするには、非管理者IAMロールの権限を
AWSResourceAccessManagerResourceShareParticipantAccess
で有効にして、リソース共有の招待を受け入れられるようにする必要があります。{ "Version": "****-**-**", "Statement": [ { "Action": [ "ram:AcceptResourceShareInvitation", "ram:GetResourcePolicies", "ram:GetResourceShareInvitations", "ram:GetResourceShares", "ram:ListPendingInvitationResources", "ram:ListPrincipals", "ram:ListResources", "ram:RejectResourceShareInvitation" ], "Effect": "Allow", "Resource": "*" } ] }
非Adminユーザは共有リソースからの関連付けを解除できません。解除を試みると、権限エラーが発生します。
すべてのRuleはデフォルトでトラフィックをブロックするように設定されています。お使いの環境でトラフィックをブロックしている可能性のあるRuleについて詳しく知るには、ナビゲーションバーのポリシーアイコン
をクリックし、侵入防御フィルタリングを選択して、Searchフィールドに特定のフィルタRule名またはIDを入力してください。
AWS Resource Access Managerページを更新して、Network Securityアカウントが共有プリンシパルの下で正常に
Associated
されたことを確認してください。共有ルールグループ
トラフィックを検査するために、AWS Network Firewallはステートフルルールとステートレスルールの両方を使用します。Amazon VPCネットワークアクセス管理リスト
(ACL) と同様に、ステートレスルールはフローの方向や確立された接続の存在などのコンテキスト要因に関係なく、個々のパケット自体の検査を対象とします。これに対して、ステートフルルールによる検査はトラフィックフローのコンテキストに依存します。ステートフルルールはより複雑で、ネットワークトラフィックのログ記録やトラフィックに関するNetwork
Firewallのアラートを可能にします。
ステートレスルール
ステートレスルールグループは次の2つの機能に分けることができます:
- BLOCKルール (*-rulegroup-json) – トラフィックをブロックするだけの場合は、これらのルールを使用してください。
- ALLOWルール (*-rulegroup-allow-json) – トラフィックを許可し、検出されたイベントをステートフルエンジンに送信して分析およびログ記録を行う場合にこれらのルールを使用します。
次の表は、Network Securityによって共有されるステートレスルールグループをまとめたものです。現在の容量制限により、ネットワーク環境に最も適したルールグループを1つだけ選択する必要があります。
Rule Group | 説明 | Rule/IP数 | AWSアクション |
repdv-rulegroup-jsonとrepdv-rulegroup-allow-json | これらのIPは、ルーティング不可能なIP (フルボゴン)、スパムOperations (Spamhaus) への既知のリンク、およびさまざまな不正プログラム/トロイの木馬によって使用される既知のIPを含む多くのソースから派生しています。 | 2388 | aws:dropandaws:forward_to_sfe |
repdv-rulegroup-tor-exits-jsonおよびrepdv-rulegroup-tor-exits-allow-json | これらのIPは、Torトラフィックがインターネットに接続するために使用されるゲートウェイです。Torの出口ノードに関する詳細は、CISAレポートを参照してください。 | 1331 | aws:dropandaws:forward_to_sfe |
repdv-rulegroup-wrs-top-ips-jsonとrepdv-rulegroup-wrs-top-ips-allow-json | メールレピュテーションサービスのメール転送エージェント (ERS MTA) の疑わしいIPリストからの最もヒットされた上位5000のIP。 | 5000 | aws:dropandaws:forward_to_sfe |
ステートフルルール
パケットのトラフィックフローの文脈でパケットを検査することにより、ステートフルルールエンジンはパケットの配信を遅延させ、パケットをトラフィックフロー検査のためにグループ化することができます。共有ステートフルルールGroup、snort-mrs-snort-rules-jsonは、サービスに含まれる不正プログラムルールの強力なサブセットです。これは約128のRuleで構成され、容量制限は1000です。このRuleGroupをファイアウォールポリシーに追加して、VPCを保護することができます。侵入防御フィルタリングによるすべての不正プログラムルールについてさらに学ぶ。
ファイアウォールPoliciesを作成
Network Securityによって共有されたルールグループを受け入れた後、ルールグループをステートレスまたはステートフルルールグループを含むポリシーに割り当てて、トラフィックをNetwork
Securityルールグループに転送できるようにします。ファイアウォールポリシーの最適化について詳しくはこちら。
ファイアウォールポリシーを設定する際には、ルールGroupの有効期間中に予想されるルールの数を計算してください。これは、一度この制限を指定すると、再度変更することができないため重要です。ステートフルルールGroupで持てるルールの最大数は30,000であり、ステートレスルールGroupの最大数は10,000ルールです。
ファイアウォールを設定
ファイアウォールポリシーに脅威インテリジェンスルールグループを設定した後、設定済みのAWS Network Firewallにポリシーを関連付ける必要があります。
手順
- AWS VPCから、AWS NETWORK FIREWALL > FIREWALLS > firewallname > Firewall detailsに移動します。
- Associated policy and VPC policyパネルで、編集をクリックします。
- 既存のファイアウォールポリシーを関連付けるを選択します。
- ファイアウォールに関連付けるファイアウォールポリシーを選択し、保存をクリックしてください。
ログの設定
トラフィックがルールの条件に一致するたびにイベントを記録するには:
手順
- AWS VPCから、AWS NETWORK FIREWALL > FIREWALLS > firewallname > Firewall detailsに移動します。
- [ログ]パネルで、編集をクリックします。
- Log typeパネルで、Flowチェックボックスを選択してトラフィックヒットを記録するかどうかを指定します。アラートを受け取りたい場合は、Alertチェックボックスも選択します。
- 前の手順でアラートログを設定した場合、ログを送信する場所と関連するロググループをLog destination for alertsパネルで指定してください。
ルールグループのテスト
ルールグループが正しく構成されていることを確認するには、まず次の前提条件を満たしていることを確認してください。
- 共有ステートフルRule (networksecurity-snort-mrs-snort-rules-json) をファイアウォールポリシーに追加しました。
- ファイアウォールポリシーをファイアウォールに関連付けました。
- ファイアウォールを設定して、ステートレスルールGroupに一致しないすべてのフルパケットをステートフルエンジンに転送して検査し、パケットがステートフルルールGroupに一致したときにアラートログが生成されるようにしました。
- ファイアウォールをデプロイしてVPCを保護します。VPCには少なくとも1つの稼働中のインスタンスが含まれている必要があります。AWS Network Firewallアーキテクチャについて詳しく学びましょう。
これらの前提条件を完了した後、curlクエリを使用して以下の不正プログラムフィルターをトリガーし、ルールが機能していることを確認できます。これらのフィルターはすべて、HTTPポート
(ポート80) を介した送信トラフィックを処理します。
HTTPの場合: Trojan-Downloader.Win64.BazarLoader.A ランタイム検出 (フィルター 25492) のために、次のコマンドを入力してください:
curl -H 'User-Agent: sdvntyer' http://www.example.com/api/v88
次に、アラートログで出力を確認します:
{ "firewall_name": "...", ... "event": { "timestamp": "...", ... "dest_ip": "93.184.216.34", "dest_port": 80, "proto": "TCP", "tx_id": 0, "alert": { "action": "allowed", "signature_id":..., "rev": 1, "signature": "Malware Trojan-Downloader.Win64.BazarLoader.A Runtime Detection - (DECRYPTED TRAFFIC)", "category": "", "severity": 3 }, "http": { "hostname": "www.example.com", "url": "/api/v88", "http_user_agent": "sdvntyer", "http_method": "GET", "protocol": "HTTP/1.1", "length": 0 }, "app_proto": "http" } }
HTTPの場合: Backdoor.Shell.Dragonmuddy.A ランタイム検出 (フィルター 34738) のために、次のコマンドを入力してください:
curl 'http://www.example.com/includes/main.php?t=7d4580a3910c54d62b46f24c397c8d59&f=g2&type=cmd&id=D7CB4B6E5A21CA596DE0A7E10059C85E'
その後、アラートログで出力を確認してください:
{ "firewall_name": "...", ... "event": { "timestamp": "...", ... "dest_ip": "93.184.216.34", "dest_port": 80, "proto": "TCP", "tx_id": 0, "alert": { "action": "allowed", "signature_id": ..., "rev": 1, "signature": "Malware Backdoor.Shell.Dragonmuddy.A Runtime Detection", "category": "", "severity": 3 }, "http": { "hostname": "www.example.com", "url": "/includes/main.php?t=7d4580a3910c54d62b46f24c397c8d59&f=g2&type=cmd&id=D7CB4B6E5A21CA596DE0A7E10059C85E", "http_user_agent": "curl/7.68.0", "http_method": "GET", "protocol": "HTTP/1.1", "length": 0 }, "app_proto": "http" } }
HTTP: Worm.Python.KashmirBlack.Aランタイム検出 (フィルタ38451) の場合、次のコマンドを入力してください:
curl -H 'User-Agent: ArcherGhost' -d 'post=eyJkYXRhIjogeyJkb21haW4iOiAiaHR0cDovL3RhcmdldDEyMy5jb20vYXNzZXRzL3ZlbmRvci9waHB1bml0L3BocHVuaXQvc3JjL1V0aWwvUEhQL3Nzc3AucGhwIiwgInNlcnZlciI6ICIxOTIuMTY4LjEwNy4xOSIsICJ0aXRsZSI6ICJqcSJ9LCAidHlwZSI6ICJzY2FubmVyIn0%3D'
http://www.example.com/adeliap/404.php
次に、アラートログで出力を確認します:
{ "firewall_name": "...", ... "event": { "timestamp": "...", ... "dest_ip": "93.184.216.34", "dest_port": 80, "proto": "TCP", "tx_id": 0, "alert": { "action": "allowed", "signature_id": ..., "rev": 1, "signature": "Malware Worm.Python.KashmirBlack.A Runtime Detection - (DECRYPTED TRAFFIC)", "category": "", "severity": 3 }, "http": { "hostname": "www.example.com", "url": "/adeliap/404.php", "http_user_agent": "ArcherGhost", "http_method": "POST", "protocol": "HTTP/1.1", "length": 0 }, "app_proto": "http" } }
これらのフィルターについて詳しく知るには、フィルタ番号 (例: 25492、34738、38451) を使用して検索してください。トラブルシューティングのサポートが必要な場合は、右上隅のヘルプ > サポートをクリックしてサポートケースを提出してください。