====== サーバーにユーザーがログインしたらメールでアラートを送る ======
セキュリティ向上のためキーボードまたは SSH でログインした時にメールでアラートを送るようにシェルスクリプトを設定する。
sendmail コマンドが動くことが前提。
==== インストール環境 ====
* Ubuntu 18.04.3 LTS 64bit
* お名前.com VPS (KVM) 1GB プラン
===== インストール =====
==== SSH ログイン ====
メールを送信するスクリプトファイルを用意する。RECIPIENT と SENDER 変数を適当なメールアドレスに置き換える。
ログインしたユーザー名と時間と環境変数をとりあえずメールする。
#!/bin/sh
RECIPIENT="foobar@hogepiyo.com"
SENDER="root@hogepiyo.com"
TIME_ZONE="Asia/Tokyo"
REVERSED_ADDR="N/A"
if [ "$PAM_TYPE" != "close_session" ]; then
if [ "$PAM_RHOST" != "" ]; then
REVERSED_ADDR=`dig -x $PAM_RHOST +short`
fi
MESSAGE="To: $RECIPIENT
Subject: '$PAM_USER' has logged in '`hostname`'
From: $SENDER
'$PAM_USER' has logged in successfully from '$PAM_RHOST' ($REVERSED_ADDR) on `hostname`.
Login Time: `TZ=$TIME_ZONE date +\"%Y-%m-%d %T %Z %:::z\"`
`env`
"
echo "$MESSAGE" | sendmail -t
fi
実行権限を与えるためパーミッションを変更。
$ chmod 755 ./notify-login.sh
/etc/pam.d/sshd の設定を変更して、作成したスクリプトを SSH でユーザーがログインした時に実行する。以下の行を追加する。
% sudo vi /etc/pam.d/sshd
session optional pam_exec.so seteuid /path/to/notify-login.sh
optional を required に置き換えると、スクリプトの実行が失敗すると SSH ログインを拒否する。
sshd_config で UsePAM を yes にしておかないと動かない。
==== キーボード等のデバイス ====
キーボード等でのログインでもメール通知を行うようにする。/etc/pam.d/login に同じ行を追加する。
$ sudo vi /etc/pam.d/login
session optional pam_exec.so seteuid /path/to/notify-login.sh
===== 参考 =====
[[https://askubuntu.com/questions/179889/how-do-i-set-up-an-email-alert-when-a-ssh-login-is-successful|How do I set up an email alert when a ssh login is successful?]]