PR

VPSのセキュリティを段階的に高めていく|Logwatch導入・確認編

VPSのログをメールで確認するために、Logwatchを使って運用状況を見守るイメージのイラスト VPS・RentalServer
この記事は約9分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事は、
「VPSのセキュリティを段階的に高めていく」シリーズの続きとなります。

前回は、fail2banを使って不正なログイン試行を自動でBANし、
さらに繰り返し攻撃に対しては長期BAN(recidive)で対応する構成を整理しました。

今回はその次の段階として、
サーバー全体のログを俯瞰して確認するために、Logwatchを導入します。

まだ前回の記事を読んでいない場合は、先にこちらをご覧ください。

Logwatchとは何か

Logwatchは、サーバー上に蓄積されるさまざまなログを集計し、「人が読める形で要約してくれる」ツールです。

Logwatchでできること

  • サーバー全体のログを1つのレポートにまとめる
  • SSHや認証失敗など、重要な項目を俯瞰できる
  • 生ログを1行ずつ読む必要がなくなる

VPSを個人で運用している場合、すべてのログを細かく確認するのは現実的ではありません。

Logwatchは、「何も起きていないことを確認する」ためのツールとして、とても相性が良い存在です。

今回の記事で扱う範囲・扱わない範囲

この記事では、次の内容を扱います。

  • Logwatchの導入
  • 基本的な設定
  • メールレポートを受け取れる状態にする
  • レポートの各項目が何を意味するかを簡単に把握する
  • 読者が「どこを見ればいいか」を整理する

一方で、次の内容は 扱いません

  • fail2banやSSHログの詳細分析
  • 攻撃回数の集計や期間比較
  • 週次・月次での傾向分析

これらは、ログがたまってから、別シリーズとして扱う予定です。

Logwatchのインストール

Logwatchをインストールする

まずは、Logwatchをインストールします。

sudo apt install logwatch

このコマンドで、Logwatch本体と必要なスクリプトがインストールされます。

Logwatchの基本設定

設定ファイルの場所を確認する

Logwatchの設定は、次のディレクトリ配下で行います。

  • /etc/logwatch/

この中にある設定ファイルを編集して、出力内容や送信先を調整していきます。

Logwatchの設定ファイルを開く

今回は、カスタマイズ用の設定ファイルを編集します。

sudo nano /etc/logwatch/conf/logwatch.conf

このファイルに書かれた内容が、Logwatchの動作に反映されます。

最低限確認しておきたい設定項目

Logwatchの設定ファイル(/etc/logwatch/conf/logwatch.conf)には多くの項目があります。
最初から全部を理解する必要はありません。

ただし、メールレポートとして“使いやすい形”にするために、最低限見直した方が良い項目があります。

レポートの出力レベル(Detail)

まず重要なのが、レポートの「細かさ」です。
Logwatchでは Detail の値で、どれくらい詳しく書くかを調整できます。

ざっくり言うと、次のイメージです。

  • High:情報量が多い(変化や詳細まで出やすい)
  • Med:ほどほど(個人運用では読みやすいバランス)
  • Low:最低限(異常検知の入口として割り切る)

個人運用のVPSでは、最初は Med がおすすめです。
Highにすると情報量が増えすぎて「読まなくなる」ことがあるため、まずは継続できる量にします。

レポートの形式(Format)

次に、レポートの出し方です。
Format はレポートの形式を決めます。

  • text:テキスト形式(メールで読みやすい)
  • html:HTML形式(環境によっては崩れることがある)

基本は text でOKです。
最初は「確実に読める」形式を選ぶのが安全です。

送信先(MailTo)

MailTo は、Logwatchレポートの送信先です。
ここは 必ず自分のメールアドレスにしておきます。

例:MailTo = your-mail@example.com

送信元(MailFrom)

MailFrom は送信元として表示される名前(またはアドレス)です。
デフォルトでLogwatch になっていれば、まずはそのままでも構いません。

ただし、メールボックスで検索・識別しやすくしたい場合は、たとえば「サーバー名が分かる表記」に寄せると便利です。

例:MailFrom = logwatch@your-server

※ここは環境(メール送信方式)によって制約が出る場合があるため、まずは 無理に凝らず、受信できることを優先します。

対象期間(Range)

Range は、レポートが「いつからいつまでのログ」を集計するかを決めます。

  • yesterday:昨日1日分(Daily運用に向く)
  • today:今日の途中経過(検証用)
  • all:すべて(情報量が多くなりがち)

個人運用で「毎日のレポート」を前提にするなら、基本は yesterday でOKです。

レポートの対象(Service / LogDir など)

環境によっては、レポートに含めるログの対象を絞れます。
ただし、ここは最初から触る必要はありません。

まずはデフォルトでレポートを受け取り、「不要な項目が多すぎる」「必要な項目が出ていない」と感じたときに見直すのが安全です。

デフォルトから見直すなら、ここ(おすすめ順)

最初に手を入れるなら、次の順が現実的です。

  1. MailTo(送信先)
  2. Range(期間:yesterday)
  3. Detail(細かさ:Med)
  4. Format(形式:text)
  5. MailFrom(必要なら調整)

この5つだけで、Logwatchは「読めるレポート」として十分に使える状態になります。

設定変更の方針(大事な考え方)

Logwatchは、設定を盛りすぎるほど運用が辛くなります。
最初は “読める分量にする” ことが重要です。

  • レポートを毎回読む
  • 異常があれば気づける

この状態が作れれば、導入としては成功です。

Logwatchのメール送信設定

メール送信の仕組みについて

Logwatchは、レポートを メールとして送信 することを前提にしています。

