check-lastlog は、Linux 環境で /var/log/lastlog を解析し、一定期間ログインしていないユーザーを検出する Mackerel などの監視ツールで利用できるチェックプラグインです。
長期間ログインしていないユーザーアカウントは、不要なアカウントや漏洩リスクのあるアカウントの兆候となる場合があります。本ツールを使うことで、そのようなアカウントを自動的に検出し、アラートとして通知できます。
/var/log/lastlogを直接読み取り、各ユーザーの最終ログイン日時を確認- 警告(warning)・異常(critical)のしきい値を日数で指定可能
- システムアカウントを除外するための UID 範囲指定
- ログイン不能なシェル(
nologinなど)を持つユーザーを自動除外 - ホワイトリストで特定ユーザーを常に除外可能
- Mackerel チェックプラグインとして利用可能
Linux の amd64 / arm64 のみ対応しています。
$ mkr plugin install monitoring-forge/check-lastlogインストール後、/opt/mackerel-agent/plugins/bin/check-lastlog などに配置されます。
GitHub Releases から、最新のバイナリをダウンロードできます。
# 例: Linux amd64 の場合
$ curl -L -o check-lastlog.zip "https://github.com/monitoring-forge/check-lastlog/releases/latest/download/check-lastlog_linux_amd64.zip"
$ unzip check-lastlog.zip -d check-lastlog
$ cd check-lastlog
$ ./check-lastlog -h必要に応じて、Mackerel エージェントのプラグインディレクトリなどに配置してください。
$ sudo install -m 755 check-lastlog /opt/mackerel-agent/plugins/bin/check-lastlog$ ./check-lastlog -h
Usage:
check-lastlog [OPTIONS]
Application Options:
--before= [Deprecated] Check for users whose login is older than DAYS
-w, --warning= warning if users whose login is older than DAYS (default: 60)
-c, --critical= critical if users whose login is older than DAYS (default: 85)
--min-uid= min uid to check lastlog (default: 500)
--max-uid= max uid to check lastlog (default: 60000)
--white-user-names= comma separeted user names that white
--lastlog-file= lastlog file path (default: /var/log/lastlog)
--passwd-file= passwd file path (default: /etc/passwd)
-V, --verbose Show verbose log
-v, --version Show version
Help Options:
-h, --help Show this help message
| オプション | 説明 | デフォルト |
|---|---|---|
-w, --warning |
最終ログインからこの日数を超えた場合に WARNING | 60 |
-c, --critical |
最終ログインからこの日数を超えた場合に CRITICAL | 85 |
--min-uid |
チェック対象とする最小 UID | 500 |
--max-uid |
チェック対象とする最大 UID | 60000 |
--white-user-names |
常に除外するユーザー名をカンマ区切りで指定 | (なし) |
--lastlog-file |
読み込む lastlog ファイルのパス | /var/log/lastlog |
--passwd-file |
読み込む passwd ファイルのパス | /etc/passwd |
-V, --verbose |
デバッグ用の詳細ログを標準エラーに出力 | false |
$ ./check-lastlog
OK: No users were found who have not logged in recently$ ./check-lastlog
CRITICAL: Found users who have not logged in recently: testuser(129 days), sampleuser(106 days)
$ echo $?
2$ ./check-lastlog -w 30 -c 60
WARNING: Found users who have not logged in recently: alice(45 days)バッチ用アカウントやメンテナンス用アカウントなど、意図的に長期間ログインしないユーザーを除外できます。
$ ./check-lastlog --white-user-names backup,batch,deploy
OK: No users were found who have not logged in recentlyUID 範囲を変更して、通常ユーザーのみを対象にすることもできます。
$ ./check-lastlog --min-uid 1000 --max-uid 2000
OK: No users were found who have not logged in recentlyMackerel エージェントの設定ファイル(通常は /etc/mackerel-agent/mackerel-agent.conf)に [plugin.checks] を追加してください。
[plugin.checks.lastlog]
command = ["/opt/mackerel-agent/plugins/bin/check-lastlog", "--white-user-names", "backup,batch"][plugin.checks.lastlog]
command = ["/opt/mackerel-agent/plugins/bin/check-lastlog", "-w", "30", "-c", "60", "--white-user-names", "deploy,ansible"][plugin.checks.lastlog]
command = ["/opt/mackerel-agent/plugins/bin/check-lastlog", "--white-user-names", "backup,batch"]
check_interval = 30
notification_interval = 60設定後、以下のコマンドで Mackerel エージェントを再起動してください。
$ sudo systemctl restart mackerel-agentエージェントがプラグインを実行すると、Mackerel のホスト詳細画面の「モニタリング」→「チェック監視」に結果が表示され、WARNING / CRITICAL の状態でアラートが発報されます。
- 本ツールは Linux の
lastlogバイナリ形式を解析するため、Linux の amd64 / arm64 以外では動作しません。 --beforeオプションは非推奨です。新規には-w/-cをご利用ください。- ログイン不能なシェルを持つユーザー、および UID が
--min-uid未満・--max-uidを超えるユーザーは自動的に除外されます。 - 以下のシェルを持つユーザーは、ログイン不能と判定されてチェック対象から除外されます。
/bin/sync/sbin/halt/sbin/nologin/sbin/shutdown/usr/sbin/nologin/usr/bin/false/bin/false
lastlogファイルへのアクセスには通常root権限が必要です。Mackerel エージェントは root で動作することが前提ですが、手動実行時はsudoが必要になる場合があります。
MIT License