bash:多次尝试登录失败后阻止用户

bash:多次尝试登录失败后阻止用户

我有个问题。

有人试图进入我的服务器,这种情况经常发生。例如:

Aug 19 14:11:42 oplot sshd[18373]: input_userauth_request: invalid user oracle
Aug 19 14:11:42 oplot sshd[18372]: pam_unix(sshd:auth): check pass; user unknown
Aug 19 14:11:42 oplot sshd[18372]: pam_unix(sshd:auth): authentication failure;
    logname= uid=0 euid=0 tty=ssh ruser= rhost=211.38.137.44 
Aug 19 14:11:44 oplot sshd[18372]: Failed password for invalid user oracle from
    211.38.137.44 port 36 841 ssh2
Aug 19 14:11:45 oplot sshd[18373]: Received disconnect from 211.38.137.44: 11:
    Bye Bye
Aug 19 14:11:47 oplot sshd[18374]: Invalid user test from 211.38.137.44
Aug 19 14:11:47 oplot sshd[18375]: input_userauth_request: invalid user test
Aug 19 14:11:47 oplot sshd[18374]: pam_unix(sshd:auth): check pass; user unknown
Aug 19 14:11:47 oplot sshd[18374]: pam_unix(sshd:auth): authentication failure;
    logname= uid=0 euid=0  tty=ssh ruser= rhost=211.38.137.44

还有这个

Aug 19 14:58:51 oplot sshd[19543]: Failed password for root from 202.117.56.29
    port 43025 ssh2
Aug 19 14:58:52 oplot sshd[19544]: Received disconnect from 202.117.56.29: 11:
    Bye Bye
Aug 19 14:58:55 oplot sshd[19546]: reverse mapping checking getaddrinfo for
    56h29.xjtu.edu.cn [202.117.56.29] failed - POSSIBLE BREAK-IN ATTEMPT!

你能向我解释一下“反向映射检查 getaddrinfo”是什么意思吗?

经过多次尝试后,我该如何阻止 IP?

答案1

失败2ban是阻止大量虚假 ssh 登录尝试的常用方法。我建议您专注于阻止人们攻击您的 ssh 端口,而不是担心错误的反向 DNS 查找。

答案2

ssh 所说的“可能的入侵尝试”只是表明相关地址配置错误的信号。您可以检查:

~% host 202.117.56.29
29.56.117.202.in-addr.arpa domain name pointer 56h29.xjtu.edu.cn.
~% host 56h29.xjtu.edu.cn
Host 56h29.xjtu.edu.cn not found: 3(NXDOMAIN)

DNS PTR 记录是一种安全问题,因为没有什么可以阻止您说出您的地址主机名是您想要的任何内容,甚至是“google.com”或“nsa.gov”。因此,SSH 会进行这项额外检查,以确保地址和主机名之间存在正确的双向关系。

在没有首先保护 SSH 服务端口的情况下,不要尝试阻止多次尝试。您应该考虑禁用 SSH 服务,或者至少为其设置防火墙。如果您无法为其设置防火墙,请尝试使用端口敲击解决方案来隐藏它以免受随机攻击。此外,禁用密码身份验证并强制每个人都使用公钥身份验证。

答案3

查看拒绝主机。这是禁止试图暴力破解 SSH 登录的 IP 的好方法。您还可以从尝试在全球其他主机上进行此操作的 IP 共享阻止列表中受益。

如果您更喜欢轻量级的解决方案,则可以使用 iptables 来阻止重复的 ssh 尝试。假设您已经使用默认 DROP 策略设置了 iptables 规则,并且仅允许特定端口,则以下规则将打开端口 22 (ssh),这样一旦每分钟有超过 3 个连接,它就会暂时阻止来自特定 IP 的 SSH 连接:

iptables -A INPUT -m hashlimit --hashlimit 3/min --hashlimit-burst 3 --hashlimit-mode srcip --hashlimit-name inputssh -p tcp --dport 22 -j ACCEPT

请注意,如果超过频率阈值,这也会停止成功登录,因此您必须选择适当的值。

欲了解更多信息,您可以尝试“人iptables”或者“iptables -m hashlimit——帮助”。此外,如果您不熟悉 iptables,则可以通过谷歌搜索“iptables 教程”和“iptables hashlimit”来获得一个很好的起点。

相关内容