7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SplunkAdvent Calendar 2024

Day 1

Linuxサーバのセキュリティ監視プラクティス (導入編) - Sysmon for Linux

Posted at

はじめに

  • 前回の概要編に続き、Sysmon for Linuxの導入の流れとTIPSをこちらでまとめていく
  • 前回の概要編はSplunk Single構成のSH&IDXサーバにインストールした例でしたが、今回はSplunk Universal Forwarderをubuntuにインストールした構成にしています

検証構成

スクリーンショット 2024-12-22 7.54.10.png

導入

※Splunk UFの導入と初期設定は省略します

  • Sysmon取得のためにMSのパッケージを準備
wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

↑なぜかパッケージが0 byteで上手くDLできなかったのであきらめてcurlで取得

curl -O https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb
  • sysmon for linuxのインストール
sudo apt-get update
sudo apt-get install sysmonforlinux

# sudo apt-get install sysinternalsebpf
↑今回は未利用※

※eBPFがあるとカーネルレベルで詳細ロギングができる模様。次回調査テーマとして扱います。
スクリーンショット 2024-12-22 10.02.11.png

  • 初期設定
sudo sysmon -accepteula -i

sudo tail -f /var/log/syslog
↑ログの確認
  • default config.xmlの確認と念の為コピーしておく
cat config.xml_org 
<Sysmon schemaversion="4.22">
<EventFiltering>
</EventFiltering>
</Sysmon>

cp -p config.xml config.xml_org

SysmonロギングからSplunk関連のプロセスを除外

  • Sysmon for Linuxを導入し、Splunk/Splunk UFが稼働していると余計なロギングをしてしまう
    -特に多い、Event ID 1(ProcessCreate)と Event ID 11 (FileCreate)でSplunk関連のプロセスが大量に発生しているのでこれを除外したい

  • 例:Splunk Indexer機能を利用していると、ファイル作成が暴発する
    スクリーンショット 2024-12-16 21.47.34.png

  • 参考config.xmlとしてSplunkAttackRangeの以下ファイルを流用。ただしこれでもフィルタが不十分

  • SplunkForwarder関連の不要な操作をログからフィルタするために修正した以下confg.xmlを適用する

修正内容

  • EventID:1 ProcessCreateでのポイントは以下Splunk関連のImageを除外する
 <!-- Splunk UF -->
        <Image condition="contains">splunk</Image>
        <Image condition="contains">streamfwd</Image>
        <Image condition="contains">splunkd</Image>
        <Image condition="contains">splunk-optimize</Image>
        <Image condition="contains">splunk-MonitorNoHandle</Image>
        <Image condition="contains">splunk-admon</Image>
        <Image condition="contains">splunk-netmon</Image>
        <Image condition="contains">splunk-regmon</Image>
        <Image condition="contains">splunk-winprintmon</Image>
        <Image condition="contains">btool</Image>
        <Image condition="contains">PYTHON</Image>
  • EventID:11 FileCreateでのポイントは以下Splunk関連のImageを除外する
<TargetFilename condition="begin with">/opt/splunkforwarder/var/lib/splunk/modinputs/journald</TargetFilename> <!--Exclude Splunk Modinput Journal-->
<TargetFilename condition="begin with">/opt/splunk</TargetFilename> <!--Exclude Splunk -->
<TargetFilename condition="begin with">/data</TargetFilename> <!--Exclude Splunk Indexed Data-->
  • config.xmlの更新
sysmon -c config.xml

Sysmon v1.3.3 - Monitors system events
Sysinternals - www.sysinternals.com
By Mark Russinovich, Thomas Garnier and Kevin Sheldrake
Copyright (C) 2014-2023 Microsoft Corporation
Licensed under MIT/GPLv2
Using libxml2. libxml2 is Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.

Loading configuration file with schema version 4.81
Configuration file validated.

↑構文エラーがなければ良し

systemctl restart sysmon.service
↑サービス再起動
  • ログが届きました
    スクリーンショット 2024-12-22 9.51.37.png

(忘れないで)syslogとjournaldのログローテーション設定

  • Splunkにログを転送しつつ、サーバ側のオリジナルログ(syslogとjournald)が溢れないように設定を入れておきます

journaldローテーション設定

  • journaldには永続ログ(/var/log/journal配下)と一時的なログ(/var/run/journal配下)を保持する
・ログ全体の最大サイズを50MB、ファイルごとの最大サイズを50MBに制限したい場合の例

vi /etc/systemd/journald.conf

[Journal]
SystemMaxUse=50M
SystemKeepFree=100M
SystemMaxFileSize=50M
SystemMaxFiles=10

・設定保存後、サービス再起動
sudo systemctl restart systemd-journald
  • (参考)journaldのローテーションがちゃんとされているか確認
・diskサイズの確認
journalctl --disk-usage

Archived and active journals take up 106.0M in the file system.

・実際のサイズを確認
/var/log/journal/998b65a11cd3435a8bb3bb8fbcdbf9b8# ll
合計 116760
drwxr-sr-x+ 2 root systemd-journal    12288 12月 22 09:04  ./
drwxr-sr-x+ 3 root systemd-journal     4096  6月 18  2023  ../
-rw-r-----+ 1 root systemd-journal 50331648 12月 22 09:09  system.journal
-rw-r-----+ 1 root systemd-journal 52428800 12月 22 09:04 'system@6b1578d3dc9a40d89ecc89922da41b5e-0000000056eb9f53-000629d08eb1c8c5.journal'


・もう一度、サイズを確認
journalctl --disk-usage

Archived and active journals take up 58.0M in the file system.

・定期的に1ファイル50MBを超えると過去1世代アーカイブファイルを残してローテーションされていることがわかる
  • (参考)journalログの2つのファイルの違い
    スクリーンショット 2024-12-22 9.14.20.png

syslogローテーション設定

  • defaultでrsyslogがローテーション管理をしています
    • 環境に応じてローテーションタイミングは適宜変更できます
cat /etc/logrotate.d/rsyslog
/var/log/syslog
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
	rotate 4
	weekly
	missingok
	notifempty
	compress
	delaycompress
	sharedscripts
	postrotate
		/usr/lib/rsyslog/rsyslog-rotate
	endscript
}

参照リンク

次回は実用編(Security Contentsを使った検知テスト)を実施していきます!

7
2
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
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?