LoginSignup
9
3

More than 3 years have passed since last update.

SIEM on Amazon Elasticsearch Serviceを試してみました

Posted at

SIEM on Amazon Elasticsearch Serviceを試してみました

SIEM on Amazon Elasticsearch Serviceとは?

  • いい感じにAWS上のセキュリティ状況を可視化してくれるサービスです。以下のような可視化が可能です。 000.png
  • 「サービスです」と書きましたが、1つのサービスで完結するわけではなくAWSが提供してる様々なセキュリティサービスをAmazon Elasticsearch Serviceを使って可視化してくれるというものです。
  • このサービスの良いところは、Elasticsearchのダッシュボードも用意してくれているので、自分で0から分析を考えるという手間がない点だと個人的には考えています。セキュリティサービスの設定はしたのだけど、セキュリティ分析をどこから始めていいかよく分からないという場合には、とても助かりますね!
  • 構築方法は以下のgithub上の情報を参考に進めることができます。

README通り進めます

  • 一番簡単な方法で進めていきます。(カスタマイズする方法もあってGitHub上にはそちらについても手順が用意されているので親切です。→ 高度なデプロイ)
  • 今回行う簡単な方法の概要は以下です。
    1. MaxMind 社の GeoLite2 Free をダウンロードする
      • ダッシュボードにIP アドレスや国情報・緯度・経度のロケーション情報を付与するために必要です
    2. クイックスタートでCloudFormationを実行する
    3. Kibanaの設定をする
      • セキュリティ状況を可視化するためのダッシュボードがKibanaで提供されるので、その設定です
    4. ログの取り込みをする
      • 可視化したいログをS3バケットに連携することで可視化が行われるので、その設定です

1. MaxMind 社の GeoLite2 Free をダウンロードする

  • まずはサインアップからです。以下のページに進みます。
    • GeoLite2 Free Downloadable Databases « MaxMind Developer Siteにアクセスして、画面の下の方にあるサインアップをクリックします。
      001.png
    • 必要な情報を記載すると、メールが送られてきます。そのメールにToken付きのURLが記載されているので、そこにアクセスしてパスワードを設定するとログインできるようになります。
    • ログインできたら、左メニューのMy License Keyを開きGenerate new license keyをクリックします
      002.png
    • License key desscriptionに任意の値を入れてキーを作成します。GeoIP Update?はNoで進めます。
      003.png
    • ライセンスキーが作成されましたので、控えておきます。
      004.png
  • 手順1はこれで終了です。

2. クイックスタートでCloudFormationを実行する

  • ここから構築の開始です。GitHub上のREADMEからクイックスタートですぐに始められます。今回はTokyoリージョンを選択しました。
    005.png
  • CloudFormationの実行画面になりますので「次へ」で進めます。
    006.png
  • パラメーターを入力します。(以下の画像のパラメーターはデフォルトの値ですので変更する必要があります)
    007.png
    • パラメーターで設定する値の説明は以下のようになっています。
      • 気にするのはAllowedSourceIpAddressesです。今回は、ダッシュボードを見れるIPアドレスを/32で限定しました。
パラメーター 説明
AllowedSourceIpAddresses Amazon VPC 外に SIEM on Amazon ES をデプロイした時に、アクセスを許可するIPアドレス。複数アドレスはスペース区切り
GeoLite2LicenseKey Maxmindのライセンスキー。IP アドレスに国情報を付与
SnsEmail メールアドレス。SIEM on Amazon ES で検知したアラートを SNS 経由で送信する
  • あとは実行して20分ほど待つだけです。手順2はこれで終了です。

3. Kibanaの設定

  • 正常完了となったCloudFormationスタックの出力からKibanaにアクセスするためのURL・ユーザー・パスワードが確認できます。
    009.png
  • URLにアクセスするとログイン画面が見えました。

    010.png

    • ちなみに許可されていないIPアドレスからアクセスすると以下のような画面が表示されました。ちゃんと弾いてくれていますね。
      008.png
      • あとこのログインするユーザーをCognitoと連携することもできるらしいので、この辺りはCognitoの勉強にもなるので実装していきたいですね!
  • 次にダッシュボードを作っていきます。

    • ログインすると以下の画面がでてくるのでExplore on my ownを選択して次へ進みます。
      011.png
    • ここからダッシュボードを作っていきます。作るというか、これも用意されているのでそれをインポートしていきます。
    • ダウンロード先 ←これをクリックすると設定ファイルがダウンロードされます。
    • ダウンロードと解凍ができたら、Kibanaに戻って、以下の画面にすすみます。(Management(左下の歯車) -> Saved Objects -> Importの順です)
      012.png
    • 解凍したZIPファイルの中あるdashboard_v770.ndjsonをインポートしていきます。
      014.png
  • 無事にインポートできました。これで手順3が完了です。

4. ログの取り込み

  • 残るはログを取り込むのみです。取り込めるログは以下のようになっています。
    • 個人的にはここにaws configが追加されると嬉しいですね。
AWS Service Log
AWS CloudTrail CloudTrail Log Event
Amazon Virtual Private Cloud (Amazon VPC) VPC Flow Logs
Amazon GuardDuty GuardDuty finding
AWS WAF AWS WAF Web ACL traffic information
AWS WAF Classic Web ACL traffic information
Elastic Load Balancing Application Load Balancer access logs
Network Load Balancer access logs
Classic Load Balancer access logs
Amazon CloudFront Standard access log
Real-time log
Amazon Simple Storage Service (Amazon S3) access log
Amazon Route 53 Resolver VPC DNS query log
  • ちなみに取り込み方法についてもAWS サービスの設定方法に記載してくれています。こういう親切さが助かりますね。

  • ということで、今回は基本的なところでCloudTrailのログを取り込んでいきたいと思います。

    • CloudTrailの画面に移動して、新規で証跡をつくります。気にする点は以下2点です。
      • 証跡ログバケット名を今回のCloudFormationで作成されたバケットを選択すること
      • ログファイルの暗号化を有効にした上でAWS KMS エイリアスに、今回作成されたエイリアスを選択すること 015.png
    • あとはデフォルトの設定で進めていけばCloudTrail側の設定は完了です。
  • CloudTrailを設定してすぐにKibanaを見ると、まだ連携されていないのか何も表示されませんが心配しないで下さい。数分したらサマリーが表示されます。

    • まだ連携されていな場合
      016.png
    • 数分待つと、、、連携されました!
      017.png
  • CloudTrail Summaryをクリックしてみるといい感じに監視化されたものが見えました!

    019.png

  • 試しにEC2にsshして、EC2からaws s3 lsを実行してみました。これでAPI Callが記録されていればいいなあと思ったのですが、、、

    020.png

    • ちゃんとaws s3 lsを実行したEC2インスタンスのインスタンスIDがuser.nameとして記録されていましたし、eventNameとしてListBucketsが記録されています。
    • また、対象のインスタンスIDだけで絞ることができてハイライトも自動でしてくれます。
      021.png
    • たまにCloudTrailを直で見て対象のAPI Callを探したりするのですが、割と大変でした。それがぱっと見られるようになるのは、とても嬉しいですね。
  • これで手順4も完了です。

まとめ

  • GitHubのREADMEに沿って設定しただけで、いい感じのダッシュボードが出来上がりました。
  • とても便利で素晴らしいのですが、自分でダッシュボードを作っていないということは、どんな意図でダッシュボードが作られているかを理解していく必要があるということです。
    • でもこの理解を進めるということは、AWSセキュリティのベストプラクティスを学んでいくということにも繋がると思うので、しっかりとダッシュボードの意図を読み取れるようにしていきたいと思います。
9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3