CentOS にログインしたらメールで通知を受け取れるように設定します
Gメールは使わないで、社内メールサーバ等を利用するパターンです
【ssmtp】CentOSでログイン通知【rsyslog】 の ommail版です
もし、意図しないタイミングでメールが来たら。。ヤバイ状況です
が、メール通知を仕掛けておかないと気が付きもしないかも
ちょっと設定ファイルを書いて、数行の簡単なシェルを組むだけ
手間をかけずにログインメール通知を仕掛けてみます
ここに書いた手順は centos ですが、他Linuxでも似たようにできると思います
(未確認)
ommail モジュールのインストール確認
rsyslog からメールを送るための ommail モジュールがインストールされてるか確認です
ファイルがあれば OK です
ls -l /lib64/rsyslog/ommail.so
-rwxr-xr-x. 1 root root 14800 12月 17 18:52 2014 /lib64/rsyslog/ommail.so
もし入ってなかったら rsyslog を落としてきてコンパイルとかかな?
この辺を参考に
http://www.rsyslog.com/doc/v8-stable/configuration/modules/ommail.html
システムログ設定
OSがログインしたことをsyslog に残すので、syslogに記録されたタイミングでメール送信をできるように設定を追加です
ommail 設定
$ModLoad ommail
$ActionMailSMTPServer 192.168.25.25
$ActionMailFrom メール送信元アドレス
$template login_subject,"Server01 Login(%fromhost%)"
$template login_body,"%fromhost%\r\nUser Login\r\n%msg%"
$ActionExecOnlyOnceEveryInterval 1
#------------------------------------------------------------
## Server Login
$ActionMailSubject login_subject
$ActionMailTo メール送信先アドレス
if \
( $msg contains 'pam_unix(' ) \
and ( $msg contains 'session opened' ) \
then :ommail:;login_body
ommail のモジュールを読み込んで
送信用メールサーバを設定(アドレスとか送信者とか)
login_bodyという変数?に ログイン元のfromhost と、syslogに記録されたメッセージを設定
もし(if) syslog に記録されたメッセージ($msg)に
'pam_unix(' っていう文字列と
'session opend' っていう文字列があったら
ommail モジュールを使って login_body の内容を送信
っていう設定になってます。
カンタンですね
もし、同じ内容のログが 1 秒以内に記録されても、1回だけしか送らないって設定も入れときました(ActionExecOnlyOnceEveryInterval )
※ ツール系とかの処理でログイン通知が大量に来ることがあったので追加
設定反映
設定が終わったら、rsyslog に設定を読み込ませて反映させときます
$ sudo service rsyslog reload
または
$ sudo systemctl restart rsyslog
以上
動作確認等は前回の記事 【ssmtp】CentOSでログイン通知【rsyslog】 と同じなので割愛
GMail が使えないセキュアな社内サーバでもログイン通知を仕掛けられますよ
メール送信に認証が必要であれば、 sSMTP 版を参考に