導入編(sysmonの展開 & Splunkへのデータ取込)
- 前回の概要編はこちら
- まずsysmonをwindows端末にインストール
- Client: Windows 7 and higher.
- Server: Windows Server 2008 R2 and higher
- 次にSplunkのUniversal Forwarder(以下、UF)をインストール
- 最後にDeployment Serverを使ってsysmonログ収集のためのappを配布
Overview
- 通信要件の確認
- 管理系通信(8089番):
- UFからDeployment Serverにpollingして新しいコンフィグレーション(app/add-on)があればDLする。
- UF転送(9997番):
- UFからSplunkのIDXに対してログを転送する際に使うポート。転送時の通信ボリュームを圧縮する方法もある。
- 管理系通信(8089番):
まずsysmonをwindows端末にインストール
sysmonのダウンロード
- sysmonダウンロードリンク
余計なログ(ノイズ)を減らすためのsysmon-configもダウンロード
-
sysmon-configダウンロードリンク
-
改めてsysmonが収集できる情報を整理してみました。イベントID1~3は監視を推奨しますので、今回の手順を進めると1~3が取れるようにしています。
- xmlのコンフィグレーションの中身を見てみると、下記サンプルを見てもらうとわかると思うが、ロギングを除外するCommandLineやport番号が指定されていることがわかる。
(抜粋)
<ProcessCreate onmatch="exclude">
<!--SECTION: Microsoft Windows-->
<CommandLine condition="begin with">C:\Windows\system32\DllHost.exe /Processid</CommandLine> <!--Microsoft:Windows-->
<CommandLine condition="is">C:\Windows\system32\SearchIndexer.exe /Embedding</CommandLine> <!--Microsoft:Windows: Search Indexer-->
<Image condition="is">C:\Windows\system32\CompatTelRunner.exe</Image>
(抜粋)
-
このconfigを適用しないでログを収集すると、1PCあたり50MB以上/日のログが記録されてしまうため、適用することを推奨します。結果、5MB〜10MB/日のログ容量に収まります。
-
一点、注意が必要な点として、社内にProxyがない場合、80と443もNetworkConnectログとしてロギングしてもいいと思います。その場合以下3行をxml内の**< NetworkConnect onmatch="include" >**欄に追記してください。
<!--Ports: No Proxy-->
<DestinationPort condition="is">80</DestinationPort>
<DestinationPort condition="is">443</DestinationPort>
- 参考用としてswiftonsecurityのconfigを元に、以下を追加したconfigをおきました。configのschmaバージョンは4.22です。
- Splunk関連のProcessCreationを除外
- 80,443番 network connectionも監視
###sysmonをインストール(コンフィグレーションと一緒に)
- sysmonのインストールコマンド(-nがnetwokrconnection取るのに必要です)
Sysmon.exe -accepteula -i sysmonconfig-export.xml -l -n
###sysmonのロギングを確認
- OS再起動なくロギングが行われます。
- イベントビューアから[アプリケーション&サービス]-[Microsoft]-[Windows]-[sysmon]にて確認
次に、SplunkのUniversal Forwarderをインストール
###Deployment Server(以下、DS)機能の準備
####DSについて
- Splunk Enterpriseの機能の1つ
- SH/IDX兼用のSplunkサーバ上でも設定の有効化は可能なので、数台の試験時には別途DSサーバを立てる必要はない(本番で50台以上のUFを管理する場合は、独立したDSサーバを用意することを推奨)
- UFに対して、Appを更新/配布する役割
- UF自身の配布やバージョンアップはできない
- そのため、別の3rd Party製品で配布してもらってもOKです。実際は、こなれたツールを利用しているケースのほうが多いと思います。
####DSのセットアップ
CLI(Linuxサーバを想定)でsplunkサーバにログインして、sysmon取込用のappフォルダ(例:windows/local)を作成します。
# mkdir /opt/splunk/etc/deployment-apps/windows/local
local配下にinputs.confを作成
[WinEventLog://Microsoft-Windows-Sysmon/Operational]
disabled = false
renderXml = 1
###UniversalForwarderのインストール(サイレント)
-
Universal Forwarderのダウンロード
-
つづいて、sysmonをインストールしたWindowsマシンに移動して、UFをインストールします。
msiexec.exe /i (UFのファイル名) DEPLOYMENT_SERVER=“(DSサーバのIP/host名):8089" RECEIVING_INDEXER=“(IDXサーバのIP/host名):9997" AGREETOLICENSE=Yes /quiet
- タスクマネージャーから下記プロセスが見えていれば、UFはインストールできていると判断。
- サイレントインストールのため一見正常にインストールできたのかわかりにくいが、通常は2,3分以内にはDSに疎通が届き、DSのフォワーダ管理画面から対象のマシンのステータスが見えるはずです。(設定-フォワーダー管理)
DS(Splunk)の管理画面からApp(windows)の配布
-
ここまで来たらもうあとちょっと!あとはGUI操作でラクラクやりましょう。
-
サーバクラスの作成
-
続いて「クライアントの追加」を選択し、対象マシン名を選んで、保存。
-
App(windows)がUFのインストールされたwindowsに配布されます。タイミングはUFがDSに対してpollingしてきたときのため、展開までちょっと待つ必要があります。
###(5分くらい待って)Splunkにログが届くことを確認
- 下記コマンドでサーチをしてみましょう
sourcetype="xmlwineventlog:microsoft-windows-sysmon/operational"
どうでしょう?みなさま無事ログ収集できましたか?
- セットアップに詰まる部分があればコメントいただけますと幸いです。
How to Setup! (次回に続く)
というわけで導入編まで終わりましたので、次回は活用編に行きたいと思います。
- 概要編
- 導入編
- sysmonの展開
- Splunkへのデータ取込
-
活用編
- 検知ルールの設定
- ダッシュボードの作成
- おまけのTIPS集
- 転送されるトラフィックやデータサイズは?
- UFをwindowsPCに配るには?
- sysmon以外にもwindowsから追加でログ収集したくなった