如何在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登录尝试以维护系统安全的重要性。
黑客不断地尝试通过使用自动化脚本暴力破解密码来入侵服务器。如果不采取必要的预防措施(例如密切监控这些事件),服务器管理员可能会面临重大的安全威胁,这些威胁可能会损害其业务运营。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP