如何在 Linux 中查找所有失败的 SSH 登录尝试?

linuxoperating systemopen source

简介

作为 Linux 系统管理员,您最重要的任务之一就是确保系统安全。其中一种方法是监控失败的 SSH 登录尝试。每次用户尝试通过 SSH 登录,无论成功与否,都会记录在系统日志中。

通过分析这些日志,您可以识别任何未经授权的访问尝试并采取措施阻止它们。失败的登录尝试可能预示着多种安全问题,例如黑客试图猜测密码的暴力攻击或用户帐户被盗用。

监控失败的 SSH 登录尝试是任何 Linux 系统整体安全策略中不可或缺的要素。它可以帮助您洞察潜在威胁,并采取主动措施保护您的系统免受未经授权的访问。

SSH 登录尝试说明

安全 Shell (SSH) 是一种广泛使用的协议,用于通过不安全的网络安全地访问远程系统。使用 SSH 登录远程计算机时,通常使用用户名和密码组合或公钥身份验证方法进行身份验证。

每次用户尝试通过 SSH 登录时,都会在日志文件中生成条目,记录所有相关活动,例如成功或失败的登录尝试。成功的 SSH 登录尝试会记录有效的用户凭据并授予对远程计算机的访问权限。

系统日志文件:了解 SSH 登录尝试的窗口

系统日志文件是监控和分析 Linux 系统活动(包括 SSH 登录尝试)的重要工具。系统日志文件的位置取决于您使用的 Linux 发行版,但通常位于 /var/log 目录中。常用的日志文件包括 auth.log、secure.log 和 messages.log。

找到适合您发行版的日志文件后,您可以使用 grep 命令从文件中的其余数据中筛选出 SSH 登录尝试记录。例如,如果您使用的是 Ubuntu 或其他基于 Debian 的发行版,则可以使用 -

grep sshd /var/log/auth.log

这将显示 auth.log 中包含"sshd"的所有行,sshd 是大多数 Linux 系统上处理 SSH 连接的守护进程的名称。

您可以通过添加"失败"作为附加过滤器来进一步优化此搜索以仅显示失败的登录尝试 -

grep sshd /var/log/auth.log | grep "Failed password"

这将仅显示同时包含"sshd"和"Failed password"的行。

使用 grep 进行过滤

grep 命令是一个强大的工具,可以根据模式和正则表达式过滤文本数据。在本例中,我们使用它从一个大型系统日志文件中过滤出包含与 SSH 登录尝试相关的特定关键字的行。但是,您还可以通过许多其他方式使用 grep 来操作文本数据。

例如,假设您想在大型文档或代码库中搜索特定函数调用的实例。您可以简单地运行 -

grep functionName filename.txt

这将显示 filename.txt 中包含"functionName"的所有行。

使用 Fail2ban 监控和阻止失败的 SSH 登录尝试

Fail2ban 及其功能简介

Fail2ban 是一款免费的开源软件,可用于监控 Linux 系统上的登录尝试。它旨在通过自动在防火墙中添加和删除 IP 地址来检测和阻止暴力破解攻击。

该软件的工作原理是分析各种日志文件中的失败登录尝试,然后根据预先配置的规则采取措施。Fail2ban 提供多种功能,使其成为监控和阻止失败 SSH 登录尝试的有效工具。

在 Linux 系统上安装和配置 Fail2ban

在 Linux 系统上安装 fail2ban 相对简单,大多数发行版中都提供了大多数软件包管理器(例如 apt 或 yum)。安装完成后,需要自定义配置文件以监控与 SSH 登录尝试相关的日志文件。默认配置文件位于 `/etc/fail2ban/jail.conf`。

配置 Fail2ban 监控 SSH 登录尝试并阻止失败次数过多的 IP 地址

安装后,请配置 fail2ban 设置,并为 sshd 服务监控设置特定的过滤器/规则,如下所示 -

[sshd]
enabled = true
port = ssh filter = sshd
logpath = /var/log/auth.log maxretry = 5
bantime = 300

其中 `maxretry` 表示阻止 IP 地址前允许的最大登录尝试失败次数,`bantime` 表示阻止 IP 地址的时长。

Fail2ban 会通过系统上的 iptables 或 firewalld 将 IP 地址添加到防火墙规则中,从而自动阻止 IP 地址。您还可以通过在配置文件中添加自定义操作来自定义 fail2ban 的工作方式。

监控并警报 SSH 登录尝试

编写脚本定期检查失败的 SSH 登录尝试

虽然手动检查系统日志文件中是否存在失败的 SSH 登录尝试可能很有效,但如果不经常检查,也会很耗时且不可靠。相反,可以考虑编写一个脚本,定期检查系统日志文件,并在任何新的登录失败尝试时发出警报。

操作方法如下:-

  • 选择脚本语言 - Bash、Python 或 Perl 是 Linux 系统的常用语言。

  • 使用您选择的语言编写一个脚本,打开系统日志文件并仅过滤掉包含失败的 SSH 登录尝试的行。

  • 然后,脚本会将这些过滤后的行与之前的条目进行比较,以确保没有标记重复项。

  • 如果发现任何新的登录失败尝试,脚本会立即通过电子邮件或其他方式通知您。使用此自定义脚本,您将始终掌握有关 Linux 服务器潜在安全威胁的最新信息。

设置新的 SSH 登录尝试失败通知的电子邮件提醒

编写自定义脚本来监控系统日志文件中新的 SSH 登录尝试失败后,您需要设置电子邮件提醒,以便在尝试登录时尽快收到通知。操作方法如下:-

  • 确定您要使用的电子邮件客户端或服务(例如 Gmail)。

  • 通过设置 SMTP 凭据,将您的 Linux 服务器配置为使用此客户端或服务发送电子邮件。

  • 修改现有的自定义脚本(或编写一个新脚本),在检测到新的 SSH 登录尝试失败时发送电子邮件通知。

  • 启用 SSL/TLS 加密,确保电子邮件安全发送。按照以下步骤操作,当您的 Linux 服务器上检测到潜在安全威胁时,您将立即收到警报。

使用 Cron 自动执行自定义脚本

手动运行自定义脚本虽然很有效,但使用 cron 作业自动执行会更加有效。以下是如何自动执行自定义脚本以监控 SSH 登录尝试的方法 -

  • 确定脚本的运行频率(例如,每 5 分钟一次)。

  • 使用 Linux 中的 cron 命令设置一个新作业,以您所需的频率运行自定义脚本。

  • 测试 cron 作业以确保其正常运行。

通过自动执行自定义脚本,您无需担心再次运行它——它将按照您指定的频率自动运行。

结论

在本文中,我们讨论了几种查找失败的 SSH 登录尝试的方法,包括检查系统日志文件、使用 fail2ban 自动阻止失败次数过多的 IP 地址,以及实施自定义脚本进行监控和警报。我们还强调了定期监控失败的 SSH 登录尝试对于维护系统安全的重要性。

黑客不断尝试通过自动化脚本暴力破解密码来入侵服务器。如果不采取必要的预防措施(例如密切监控这些事件),服务器管理员将面临可能对其业务运营造成严重损害的重大安全威胁。


相关文章


有用资源