Amazon Route 53 Resolver DNS Firewall と AWS Network Firewall を利用した Egress のセキュリティ対策について学べるワークショップに参加しました #AWSreInvent #SEC304
Egress のセキュリティ対策について学べるワークショップ「Mitigate zero-day events and ransomware risks with VPC egress controls」に参加してきました。Amazon Route 53 Resolver DNS Firewall の使い方と AWS Network Firewall の設定や ルールのついて学べました。特に Suricata ルールの記載方法が勉強になりました。
ワークショップの概要
タイトル
- SEC304 | Mitigate zero-day events and ransomware risks with VPC egress controls
概要(re:Invent 2024 イベントサイトより抜粋)
In this network security workshop, learn how to implement AWS best practices for egress controls to mitigate risks from software supply chain dependencies, zero-day events, cryptocurrency mining, and ransomware. Also, explore a new security use case enabled by TLS decryption of outbound network flows. You must bring your laptop to participate.
Spekaers
- Ranjith Rayaprolu, Senior Solutions Architect, Amazon Web Services
- Michael Leighty, Security Specialist SA, AWS
LEVEL
- 300 – Advanced
ワークショップの流れ
ワークショップは次のアジェンダで進行しました。はじめに Egress の説明とどのような危険があるのかの説明があり、その後に Amazon Route 53 Resolver DNS Firewall と AWS Netwotk Firewall の説明がありました。この 2 つのサービスがメインの題材です。
- What is an egress network connection ?
- How threat actors use egress connections
- AWS Netwotk Firewall and Amazon Route 53 Resolver DNS Firewall intro
- TLS Inspection with AWS Netwotk Firewall
- Egress controls best practices
- ワークショップ(ハンズオン)
ワークショップ(ハンズオン)の内容
ワークショップ(ハンズオン)は次の 4 つの Lab で構成されていました。最期の Lab 4 はハンズオンでなく文章のみの提供でした。
- Lab 1 - Amazon Route 53 Resolver DNS Firewall
- Egress DNS Query Filtering
- DNS Firewall managed Domain lists
- Analyze Query Logs
- Lab 2 - AWS Network Firewall
- Using Suricata rules with AWS Network Firewall
- Blocking evasion of Route 53 Resolver
- Blocking common network attack vectors
- Geographic IP Filtering
- TLS Inspection with Network Firewall
- Blocking encrypted DNS
- Building Domain-based Allow policies
- Optional - Working with Stateless rules
- Lab 3 - Analyzing and Blocking Command and Control Traffic
- HTTP Command and Control Traffic
- DNS Command and Control Traffic
- Optional - Further C2 testing with Network Flight Simulator
- Lab 4 - AWS Firewall Manager (walkthrough only)
2 時間のワークショップでしたが、ボリュームが多く、時間内では Lab 1,2 を実施しました。
ワークショップの開始時点で既に下図アーキテクチャの環境が用意されていました。図中の PublicTrafficHost はインターネット上のアクセス先のサーバをエミュレートした EC2 インスタンスです。さらに、AWS Network Firewall のログを可視化する CloudWatch ダッシュボードも用意されていました。
Lab 1,2 では TestInstance で実行する、17 種類の通信先へのアクセスをチェックするシェルスクリプトが用意されていました。それらのすべての通信先をブロックすることを目的に 1 つずつブロックしていきます。
Lab 1 の Amazon Route 53 Resolver DNS Firewall では、特定のドメインの通信をすべてブロックするルールなどを構築しました。また、ログの検索も含まれていました。CloudWatch ロググループに保管されているログを Logs Insights で検索する方法です。
例えば、ブロックした通信のみを検索する例です。
stats count(*) as numRequests by query_name, query_type, rcode, answers.0.Rdata, srcaddr
| sort numRequests desc
| filter answers.0.Rdata like /block/
今回の設定では、Amazon Route 53 Resolver DNS Firewall でブロックした場合は CNAME レコードをオーバーライドする設定をしていました。そのため、上記のログには dns-firewall-block
という設定で指定した文字列が表示されています。
ブロック対象のドメインを名前解決した例です。
$ dig example.xyz
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.13.8 <<>> example.xyz
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 27138
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.xyz. IN A
;; ANSWER SECTION:
example.xyz. 0 IN CNAME dns-firewall-block.
;; AUTHORITY SECTION:
. 796 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2024120501 1800 900 604800 86400
;; Query time: 3 msec
;; SERVER: 10.1.0.2#53(10.1.0.2)
;; WHEN: Thu Dec 05 20:47:42 UTC 2024
;; MSG SIZE rcvd: 147
上記の例とは別のドメインとなりますが、クエリをブロックしたログの例も掲載します。CloudWatch ロググループに保管されているログです。
{
"version": "1.100000",
"account_id": "111122223333",
"region": "us-west-2",
"vpc_id": "vpc-0b0fd64811example",
"query_timestamp": "2024-12-05T20:51:16Z",
"query_name": "google.cn.",
"query_type": "A",
"query_class": "IN",
"rcode": "NXDOMAIN",
"answers": [
{
"Rdata": "dns-firewall-block.",
"Type": "CNAME",
"Class": "IN"
}
],
"srcaddr": "10.1.0.204",
"srcport": "49412",
"transport": "UDP",
"srcids": {
"instance": "i-02c4038e63example"
},
"firewall_rule_action": "BLOCK",
"firewall_rule_group_id": "rslvr-frg-d0e0d201dexample",
"firewall_domain_list_id": "rslvr-fdl-2ab87376example"
}
Lab 2 では、AWS Network Firewall を使って、主に Suricata ルールを用いた方法で通信をブロックしました。
Suricata ルールを設定する手順では、単純に設定するルールが掲載されているだけではなく、そのルールの説明が詳しく記載されていたことが印象的でした。そのおかげで Suricata ルールを作成した経験が少ない私でも理解しやすかったと思います。
作成するルールの一例です。
- TLS プロトコルを利用していない 443 番ポートの通信をアラート
- ホーム ネットワークから送信されていない DNS (53 番ポート) の通信をドロップ
- ホーム ネットワークから送信される DNS over TLS (853 番ポート) の通信をドロップ
- ホーム ネットワークから送信され、ホーム ネットワーク以外のネットワークに向かう 20 および 21 番ポートの TCP をドロップ
- 特定の国への通信をすべてドロップ
また、TLS 検査の機能もハンズオンとして試すことができました。AWS Network Firewall を検証しようと思うと、環境を用意するのに一手間かかりますが、VPC やエミュレートされた EC2 インスタンスが構築済みの環境が用意されていたので、すぐにハンズオンができました。効率的に学習できたと思います。
サービスを使い始めるための参考情報
ワークショップの途中で AWS Netwotk Firewall と Amazon Route 53 Resolver DNS Firewall を使い始めるための追加情報の紹介がありましたので共有します。
- AWS Network Firewall Best Practices - AWS Security Services Best Practices
- Deployment models for AWS Network Firewall with VPC routing enhancements | Networking & Content Delivery
- Secure your Amazon VPC DNS resolution with Amazon Route 53 Resolver DNS Firewall | Networking & Content Delivery
- How to automate updates for your domain list in Route 53 Resolver DNS Firewall | AWS Security Blog
さいごに
Egress のセキュリティ対策について学べるワークショップ「Mitigate zero-day events and ransomware risks with VPC egress controls」に参加しました。これまで AWS Network Firewall の Suricata ルールはあまり利用したことがなかったので、ワークショップで様々なルールの記載方法が詳しい説明付きで掲載されていた点がとてもためになりました。今回は最期までできなかったので、また機会があれば参加してみたいです。