⚡ 結論ファースト

EC2がボットネットのC2通信を行うのを防ぐには、Route 53 Resolver DNS FirewallAWSManagedDomainsBotnetCommandandControl リストを使い、悪意あるドメインへのDNS解決をブロックするのが最も効果的です。通信の「最初の一歩」であるDNS解決を止めることで、攻撃者との接続自体を成立させません。

1

ボットネットとC2通信とは?

🎭 たとえ話で理解

「操り人形劇場」のイメージ

ボットネットは、攻撃者(人形師)がマルウェアで感染させた大量のコンピュータ(操り人形)を遠隔操作するネットワークです。C2(コマンド&コントロール)通信は、人形師が人形に指示を送る「糸」のようなものです。人形は定期的に人形師に「次は何をすればいい?」と電話をかけ、人形師は「あのサイトを攻撃しろ」「データを送れ」と指示を出します。

🔍 ボットネットの構造
🎭 攻撃者(人形師) ボットネット全体を遠隔操作
C2通信(指示と報告)
🖥️ C2サーバー(中継基地) 攻撃者の指示を配信するドメイン
🔤 DNS解決でC2サーバーのIPを取得
💻 感染EC2
💻 感染EC2
💻 感染EC2
💡 ポイント:感染したEC2がC2サーバーに接続するとき、まずDNSでドメイン名をIPアドレスに変換します。この「DNS解決」のステップがブロックの最適なポイントです。
C2通信の特徴
🔤
DNS依存
C2サーバーへの通信開始時に、ほぼ必ずDNSでドメイン解決を行います
🔀
動的ドメイン生成
DGA(ドメイン生成アルゴリズム)で接続先ドメインを動的に変更し、追跡を回避します
📋
既知C2ドメイン
セキュリティ研究機関が特定した既知のC2ドメインはブラックリスト化されています
🕵️
隠密通信
通常のHTTPS通信に紛れて指示を受け取るため、通信内容の検査だけでは発見が困難です
2

なぜDNSレベルで守るのが効果的?

🎭 たとえ話で理解

「電話帳の受付係」のイメージ

DNSは「インターネットの電話帳」のようなもので、ドメイン名(名前)をIPアドレス(電話番号)に変換します。DNS Firewallは、この電話帳を管理する「受付係」に相当します。誰かが危険な相手の電話番号を調べようとしたら、受付係が「その番号はお教えできません」と断ります。電話番号が分からなければ、電話をかけること自体ができません。

📞 DNS Firewallの仕組み(受付係のたとえ)
💻 感染したEC2(電話をかけたい人)
「evil-c2.example.com の番号を教えて」
DNSクエリ送信
🛡️ Route 53 DNS Firewall(受付係)
「ブラックリストと照合中...」
⬇ リストに一致
🚫 BLOCK
⬇ リストに無し
✅ ALLOW
🚫 DNS解決を拒否
「その番号はお教えできません」
→ 通信不成立
✅ DNS解決を許可
「番号は xxx.xxx.xxx.xxx です」
→ 正常に通信
DNSレベル防御の3つの利点
🚪
最初の関所
通信の最初のステップでブロックするため、悪意のある通信が発生する前に遮断できます
🏢
中央管理
VPC全体に一括適用できるため、EC2を1台ずつ設定する必要がありません
🔄
自動更新
AWSマネージドリストは自動更新されるため、最新の脅威に常に対応できます
3

Route 53 Resolver DNS Firewall の全体像

🔄 保護フロー全体図
💻 EC2インスタンス(VPC内)
DNSクエリ「malware-c2.bad.com → ?」
DNSクエリ
📡 Route 53 Resolver
VPC内のDNS解決を担当
ルールグループで検査
🛡️ DNS Firewall ルールグループ
ドメインリストと照合 → アクション実行
⬇ 悪意あるドメイン
🚫 BLOCK / ALERT
⬇ 正常なドメイン
✅ ALLOW
🚫 BLOCK
NODATA / NXDOMAIN / OVERRIDE を返す
✅ ALLOW
通常のDNS解決が行われ通信可能
DNS Firewallの主要コンポーネント
📜
ドメインリスト
フィルタリング対象のドメインを定義。AWSマネージドリスト(自動更新)とカスタムリスト(手動管理)の2種類があります
📐
ルールグループ
「どのドメインリストに対して、どのアクションを取るか」を定義するルールの集合体です
⚙️
アクション
ALLOW(許可)、BLOCK(拒否)、ALERT(許可+ログ記録)の3つから選択できます
🔗
VPCへの関連付け
ルールグループをVPCに関連付けることで、そのVPC内のすべてのDNSクエリに適用されます
4

AWSマネージドドメインリスト

AWSが管理・定期更新する脅威インテリジェンスに基づいたドメインリストです。ユーザーがリストを自分で管理する必要がなく、最新の脅威に自動対応できます。