ただし、Logwatch単体ではメールを送信できないため、簡易的なメール送信環境(MTA)が必要です。

メール送信に必要なパッケージをインストールする

Ubuntu Serverでは、次のパッケージを使うのが一般的です。

sudo apt install mailutils

これにより、サーバーからメールを送信できるようになります。

この記事では、Logwatchのレポートを受け取ることを目的としているため、mailutilsの詳細な設定や外部SMTP連携までは行いません。

Logwatchを手動で実行して確認する

Logwatchを手動実行する

cronによる自動実行を待たずに、まずは手動でLogwatchを実行してみます。

sudo logwatch

このコマンドで、その時点までのログを元にしたレポートが生成され、設定したメールアドレスに送信されます。

メールが届くことを確認する

数分以内に、Logwatchのレポートメールが届けば成功です。

もし届かない場合は、

  • メールアドレスの設定
  • mailutilsが正しくインストールされているか

を確認します。

Logwatchのメールレポートの見方(概要)

レポート全体の構成を把握する

Logwatchのメールは、多くの項目に分かれて表示されます。

最初は、すべてを理解しようとしなくて大丈夫です。

重要なのは、「いつもと違う内容があるかどうか」です。

Logwatchのメールレポートに含まれる主な項目(参考例)

※ここに示す項目構成は一例です。実際の内容や順序は、サーバー環境や稼働しているサービスによって多少異なります。

LOGWATCH Summary

  • Logwatchの実行日時
  • 対象となったログの期間(例:yesterday)
  • 出力レベル(Detail)
  • 対象ホスト名

👉 まずはここで「いつ・どの範囲のログか」を確認します。

Cron

  • cron によって実行されたコマンドの一覧
  • 定期処理(apt、logrotate、certbot など)が正常に動いているかの記録

👉 見慣れないコマンドや異常な回数がなければ、基本的には読み飛ばしてOKです。

dpkg status changes

  • パッケージのインストール・更新・削除の履歴
  • 自動アップデートや手動アップデートの結果が反映されます

👉 意図しないパッケージ変更がないかを確認する用途です。日常的には変化がなければ問題ありません。

fail2ban-messages

  • fail2ban による BAN / UNBAN / 再BAN の一覧
  • 対象サービス(例:sshd)
  • IPアドレスと回数

👉 攻撃が実際に検知・対処されているかを俯瞰できる重要な項目です。ただし、本記事では詳細分析は行いません。

httpd(Webサーバー)

  • HTTPレスポンス数(2xx / 3xx / 4xx / 5xx)
  • 転送量
  • 不正リクエストや既知の攻撃パターンの検知結果

👉 Web公開している場合は、4xx や不審なパスへのアクセスが急増していないかを軽く確認します。

Kernel

  • カーネル起動時の情報
  • ハードウェア・CPU・メモリ関連のログ
  • 再起動時の記録

👉 内容は多いですが、基本的には毎回ほぼ同じなので、異常がなければ深追い不要です。

pam_unix

  • 認証関連のログ
  • sshd / sudo / systemd-user などでのセッション開始記録

👉 不審なユーザー名や異常な回数がないかを軽く確認します。

Connections (secure-log)

  • セキュリティログに記録された接続関連の情報
  • systemd や再起動に関する記録が含まれることもあります

👉 見慣れない接続エラーや警告がなければ、参考情報として眺める程度でOKです。

SSHD

  • SSHサービスの起動回数
  • 不正ユーザー名によるログイン試行(illegal users)
  • ネットワークエラー

👉 SSHへの攻撃傾向を把握する入口になります。数が多くても、fail2banで防げていれば慌てる必要はありません。

Sudo (secure-log)

  • sudo を使ったコマンド実行履歴
  • どのユーザーが、どのコマンドを実行したか

👉 自分の操作履歴の確認用です。身に覚えのない実行がなければ問題ありません。

Disk Space

  • 各ファイルシステムの使用量
  • 使用率(Use%)

👉 ここは必ず確認したい項目です。使用率が急に増えていないかをチェックします。

まず見る/今は読み飛ばしてよい項目の整理

まず確認したい項目

  • LOGWATCH Summary
  • fail2ban-messages
  • SSHD
  • Disk Space

今は読み飛ばしてよい項目

  • Kernel
  • Cron
  • dpkg status changes
  • pam_unix(異常がなければ)

最初は深く気にしなくても問題ありません。
「何も起きていない」ことを確認できれば十分です。

日常運用でのおすすめ確認スタイル

毎日見る必要はあるのか?

Logwatchのメールは、毎日必ず細かく読む必要はありません。

  • 件名を見る
  • 気になる日だけ中身を見る

この程度でも、個人運用としては十分です。

Logwatchは“安心材料”として使う

Logwatchは、

  • ufw
  • SSH
  • fail2ban

と同じ「防御」ではなく、状態を把握するためのツールです。

異常がなければ、「今日も特に問題なし」と判断できること自体が価値になります。

まとめと今後の展開について

本記事では、

  • Logwatchを導入し
  • メールでログを俯瞰できる状態を作り
  • レポートのどこを見ればよいか

を整理しました。

これで、

  • 守る(ufw / SSH / fail2ban)
  • 見る(Logwatch)

という、VPSセキュリティ運用の基本的な流れが整いました。

現在、私自身、fail2banとLogwatchを使って、私のVPSに対する不正なアクセスのログを収集しています。

時間はかかりそうですが、今後、このブログで分析結果も紹介したいと思っています。
今後とも、記事を読んでいただけたら嬉しいです。
それでは、また

タイトルとURLをコピーしました