SSHD:日志文件中“连接已关闭……”和“断开连接……”之间的区别

SSHD:日志文件中“连接已关闭……”和“断开连接……”之间的区别

我的 Ubuntu 服务器上的 sshd 服务不断受到来自各种 IP 和用户 id 的攻击。

根据/var/log/auth.log文件,未知 ID 和 IP 地址导致的失败有三种不同类型:

  • Disconnected from invalid user...
  • Connection closed by invalid user...
  • Connection closed by xxx.xxx.xxx.xxx

这三者之间有什么区别? 这些是否都表明登录成功(未经授权)? 特别是最后一个...

我是假设所有这些都是失败的尝试,因为我已将 SSH 服务器配置为需要来自非 LAN IP 的公钥,并且限制登录到只有一个非 root 用户 ID。

但事实上,我不知道如何验证这些安全预防措施是否设置正确,我的公钥是否被泄露,或者我的服务器密码认证机制是否被泄露。所以我不能肯定地说这些都是失败的尝试。

我尝试使用fail2ban来阻止来自特定 IP 的重复攻击,但这次失败了。首先,不到 24 小时,攻击者就开始轮流使用数百个唯一 IP 地址。其次(更令人担忧的是)fail2ban似乎没有承认导致的重复尝试Connection closed by xxx.xxx.xxx.xxx

答案1

消息:

Disconnected from invalid user
Connection closed by invalid user

两者都表示使用服务器上不存在的用户名登录失败。区别只是连接断开方式的一个微不足道的细节。

使用现有用户名的失败尝试将被记录为:

Connection closed by authenticating user 

成功登录将被记录为:

Accepted publickey for

信息:

Connection closed by <ipaddress>

(未提及任何用户)表示连接到您的服务器的 ssh 端口时未尝试进行身份验证,即实际登录。这些扫描通常用于收集开放的 ssh 端口和他们使用的 ssh 服务器版本,以便查找具有已知漏洞的服务器。由于重复此类尝试不会增加风险,因此fail2ban阻止它们没有多大意义。

答案2

与@tilman-schmidt 达成协议,我这边只有几点意见(关于 fail2ban 等)...

OpenSSH 人员不断改变日志记录行为,因此 fail2ban 默认不会考虑它(它还取决于断开连接发生的位置,例如在预认证阶段或提供用户名之后,以及您的 sshd 中允许哪些认证方法以及“入侵者”行为)。

我至少会在 sshd_config 中设置 LogLevel VERBOSE,如下所述/etc/fail2ban/filter.d/sshd.conf

另请注意类似问题的答案 -https://unix.stackexchange.com/questions/662946/fail2ban-regex-help-for-banning-sshd-connection-attempts/663002#663002

不到 24 小时,攻击者就开始轮换数百个不同的 IP 地址

这与 fail2ban 的使用无关 - 扫描器在找到 sshd 侦听器后,会将其“发布”到其中的某个列表中,以便可以开始更深入的扫描(例如使用分布式僵尸网络)。这是任何向外部开放端口的服务器的悲惨命运。

您可以尝试将 ssh 端口更改为其他端口,但这只能避免一半的脚本小子(如果您禁止端口扫描尝试),基本上不是万能药。但您可以至少在短时间内(最多几个月)大幅减少入侵者的数量。在bantime.incrementfal2ban 中启用(用于 sshd jail 或默认情况下)肯定有帮助。

fail2ban 似乎无法确认导致连接被关闭的重复尝试

这不太正确。您必须设置mode = aggressivejailsshdjail.local允许 fail2ban 考虑任何类型的“攻击”(不仅仅是身份验证问题),端口扫描器和类似 DoS 的东西也会发生此类攻击。

您可以使用以下命令查看 fail2ban 使用当前过滤器究竟找到了什么(请注意matched结果的最后一行):

fail2ban-regex /var/log/auth.log 'sshd[mode=aggressive]'

答案3

我将此行添加到 \etc\fail2ban\filter.d\sshd.conf

^Connection closed by <HOST>%(__on_port_opt)s%(__suff)s

你可以用这个来测试它:

fail2ban-regex 'Oct 30 15:10:58 ubuntu sshd[12211]: Connection closed by 0.0.0.0 port 33650 [preauth]' /etc/fail2ban/filter.d/sshd.conf

相关内容