🤖
AWSManagedDomains​BotnetCommandand​Control
既知のボットネットC2ドメインのリスト。今回の主役。定期的に更新され、新たに発見されたC2ドメインが自動追加されます。
🦠
AWSManagedDomains​MalwareDomainList
マルウェア配布に使われる既知のドメインリスト。マルウェアのダウンロードやアップデートを防止します。
🔒
AWSManagedDomains​AggregateThreatList
複数の脅威カテゴリを統合した包括的なリスト。広範な脅威からの保護に使用します。
📝
カスタムドメインリスト
自社で独自に管理するドメインリスト。組織固有の脅威やポリシーに基づいて追加できます。
5

実装ステップ

🎭 たとえ話で理解

「ビルのセキュリティシステム導入」のイメージ

実装は、ビルにセキュリティシステムを導入するのと同じです。まず「ブラックリスト」を用意し、次に「警備員のマニュアル(ルールグループ)」を作成し、最後に「各フロアに配置(VPCに関連付け)」します。

1
ルールグループを作成する
DNS Firewallのルールグループを作成します。これが「警備マニュアル」の枠になります。
# ルールグループの作成 aws route53resolver create-firewall-rule-group \ --name "botnet-c2-protection" \ --tags Key=Purpose,Value=Security
2
マネージドドメインリストでルールを追加する
AWSManagedDomainsBotnetCommandandControl リストを使ったBLOCKルールを追加します。
# ボットネットC2ドメインをブロックするルールを追加 aws route53resolver create-firewall-rule \ --firewall-rule-group-id rslvr-frg-xxxxxxxxx \ --firewall-domain-list-id \ rslvr-fdl-xxxxxxxxx \ # AWSManagedDomainsBotnetCommandandControl --priority 100 \ --action BLOCK \ --block-response NODATA \ --name "block-botnet-c2"
3
VPCにルールグループを関連付ける
作成したルールグループを保護対象のVPCに関連付け、DNSフィルタリングを有効化します。
# VPCへの関連付け aws route53resolver associate-firewall-rule-group \ --firewall-rule-group-id rslvr-frg-xxxxxxxxx \ --vpc-id vpc-xxxxxxxxx \ --priority 101 \ --name "protect-production-vpc"
4
ログ記録を有効化して監視する
Route 53 Resolver クエリログを有効化し、ブロックされたクエリを可視化・監視します。
# クエリログの設定 aws route53resolver create-resolver-query-log-config \ --name "dns-firewall-logs" \ --destination-arn arn:aws:s3:::my-dns-logs-bucket # VPCへの関連付け aws route53resolver \ associate-resolver-query-log-config \ --resolver-query-log-config-id rqlc-xxxxxxxxx \ --resource-id vpc-xxxxxxxxx
6

導入前 vs 導入後

🚨 DNS Firewall導入前
  • 感染EC2が自由にC2ドメインを解決できる
  • 攻撃者がボットに任意の指示を送信可能
  • データ窃取やDDoS攻撃の踏み台にされる
  • 悪意ある通信の発見が遅れ被害が拡大
  • 各インスタンスごとの対策が必要で管理が煩雑
✅ DNS Firewall導入後
  • 既知のC2ドメインへのDNS解決が自動ブロック
  • 攻撃者との通信経路が成立しない
  • VPC全体を一括で保護できる
  • ブロックログで感染インスタンスの特定が容易
  • AWSマネージドリストで脅威情報が自動更新
7

ベストプラクティス

📊
まずALERTモードで検証
本番環境では、いきなりBLOCKせずALERTモードで誤検知がないか確認してからBLOCKに切り替えましょう
🔀
複数リストの併用
BotnetC2リストに加えて、MalwareDomainListやカスタムリストも併用し、多層防御を実現しましょう
📝
ログの監視と分析
CloudWatch LogsやS3にクエリログを出力し、定期的に分析してインシデントの早期発見に活用しましょう
🔗
他サービスとの連携
GuardDuty、Security Hub、AWS Configと組み合わせて、包括的なセキュリティ監視体制を構築しましょう
8

よくある質問

❓ Security GroupやNACLとの違いは?

Security GroupやNACLはIPアドレス/ポートベースで通信を制御しますが、DNS Firewallはドメイン名ベースで制御します。C2サーバーはIPアドレスを頻繁に変更するため、ドメインレベルでブロックする方が効果的です。

❓ マネージドリストはどのくらいの頻度で更新される?

AWSが脅威インテリジェンスに基づいて定期的に更新します。具体的な更新頻度は公開されていませんが、新しいC2ドメインが発見され次第、リストに追加されます。

❓ 正常な通信が誤ってブロックされることはある?

可能性はゼロではありません。そのため、本番導入前にALERTモードで検証し、ホワイトリスト(ALLOWルール)で正当なドメインを明示的に許可することが推奨されます。

❓ DNSを使わないC2通信も防げる?

DNS FirewallはDNS解決をブロックするサービスのため、IPアドレス直指定のC2通信には対応できません。そのような場合は、Network Firewall、Security Group、GuardDutyなど他のサービスとの組み合わせが必要です。

📌 試験対策のポイント

「EC2のボットネットC2通信を防ぎたい」→ Route 53 Resolver DNS Firewall + AWSManagedDomainsBotnetCommandandControl

Created by SSuzuki1063

AWS SAP Learning Resources