====== サーバーにユーザーがログインしたらメールでアラートを送る ====== セキュリティ向上のためキーボードまたは 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?]]