AWSのセキュリティ関連サービスまとめ
本記事はセキュリティの素人が書いた覚え書きです。
他にこんな機能もあるよとか、ここ間違ってるよって所がありましたらご指摘いただけると嬉しいです。
サーバー運用におけるセキュリティ対応
増加するセキュリティ事故
最近発生したニコ動の事件のように、近年、ランサムウェアと呼ばれるマルウェアの一種を用いて身代金を要求される被害が相次いでいます。
また、それとは別にサービス事業者側の不備により、個人情報を含む内部データが意図せずインターネットに公開された状態になっており、大量の情報漏洩につながる事故も起きています。
セキュリティ運用は大事だけど大変
そして上記のような問題への対応をしていても、なんらかの形でサーバー運用していればセキュリティ面での運用は行っていかなければなりません。
特にSaaSを提供している会社に対しては、顧客企業や自治体からもセキュリティ体制についてチェックが入る事も増えてきました。
そのような状況に対し、社内にセキュリティチームを立ち上げ、
- クラウドサービス上のリソースへ、誰がどのような操作を行ったのかを記録し、不審な操作が行われていないか定期的に確認
- アンチウィルスソフトの導入と管理
- サーバーの通信内容のログ取得と、ログに不審な通信や操作がないか定期的に確認
- サーバーが意図せずインターネットに露出していないか、ネットワークの設定変更を記録し定期的に確認
- 機密情報が公開エリアに露出していないか継続的に確認
- サーバーへの定期的なセキュリティパッチの適用、重要なセキュリティパッチの適用漏れがないか継続的に確認。
- サービスが準拠しなければならない特定の業界(金融など)のセキュリティ標準から逸脱していないか、定期的に確認
のような事をしていかなければならないのですが、富◯通や日◯のような超大企業ならともかく、私が所属しているような中小企業では前述のようなチームを作って人力で運用していくのは事実上かなり難しいというのが現実かと思います。
大変なことはマネージドサービスにまかせたい
というわけで、継続的に行う必要のある大変な事はできるだけクラウドのマネージドサービスで自動化して、重要なポイントに絞って人が動く体制づくりが重要かと思います。
幸いにもAWSにはセキュリティ関連のサービスが充実しており、労力のかかる作業を自動化してくれる機能がたくさんあります。
もちろん、これらの機能を有効化したからもう問題ない、というわけではなく、組織としてのチェック体制やセキュリティ方針あっての上での事ですが、面倒な記録作業や月次のチェック作業、パッチ適用作業や結果のレポートの作成などを自動化してくれるだけでも非常に助かります。
AWSのセキュリティ関連サービス一覧
前置きが長くなりましたが、以下にAWSのセキュリティサービスの主なものを列挙しました。
中には微妙に役割が被っているようなものもあって、普段から「あれ、脆弱性診断してくれるのはInspectorとSecurityHubどっちだっけ」みたいに混乱することがあったので、一覧にしてみたらスッキリしました。
AWS運用に関するセキュリティサービス
-
Guard Duty
- AWS上のリソースをマルウェアから守るためのサービス。検出・レポートのみで、除去や遮断は行わない。
- 以下のサービスを提供
- 基本機能: 通信内容を確認してマルウェア等の通信が行われていないかどうかチェック。
- S3プロテクション: S3へのAPI操作を監視
- S3マルウェアプロテクション: S3に保存されたデータのマルウェアスキャン
- EC2マルウェアプロテクション: EC2上に保存されたデータのマルウェアスキャン
- RDSプロテクション: Auroraに対する通信・操作に不審な点がないか監視
- Lambda保護: Lambdaの通信内容を監視し、不審な点がないか監視
- ランタイムモニタリング: EC2, EKS, ECS上で実行されているプロセスを分析し、不審な動作がないか監視・記録する。
-
Patch Manager
- EC2のOSのセキュリティパッチ適用を管理する機能で、SystemManagerの1機能として提供される。
- 内部ではOS別のセキュリティアップデート機構を使用(例: Ubuntuであればapt)
- 以下の機能を提供
- セキュリティパッチ適用状況のスキャンとレポート(即時実行または予定したスケジュールで実行)
- セキュリティパッチの適用(即時実行または予定したスケジュールで実行)
- 事前に定義したコンプライアンスに違反している(パッチが未適用)インスタンスを一覧で確認。
-
Inspector
- AWSが提供する、脆弱性診断サービス。
- EC2、ECRコンテナイメージ、Lambdaに対して以下の機能を提供
- ホストの脆弱性診断を実施し、緊急性の高い脆弱性をもつリソースを優先的にレポートする。
- ネットワーク設定を確認し、ホストがインターネットに露出していないか確認。
-
Cloud Trail
- ユーザーによってAWSコンソールやAPIを通じて行われた操作の記録(証跡)をとるサービス。
- 障害発生後の調査や、不審な行動がないか定期的に確認するために使用される。
- 操作ログはデフォルトで90日間保管される。
- 操作ログをS3に自動エクスポート可能(90日以上保管する場合は本機能を使用)。
- 大きく分けて3つの操作ログを管理
- 管理ログ: AWSコンソールやAPIを通じてユーザーが行った操作の記録。Cloud Trailを有効にすると本機能もデフォルトで有効
- データイベント: S3に保管されたデータへの操作(作成、編集、削除)、およびLambda関数の実行を全て記録。デフォルトで無効
- Insight: CloudTrailの管理ログを監視し普段とは異なる操作がないかを監視。定期的な監視業務を機械学習を使って自動化してくれる機能。デフォルトで無効
-
Config
- AWSコンソールまたはAPIを通じて行われたリソースへの設定変更を記録・通知する機能。
- 設定変更の記録をS3にエクスポート可能。
- 設定変更が行われた事を検知してSNSへ通じてメールやSlackへ通知可能。
- AWS上のリソースが、あらかじめ定めたポリシーに準拠しているか継続的に確認し、必要に応じて通知。
- サーバー運用で求められる、設定変更の記録や定期的なチェックを自動化してくれるサービス。
-
Macie
- S3に保管されたデータに機密情報が含まれたものが存在しないか、継続的にチェックする機能。
- 対象バケットは以下の通り。
- 暗号化されていないバケット
- 組織外と共有されているバケット
- インターネットに公開されているバケット
- 機密情報の一例を以下に示します。
- 個人を特定できる情報 (PII)
- 氏名
- 性別
- 生年月日
- 住所
- メールアドレス
- 電話番号
- 顔写真
- 身分証番号など
- 財務情報
- 認証情報データ
- 個人を特定できる情報 (PII)
- 1回限り、毎日、毎週、毎月のスケジュールを指定して機密データ検出を実行
- 機密情報の漏洩を防ぐための運用業務を自動化してくれる機能。
-
Security Hub
- AWSアカウント上のリソースを、AWSが定めたベストプラクティスや業界のセキュリティ標準に照らし合わせて適合しているかどうかを継続的にチェックしてくれるサービス。
- 適合を確認するベストプラクティスやセキュリティ標準はユーザー側で選択可能。
- Inspector GuardDuty、Macie などの検出結果も受け取って、一元化されたレポートを作成するため、リソースのセキュリティ状態を一元的に管理できる。
-
Detective
- AWS上のセキュリティ調査、そのための視覚化などを自動化してくれるサービス。
- AWSアカウント内の特定のユーザーやロールに対し、行動分析と視覚化をしてくれる。
- 調査対象として、Guard DutyやSecurityHubで不審な行動が検知されたユーザーを指定するなど、他サービスとの連携も可能。
ネットワーク上でサーバーを保護するセキュリティサービス
-
WAF
- ELBやCloudFrontの前面で、あらかじめ定義したルールに基づいてサービスへのアクセスを遮断・記録してくれるファイアウォール機能。
- 定義は、AWS側で定義された標準ルール(例: SQLインジェクションなど)に基づく事もできるし、自分でカスタムルールを作成する事もできる。
-
Shield
- サービスをDDoS攻撃、ボリュームボット、脆弱性を悪用した侵入・感染等から保護してくれるサービス。
- 以下のサービスに対するDDoS攻撃を検知し、保護する。
- ELB
- Global Accelerator
- CloudFront
- ElasticIP
- Route53
- ShieldスタンダードはAWSの基本機能として無料で提供され、すでに有効になってますので、普段は特に意識する事はありません。
- Shieldアドバンスドは別途料金を支払うことで、より強力なDDos攻撃対策を行えます。
-
セキュリティグループ
- 特定のサーバーに対する通信の可否を制御する機能。
- 送信元・送信先のポート番号やIPアドレスによって送信の許可・拒否を設定する。
- インバウンド・アウトバウンドでそれぞれ設定するけどパケット単位ではなく、抽象化されたセッション単位で直感的に理解しやすい。
- 例: ブラウザからWebサーバーへのアクセスはリクエスト・レスポンス含めて一連の方向がインバウンド
-
ネットワークACL
- VPCの1機能として提供され、サブネットに対してパケットの通信可否の制御を行う。
- サブネットに所属するインスタンスやLambda、RDSはこの設定に従う。
- セキュリティグループと異なりパケットに対する設定になるので、例えばTCPセッションひとつとってもインバウンドとアウトバウンドがある。
- 例: ブラウザからWebサーバーへのアクセスは、リクエストがインバウンド、レスポンスがアウトバウンド。
システム構築の初期段階で有効化しておくのがおすすめ
ざっと並べただけでも沢山ありますが、この中のいくつかは単に有効化するだけで使えるものもあります。
前述のサービスの中から、AWSのアカウント運用を始めたら、すぐにでも有効化しておくべきと考えるものを列挙します。
- Guard Duty
- Cloud Trail
- Config
この3つについては、何も考えずに有効化しておいた方がいいと思います。
その後、運用体制を構築していく中で、パッチマネージャーを使ったセキュリティパッチの自動化や、Inspectorを使った脆弱性診断を立ち上げていけばいいのではないでしょうか。
他にSSOやIAMなどもセキュリティの範囲となるかもしれませんが、あまり列挙すると逆にわからなくなるので、とりあえず、思い立ったところを一覧化してみました。
個々のサービスの内容はAWS公式ドキュメントや色々とブログも出てますので、ここでは割愛します。
セキュリティ上の通知はチャットとメールの2箇所に行う
前述のサービスを使った場合、不審なアクティビティなどが検出されると通知が行われます。
セキュリティ上の通知なので、内容によっては今やってることの手を止めて即座に対応が必要になる場合もありますので、まず最初の通知先はSlackのようなチームが常駐しているチャットになるかと思います。
ただ、Slackは後から検索することができなくはないですが、ちょっとやりにくいので、メールでも通知を送っておいて、後から探す分にはメールで検索して探す、というのが良いのではないでしょうか。
(大概の検出通知は、検出したAWSのサービス上で検索することができるので必須ではないですが)
AWSにはSNSというサービスがありますので、
- 専用のSNSトピックを作っておいて、
- 前述の各種セキュリティサービスでの検出結果は、そのSNSトピックに通知するように設定。
- SNSトピックにメールアドレスやSlack等のチャンネルを紐づけておいて、それらに通知。
という感じにしておけばいいかと思います。
まとめ
ざっとAWSのセキュリティ機能を列挙してみて、私だけかもしれませんが頭がスッキリしました。
Gard Dutyのマルウェアスキャンや、Cloud Trailなどは有効にすればすぐに効果を発揮してくれますが、大事なのは組織としてのセキュリティ体制をきちんと作って、その中でセキュリティ対策業務の効率化としてAWSの各種セキュリティ機能を使っていくのが正しいアプローチなのではないかと思います。
そういう意味では、初めに取り組むべきはISMS(情報セキュリティマネジメントシステム)の構築で、そのプロセスの中で前述の各種機能を活用していくのがいいと思いますが、とかく組織というのは動きが遅いものなので、同時進行しながらでも両方進めて、徐々に正解の状態に近づけていくのが多分正解なんでしょうね。
Discussion