Linuxマシンでは、システムや導入しているアプリケーションが日々ログを出力しています。Linuxマシンを安定して稼動させるためには、これらのログを日々確認して問題が起こっていないか確認することが重要ですが、ログファイルを一つ一つ確認するのはとても面倒です。
そこでここでは、Linux上で出力されるさまざまなシステムログやアプリケーションログを効率よくチェックできるツール「Logwatch」を紹介します。
目次
Logwatchとは
Logwatchは、システムログやインストールされているアプリケーションのログを分析し、分析結果を人間が見やすいレポートとして作成してくれるツールです。主な特徴は以下のとおりです。
- デフォルトで毎日cronジョブとしてログファイルの分析結果が出力されます。
- レポートは標準出力や電子メールで送信することができます。
- さまざまなアプリケーションのログの解析に対応しており、独自のログを解析させることもできます。
Logwatchの使い方
Logwatchのインストール
ほとんどのLinuxディストリビューションでは、標準リポジトリから簡単にLogwatchをインストールできます。
# dnf -y install logwatch
Logwatchの設定
Logwatchの設定は、デフォルト設定が「/usr/share/logwatch/default.conf/logwatch.conf」に記述されており、このファイルを「/etc/logwatch/conf/logwatch.conf」にコピーしてから設定をカスタマイズします。
# cp -p /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf
# vi /etc/logwatch/conf/logwatch.conf
主な設定項目は以下のとおりです。すべて既定値のままでも動作します。
Mailto
「MailTo」には、レポート送信先を指定でき、スペースで区切れば複数の宛先を設定することもできます。
MailTo = root
Detail
「Detail」には、レポートに記載される内容の詳細度を設定します。まずは既定値の「Low」でレポートを確認してみた後、設定を調整するのが良いと思います。
設定は「Low」「Med」「High」または数字で設定します。
「Low = 0」「Med = 5」「High = 10」
Detail = Hight
Output
レポートの出力先を指定します。「stdout:標準出力」「mail:電子メール」「file:ファイル」のいずれかを指定できます。
Output = stdout
Format
通知されるレポートのフォーマットを設定します。「text」「html」のいずれかを指定できます。
Format = text
Range
解析するログの時間範囲を設定します。「All」「Today」「Yesterday」のいずれかを指定でき、通常は既定値「Yesterday」のままで問題ないと思います。
Range = Yesterday
Logwatchの動作確認
設定を完了したら、以下のコマンドを実行し、レポートが標準出力に表示されればOKです。
# logwatch --output stdout
以下のコマンドを実行すれば、レポートをメール送信できます。
# logwatch --output mail
Logwatchが出力するレポート
レポートに記載される内容をざっくりと説明します。なお、マシンにインストールされているアプリケーションによって項目は違ってきますので、以下は一例としてご覧ください。
クリックでレポートイメージをご覧いただけます。
################### Logwatch 7.4.0 (03/01/11) ####################
Processing Initiated: Tue Apr 17 03:29:05 2018
Date Range Processed: yesterday
( 2018-Apr-16 )
Period is day.
Detail Level of Output: 10
Type of Output/Format: mail / text
Logfiles for Host: wpsv001.local
##################################################################
--------------------- Cron Begin ------------------------
Commands Run:
ここには、どのユーザーでどんなプログラムが何回実行されたかが記載されます。
---------------------- Cron End -------------------------
--------------------- fail2ban-messages Begin ------------------------
**Unmatched Entries**
ここには、フィルターに引っかかったログが記載されます。
---------------------- fail2ban-messages End -------------------------
--------------------- Kernel Begin ------------------------
ここにはサービスの再起動履歴などが記載されます。
---------------------- Kernel End -------------------------
--------------------- nginx Begin ------------------------
XXX.XXX MB transferred in XXXX responses
ここには転送されたデータ量や、応答コード別の数が記載されます。
Attempts to use known hacks by X hosts were logged XXX time(s) from:
ここには、不正アクセスと推察されるアクセス元のIPアドレス・リクエストURI・回数が記載されます。
A total of X sites probed the server
ここにはこのサーバーを調査した思われるIPアドレスが記載されます。
Requests with error response codes
ここにはエラー応答コード(400, 403, 404など)別に、どのようなリクエストURIだったかが記載されます。
A total of X ROBOTS were logged
ここには、検索エンジンなどのロボットによるアクセスが記載されます。
---------------------- nginx End -------------------------
--------------------- pam_unix Begin ------------------------
ここには、認証に関する履歴が記載されます。
---------------------- pam_unix End -------------------------
--------------------- Postfix Begin ------------------------
ここには、メールの送受信量や送受信数のサマリー及び詳細が記載されます。
---------------------- Postfix End -------------------------
--------------------- SSHD Begin ------------------------
ここには、SSHによるアクセス履歴が記載されます。
---------------------- SSHD End -------------------------
--------------------- Disk Space Begin ------------------------
ここには、ファイルシステムごとのサイズ・使用量・空き容量・マウントポイントなどが記載されます。
---------------------- Disk Space End -------------------------
###################### Logwatch End #########################
ヘッダー
ヘッダー部分には、logwatchの実行日時、分析したログの期間、レポートの詳細度などが記載されています。
Cron Begin ~ Cron End
Cronに関する情報が記載されており、どのプログラムがCronから何回実行されたかをチェックできます。
fail2ban-messages Begin ~ fail2ban End
fail2banに関する情報が記載されており、フィルターにマッチしたときのログや、BANしたログをチェックできます。
kernel Begin ~ kernel End
カーネルに関する情報が記載されており、サービスを再起動した履歴などをチェックできます。
nginx Begin ~ nginx End
nginxに関する情報が記載されており、不正アクセスと推測されるログの接続元IPアドレスや、エラー応答コードの履歴などをチェックできます。
pam_unix Begin ~pam_unix End
ユーザー認証に関する情報が記載されており、suした回数や認証に失敗した回数などをチェックできます。
Postfix Begin ~ Postfix End
Postfixに関する情報が記載されており、送信メール数・転送先ホスト名・接続失敗の履歴などをチェックできます。
SSHD Begin ~ SSHD End
SSHでの接続履歴に関する情報が記載されており、接続元IPアドレス(またはホスト名)やログインユーザー名、アクセス拒否した履歴などをチェックできます。
Disk Space Begin ~ Disk Space End
サーバーのパーティションごとの使用状況をチェックできます。
あとがき
レポートを毎日確認するのは大変ですが、いつもと内容が大きく違っていないかだけでも確認することで、問題の早期発見につながると思います。