ヤマムギ

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ログが出力されていました。


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

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

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

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

 - AWS ,

ad

ad

  関連記事

AWS VPC ネットワークACLでHTTP(80)のみ許可する

ユーザーガイドのカスタムネットワーク ACLのうち、HTTP(80)を許可する設 …

AWS Summit 2016 Tokyoに参加してきました (前日 ~ Day1)

AWS Summit 2016 Tokyoにて、セッション聴講、ブース展示拝見、 …

Amazon SNSサブスクリプションフィルターを設定してPython(boto3)からPublish

上記のような構成でRocketChatを使うとき使わないときがあります。 都度都 …

ALBのヘルスチェックでPHPとMySQL接続をチェック

当ブログで504エラーが発生して、オートスケーリングにより自動でインスタンスが置 …

kintoneでEveryoneに権限が設定されているアプリをAWS Lambdaで一括チェックする

こないだ、kintone Cafeでユーザーが自由に作成している環境だと、どんな …

特定AWSアカウント特定リージョンのSNSトピックを削除するLambda(Python)

やりたいこと 特定アカウント内特定リージョン内のSNSトピックを全部削除したいで …

Amazon SNSサブスクリプションフィルターで優先度別のSQSキューにサブスクライブする

EC2のコンシューマーアプリケーションは優先度の高いキューのメッセージを先に処理 …

CloudFrontのカスタムヘッダーがなければALBのルーティングで503レスポンスを返す

大阪リージョンにはWAFがまだないです(2021年4月現在) 今のこのブログの構 …

AWS Lambda(Python)からZoom投票作成

以前、Zoomの投票(アンケート)をAPI経由で作成するというブログで書きました …

Amazon LinuxにRedmine 環境構築(エラーと対応をそのまま記載版)

Amazon Linuxにgit + Redmineの環境を構築してみます。 自 …