我想知道有什么有效的方法来处理连接到我的服务器的恶意尝试。如前所述,尝试显示/var/log/auth.log
为登录Connection closed by IPaddress port XXX [preauth]
。
有关以下的附加信息sshd_config
:
- 密码登录已禁用
MaxAuthTries 3
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
DenyUsers pi admin ubuntu
问题的第一部分是:我是否应该阻止这些尝试?
大约每隔几秒钟就有一次尝试。这些尝试来自不同的IP(我可以处理尝试多次登录但没有成功的IP)我认为),但是大量的连接尝试似乎有点令人头疼。
一个条件是我不想只将某些 IP 列入白名单以通过 ssh 连接到服务器。
现在如果我应该阻止这些尝试,我很想就如何处理这个问题提出一些建议(除了fail2ban之外请)。
非常感谢!
答案1
如果您将事情限制为仅公钥身份验证,那么您可能没问题。 (请注意,这意味着您还应该转向ChallengeResponseAuthentication
。 )为了获得额外的安全性,您也no
可以关闭。PermitRootLogin
我运行的服务器一直在进行扫描,我并不担心,因为他们没有我的密钥,我没有打开密码身份验证,而且他们实际上不可能进入。
如果需要,您可以使用诸如fail2ban之类的东西,但这不是必需的。如果您可以接受一点日志噪音,请忽略它。如果问题方或明显不感兴趣的网络(例如,您从未去过的国家/地区的电信)是一个大问题,您还可以手动将其添加到防火墙。
答案2
VPN 是最好的建议。放置 VPN 服务器(开放VPN例如)您的 SSH 服务器和互联网之间。无论您的服务器位于家里还是在云端,这都相当简单。您的 SSH 服务器将仅侦听 SSH 连接的专用 IP。您的 VPN 服务器将暴露在互联网上(1194/UDP 或 943/TCP 或 443/TCP)。 OpenVPN 非常灵活,您可以使用证书进行身份验证(避免使用密码)。
这意味着您必须先连接到 VPN,然后才能访问目标 SSH 服务器。此外,出于安全原因,必须可以通过私有 IP 访问 VPN 服务器的 SSH。这意味着您必须先连接到 VPN,然后才能通过 SSH 访问 VPN 服务器进行管理。但如果出现问题,就有可能将自己锁在门外。
B 计划是将sshd_config
文件中的用户列入白名单,并确保他们仅使用 ssh 密钥进行身份验证。使用参数允许用户或允许组。不属于神圣列表的人将被拒绝 SSH 访问。
计划C是启用双因素身份验证 (2FA). 白名单用户需要输入 2FA 代码才能获得访问权限