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


引言

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

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

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

SSH登录尝试的解释

安全外壳 (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连接的守护程序的名称。

您可以进一步细化此搜索以仅显示失败的登录尝试,方法是添加“Failed”作为附加过滤器:

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地址

安装后,使用针对sshd服务监控的特定过滤器/规则配置fail2ban设置,如下所示:

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

这里`maxretry`是允许的最大失败登录尝试次数,在达到此次数后将阻止IP地址;`bantime`指定阻止IP地址的时间长度。

Fail2ban通过将IP地址添加到系统上的iptables或firewalld防火墙规则来自动阻止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登录尝试以维护系统安全的重要性。

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

更新于:2023年6月9日

浏览量:1000+

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.