如何在 Linux 中查找所有失败的 SSH 登录尝试?如何在 Linux 中查找所有失败的 SSH 登录尝试?如何在 Linux 中查找所有失败的 SSH 登录尝试?如何在 Linux 中查找所有失败的 SSH 登录尝试?
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

介绍

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

通过分析这些日志,您可以识别任何未经授权的访问尝试并采取措施阻止它们。登录尝试失败可能表明存在多种安全问题,例如黑客试图猜测密码或用户帐户遭到破坏而进行的暴力攻击。

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

SSH 登录尝试的说明

Secure 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”和“密码失败”的行。

使用 grep 进行过滤

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

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

grep functionName filename.txt

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

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

Fail2ban简介及其特点

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

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

Linux 系统上 Fail2ban 的安装和配置

在 Linux 系统上安装 failure2ban 相对简单,许多发行版中都提供了大多数软件包管理器(例如 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 登录尝试以维护系统安全的重要性。

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

©2015-2025 艾丽卡 support@alaica.com