5
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【ssmtp】CentOSでログイン通知【rsyslog】

Last updated at Posted at 2017-05-29

CentOS にログインしたらGメールで通知を受け取れるように設定します
  gmail が使えない場合は 【ommail】CentOSでログイン通知【rsyslog】 を参照

もし、意図しないタイミングでメールが来たら。。ヤバイ状況です
が、メール通知を仕掛けておかないと気が付きもしないかも

ちょっと設定ファイルを書いて、数行の簡単なシェルを組むだけ
手間をかけずにログインメール通知を仕掛けてみます

ここに書いた手順は centos ですが、他Linuxでも似たようにできると思います
(未確認)

#送信専用メール ssmtp 設定

sendmail とか postfix とかメールサーバ立ち上げるのはめんどくさいのとセキュリティ上の穴になる可能性があるので、簡易なメール送信専用サーバ? ssmtp を設定しときます

ssmtp インストール

インストールは yum で簡単に

yum install  ssmtp

ssmtp 設定(gmail利用設定)

gmail のログイン設定を入れておきます

/etc/ssmtp/ssmtp.conf
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 設定

/etc/rsyslog.d/login2mail.conf
$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 からメールを送るシェル

文字列が見つかった時に呼び出されるシェルはこんな感じ

/etc/rsyslog.d/login2mail.sh
#!/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にはこんなログが

/var/log/messages
・・・
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)

うまく届かない場合はメールアドレスが間違っていないかとか、
サーバの指定とか、パスワードとか
もう一度確認を
でも、ダメな場合はこの辺を見てみるとか
※ これはうまく送信できている例

/var/log/maillog
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

以上
許可なくパスワードとか知ってるベンダーがログインしたとか、すぐ気が付くし
受信したメールは消すのが困難なので、サーバログを改ざんされても記録残せるとか
設定追加するだけで特に開発なく仕込めるのが良いかな♪

5
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?