如何获取根用户和用户 SSH 登录电子邮件警报
每当我们在生产环境中安装、配置和保护 Linux 服务器时,跟踪服务器发生的情况以及谁登录到服务器对于关注服务器的安全至关重要。
为什么,因为如果有人通过 SSH 使用暴力策略以 root 用户身份登录服务器,那么请考虑一下他将如何破坏您的服务器。任何获得 root 访问权限的用户都可以做任何他想做的事情。要阻止此类 SSH 攻击,请阅读我们的以下文章,其中介绍了如何保护服务器免受此类攻击。
- 使用 DenyHosts 阻止 SSH 服务器暴力攻击
- 使用 Pam_Tally2 锁定和解锁 SSH 失败登录
- 保护 SSH 服务器安全的 5 个最佳实践
因此,允许通过 SSH 会话直接root 登录并不是一个好的做法,并建议使用 sudo创建非 root 帐户强>访问。每当需要root访问权限时,首先以普通用户身份登录,然后使用su切换到root用户。要禁用直接 SSH root 登录,请按照我们下面的文章进行操作,该文章介绍了如何在 SSH 中禁用和限制 root 登录。
- 禁用 SSH Root 登录并限制 SSH 访问
不过,本指南展示了一种简单的方法来了解某人何时以 root 或普通用户身份登录,它应该向指定的电子邮件地址发送电子邮件警报通知以及IP 地址上次登录的时间。因此,一旦您知道未知用户上次登录的 IP 地址,您就可以在 iptables 防火墙上阻止特定 IP 地址的 SSH 登录。
- 如何在 Iptables 防火墙中阻止端口
如何在 Linux 服务器中设置 SSH 登录电子邮件警报
要执行本教程,您必须在服务器上具有root级别访问权限,并且对nano或vi编辑器以及有一点了解mailx(邮件客户端)安装在服务器上用于发送电子邮件。根据您的发行版,您可以使用以下命令之一安装 mailx 客户端。
在 Debian/Ubuntu/Linux Mint 上
apt-get install mailx
在 RHEL/CentOS/Fedora 上
yum install mailx
设置 SSH Root 登录电子邮件警报
现在以 root 用户身份登录,然后输入 cd /root 命令进入 root 的主目录。
cd /root
接下来,向 .bashrc 文件添加一个条目。该文件为用户设置本地环境变量并执行一些登录任务。例如,这里我们设置电子邮件登录警报。
使用vi或nano编辑器打开.bashrc文件。请记住.bashrc是一个隐藏文件,通过执行ls -l命令你不会看到它。您必须使用 -a 标志来查看 Linux 中的隐藏文件。
vi .bashrc
在文件底部添加以下整行。请务必将“ServerName”替换为您服务器的主机名,并将“[email ”更改为您的电子邮件地址。
echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" [email
保存并关闭文件,然后注销并重新登录。通过 SSH 登录后,默认情况下会执行 .bashrc 文件,并向您发送 root 登录警报的电子邮件地址。
电子邮件警报示例
ALERT - Root Shell Access (Database Replica) on: Thu Nov 28 16:59:40 IST 2013 tecmint pts/0 2013-11-28 16:59 (172.16.25.125)
设置 SSH 普通用户登录电子邮件警报
以普通用户 (howtoing) 身份登录,然后输入 cd /home/howtoing/ 命令转到用户的主目录。
cd /home/tecmint
接下来,打开 .bashrc 文件并在文件末尾添加以下行。确保替换如上所示的值。
echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" [email
保存并关闭文件并注销并再次登录。一旦您重新登录,.bashrc 文件就会执行并向您发送用户登录警报的电子邮件地址。
通过这种方式,您可以为任何用户设置电子邮件警报以接收登录警报。只需打开用户的 .bashrc 文件,该文件应位于用户的主目录下(即 /home/username/.bashrc),并按上述方式设置登录警报。