如何获取 Root 和用户 SSH 登录邮件警报?
简介
安全外壳 (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:[email protected];mailSubject;mailBody
确保将“[email protected]”替换为您实际的电子邮件地址。
保存更改并使用以下命令重新启动 rsyslog -
sudo service rsyslog restart
完成这些步骤后,您现在应该会在系统上进行 Root 登录尝试时收到邮件警报。要进一步过滤和自定义这些警报,请参阅 Logwatch 或 Rsyslog 的文档。
设置用户登录邮件警报
创建自定义脚本
要设置用户登录邮件警报,您需要创建一个自定义脚本,该脚本将监视系统日志并在用户登录时发送邮件警报。一种方法是使用 Bash 脚本语言。这是一个简单的 Bash 脚本示例,它将检查成功的登录并发送邮件警报 -
#!/bin/bash LOGFILE="/var/log/auth.log" EMAIL="[email protected]" 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="[email protected]" 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 工具或第三方软件来完成。通过遵循本文中概述的步骤,您可以轻松配置您的系统,以便在服务器上尝试登录时发送电子邮件通知。
实施后,这些电子邮件警报提供了一层额外的安全措施,以保护您的服务器免受未经授权的访问尝试。通过保持警惕并密切监视这些日志,您可以快速识别任何可疑活动,并在发生任何实际损害之前采取适当的措施。