logger-exec

apache/audit/PowerDNS等でログをsyslog転送するのは面倒だけど、
ログ監査にはsyslog出力と中央管理が必要になる事が多いです。
しかし、syslogに出力は細工が必要でメンテナンス性が低下してしまい、
本末転倒の状態になります。
 
複数台のサーバを運用するとログ監査と管理が大変になって来るので、
ローカルのテキストログをリアルタイム取得しながらsyslogに変換しつつ、
rsyslogやsyslog-ng経由でログの転送を行うスクリプトを作ってみました。
 
RHEL本家とRockyLinux等のRHELクローン、
Debian本家と派生ディストリビューション、
openSUSE本家で実際に動かしてログ転送出来る事までは確認済です。

left,nowrap


参考サイト

注意事項

  1. ファイル利用による損益について、一切の責任を負いません。
  2. 状況に応じて、インストーラ・スクリプトの公開を停止する場合があります。
  3. ライセンスについて、筆者が作成したスクリプトは好きに改変して問題ありませんが、
    外部ライブラリのライセンスについてはライブラリ配布元に帰属とします。
  4. 宣伝してくれる心優しい方は、是非トップページへリンクをお願いします。

スクリプト

公開日FILESIZEMD5更新内容
2023/05/24logger_20230524.tar.gz3.1KBfa800de7ff48221a5d8d191105d8b95dディストリビューション判定の処理を最適化
2022/10/09logger_20221009.tar.gz3.2KB3929dea119c0d67f8790ed08b5cbfb27systemdユニットファイルの同梱とRHEL9新規対応
2019/05/12logger_20190512.tar.gz2.9KB2cd2a0d318c21a4069690bfc99aa398erestart時に再起動しない場合がある不具合を修正
2019/05/10logger_20190510.tar.gz2.9KBc07f49574cdbecd8b0d1197e5ab98f3a初公開


インストール

RHEL/Debian/openSUSEのクローンディストリビューションに対応するインストーラを同梱していますので、
SELinuxとAppArmorを無効化してから下記コマンドの通りインストールして下さい。

# wget "https://www.ns-lab.org/files/logger/logger_latest.tar.gz"
# tar zxvf logger_latest.tar.gz
# cd logger
# ./install.sh

 
systemdユニットファイルを手動インストールを行う場合、
下記を参考に各ファイルをコピーしつつ、パーミッションを適切に設定して下さい。

# cp logger/environment/logger.systemd /etc/sysconfig/logger
# chown root.root /etc/sysconfig/logger
# chmod 644 /etc/sysconfig/logger

# cp logger/service/logger.systemd /usr/lib/systemd/system/logger.service
# chown root.root /usr/lib/systemd/system/logger.service 
# chmod 644 /usr/lib/systemd/system/logger.service 

# cp logger/logger-exec /usr/local/sbin/
# chown root.root /usr/local/sbin/logger-exec
# chmod 755 /usr/local/sbin/logger-exec

# mkdir -p /etc/logger
# cp logger/logger.conf /etc/logger/
# chown root.root /etc/logger/logger.conf
# chmod 644 /etc/logger/logger.conf

# systemctl enable logger.service
# systemctl daemon-reload

 
initをsystemd同等に動かす時は下記手順になります。
互換性維持の為に残しているファイルなので、通常はsystemdユニットファイルを使って下さい。

# cp logger/environment/logger.init /etc/sysconfig/logger
# chown root.root /etc/sysconfig/logger
# chmod 644 /etc/sysconfig/logger

# cp logger/service/logger.redhat /etc/init.d/logger
# chown root.root /etc/init.d/logger
# chmod 755 /etc/init.d/logger

# cp logger/logger-exec /usr/local/sbin/
# chown root.root /usr/local/sbin/logger-exec
# chmod 755 /usr/local/sbin/logger-exec

# mkdir -p /etc/logger
# cp logger/logger.conf /etc/logger/
# chown root.root /etc/logger/logger.conf
# chmod 644 /etc/logger/logger.conf

# chkconfig --add logger
# chkconfig logger on
# systemctl daemon-reload


設定ファイル

スクリプトを実行するには、下記2ファイルの設定が必要となります。
環境変数についてはデフォルト状態で動作しますが、
スクリプトのログ読込み設定については環境に合わせて再設定して下さい。

 /etc/sysconfig/logger
 /etc/logger/logger.conf

 
取得したログをリモートサーバにsyslog転送するには、rsyslog・syslog-ngの設定変更も必要になります。
local1の全ログをIPアドレス10.0.0.1、
local2の全ログをIPアドレス10.0.0.2に転送する場合、rsyslogには下記の様な設定を追加して下さい。

 /etc/rsyslog.conf


実行コマンド

スクリプトの全設定を行った後、initスクリプトを実行するとloggerが起動します。
起動オプション・停止コマンドは下記の通りとなっています。

  • スクリプト起動
    systemctl start logger
  • スクリプト停止
    systemctl stop logger
  • スクリプト再起動
    systemctl restart logger

 
スクリプトが正常に起動しつつ、rsyslog・syslog-ngのリモート転送も設定している場合、
ログ転送先(図のサーバB)では下記の様なログを取得する事が出来ます。
ログが転送されて来ない場合、何処かの設定が失敗しているので設定・パーミッションを見直して下さい。

May 10 00:15:00 server audit: type=CRYPTO_KEY_USER msg=audit(1557414900.XXX:415): pid=*** uid=0 ...
May 10 00:15:00 server audit: type=CRYPTO_KEY_USER msg=audit(1557414900.XXX:416): pid=*** uid=0 ...
May 10 00:15:00 server audit: type=CRYPTO_KEY_USER msg=audit(1557414900.XXX:417): pid=*** uid=0 ...

添付ファイル: filelogger_01.png 481件 [詳細]