$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" /> $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" />

ヤマムギ

growing hard days.

*

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ルールを選択しました。

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を抜いて作りました。

ステートフルとステートレスのルールができました。

ルールポリシーの作成

先程作ったステートレスルールとステートフルルールを選択しました。

ファイヤーウォールの作成

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も接続できることを確認しています。

ステートフルルールが効いているようです。

CloudWatch Logsにもalertログが出力されていました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

ad

ad

  関連記事

Former2で既存リソースのCloudFormationテンプレート出力を試してみた

JAWS DAYS 2020の資料確認のお手伝いを少ししてまして、「ゼロからはじ …

EC2 Dedicated Hosts(専有ホスト)を起動

クォータ引き上げ 新規で作成したアカウントではDedicated Hostsがソ …

Amazon Linux 2023、T4Gインスタンス、PHP8にWordPressを移行しました

ブログをAmazon Linux 2からAmazon Linux 2023に移行 …

Cloud9でAWS CDK環境

最初ローカルに作ろうと思ったのですが、環境依存がというか、Macbookの環境で …

AWS Organizationsで新規メンバー登録したアカウントを組織から離して解約

2021年現在ではこの方法しかないと認識していますので書き残します。 そのうち新 …

AWS Lambdaで Unable to import module エラーが発生したときは

そもそも、Pycharmのナビゲーションペインでディレクトリごとドラッグ&amp …

RocketChat(EC2インスタンス)でCPU80%以上を10分間継続したら再起動する

先日、数日間のやり取り用で完全に使い捨てとして使っているRocketChatで、 …

LINE Bot APIのファーストステップをLambda+API Gatewayでやってみたらものすごく簡単で驚いた

トライアル当初はホワイトリストのしばりや、初回反応するまで時間がかかったりとみな …

AWS Cloud9で環境を共有する

(特にリモート環境では)画面共有をしたり、リポジトリを共有したり、コーディング環 …

Amazon CodeCatalystのスペースとプロジェクトを作成してみました

Amazon CodeCatalystはIAMユーザーで操作するのではなく、AW …