如果用户通过 ssh 访问服务器,则发送电子邮件

如果用户通过 ssh 访问服务器,则发送电子邮件

如果有人通过 ssh 访问我的 Debian 服务器,我希望收到通知。

所以我想每当用户通过 ssh 登录我的服务器时发送一封电子邮件,所以我在末尾添加了这一行/etc/profile

/usr/local/bin/shell-login.sh | mailx -s "SSH Login User $(whoami) on YOUR-HOSTNAME" [email protected]

/usr/local/bin/shell-login.sh包含:

#!/bin/bash

echo "Login on $(hostname) at $(date +%Y-%m-%d +%H:%M)"
echo "User: "$(whoami)
echo
id
echo
finger

这效果太好了:我现在每分钟都会收到一封电子邮件,告诉我root正在登录,这似乎是由cron(请参阅/var/log/auth.log)引起的

我该如何更改此设置才能在自动内部 ssh 调用上不发送电子邮件?

答案1

对我来说这个问题仍然不清楚,所以我尝试回答第一段中包含的问题。如何记录 SSH 登录?

我还将把我的答案限制在所有支持 PAM 的 *nix 系统上。这是一个相关的观点,因为您不会通过提供特定操作系统来限制您的问题范围。


好的,这是我过去使用的:sshrc。如果您添加一个名为该文件/etc/ssh(位置可能有所不同!),它将由交互的(即使用 shell)SSH 连接。

这里的缺点是您不会了解相关的信息,例如 SFTP(sftp-internal子系统)连接。

然而,我们这里有一条内线。

我们可以利用 PAM 来pam_exec.so发挥我们的优势,并通过添加以下内容来限制其对 SSH 的影响/etc/pam.d/sshd(对我来说,这是最后一个非注释行):

session    optional     pam_exec.so stdout /etc/your_email_script.sh

这将确保脚本以特权用户身份运行(如果您更喜欢调用 sendmail 二进制文件来发送邮件,则相关),并且用户几乎无法执行任何操作来避免运行此脚本。您可以有效地将对该脚本的访问限制为仅root.

如果需要的话,与你相关的部分optional应该进行调整。相关阅读:man pam_exec, man pam.conf, man pam.d.

您可能还想考虑一下要多久执行脚本。


你所看到的错过的是。您还有很多其他方法可以锁定服务器。对于初学者:不允许密码。坚持仅使用密钥进行身份验证。确保仅具有 SFTP 访问权限的人员没有其他访问权限:

Match group sftponly
        ChrootDirectory /home
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp
        PasswordAuthentication no

将允许组成员sftponly仅使用 SFTP,不使用端口转发等,并将范围限制为/home(文件/文件夹权限执行其余操作)。

AllowGroups ssh-users

将要仅有的甚至允许组成员ssh-users通过 SSH 登录。也就是说,您可以将 SSH 登录限制为部分用户群。

PermitRootLogin no

应该设置相关用户并改为 sudoers。

PasswordAuthentication no
PubkeyAuthentication yes

应确保您具有有限控制权的密码无法用于登录。

AuthorizedKeysFile     /some/protected/folder/.ssh/authorized_keys

可以确保不允许用户管理他们的authorized_keys文件,但要求您代表他们执行此操作。

答案2

尝试这个:

#!/bin/bash

if [ ! $(whoami) == root ] ; then
echo "Login on $(hostname) at $(date +%Y-%m-%d +%H:%M)"
echo "User: "$(whoami)
echo
id
echo
finger
fi

答案3

您可以通过(仔细)编辑模块/etc/pam.d/sshd并将其添加pam_exec到堆栈中来完成此操作。当某人成功启动 ssh 会话时,此模块可用于调用外部程序(例如您的脚本)。

如果您需要“如何”说明,请告诉我,我将更新我的答案以将它们包含在基于 Debian 的系统中。 (其他发行版的 PAM 堆栈略有不同,因此您必须解释我的说明,而不是盲目遵循它们。)

相关内容