GuardDutyに信頼されたIPアドレス一覧を追加する

## はじめに
ある日、Slackに以下のような通知が来ました。
※GuardDuty、SecurityHub、Config、CloudWatch、CloudTrailなどで、セキュリティや運用上注意が必要そうなイベントが発生した場合、Slackに通知する運用にしています。

AWS上で運用しているEC2インスタンスに対して、外部からポートスキャンがあったようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/bc47e477-8c32-83ba-b3dc-8ce0c8cbbe4b.png)

GuardDutyで検知された内容を確認すると、Censysからのポートスキャンのようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/785ef9a1-9e78-0293-acfa-df6113745006.png)
Censysは、ミシガン大学の研究者らが公開しているサービスで、インターネットに接続している機器の情報を収集し、その情報を検索できるようにしています。

悪意がある攻撃者にとっては、攻撃が可能そうなサイトをチェックする手段にもなりえますが、システム運用する側にとっても、意図しないセキュリティリスクが無いかチェックする用途でも使えるサービスです。

https://www.weblio.jp/content/SHODAN%E3%81%A8Censys

今回、GuardDutyにより検知されたEC2インスタンスでインターネット公開しているポートは意図したもので、IDS/IPS対策もされているため問題はないのですが、そのままにしておくとGuardDutyからの通知がずっと続いてしまいノイズになるため、GuardDutyにCensysのIPアドレスを信頼されたIPアドレスとして登録する事にしました。

## GuardDutyに信頼されたIPアドレス一覧を追加する
GuardDutyに信頼されたIPアドレス一覧を追加するまでの流れは以下となります。

https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_upload-lists.html

- 信頼されたIPアドレス一覧を格納するS3バケットを作成する
- 信頼できるIPアドレスの一覧を記載したテキストファイルを作成し、作成したS3バケットにアップロード
- GuardDutyの「設定」⇒「リスト管理」で「信頼されているIPリスト」を追加
- 追加したリストのActivate

#### 信頼されたIPアドレス一覧情報を格納するS3バケットを作成
GuardDutyのサービス内で、信頼されたIPアドレス一覧の情報を設定情報として保持してくれるとよいのですが、信頼されたIPアドレス一覧を保管するS3バケットを別途用意し、そのバケットに信頼されたIPアドレス一覧の情報をアップロードする必要があります。

S3バケットを作成後、セキュリティ的に設定が必要な以下のような設定をしておきます(Security Hubでチェックされるような設定)。
- 必要に応じて、S3バケット暗号化の為のCMKを作成(GuardDutyが復号できるようキーポリシーを設定)し、サーバーサイド暗号化設定 ※キーポリシーの設定内容注意
- 必要に応じて、S3バケットに対するサーバーアクセスログの設定
- パブリックアクセスをブロック
- 必要に応じて、バケットポリシーでHTTPS通信のみを許可

など

#### 信頼できるIPアドレスの一覧を記載したテキストファイルを作成し、作成したS3バケットにアップロード
GuardDutyでは信頼できるIPアドレス一覧のフォーマットとして、「プレーンテキスト」、「各種CSV」、「STIX」といったものが使えますが、今回は「プレーンテキスト」で一覧を作成します。

どのIPアドレスからCensysがスキャンしているかは、以下で確認が可能です。

https://support.censys.io/hc/en-us/articles/360043177092-from-faq

この情報を基に、以下のような信頼できるIPアドレス一覧を記載したテキストファイルを作成し、作成したS3バケットにファイルをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/00602999-5181-7b9b-a087-0d1c54c71852.png)
今回はファイル名を「trusted_ipaddress_list.txt」としました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/04faf23b-9aae-7a0e-fb5b-b88d68d9a1a0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/8db402c8-8952-d718-67cf-7fd5296464f0.png)

#### GuardDutyの「設定」⇒「リスト管理」で「信頼されているIPリスト」を追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/96fb1273-8ce4-de96-ea5f-8ba7bef5c313.png)
GuardDutyの「設定」⇒「リスト管理」の「信頼されているIPリスト」で、「信頼されているIPリストの追加」をクリックします。

:::note warn
デフォルトでは、追加できる「信頼されているIPリスト」は1つのみで、「脅威IPリスト」は最大6つまでです。
:::

追加ダイアログでは、以下のような情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/44ddef7f-99e7-eff6-d758-50f4ade7b687.png)

| 項目名 | 入力値 |
|:-|:-|
| リスト名 | 信頼されているIPリスト一覧に表示されるリスト名を入力 |
| 場所 | 信頼されているIPアドレス一覧を保管したS3バケットのオブジェクト名のURLを入力 |
| 形式 | 信頼されているIPアドレス一覧のフォーマット(今回はプレーンテキスト)を選択 |

リストに追加すると、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/8af5b215-87c4-6137-0634-07467fe441b6.png)

リストに追加しただけではステータスが「inactive」になっているので、リストを選択し、「アクション」から「Activate」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/ef09905f-0b4b-9016-b3d2-e3e96fa045e0.png)

暫くしてリストのステータスが「Active」になれば設定完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/0efacce8-bbac-c309-8ac1-66891b2340f1.png)

:::note info
ステータスが「Active」になるまで、最大15分程度かかる場合があるとの事。15分以上経過しても「Active」にならない場合は、設定などに誤りがないか確認するようにします。
:::

上記設定により、Censysからのポートスキャンがあっても、GuardDutyでは脅威として検知されない状態にする事ができました。

## 信頼されたIPアドレス一覧を更新する ※2024/03/01追記
Censysがスキャンする際のIPアドレスが追加され、再びGuardDutyで検知される状態になったため、信頼されたIPアドレス一覧を更新しました。

信頼されたIPアドレス一覧を更新する場合は、まずS3バケットに保管している信頼済みIPアドレス一覧情報を更新し、再度バケットにアップロードします。
(今回は「trusted_ipaddress_list.txt」の中身を更新し、S3バケット内のファイルを上書きしました。)

S3バケット内のファイルを更新だけでは変更が反映されないため、「GuardDuty」→「設定」→「リスト」を編集し、リストの更新を行う必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/73fa09d3-c408-284c-7417-624528b40419.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/afee793b-5f6a-c192-73e3-ecfade607ff0.png)

リストを更新すると、ステータスが「inactive」になるので、再度有効化をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/b2c6b1bc-81d8-6a25-87ec-cf9304b301cc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/8bde5e79-d369-c31b-bf1f-71da96742b59.png)

以上で、信頼されたIPアドレス一覧の更新完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554521/eedd25e9-553b-016b-76df-54ae92d44a1e.png)

## おわりに
GuardDutyに信頼されたIPアドレス一覧を追加する方法をまとめました。