CentOS にログインしたらGメールで通知を受け取れるように設定します
gmail が使えない場合は 【ommail】CentOSでログイン通知【rsyslog】 を参照
もし、意図しないタイミングでメールが来たら。。ヤバイ状況です
が、メール通知を仕掛けておかないと気が付きもしないかも
ちょっと設定ファイルを書いて、数行の簡単なシェルを組むだけ
手間をかけずにログインメール通知を仕掛けてみます
ここに書いた手順は centos ですが、他Linuxでも似たようにできると思います
(未確認)
#送信専用メール ssmtp 設定
sendmail とか postfix とかメールサーバ立ち上げるのはめんどくさいのとセキュリティ上の穴になる可能性があるので、簡易なメール送信専用サーバ? ssmtp を設定しときます
ssmtp インストール
インストールは yum で簡単に
yum install ssmtp
ssmtp 設定(gmail利用設定)
gmail のログイン設定を入れておきます
mailhub=smtp.gmail.com:587
AuthUser=■ ■ ■ ■ ■@gmail.com
AuthPass=▼▲▼▲▼▲▼▲▼▲▼▲▼▲
UseSTARTTLS=YES
root=■ ■ ■ ■ ■@gmail.com
rewriteDomain=gmail.com
hostname=gmail.com
AuthMethod=LOGIN
FromLineOverride=YES
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
■ ■ ■ ■ ■ は、メールアドレス
▼▲▼▲▼▲▼▲▼▲▼▲▼▲ は、パスワードを設定です
ssmtp 送信テスト
設定がきちんとできてるかメールを送信して確認してみます
echo -e "From: ■ ■ ■ ■ ■@gmail.com\nTo: ■ ■ ■ ■ ■@gmail\nSubject: test\n\ntest mail\n" | ssmtp -s ■ ■ ■ ■ ■@gmail.com
どうでしょう
ちゃんとメール届きました?
ここでメール届かないと、ログイン通知も届かないのでしっかり確認が必要です
システムログ設定
OSがログインしたことをsyslog に残すので、syslogに記録されたタイミングでメール送信をできるように設定を追加です
rsyslog 設定
$template login_msg, "%fromhost% %msg%"
if \
( $msg contains 'pam_unix(' ) \
and ( $msg contains 'session opened' ) \
then ^/etc/rsyslog.d/login2mail.sh;login_msg
login_msg という変数?に ログイン元のfromhost と、syslogに記録されたメッセージを設定
もし(if) syslog に記録されたメッセージ($msg)に
'pam_unix(' っていう文字列と
'session opend' っていう文字列があったら
/etc/rsyslog.d/login2mail.sh っていうファイルを実行! 引数に login_msg を指定♪
っていう設定になってます。
カンタンですね
rsyslog からメールを送るシェル
文字列が見つかった時に呼び出されるシェルはこんな感じ
#!/bin/bash
ADDR="■ ■ ■ ■ ■@gmail.com"
SUBJ="SERVER Login : `hostname`"
echo -e "From: ${ADDR}\nTo: ${ADDR}\nSubject: ${SUBJ}\n\nServer Login\n${1}\n" | \
ssmtp -s ${ADDR}
動作確認
ログイン、もしくは su で、syslogにログインが記録されるので実行してみる
$ su -
すると、syslogにはこんなログが
・・・
May 29 22:51:27 server001 su: (to root) user01 on pts/0
May 29 22:51:27 server001 su: pam_unix(su-l:session): session opened for user root by user01(uid=1000)
・・・
キーワード 'pam_unix(' と 'session opened' が存在するので、メールが送られているはず
受信メール:
From: <■ ■ ■ ■ ■@gmail.com>
日付: 2017/05/29 午後10:51
件名: SERVER Login : server001
To: <■ ■ ■ ■ ■@gmail.com>
Server Login
server001 pam_unix(su-l:session): session opened for user root by user01(uid=1000)
うまく届かない場合はメールアドレスが間違っていないかとか、
サーバの指定とか、パスワードとか
もう一度確認を
でも、ダメな場合はこの辺を見てみるとか
※ これはうまく送信できている例
May 29 22:51:27 server001 sSMTP[32057]: Creating SSL connection to host
May 29 22:51:28 server001 sSMTP[32057]: SSL connection using ECDHE-RSA-AES128-GCM-SHA256
May 29 22:51:31 server001 sSMTP[32057]: Sent mail for ■ ■ ■ ■ ■@gmail.com (221 2.0.0 closing connection l297sm12446578pgd.35 - gsmtp) uid=0 username=root outbytes=555
以上
許可なくパスワードとか知ってるベンダーがログインしたとか、すぐ気が付くし
受信したメールは消すのが困難なので、サーバログを改ざんされても記録残せるとか
設定追加するだけで特に開発なく仕込めるのが良いかな♪