Linuxログ監視完全ガイド:journalctlとrsyslogの設定と活用
Linuxのログ監視を徹底解説。journalctlとrsyslogの設定方法、リアルタイム監視、ログローテーション、セキュリティ監査まで実践的に紹介。
はじめに
Linuxシステムの安定運用にはログ監視が欠かせません。本記事では、主要なログ管理ツールであるjournalctl(systemdジャーナル)とrsyslogの設定方法、実践的な監視テクニックを解説します。初心者から中級者まで役立つ内容です。
1. Linuxログの基本
1.1 ログの種類と保存場所
Linuxのログは主に以下の場所に保存されます。
/var/log/messages : 一般的なシステムメッセージ/var/log/syslog : syslog互換のログ(ディストリビューションによる)/var/log/auth.log : 認証関連(Debian系)/var/log/secure : 認証関連(RedHat系)/var/log/kern.log : カーネルログsystemd採用のディストリビューションでは、journaldがバイナリ形式でログを管理し、journalctlコマンドで参照します。
2. journalctlの使い方
2.1 基本的なコマンド
<h1>全ログの表示</h1>
journalctl
<h1>最新のログを監視(tail -f 相当)</h1>
journalctl -f
<h1>指定行数表示</h1>
journalctl -n 50
<h1>特定のサービスのログ</h1>
journalctl -u nginx.service
<h1>優先度(エラーレベル)指定</h1>
journalctl -p err
2.2 フィルタリングと検索
<h1>時間範囲指定</h1>
journalctl --since "2023-10-01 00:00:00" --until "2023-10-02 00:00:00"
<h1>特定のプロセスID</h1>
journalctl _PID=1234
<h1>キーワード検索(grep相当)</h1>
journalctl | grep "error"
2.3 出力フォーマット
<h1>JSON形式</h1>
journalctl -o json
<h1>詳細表示</h1>
journalctl -o verbose
3. rsyslogの設定
3.1 rsyslogの基本設定ファイル
設定ファイルは/etc/rsyslog.confおよび/etc/rsyslog.d/配下のファイルです。
<h1>rsyslogサービスの状態確認</h1>
systemctl status rsyslog
<h1>設定ファイルの構文チェック</h1>
rsyslogd -N1
3.2 ログ出力先のカスタマイズ
例:特定のファシリティ(authpriv)のログを別ファイルに出力
<h1>/etc/rsyslog.d/10-auth.conf に記述</h1>
authpriv.* /var/log/auth.log
再起動:systemctl restart rsyslog
3.3 リモートログ転送
サーバー側(受信)
<h1>/etc/rsyslog.conf で以下を有効化</h1>
$ModLoad imtcp
$InputTCPServerRun 514
<h1>ファイアウォールでTCP 514を許可</h1>
クライアント側(送信)
<h1>/etc/rsyslog.d/10-remote.conf</h1>
*.* @@192.168.1.100:514
4. ログ監視の実践テクニック
4.1 リアルタイム監視
<h1>journalctlでリアルタイム監視</h1>
journalctl -f -u sshd.service
<h1>rsyslogのログをtail</h1>
sudo tail -f /var/log/auth.log
4.2 アラート設定(メール通知)
rsyslogのommailモジュールを使用:
<h1>/etc/rsyslog.d/10-mail.conf</h1>
$ModLoad ommail
$ActionMailSmtpServer smtp.example.com
$ActionMailFrom root@example.com
$ActionMailTo admin@example.com
$ActionMailSubject "Critical Log Alert"
<h1>優先度crit以上のログをメール送信</h1>
*.crit :ommail:
4.3 ログローテーション(logrotate)
<h1>/etc/logrotate.d/rsyslog の例</h1>
/var/log/auth.log /var/log/syslog {
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
5. セキュリティ監査とログ分析
5.1 不審なログイン試行の検出
<h1>sshの失敗ログを抽出</h1>
journalctl -u sshd.service -p err | grep "Failed password"
<h1>上位10の攻撃元IP</h1>
journalctl -u sshd.service | grep "Failed password" | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -10
5.2 ファイル改ざん検知(auditd)
auditdを併用することで、ファイルアクセスを監視できます。
<h1>auditdのインストール</h1>
yum install audit -y # RHEL系
apt install auditd -y # Debian系
<h1>監視ルールの追加(/etc/passwdへの書き込みを監視)</h1>
auditctl -w /etc/passwd -p wa -k passwd_change
<h1>ログの確認</h1>
auditctl -a always,exit -S all -F path=/etc/passwd -F perm=wa
ausearch -k passwd_change
6. トラブルシューティング
よくある問題と解決策:
journalctl --vacuum-size=500Mで容量制限を確認ls -l /var/log/)*この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*
まとめ
Linuxのログ監視は、journalctlとrsyslogを適切に設定することで効率的に行えます。リアルタイム監視、アラート設定、ログローテーションを組み合わせ、さらにauditdでセキュリティ監査を強化しましょう。定期的なログ分析により、問題の早期発見とセキュリティ向上を実現してください。