Slide 1

Slide 1 text

2024年7⽉17⽇ AWS10分LT会 - vol.4 LT② AWSでSplunkを動かしてみた

Slide 2

Slide 2 text

2 • 野崎 ⾼弘(のざき たかひろ) • 今まではインフラ構築・保守やSOCセキュリティアナリストをやってました • 現在は技術検証やドキュメント作業が主 • 趣味︓資格取得、⽝の散歩、ドラマ鑑賞、巨⼈ファン • 資格︓現在、AWS・GCP全冠 • 2023 Japan AWS All Certifications Engineers 2024 Japan AWS All Certifications Engineers 2024 Japan AWS Top Engineers(Networking) 3 ⾃⼰紹介

Slide 3

Slide 3 text

本LTの⽬的 3 AWSのVPCフローログを集中監視し、可視化することで、ネットワークトラフィックの状況を把握し、セ キュリティリスクを検知したいとします。 この⽬的を達成するため、SIEMとしてSplunkを使⽤します。AWS上のログデータをSplunkに取り込み、 Splunkの監視・分析機能を活⽤します。具体的には、Splunk側でAWS側のVPCフローログを受信できるよ う設定を⾏います。 本LTでは、主にそのSplunk側の設定で必要な部分に焦点を当て、AWSでのSplunk活⽤術を紹介します。

Slide 4

Slide 4 text

全体像 4

Slide 5

Slide 5 text

前提条件 5 • Splunk on EC2の構築(AWSマーケットプレイスAMI︓Splunk Enterprise バージョン 9.2.2) • Splunk Add-on for AWS(バージョン 7.6.0)のインストール が完了している • Splunk on EC2のロールには、あらかじめ以下を許可したAmazonEC2RoleforSSMポリシーと、 AmazonSQSFullAccessポリシーを付与 • S3バケット(nozaki-bucket2)は作成済み EC2 制限あり: リスト すべてのリソース EC2 Messages フルアクセス すべてのリソース S3 制限あり: リスト, 読み取り, 書き込み すべてのリソース SSM Messages フルアクセス すべてのリソース Systems Manager 制限あり: リスト, 読み取り, 書き込み すべてのリソース

Slide 6

Slide 6 text

⼿順概要 6 1. VPCフローログの設定 2. SQSの作成 3. SNSの作成 4. S3の設定 5. Splunk側での検証(demo)

Slide 7

Slide 7 text

VPCフローログの設定 7 nozaki-vpcというVPCで、このような設定でフ ローログを作成します。 発⾏先は s3://nozaki-bucket2/vpcflowlog/ で す。(ARNで指定)

Slide 8

Slide 8 text

SQSの作成 8 1. 先にSQS-DLQを作成しておく。 キュータイプ︓標準にします。 可視性タイムアウト︓5分にして おきます (それ以外はデフォルトでOK)

Slide 9

Slide 9 text

SQSの作成 9 アクセスポリシー︓アドバンストにして、以下内容を⼊れておく { "Version": "2012-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "SQS_DLQ_PUSH", "Effect": "Allow", "Principal": { "AWS": ”123456789012" }, "Action": "SQS:*", "Resource": "arn:aws:sqs:ap-northeast-1:123456789012:nozaki-vpcflowlog-dlq”, "Condition": { "ArnLike": { "aws:SourceArn": "*" } } } ] }

Slide 10

Slide 10 text

SQSの作成 10 2. 通常のSQSキューを作成 キュータイプ︓標準 可視性タイムアウト︓5分 (それ以外はデフォルトで OK)

Slide 11

Slide 11 text

