はじめに
- Splunkを使ったFraud(不正)監視のユースケースは多い
- 特にWebサービスはECサイトをはじめ、不正ログインまたは**ATO(アカウントテイクオーバー)**のリスクに常にさらされており、2要素認証が完全普及してない状況からも常に被害報告が出ている
- そのような状況で、できうる対策としてアカウント認証の異常パターンをモニタリングすることがポイントになってくる
- が、モニタリングの仕組みを実現する上で大きな2つの課題をよく耳にする
- アプリケーションから認証ログが出力されていない
- 監視ルール作りや監視体制が整っていない
Oops...アプリケーションから認証ログが出力されていない
- 必要なデータがない。これでは監視のスタートにたてない・・・アプリケーションの改修も簡単ではない。
- そのような状況に対して、本記事ではアプリケーションを改修しないでWeb(http) トラフィックのStreamデータからデータを取り出し、Splunkで分析する方法を以前紹介
- AWSのVPC Traffic Mirroringを利用して、AWSのEC2インスタンス(webサーバ)に流れるhttpトラフィックをSplunk Streamでキャプチャしました
- (VPC Traffic MirroringってVPC Flowのことかと思っていたらFlowデータではなかった。)
構成イメージ
- Webサーバを1から作らなくてもWebサーバみたいなログイン認証データが取れるSplunkを使って検証しました
- AWS MarketPlaceからポチッとインスタンスを2つ作成
- Nitro世代のm5a.largeのインスタンスを利用。
設定手順(AWS VPC Traffic Mirroring)
- AWSのVPC Traffic Mirroringの設定方法は以下記事が大変参考になりました
- 上記Blogを参考にして設定します。補足ポイントを以下に記載
- VPC Traffic Mirroringを受け取るSplunkサーバには拡張NIC(eth1)をつけて、Traffic MirrorをSplunkサーバのeth1に流す
- SplunkサーバにアタッチするセキュリティグループのinboundポリシーにUDP port 4789を加える
- Traffic Filter Policyの設定例(アウトバウンドデータ(webのレスポンスデータ)もミラー対象にしていないとStream分析に支障をきたします)
- Outboundルールはもう少し絞れたら絞ったほうがいいかもしれませんが、Splunk Stream側で分析対象のトラフィックはいかようにも調整できるのでこれでもOKです。
設定手順(Splunk Stream)
-
Splunkには以下Appsをインストール。Stream Appsも以前は1つにまとまっていましたが、最近細かく分けた模様
-
Splunkサーバに以下Appsをすべてインストール
- [Splunk App for Stream] (https://splunkbase.splunk.com/app/1809)
- Forwarder management, dashboards, calculators and admin tools
-
Splunk Add-on for Stream Wire Data
- Knowledge objects for parsing Stream data for use by users. Installed on Indexers and Search Heads.
-
Splunk Add-on for Stream Forwarders
- Network data collection tools for capturing network data, interpreting protocols, extracting custom fields and sending to Splunk. Installed on Splunk Universal or Heavy Forwarders.
- [Splunk App for Stream] (https://splunkbase.splunk.com/app/1809)
-
Stream Appの初期セットアップ
shell
・パーミション設定
cd /opt/splunk/etc/apps/Splunk_TA_stream
sudo chmod +x ./set_permissions.sh
sudo ./set_permissions.sh
・SplunkサーバにSSHアクセスして以下configを編集し、eth1に入ってくるパケットをstreamのキャプチャ対象にする(デフォルトだとeth0しか見ていない
vi /opt/splunk/etc/apps/Splunk_TA_stream/local/streamfwd.conf
[streamfwd]
streamfwdcapture.<N>.interfaceRegex = eth1
streamfwdcapture.<N>.offline = false
結果
- Webサーバに対するhttpトラフィックがキャプチャできています
- form_dataにはログインアカウント名とパスワード文字列までばっちり見えます
SPL
|rex field=form_data "username=(?<user>[^&|^$]+)"
|rex field=form_data "password=(?<password>[^&|^$]+)"
はまったポイント
- VPC Traffic Mirroringのフィルター条件にinboundのみ設定
- Splunk Streamでhttpトラフィックは可視化できるのだが、なぜか実トラフィック発生からindexされるまでに5分近くかかっていた。
- 不審におもいoutboundも転送対象にした所、数秒以内でログ検索できるようになった。httpレスポンスも見て解析しているので片方だけの解析によって処理が遅くなっていたのだと思われる
次回について
- せっかく集めたデータを活用するためのAppsを紹介します!
参考記事
- これらの丁寧な日本語記事のおかげですんなり設定できました。感謝。