Firewall Managerで既存のSecurityGroupルールを監査してみた

2022.08.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、つくぼし(tsukuboshi0755)です!

2022/7/27のFirewall Managerを用いたWAFポリシーに引き続き、SecurityGroupポリシーの設定方法を検証する機会があったので、ご紹介します。

Firewall ManagerでのSecurityGroupポリシー設定方法

Firewall Managerの開始

まだFirewall Managerを有効化されてない方は、前回のブログを参照しFirewall Managerを開始しましょう。

SecurityGroupポリシーの作成

以下のように、Firewall Manager管理者のアカウントにて、事前に監査で使用されるSecurityGroupのテンプレートを作成しておきます。

今回は、SSHのインバウンドルールを一つだけ追加しておきます。
(アウトバウンドルールは全開放です)

このインバウンドルールが、Firewall Managerで許可されるSecurityGroupルールとなります。

WAF&Shieldコンソール画面で、左ペインのSecurity policiesにある、Create policyをクリックします。

AWS servicesでは、今回のポリシー作成対象であるSecurity groupを選択します。
Security group policy typeでは、今回は既存SecurityGroupのルールを監査したいため、Auditing and enforcement of security group rulesを選択します。 Regionでは、対象リージョンを選択します。
設定内容に問題がなければ、Nextをクリックします。

Policy Nameでは、今回作成するポリシーの名前を入力します。
Policy rule optionsではConfigure custom policy rulesを選択し、監査用SecurityGroupを用いてルールを管理するようにします。

Policy rulesでは、Allow only the rules defined in the audit security groupを選択し、監査用SecurityGroup内のルールのみ、Firewall Managerで許可するようにします。

Add security groupを押して、監査用SecurityGroupとしてcm-test-sgを追加します。

Policy actionについては、今回はポリシー作成後に有効化するため、一旦デフォルトのままでスキップします。

設定内容に問題がなければ、Nextをクリックします。

Policy scopeでは、ポリシーの適用範囲を設定します。
今回は、Include only the specified accounts and organizational unitsを選択する事で、特定のアカウントまたはOUに対してポリシーを適用します。
Included organaizational unitsのEditをクリックし、適用したいOUを選択し追加します。

Resource TypeはSecurity groupを選択します。
またResourcesにてタグごとに適用範囲を設定できますが、今回は使用しないためデフォルトのままにします。

設定内容に問題がなければ、Nextをクリックします。

Policy tagsでは、タグを設定します。
今回は設定しないため、Nextをクリックします。

最後に設定内容一覧が表示されます。 設定内容に問題がなければ、Create policyをクリックする事で、ポリシーが作成されます。

SecurityGroupポリシーの自動修復

Firewall Managerの自動修復を有効化する事で、Firewall Manager非準拠の既存SecurityGroupルールが自動的に削除されるようになります。
既存リソースに対する変更が入るため、作業内容に問題がない事を確認してから実施しましょう。

今回は自動修復の検証用に、Policy scopeで指定したOUに所属するアカウント配下にSecurityGroupを作成し、不要なルールを追加してみます。
Firewall Managerで許可されている8.37.43.43/32とは別に、8.44.12.64/32のSSHインバウンドルールを追加します。

初めにFirewall Manager管理者のアカウントにおいて、WAF&Shieldコンソール画面で、左ペインのSecurity policiesにある、作成したポリシーをクリックします。

Overviewを見ると、自動修復がDisabledになってます。
またAccounts and resourcesタブでは、ポリシー対象のアカウントのStatusがNoncompliantとなっており、Firewall Manager非準拠のリソースが存在する事が分かります。

アカウントIDをクリックすると、Firewall Manager非準拠のリソース一覧が表示されます。
今回は、先ほど作成したSecurityGroupが表示されました。

SecurityGroupのIDをクリックすると、Firewall ManagerのSecurityGroupポリシー違反となっているルールが表示されます。
今回は8.44.12.64/32のSSHインバウンドルールが表示されてます。

自動修復を有効化する事で、ここに表示されているルールが対象のSecurityGroupから削除されます。

Accounts and resourcesタブに戻り、Policy detailsタブに切り替えた後、Policy actionEditをクリックします。

Identify resources that don't comply with the policy rules, but don't auto remediateのままの場合、自動修復は無効化され、Firewall Managerポリシー非準拠のリソースの検出のみ実行されます。

Auto remediate any noncompliant resourcesを選択する事で、自動修復が有効化され、Firewall Manager非準拠のルールが削除されます。

内容に問題がなければ、Saveをクリックします。
ポリシー対象のアカウントのStatusがCompliantになるまで、しばらく待機します。

Overviewを見ると、自動修復がEnabledになってます。 またAccounts and resourcesタブを確認すると、ポリシー対象のアカウントのStatusがCompliantとなっており、全てのSecurityGroupがFirewall Manager準拠となりました。

対象OU所属アカウントにおいてSecurityGroupを確認すると、以下の通り8.44.12.64/32のSSHインバウンドルールが削除されている事が分かります。

SecurityGroupポリシー設定のポイント

自動修復のタイミング

自動修復は、ポリシー作成時、またはポリシー作成後に有効化する事が可能です。

自動修復を無効化している場合、Firewall Manager非準拠のリソースを検出する事が可能となります。

そのため一旦は自動修復は無効化(デフォルト)のままポリシーのみ作成し、Firewall Managerポリシー非準拠のリソースを検出してから、必要に応じて自動修復を有効化するのが良いでしょう。

利用料金

以下のWAFポリシーと同じく、ポリシー1つにつき月額100USD、またリソース変更の監視を記録するAWS Configに対してもそれぞれ料金がかかります。
(SecurityGroup自体には料金はかかりません)

最後に

SecurityGroupルールの内容は非常に多岐に渡るため、下手に必要なルールが削除されないように、WAFポリシーと比較してもSecurityGroupポリシーの自動修復は慎重に行う必要がありそうです。
またFirewall ManagerにおけるSecurityGroupポリシーは、他にも様々な機能があるため、一度何ができるか触ってみると良さそうですね。

以上、つくぼしでした!