AWS Network Firewallを活用したWindows Serverのドメイン制御設定方法

# 1.はじめに
+ 概要
AWS Network Firewallは、強力なセキュリティ機能を提供し、ネットワークトラフィックを詳細に制御することができます。

+ 目的
本記事の目的はAWS Network Firewallを使用して、Windows Serverが特定のドメインに対してのみアクセスを許可する設定方法を解説することです。
これにより、ネットワークセキュリティを強化し、不要なトラフィックや不正アクセスを防止することができます。


# 2.前提条件・目標
+ 現在の環境
![現在の構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629107/5b7b3ae1-8bf4-271b-0e01-c4970279bb2e.png)


+ 目指している環境
![目指す構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629107/fb5c1985-367e-ffd1-31e9-d96bd7101d78.png)



+ ネットワーク構成の目標
上記の目指している図のようにトラフィックが以下の順序で流れるように設定します。
Network Firewallを通じて不要なトラフィックや不正アクセスを防止し、セキュリティを強化します。
「Windows Server」 → 「AWS Network Firewall」 → 「NATゲートウェイ」 → 「インターネット」


# 3.AWS Network Firewallの構成
## 1.概要
AWS Network Firewallは、AWSが提供するフルマネージドのネットワークセキュリティサービスです。
これにより、企業は複雑なネットワークトラフィックを簡単に管理し、セキュリティポリシーを適用することができます。
Network Firewallは、VPC内のトラフィックをフィルタリングし、特定のルールに基づいてトラフィックを許可または拒否します。

## 2.主なコンポーネント
+ Firewall
トラフィックをフィルタリングするための基本的な構成要素です。VPCとサブネットに配置されます。

+ Firewall Policy
トラフィックを制御するためのルールセットです。ステートフルルールとステートレスルールを含むことができます。

+ ルールグループ
ステートフルルールとステートレスルールを定義するためのグループです。これらのルールグループはFirewall Policyに追加されます。

## 3.セキュリティの強化
Network Firewallを使用することで、以下のようなセキュリティ強化が可能です。
+ 特定のドメインのみを許可(または拒否)
ルールを設定して、特定のドメインに対してのみアクセスを許可します。

+ 不正アクセスの防止
不要なトラフィックや不正アクセスを防止します。

+ 詳細なログ
トラフィックの詳細なログを取得し、セキュリティ監視を強化します。


# 4.AWS Network Firewallの設定
本記事では「ルールグループ」 → 「Firewall Policy」 → 「Firewall」の順に設定を行います。
## 1.ルールグループの作成
まず、特定のドメインリストを制御するルールグループを作成します。
1. AWSコンソールで「Network Firewall」を検索
2. 「Rule groups」タブに移動
3. 「Create rule group」をクリック
4. ルールグループの名前を入力
5. ルールタイプを選択
ステートフルルール: 特定のドメインに対してのみアクセスを許可するルールを設定します。
ステートレスルール: 必要に応じて追加のルールを設定します
6. ルールの設定
ドメインを書く

## 2.Firewall Policyの作成
次に、作成したルールグループを使用してFirewall Policyを作成します。
1. 「Firewall policies」タブに移動
2. 「Create firewall policy」をクリック
3. Policyの名前を入力
4. ステートフルルールグループの追加
先ほど作成したステートフルルールグループを選択
5. ステートレスルールグループの追加
必要に応じてステートレスルールグループを追加

## 3.Firewallの作成
最後に、Firewall Policyを適用するNetwork Firewallを作成します。

1. 「Firewalls」タブに移動
2. 「Create firewall」をクリック
3. Firewallの名前を入力
4. VPCを選択
5. サブネットを選択（Network Firewallを配置するサブネット）
6. Firewall Policyの適用
作成したFirewall Policyを選択して適用


# 5.ルートテーブルの設定
Network Firewallを通過するようにルートテーブルを設定し、トラフィックが適切にフィルタリングされるようにします。
これにより、Windows Serverからインターネットへのトラフィックが以下の順序で流れるようになります。
赤字で記載しているルートは戻りの通信として設定をしています。
戻りの通信も明示的に設定することにより、ファイアウォールを経由して通信することができる。

![ルートテーブル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629107/285e6780-d774-6091-51d9-822d7fa9cc03.png)


## 1.トラフィックの流れ
+ Windows Server → Network Firewall
Windows ServerからのトラフィックはまずNetwork Firewallに送られます。
ここで、設定されたルールに基づいてトラフィックがフィルタリングされます。

+ Network Firewall → NATゲートウェイ
フィルタリングされたトラフィックは次にNATゲートウェイに送られます。
NATゲートウェイは、内部ネットワークのプライベートIPアドレスをパブリックIPアドレスに変換します。

+ NATゲートウェイ → インターネットゲートウェイ
NATゲートウェイを通過したトラフィックは、インターネットゲートウェイを経由してインターネットに送信されます。

## 2.戻りの通信
戻りの通信が正しく処理されるように、以下のルートを設定します。
+ インターネットゲートウェイ → NATゲートウェイ
インターネットからの応答トラフィックは、まずインターネットゲートウェイを通過し、NATゲートウェイに送られます。

+ NATゲートウェイ → Network Firewall
NATゲートウェイを通過したトラフィックは、Network Firewallに送られます。
ここで、再度フィルタリングが行われます。
ここの設定がないと正しくフィルタリングされない

+ Network Firewall → Windows Server
フィルタリングされたトラフィックは、最終的にWindows Serverに送られます。


# 6.実践
実際にNetworkFirewallを設定したのでWindowsサーバがドメイン制御されているか確認します。
今回の記事ではブラックリストドメイン制御を実施してみました。
ブラックリストとして設定したドメインは「yahoo.co.jp」
上記のドメインには接続できず、その他のドメインに接続できれば成功です。

## ブラックリストドメインにアクセス
![NGパターン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629107/2de16e3d-f72a-77b6-7e4e-82ec498607bd.png)

## ブラックリスト以外のドメインにアクセス
![成功パターン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629107/6982df79-4439-1c40-19ea-1510791fd5f7.png)

アクセスした結果の通り、ブラックリストに設定したドメインには接続ができないようになりました。

# 7.トラブルシューティング
私が初めてこのサービスを使用して躓いた点を備忘として残しておきます。

## 1.トラフィックが通らない場合
+ ルートテーブルの設定確認
ルートテーブルが正しく設定されているか確認します。
特に、デフォルトルートがNetwork Firewallのエンドポイントに向けられているかを確認してください。
またドメイン制御しているのにも関わらず、サイトにアクセスできてしまう場合は戻りの通信を設定していない可能性がたかいです。

+ Firewall Policyの確認
Firewall Policyが正しく適用されているか、ルールが正しく設定されているかを確認します。

+ NATゲートウェイの設定確認
NATゲートウェイが正しく設定されているか、Network Firewallを通過したトラフィックがNATゲートウェイを経由しているかを確認します。

## 2.特定のドメインにアクセスできない場合
+ ルールグループの確認
ルールグループに特定のドメインが正しく設定されているかを確認します。
ドメイン名のスペルミスや設定ミスがないかチェックします。


# 8.まとめ
AWS Network Firewallを使用することで、Windows Serverが特定のドメインに対してのみアクセスを許可する設定が可能となり、ネットワークセキュリティを大幅に強化することができます。
今回記事にしたドメインリストによる制御以外にも設定できるものが多くあるので将来的に試してみたいと思います。