hiroohiのメモ

はてななのでITやスタートアップ周りの話(ほとんどが自分への備忘録だけど)を書いています。

最終ログイン日を調べる監査スクリプト

企業がwebサイトを運用してると、殆どの企業でシステムの監査が必要になるかと思います。
監査といっても、何をするのかよくわからなかったりしますが、おそらく

を確認するのが目的だと思います。

具体的に良くあるもののひとつに、サーバのアカウント管理があると思います。
実は情報漏洩の原因ナンバー1は内部犯行です。
それを防ぐために、必要な人だけがサーバにアクセスできる権限を持っていることが望ましいので、最後にログインしてから数ヶ月経過している人は必要に応じてアカウントを廃止する等をしていくことになるかなあと思います。

この手の情報が検索してもあまりでてこないので、僕がやっているシンプルな方法を備忘録をかねて紹介します。

最終ログインが90日前のアカウントを抽出してメールで管理者に知らせるスクリプト

#!/bin/bash
#setting
MAILADDRESS=(送信先メアド)

#mail user list that never logged in
lastlog -b 90 | grep "Never" | mail -s "`hostname`: user audit never logged in" $MAILADDRESS

#mail user list that  logged in before 90 days
lastlog -b 90 | grep -v "Never" | mail -s "`hostname`: user audit before 90 days" $MAILADDRESS

lastlogコマンドを使って、最終ログイン日が90日より前の人をメールします。

lastlogコマンドは一度もログインしたことがない人もリストアップするので、上記スクリプトでは運用上便利なように、一度もログインしたことのない人と90日以内にログインしてない人を別々にメールを飛ばすようにしています。

正直言ってワンライナーでかけそうですし、実際lastlogの後もっと複雑/自動化した管理をされている方も多いかと思いますが、初めてシステム管理をするような人の参考になれば良いなあと思います。