AWSで使っておきたいセキュリティサービス

この記事は「[くふうカンパニー Advent Calendar 2018](https://qiita.com/advent-calendar/2018/kufu)」の18日目の記事です。今年ももうすぐ終わりです。

あなたのサービス、セキュリティ対策大丈夫ですか？
大丈夫だ、問題ない。という方はそっと閉じてください。

インターネットにサービスを公開している以上は様々な脅威に晒されている事を認識することが大切です。

- GuardDuty
- Inspector
- Trusted Advisor
- WAF


## GuardDuty
AWS上の悪意のある操作や不正な動作をモニタリングして脅威を検出するサービスです。
その名の通り、内外問わずAWSリソースへのアクセスを分析し、不正と思われるアクセスを検知してくれるとても頼りになるサービスです。

指定したリージョンにて「GuardDutyの有効化」ボタンを押すと利用開始できます。30日間サービスを無料で利用できるので、お試しはおすすめです。
<img width="981" alt="スクリーンショット 2018-12-18 11.49.11.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/b520e274-b051-ab18-d855-885723faf9d0.jpeg">


さてとある環境で、GuardDutyを有効化して数日待ってみると、結果が表示されていました。その中から下記の二つをピックアップして詳細を見ていきます。
<img width="576" alt="スクリーンショット 2018-12-18 10.29.44.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/01f82c4b-5c00-ab57-752a-5434950e2103.jpeg">

#### Recon:EC2/PortProbeUnprotectedPort

<img width="918" alt="スクリーンショット 2018-12-18 10.46.59.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/d8823104-960f-0ee0-da89-f75d6102e911.jpeg">
12/06〜12/18の間に、565回何かしらの影響を受けていることがわかります。

<img width="903" alt="スクリーンショット 2018-12-18 11.00.56.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/1d81cb05-6aa7-c539-d01f-4388355c83e8.jpeg">
現在も稼働中のインスタンスへの22番ポートへのアクセスとわかりました。

<img width="964" alt="スクリーンショット 2018-12-18 11.01.07.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/50200b9f-8b61-4d4b-a9d1-852648bd1cdf.jpeg">
そして、アクセスIPアドレス情報が表示されます。ロシアですね。脅威の名前も表示されています。
<img width="797" alt="スクリーンショット 2018-12-18 11.10.27.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/6bbcd88b-23ed-209d-4ce3-a27a73b1683e.jpeg">

#### UnauthorizedAccess:EC2/SSHBruteForce
上記と同じような表示結果であったため、図の添付は省略します。
「performing SSH brute force attacks against i-XXXXXXX. Brute force attacks are used to gain unauthorized access to your instance by guessing the SSH password」
韓国からSSHブルートフォース攻撃と思われるアクセスがあったことがわかりました。

今回の上記二つの脅威は、外部へ公開しているインスタンスへのアクセスだったので想定の範囲です。とはいえ、常日頃からどのような脅威に晒されているか、検知するうってつけのサービスですね。アクセスログから検出する手間を考えたらちょっと大変です。

## Inspector
みなさん、OSやミドルウェアの脆弱性検査は抜かりないですか。かつて、私もインスタンスリストを作成して、CVEの番号毎に対応してたなんてそんな時もありました。脆弱性情報は日々更新されおり、自分達が使っているサービスのミドルウェアに影響があるかどうかその都度判断するなんて、とても疲れます。
そこで、役に立つサービスがInspectorです。インスタンスに、エージェントをインストールして、評価対象となるインスタンスに好きなタグをつける事で検査し、現在のアプリケーションやミドルウェアに脆弱な箇所があるか検査可能なのです。

エージェントのインストール方法は以下です。

- 手動でインストールする
- InspectorエージェントがインストールされているAMIを利用する
- Systems Manager Run Command を使用して複数のEC2インスタンスにAmazon Inspectorエージェントをインストールする

<img width="1086" alt="スクリーンショット 2018-12-18 11.56.50.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/0a97bff2-312b-0c86-f5af-0ce36165d9f6.jpeg">
今回は、手動でインストールして、評価したいインスタンスに、「Inspectorタグを1」に設定しました。

最初から`Assessment-Template-Default-All-Rules`という評価テンプレートがあり、この中で

- 共通脆弱性識別子
- Center for Internet Security (CIS) ベンチマーク
- セキュリティのベストプラクティス
- 実行時の動作の分析

の4つのルールパッケージが適用されています。素直にこちらを利用してみることから始めましょう。即時実行と○日毎のスケジューリングも可能です。今回は、あるテストインスタンスを対象に実行しています。

<img width="1386" alt="スクリーンショット 2018-12-18 12.36.34.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/8645f14e-8152-3e4e-1d59-4cec6982a233.jpeg">

かなりの数の脆弱性が検出されました。

<img width="1095" alt="スクリーンショット 2018-12-18 12.38.58.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/49e13b37-e899-0553-116d-705bc0296075.jpeg">
詳細を閲覧すると、脆弱性の詳細が閲覧できます。推奨事項を見れば対処方法のヒントが得られます。この場合は、kernelのアップデートを実施しましょう。


## Trusted Advisor
AWS環境のコスト削減、パフォーマンスの向上、セキュリティの向上に役立つアドバイスをしてくれます。
ただし、[サポートプランをビジネスプラン](https://aws.amazon.com/jp/premiumsupport/pricing/)以上にアップグレードする事で、すべての機能が利用可能となります。それ以下の場合は、アドバイスしてもらえる種別に限りがあります。

<img width="1397" alt="スクリーンショット 2018-12-17 20.04.29.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/4ec22e85-171f-fa0c-bec8-61a203c9fced.jpeg">

デベロッパープラン以下でも、「セキュリティ」項目に発見があり役立ちました。

- Amazon S3バケット許可
 - 意図的にオープンアクセスを許可していないS3バケットの発見
- セキュリティグループ
 - 無制限アクセスを許可しているポートの確認


## WAF
ファイアウォール機能です。AWSのWAFを利用するためには、HTTP/HTTPSリクエストをCloudFront利用して経由させる必要があります。アプリケーションへの攻撃を防御するためのサービスです。

自身でルールを作成することも可能ですが、Marketplaceにて既に作成済みのルールを購入することも可能です。適用方法については、[AWS WAFのマネージドルールを試してみました](https://blog.mwed.info/posts/use_waf_managed-rule.html)でも記載していますが、非常に簡単に導入できます。

あるマネージドルールをプロダクションへ適用した結果です。一定数リクエストをBlockしていることがわかります。
<img width="1206" alt="スクリーンショット 2018-12-17 20.45.40.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/77923/abc95650-af23-5ed1-906b-54979c59a05a.jpeg">




いかがでしたでしょうか。
これまであげたサービスを利用することでサービスから脅威から守り、今ある脆弱な箇所を知ること手助けとなります。
もちろん上記のサービス以外にも、リソースの設定を評価、監査するCONFIGや、機密データを検出、保護するMacie、またGuardDuty、InspectorおよびMacieで検出された結果を管理するSecurityHubなど、AWSには様々なサービスが存在します。できることから初めて、自分達のサービスを守っていきましょう。