我的情况可能是以下情况:SSH客户端(192.168.0.11)->带有SSH服务器并设置端口转发的公共云虚拟机(139.90.90.90)(CentOS7.9)->一台内部SSH服务器(10.24.24.24)(CentOS 7.9) )。我已经创建了端口转发来访问我的内部 SSH 服务器之一,并且我可以通过具有特定端口的公共云虚拟机访问它。
ssh -L *:10100:10.24.24.24:10100 -N -f [email protected]
我的笔记本电脑SSH客户端可以成功访问139.90.90.90:10100。
但最近,我发现一个问题:由于我在Internet上打开端口,因此存在许多无效的SSH登录请求,这有时会使服务器消耗额外的资源。应该不安全,所以我用来firewalld-cmd
拒绝一些源IP。
我的问题是如何检测这些源IP?由于在内部 SSH 服务器上,它只会显示公共云 IP 地址 139.90.90.90。例如,在我的内部 Linux 服务器 ( /var/log/secure
) 上如下所示:
May 10 23:48:46 z1 sshd[17066]: input_userauth_request: invalid user nano [preauth] May 10 23:48:46 z1 sshd[17066]: pam_unix(sshd:auth): check pass; user unknown May 10 23:48:46 z1 sshd[17066]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=139.90.90.90 May 10 23:48:48 z1 sshd[17066]: Failed password for invalid user nano from 139.90.90.90 port 40800 ssh2
知道如何找到源 IP,然后我可以通过防火墙在我的公共云服务器中阻止它。
谢谢,尤金
答案1
反正我也没找到准确识别的方法。但我发现一种可能可以帮助阻止这些攻击者(黑客)。将 SSH 配置文件更改为“LogLevel DEBUG1”,然后您应该看到许多条目,例如“server_request_direct_tcpip: originator 128.199.32.98 port 48498, target 211.95.84.14”,此时,您可以检查这些 IP 是否有效。然后你可以编写一个脚本来检查IP是否无效,并阻止连接。
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=$IP reject"
您还可以创建白名单以允许有效连接。