每当我们在生产环境中安装、配置和保护Linux服务器时,跟踪服务器上发生的情况以及登录者至关重要,尤其是在服务器安全方面。
为什么?因为如果有人通过SSH使用暴力手段以root用户身份登录服务器,那么请考虑他们将如何破坏您的服务器。
任何获得 root 访问权限的用户都可以做任何他们想做的事情。因此,允许通过 SSH 会话直接 root 登录并不是一个好的做法, 建议创建具有 sudo 访问权限的非 root 帐户。每当需要 root 访问权限时,首先以普通用户身份登录,然后使用“ su ”切换到 root 用户。
要禁用直接SSH root 登录,请按照本文进行操作,其中介绍了如何在SSH中禁用和限制root登录。
但是,本文演示了一种在有人以 root 或普通用户身份登录时接收电子邮件警报通知的简单方法。它应该向指定的电子邮件地址发送电子邮件警报通知以及上次登录的 IP 地址。
因此,一旦识别出未知用户上次登录的 IP 地址,就可以使用防火墙规则阻止来自该特定 IP 地址的 SSH 登录,如下所示。
使用iptables:
usudo iptables -A INPUT -s <IP_Address> -p tcp --dport ssh -j DROP
使用防火墙:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<IP_Address>" port protocol="tcp" port="22" reject'
sudofirewall-cmd--reload
使用 UFW(简单防火墙):
sudo ufw deny from <IP_Address> to any port 22
sudo ufw reload
如何在 Linux 服务器中设置 SSH 登录电子邮件警报
要执行本教程,必须具有服务器上的root级别访问权限,并且对nano或vi 文本编辑器以及服务器上安装的用于发送电子邮件的mailx(邮件客户端)有一定的了解。
根据你的Linux发行版,可以使用以下命令之一安装mailx客户端。
sudo apt install mailutils [在Debian、Ubuntu 和 Mint上]
sudo yum install mailx [在RHEL/CentOS/Fedora和Rocky/AlmaLinux上]
sudo emerge -a sys-apps/mailx [在Gentoo Linux上]
sudo apk add mailx [在Alpine Linux上]
sudo pacman -S mailx [在Arch Linux上]
sudo zypper install mailx [在OpenSUSE上]
sudo pkg install mailx [在 FreeBSD 上]
设置 SSH Root 登录电子邮件警报
现在以root用户身份登录,并通过键入cd /root命令转到 root 的主目录。
cd /root
接下来,向.bashrc
文件添加一个条目,这将为用户设置本地环境变量并执行一些登录任务。例如,这里我们设置电子邮件登录提醒。
使用vi或nano编辑器打开.bashrc
文件。请记住.bashrc是一个隐藏文件;使用ls -l命令将看不到它。您必须使用该-a
标志才能查看 Linux 中的隐藏文件。
vi .bashrc
或是
nano .bashrc
在文件底部添加以下行。确保将“ ServerName ”替换为您的服务器的主机名,并将“ your@yourmaildomain.com ”更改为您的电子邮件地址。
echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" your@yourdomain.com
保存并关闭文件,注销,然后重新登录。
一旦通过 SSH 登录,.bashrc
默认情况下会执行一个文件,并向你发送一封有关 root 登录的电子邮件警报,如下所示。
示例电子邮件警报:
ALERT - Root Shell Access (Database Replica) on: Thu Nov 28 16:59:40 IST 2023 tecmint pts/0 2023-11-28 16:59 (172.16.25.125)
设置 SSH 普通用户登录电子邮件警报
以普通用户 (tecmint ) 身份登录,然后输入cd /home/tecmint/命令转到用户的主目录。
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`" your@yourmaildomain.com
保存并关闭文件,注销,然后再次登录。再次登录后,将执行.bashrc文件并向您发送用户登录警报的电子邮件地址。
通过这种方式,您可以为任何用户设置电子邮件警报以接收登录警报。只需打开.bashrc
应位于用户主目录下的用户文件(即/home/username/.bashrc)并按上述方式设置登录警报。