SQSの作成 11 サーバー側の暗号化︓検証段階では無効にしておきます。 アクセスポリシー︓アドバンストにして、SNSがSQSにSendMessageできる権限(”SNS_SQS_PUSH”) と、 "Sid": "SNS_SQS_PUSH", "Effect": "Allow", "Principal": {"AWS": ”123456789012"}, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:ap-northeast-1:123456789012:nozaki-vpcflowlog-sqs", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:ap-northeast-1:123456789012:nozaki- vpcflowlog-topic" }

Slide 12

Slide 12 text

SQSの作成 12 Splunk on EC2等がSQSを確認できる権限(”Sid”: “SQS_PULL”)を⼊れておきます。 "Sid": "SQS_PULL", "Effect": "Allow", "Principal": {"AWS": "123456789012"}, "Action": "sqs:*", "Resource": "arn:aws:sqs:ap-northeast-1:123456789012:nozaki-vpcflowlog-sqs"

Slide 13

Slide 13 text

SQSの作成 13 デッドレターキュー︓ 有効にして、1.で作成した DLQを指定します。

Slide 14

Slide 14 text

SNSの作成 14 • SNSトピックの作成

Slide 15

Slide 15 text

SNSの作成 15 • アクセスポリシー︓アドバンスドにして、S3がSNSにPublishできる権限(”Sid”: “S3_to_SNS_Publish”) "Sid": "S3_to_SNS_Publish", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:ap-northeast-1:123456789012:nozaki-vpcflowlog-topic", "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:s3:::nozaki-bucket2", "arn:aws:s3:::nozaki-bucket2/*"

Slide 16

Slide 16 text

SNSの作成 16 SQSがこのSNSトピックをSubscribeできる権限(”Sid”: “SQS_Subscribe”)を⼊れておきます。 "Sid": "SQS_Subscribe", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Subscribe", "Resource": "arn:aws:sns:ap-northeast-1:123456789012:nozaki-vpcflowlog-topic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sqs:ap-northeast-1:123456789012:nozaki-vpcflowlog- sqs" } }

Slide 17

Slide 17 text

SNSの作成 17 • サブスクリプションの作成 トピック︓先ほど作成したもの を選択 プロトコル︓SQS エンドポイント︓先ほど作成し たSQSキューのARNを指定 rawメッセージ配信の有効化︓ チェックは外したままにしてお く

Slide 18

Slide 18 text

S3の設定 18 • バケットポリシーの修正 VPCフローログを設定すると、にS3のバケットポリシーが勝⼿に書き換わってしまいます。 このため、Splunk on EC2のロールがS3にアクセスできるよう、最下部に「”Sid”: “EC2PULL”」を追加して おきます。 ・・・ { "Sid": "EC2PULL", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/SSMAgentRoleforEC2" }, "Action": "s3:*", "Resource": "arn:aws:s3:::nozaki-bucket2/vpc-flowlog/*" }

Slide 19

Slide 19 text

S3の設定 19 • イベント通知設定(SNSへの通知) 最後に、S3に新規書き込みがあった際のイベント通知設定を⾏います。 プレフィックス︓(始まり)記載なくてもいいですが、「AWSLogs/123456789012/vpcflowlogs/ap- northeast-1/」は不変だったので記載しておきました。 サフィックス︓(終わり)拡張⼦が.gzのファイルがアップロードされるので、拡張⼦だけ記載しておきまし た。なくてもいいです。 イベントタイプ︓念のため「すべてのオブジェクト作成イベント」s3:ObjectCreated:*にチェックを⼊れて おきます 送信先︓先ほど作成したSNSトピック「nozaki-vpcflowlog-topic」を指定して通知します

Slide 20

Slide 20 text

Splunk側での設定 20 (5分ほどDemo)

Slide 21

Slide 21 text

感想 21 Splunkの知識はそんなになくても構築できました。 AWSネイティブ⼀択でいくのであれば、SIEMはOpenSearchでいくのがスムーズですが、Splunkを使いた いケースもあるかと思います。その場合、Splunk側ではAWS連携⽤としてSplunk Add-on for AWSを使 い、⼊⼒⽅式もSQS Based S3というSNS⇨SQSからの通知によりS3から取得しに⾏く⽅式です。 これが結構曲者で、S3 File DecoderやSource Typeを正しいものを選ばないと、Splunk側で正しく取り込 めず、ログが表⽰されません。特にSQS Based S3だとどれを選べばいいのか、デフォルトのままでいいの か、情報がネットにもあまりありません。なのでSplunk Add-on for AWSを使う場合は、この辺りに注意し てください。

Slide 22

Slide 22 text

拙いところがあったかと思いますが、 ご清聴ありがとうございました。m(_ _)m