ユーザ用ツール

サイト用ツール


ubuntu-server-18-04:email-alert-on-login

サーバーにユーザーがログインしたらメールでアラートを送る

セキュリティ向上のためキーボードまたは 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

参考

ubuntu-server-18-04/email-alert-on-login.txt · 最終更新: 2019/11/22 21:03 by admin