这是暴力 SSH 攻击的样子吗?

信息安全 验证 linux SSH 蛮力 ubuntu
2021-08-22 06:39:30

我查看了 Ubuntu 服务器上的 auth.log 文件,发现:

[预授权]
2 月 22 日 17:39:18 代码存储 sshd[17271]:与 147.135.192.203 端口 49408 [preauth] 断开连接
2 月 22 日 17:40:15 代码存储 sshd [17273]:来自 147.135.192.203 的用户 ellen 无效
2 月 22 日 17:40:15 代码存储 sshd [17273]:input_userauth_request:无效用户 ellen [preauth]
2 月 22 日 17:40:15 代码存储 sshd[17273]:从 147.135.192.203 端口 50193:11 收到断开连接:正常关机,感谢您玩 [preauth]
2 月 22 日 17:40:15 代码存储 sshd [17273]:与 147.135.192.203 端口 50193 [preauth] 断开连接
2 月 22 日 17:40:34 代码存储 sshd [17275]:连接由 103.237.147.107 端口 17583 [preauth] 关闭
2 月 22 日 17:41:12 代码存储 sshd [17277]:来自 147.135.192.203 的用户 emil 无效
2 月 22 日 17:41:12 代码存储 sshd [17277]:input_userauth_request:无效用户 emil [preauth]
2 月 22 日 17:41:12 代码存储 sshd[17277]:收到与 147.135.192.203 端口 50841:11 的断开连接:正常关机,感谢您玩 [preauth]
2 月 22 日 17:41:12 代码存储 sshd [17277]:与 147.135.192.203 端口 50841 [preauth] 断开连接
2 月 22 日 17:42:05 代码存储 sshd[17280]:来自 147.135.192.203 的用户 enzo 无效
2 月 22 日 17:42:05 代码存储 sshd [17280]:input_userauth_request:无效用户 enzo [preauth]
2 月 22 日 17:42:05 代码存储 sshd[17280]:收到与 147.135.192.203 端口 51356:11 的断开连接:正常关机,感谢您玩 [preauth]
2 月 22 日 17:42:05 代码存储 sshd[17280]:与 147.135.192.203 端口 51356 [preauth] 断开连接
2 月 22 日 17:42:14 代码存储 sshd [17282]:连接由 103.237.147.107 端口 64695 [preauth] 关闭
2 月 22 日 17:43:00 代码存储 sshd[17285]:来自 147.135.192.203 的用户 felix 无效
2 月 22 日 17:43:00 代码存储 sshd[17285]:input_userauth_request:无效用户 felix [preauth]
2 月 22 日 17:43:00 代码存储 sshd[17285]:收到与 147.135.192.203 端口 52145:11 的断开连接:正常关机,感谢您玩 [preauth]
2 月 22 日 17:43:00 代码存储 sshd[17285]:与 147.135.192.203 端口 52145 [preauth] 断开连接
2 月 22 日 17:43:52 代码存储 sshd [17287]:连接由 103.237.147.107 端口 55122 [preauth] 关闭
2 月 22 日 17:43:56 代码存储 sshd[17289]:来自 147.135.192.203 的无效用户 fred
2 月 22 日 17:43:56 代码存储 sshd[17289]:input_userauth_request:无效用户 fred [preauth]
2 月 22 日 17:43:56 代码存储 sshd[17289]:收到与 147.135.192.203 端口 52664:11 的断开连接:正常关机,感谢您玩 [preauth]

还有更多,但这是从我复制日志文件之前的最后几分钟开始的。

这是暴力 SSH 攻击吗?如果是,我应该担心,除了更改服务器 IP 之外,最好的缓解步骤和/或解决方案是什么?

3个回答

这是暴力攻击吗

这看起来就像互联网上的任何服务器都会经历的后台扫描。

我应该担心吗

并非如此,后台扫描是完全正常的,只要您的密码是安全的,后台扫描就不会有任何风险。

什么是最好的缓解措施

您可以使用以下方法使服务器更安全:

  • 不需要时禁用 SSH 服务。
  • 只允许使用密钥 auth 登录
  • 禁用 root ssh 访问
  • 使用像Fail2Ban这样的系统来阻止暴力尝试

我应该更改IP

更改 IP 可能不会对自动后台扫描产生太大影响

正如之前的评论已经指出的那样,更改 IP不会阻止您被恶意扫描程序扫描。

我将总结真正保护您的 SSH 服务的必要步骤:

  • 正如人们之前提到的:将端口更改为非标准(高端口)值,例如 13322 之类的值。这不是真正的安全优势,但它使任何机器人更难找到活动的 SSH 端口。
  • 仅使用安全密钥进行身份验证,如果可能,请使用密码完全停用键盘身份验证!
  • 使用fail2ban - 服务,它可用于任何类unix 系统/linux-derivate。此服务将在指定时间尝试 n 次失败的身份验证后自动禁止特定 IP。Ban是通过iptables规则实现的,所以iptables是必须的。

fail2ban 的替代方法是,您可以设置每小时cron作业来运行如下所示的简单脚本。根据需要调整前 4 个参数。它适用于pf.

如果您不使用 pf,则需要将pfctl ...线路替换为适用于您的防火墙的线路。

还设置了一个每日 cron 作业来刷新pf表:pfctl -t bruteforce -vT expire 86400

#!/bin/sh -f
#
# Check 'Invalid user' attempts on sshd in auth.log (LOGFILE).
# If there are more than (MAX_TRY) attempts within
# the last hour (EARLIEST), source ip is added to PF_TABLE table in pf
#
MAX_TRY=5
LOGFILE=/var/log/auth.log
# last 48 hour
EARLIEST=`date -v-48H +%s`
PF_TABLE=bruteforce

grep "Invalid user" $LOGFILE | while read d0 d1 d2 rest; do
    timestamp=`date -j -f "%b %d %H:%M:%S" "$d0 $d1 $d2" +%s`
    test $timestamp -lt $EARLIEST && continue
    echo $rest | cut -d ":" -f2- | cut -d " " -f6
done | sort | uniq -c | while read count ip; do
    test $count -lt $MAX_TRY && continue
    pfctl -v -t $PF_TABLE -T add $ip
done