使用 pam_exec 的 SSH 登录警报

use*_*200 5 ssh email

嗨,我一直试图从这里关注有关 pam_exec 的信息: Ssh login hook?

当用户登录时,他们会得到:

/etc/pam.d/email-alert.sh failed: exit code 8
Run Code Online (Sandbox Code Playgroud)

我的 sshd 文件最后有这个:

session optional pam_exec.so debug seteuid /etc/pam.d/email-alert.sh
Run Code Online (Sandbox Code Playgroud)

我的 email-alert.sh 脚本有这个,

echo 'ALERT - Remote SSH Shell Access (SERVERNAME) on:' `date` `who` | 
mail -s "Alert: Remote SSH Access from `who | 
cut -d'(' -f2 | cut -d')' -f1`" MYEMAIL@MYEMAIL.com
Run Code Online (Sandbox Code Playgroud)

我自己测试了脚本,它给我发电子邮件没有问题。

如果有人能指出我正确的方向,我将不胜感激,因为我一直在绞尽脑汁想弄清楚。

bah*_*mat 3

首先,shell 脚本将返回最后一个命令的退出状态。您正在使用的命令之一是以 status 退出8。其次,pam_exec不会有和你一样的环境。因此,手动运行时的行为不一定与作为 pam 堆栈的一部分运行时的行为方式(您正在经历的情况)。

pam_exec有几个内置的环境变量可以帮助您。我会像这样重写脚本:

#!/bin/bash

PATH=/bin:/usr/bin
SUBJ="Alert - Remote SSH access from ${PAM_USER}"

mail -s $SUBJ << __MESSAGE__
ALERT - Remote SSH Shell Access (${HOSTNAME}) on $(date)

User ${PAM_USER} logged in from ${PAM_RHOST}

$(who)
__MESSAGE__
Run Code Online (Sandbox Code Playgroud)