我有一个托管在 Amazon Ubuntu 服务器上的 Web 应用程序,它有一个公共 IP 地址 - 而且流量很少。
我观察了 /var/log 中的授权日志,发现有几个类似下面的日志,通常每天 15-30 次,并且都使用不同的用户名。
Sep 9 01:15:37 ip-xx-xxx-xx-xxx sshd[24944]: Invalid user zabbix from 192.69.90.218<br>
Sep 9 01:15:37 ip-xx-xxx-xx-xxx sshd[24944]: input_userauth_request: invalid user zabbix [preauth]<br>
Sep 9 01:15:37 ip-xx-xxx-xx-xxx sshd[24944]: Received disconnect from 192.69.90.218: 11: Bye Bye [preauth]
其中大部分来自越南和中国。我认为这很常见,有人编写了一个机器人来搜索网络并尝试登录。关于理解日志也有类似的帖子,但我的问题是:
这个量正常吗?我如何建立正常活动水平的基线?
如果我对安全性有信心——而且我确实使用本地保存的 SSH 密钥——这些失败的请求会有什么危害吗,即使它们的数量随着时间的推移而增加?
答案1
很难说这个速率是否正常。无论如何,我不会对 SSH 默认端口感到太惊讶,看到这样的机器人试图进入的情况确实很常见。
这样的请求绝对没有任何害处;只要您遵循基本的安全规则,例如仅使用 SSH 密钥进行身份验证,禁止使用 root 帐户访问。
您可以通过将默认 SSH 端口更改为高于 1024 的端口来降低请求数量。
最后,您还可以添加 iptable 规则,如果尝试次数超过某个级别,则在 TCP 级别重置访问,或者使用 fail2ban 甚至更好。无论如何,唯一的风险是成功连接,我不会太担心失败尝试的比率。
答案2
是的,不幸的是,这些都是正常的。我们每天都会收到这样的请求,几乎在我们提供的每项面向公众的服务中都会看到。
如果您使用公钥认证,并实际禁用密码验证,那么它实际上就不会造成问题。
您可能希望使用类似 fail2ban 的工具来监控日志并自动对尝试过多的地址进行防火墙保护。您还可以移动端口,这在安全方面并不安全,但可能会减少相当一部分随机登录尝试。
当然,理想情况下,您不应该将 SSH(或任何其他不需要全局访问的服务)公开到互联网上。如果我知道需要从任何位置或没有固定地址的位置进行访问,我通常会将 SSH 锁定到特定 IP 地址或提供某种 VPN。