[Linux] SSH Login Hook 自動發信通知

Intro

可以利用/etc/pam.d/下檔案的 hook 效果去觸發執行外部 Shell script file,而 Shell 中去抓取登入者資訊並寄送 email,以達到 SSH Login 自動發信通知


作法

  1. 先撰寫建立好 Shell script file 作為發送信件程式:

    $ vim /etc/ssh/login-notify.sh
    #!/bin/sh
    
    # Change these two lines:
    sender="sender-address@example.com"
    recepient="notify-address@example.org"
    
    if [ "$PAM_TYPE" != "close_session" ]; then
        host="`hostname`"
        subject="SSH Login: $PAM_USER from $PAM_RHOST on $host"
        # Message to send, e.g. the current environment variables.
        message="`env`"
        echo "$message" | mailx -r "$sender" -s "$subject" "$recepient"
    fi
  2. 將 Shell 檔案設定為可執行以及設定 owner:

    $ chmod +x login-notify.sh
    $ sudo chown root:root login-notify.sh
  3. /etc/pam.d/sshd 檔案中加入 hook 以執行 Shell 檔案:

    session optional pam_exec.so seteuid /etc/ssh/login-notify.sh

sshd 檔案中的 optional 指令參數為非 require 條件以防止執行錯誤無法登入


References

Leave a Reply

Your email address will not be published. Required fields are marked *