AWS Network Firewallの入門
2021/10/05
公式のGetting started with AWS Network Firewallを参考に試してみました。
目次
構成
最終形はこうなるように試してみました。
VPCのサブネットはあらかじめ作成しておきました。
ルールグループの作成
ステートレスルールを選択して作成しました。
キャパシティはチュートリアルどおり10にしました。
これもチュートリアルどおり、アクションはドロップで、指定のCIDRを設定しました。
これでステートレスルールの設定は完了です。
存在しないIPアドレスに設定しても面白くないので、後に送信元をVPCのCIDRにして、実在するWebサーバーへの送信をブロックしてみました。
ステートフルルールも作成しました。
5-tuple、Domain list、Suricata互換のIPSルールから選択できますが、Suricata互換のIPSルールを選択しました。
1 2 |
drop tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"evil.com"; startswith; nocase; endswith; msg:"matching TLS denylisted FQDNs"; priority:1; flow:to_server, established; sid:1; rev:1; gid:255;) |
stateful rule is invalid, rule: drop tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:”evil.com”; startswith; nocase; endswith; msg:”matching TLS denylisted FQDNs”; priority:1; flow:to_server, established; sid:1; rev:1; gid:255;) , reason: GIDs are not allowed. Illegal option(s): [gid:255]
チュートリアルの上記のルールでは、gidをサポートしてないってエラーになったので、最終的にgidを抜いて作りました。
1 2 |
drop tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"evil.com"; startswith; nocase; endswith; msg:"matching TLS denylisted FQDNs"; priority:1; flow:to_server, established; sid:1; rev:1;) |
ステートフルとステートレスのルールができました。
ルールポリシーの作成
先程作ったステートレスルールとステートフルルールを選択しました。
ファイヤーウォールの作成
Network Firewall用に作成したサブネットを指定しました。
さきほど作成したポリシーを関連付けしました。
ログの設定
アラートが出力されるように設定しました。
ルートテーブルの設定
以下を追加しました。
IGWイングレスルートテーブル
FirewallエンドポイントのVPCエンドポイントIDをターゲットとして、NATゲートウェイが配置されたサブネットを指定しました。
Firewallエンドポイントのサブネット
0.0.0.0/0へのターゲットにインターネットゲートウェイを指定しました。
NATゲートウェイのサブネット
0.0.0.0/0へのターゲットにFirewallエンドポイントのVPCエンドポイントIDを指定しました。
プライベートサブネット
従来のプライベートサブネットと変わりなく、NATゲートウェイへ向けています。
確認
SSMManagedInstanceCoreポリシーをアタッチしたIAMロールを設定したEC2インスタンスをプライベートサブネットで起動して、セッションマネージャで接続しました。
Suricata互換のIPSルールでは、どうやら”https://evil.com”へのリクエストがブロックされるのかなと思い試しました。
念の為、手元のMacからは、https://evil.comもhttps://www.evil.comも接続できることを確認しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ curl -I https://www.evil.com HTTP/1.1 200 OK Date: Mon, 13 Sep 2021 12:16:55 GMT Content-Type: text/html Content-Length: 3812 Connection: keep-alive Server: Apache/2 Last-Modified: Tue, 05 Jan 2021 00:34:04 GMT Accept-Ranges: bytes Cache-Control: max-age=3600 Etag: "ee4-5b81c5d245ae6" Expires: Mon, 13 Sep 2021 12:20:05 GMT Age: 3410 $ curl -I https://evil.com curl: (28) Operation timed out after 300519 milliseconds with 0 out of 0 bytes received |
ステートフルルールが効いているようです。
CloudWatch Logsにもalertログが出力されていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
{ "firewall_name": "DemoNFW", "availability_zone": "us-east-1a", "event_timestamp": "1631535433", "event": { "timestamp": "2021-09-13T12:17:13.926969+0000", "flow_id": 1554871598306309, "event_type": "alert", "src_ip": "10.0.0.215", "src_port": 14456, "dest_ip": "66.96.146.129", "dest_port": 443, "proto": "TCP", "tx_id": 0, "alert": { "action": "blocked", "signature_id": 1, "rev": 1, "signature": "matching TLS denylisted FQDNs", "category": "", "severity": 1 }, "tls": { "sni": "evil.com", "version": "UNDETERMINED", "ja3": {}, "ja3s": {} }, "app_proto": "tls" } } |
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
【PR】 「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Pandocサーバーのコンテナイメージを作成する
マークダウンからEPUBへの変換をAWS Batchで行いたく、ECRにアップロ …
-
-
ブログ画像のシンガポールリージョンへのレプリケーションはじめました
このブログの画像はS3バケットに保存して、CloudFront経由で配信していま …
-
-
EFSのマウントターゲットがデフォルトで作成されるようになってました
ひさしぶりにAmazon EFSファイルシステムを作成しました。 作成手順がすご …
-
-
AWS Expert Online at JAWS-UG首都圏エリアに参加して「Amazon EC2 スポットインスタンス再入門」を聞いてきた
AWS Expert Onlineという勉強会がありまして、AWS ソリューショ …
-
-
EC2 プレイスメントグループを試してみました
やったことないのでやってみたやつです。 プレイスメントグループの作成 まず、EC …
-
-
Application Load Balancer スティッキーセッションでどれぐらい偏るかを偶然見ました
Amazon Linux2のPHPを7.2から7.3へアップデートしましたでアッ …
-
-
AWSのアカウントを新規作成と、最低限やっておいた方がいいMFAの設定
AWSのアカウントを新規作成する手順を書き出しておきます。 ※2017年8月6日 …
-
-
T3.nanoで仮想メモリ割当をユーザーデータで実行する
T3.nanoはメモリがだいたい500MBです。 実行する処理によってはメモリエ …
-
-
RDSのポイントインタイムリカバリをしました
WordPressで画像アップロードができなくなった(AWS WAFでブロックし …
-
-
試したい事があるのでAWS でとりあえずAmazon Linuxのサーバを作る
1年間の無料キャンペーン期間中に検証する とある勉強会でせっかくAWSのアカウン …