如何获取 Root 和用户 SSH 登录邮件提醒?

linuxoperating systemopen source

简介

安全 Shell (SSH) 是一种广泛使用的协议,用于通过不安全的网络安全地连接到远程系统。它为两个系统之间的通信提供了安全的通道,允许用户在远程计算机上执行命令和管理文件,而不会面临窃听、篡改或身份盗用的风险。

然而,尽管 SSH 拥有强大的安全特性,但它仍然容易受到网络犯罪分子的攻击,这些犯罪分子会利用弱密码、未修补的软件漏洞或错误配置的权限。因此,采取主动措施来保护您的 SSH 访问至关重要。

设置 Root 登录邮件提醒

探索必要的软件

在设置 Root 登录邮件提醒之前,必须安装并配置相应的软件。两个常用的选项是 Logwatch 和 Rsyslog。Logwatch 是一款 Linux 日志分析工具,可以扫描系统日志并通过电子邮件发送每日摘要,包括有关 root 登录的信息。

Rsyslog 是一款功能更强大的日志系统,可以过滤和转发日志消息。要在 Ubuntu 或基于 Debian 的系统上安装 Logwatch,请打开终端并输入以下命令:

sudo apt-get update sudo apt-get install logwatch

对于 Rsyslog,请使用以下命令:

sudo apt-get update
sudo apt-get install rsyslog

安装完成后,您需要配置这些工具,以便在 root 登录尝试时发送电子邮件警报。

配置 Root 登录的电子邮件警报

使用 Logwatch 设置 Root 登录尝试的电子邮件警报 -

  • 使用您喜欢的文本编辑器打开配置文件 /etc/cron.daily/00logwatch。

  • 找到"Output = stdout"行并将其更改为"Output = mail"。

  • 找到"Mailto ="行并在等号后添加您的电子邮件地址。

  • 保存对文件的更改。

完成此配置后,您现在应该会收到包含系统上所有 Root 登录尝试摘要的每日电子邮件。

对于 Rsyslog 用户,请按照以下步骤操作 -

  • 在 /etc/rsyslog.d/ 中创建一个名为 50-root.conf 的新文件(或您选择的其他名称)。

  • 将此行添加到文件 -

authpriv.* /var/log/rootlogin.log

这将在 /var/log/ 中创建一个新的日志文件,专门用于跟踪 root 登录尝试。

  • 要通过电子邮件转发这些消息,请在文件末尾添加以下行 -

$ModLoad ommail 
$template mailSubject,"[ROOT LOGIN] %msg%" 
$template mailBody,"%msg%" 
authpriv.* :ommail:your@email.com;mailSubject;mailBody 

请务必将"your@email.com"替换为您的实际电子邮件地址。

  • 保存更改并使用以下命令重新启动 rsyslog -

sudo service rsyslog restart

完成这些步骤后,每当您的系统尝试进行 root 登录时,您都应该会收到电子邮件警报。要进一步过滤和自定义这些警报,请参阅 Logwatch 或 Rsyslog 的文档。

设置用户登录的电子邮件警报

创建自定义脚本

要设置用户登录的电子邮件警报,您需要创建一个自定义脚本,用于监控系统日志并在用户登录时发送电子邮件警报。一种方法是使用 Bash 脚本语言。下面是一个简单的 Bash 脚本示例,它将检查登录是否成功并发送电子邮件警报 -

#!/bin/bash 
LOGFILE="/var/log/auth.log" 
EMAIL="youremail@example.com" 
grep "Accepted" $LOGFILE | grep -v "sudo" | awk '{print $1,$2,$3,$9}' | 
while read DATE TIME HOST USER do 
echo "User $USER logged in at $TIME on $DATE from $HOST" | mail -s "SSH Login Alert for User: $USER" $EMAIL 
done 

此脚本会检查 /var/log/auth.log 文件中的成功登录尝试,但不包括通过 sudo 进行的登录尝试。

然后,它会将输出格式化为电子邮件消息,其中包含用户、日期、时间和主机信息。它会将该消息作为电子邮件发送到您指定的地址。

格式选项

您可以使用多种选项自定义电子邮件警报消息。例如,您可以添加其他信息,例如客户端计算机的 IP 地址或特定用户的登录失败次数。

您还可以修改主题行以包含更多详细信息,甚至可以使用条件语句根据特定条件更改格式。下面是另一个 Bash 脚本示例,该脚本使用条件语句根据登录尝试是否成功来设置电子邮件的不同格式 -

#!/bin/bash 
LOGFILE="/var/log/auth.log" 
EMAIL="youremail@example.com" grep "sshd.*session opened" "$LOGFILE" | awk '{print $1,$2,$3,$11}' | 
while read DATE TIME HOST USER do 
if [[ "$USER" != "root" ]] then 
echo "User $USER logged in as a non-root user at $TIME on $DATE from $HOST." | mail -s "SSH Login Alert for User: $USER (Non-Root)" "$EMAIL" 
else echo "Root user logged in at $TIME on $DATE from host: $HOST." | 
mail -s "SSH Login Alert for User: Root" "$EMAIL" fi 
done  

此脚本检查 auth.log 文件中是否存在成功的登录尝试,并根据用户是 root 用户还是非 root 用户,设置不同的输出格式。

它会将包含相应内容和主题的电子邮件发送到您指定的电子邮件地址。参考这些示例,您可以自定义脚本以满足您的特定需求和偏好。

高级主题

设置多个电子邮件地址

为了进一步提高安全性并确保所有警报都能被合适的人员看到,您可能需要考虑设置多个用于通知的电子邮件地址。例如,可以将 root 用户登录成功的警报发送给系统管理员,而将用户登录失败的警报发送给帮助台团队。

这不仅可以缩短响应时间,还有助于及早发现潜在威胁。实现此目的的一种方法是在警报软件中配置过滤器,将特定类型的警报转发到特定的电子邮件地址或群组。

这可以通过修改配置文件或使用软件提供的基于 GUI 的工具来实现。通过采取这一高级步骤,可以为您的系统创建额外的安全级别,确保在发生任何可疑活动时实时通知所有必要的相关方。

根据登录尝试的严重程度配置不同的警报级别

SSH 登录尝试的严重程度分为不同的级别。例如,一次登录尝试失败可能不会立即得到响应,而连续多次登录尝试失败可能表明存在暴力攻击,需要立即关注。

为了有效处理这些不同的情况,您需要根据登录尝试的严重程度配置不同的警报级别。为了完成此任务,您可以使用各种技术,例如配置不同的过滤器和脚本来监控日志文件并根据预定义的规则集触发相应的警报。

结论

SSH(安全外壳)是远程访问和管理服务器的重要工具。但是,如果使用不当,它也会带来巨大的安全风险。不安全的 SSH 访问可能允许攻击者未经授权访问您的系统,并严重破坏您的服务器环境。

为 root 和用户登录设置电子邮件警报是一个简单的过程,可以使用内置的 Linux 工具或第三方软件来完成。按照本文概述的步骤,您可以轻松地将系统配置为在服务器上发生登录尝试时发送电子邮件通知。

一旦实施,这些电子邮件警报将提供额外的安全保障,保护您的服务器免受未经授权的访问尝试。通过保持警惕并密切监控这些日志,您可以快速识别任何可疑活动并在发生任何实际损害之前采取适当的措施。


相关文章


有用资源