我已经更改了 SSH 默认端口(通过更新 /etc/ssh/sshd_config 文件中的 Port 属性)。但我希望当有人尝试通过端口 22 连接到 SSH 时,仍然能够让一切看起来都按预期运行。
目前,更改 SSH 端口并尝试通过端口 22 登录后,SSH 返回:
ssh:连接到主机 server_ip 端口 22:连接被拒绝
有没有办法返回正常输出“输入密码”,但配置 SSH 永远不接受来自端口 22 的登录?
我的想法是,如果有人试图暴力破解我的服务器,他们首先会尝试的端口是 22。但如果我可以欺骗别人,让他们觉得 SSH 在端口 22 上运行正常,那么他们就浪费了时间,而且永远无法获得访问权限。
尝试在线搜索此问题但却得到不想要的结果。
谢谢!
答案1
可以在 2 个不同的端口上运行 2 个不同的 SSH 服务器,一个服务器拒绝所有连接但看起来工作正常,而另一个服务器则运行正常。
但我不明白为什么会有人这么做。如果资金充足,投资于包括 IPS、IDS、防火墙等在内的防御系统似乎是明智之举。
如果您只是想拒绝脚本小子访问,请禁用密码登录并坚持使用公钥登录。
我认为速率限制和 fail2ban 对机器人来说具有足够好的威慑力。
答案2
您还可以运行 Kippohttps://github.com/desaster/kippo作为 SSH 蜜罐,它模拟成功登录,并且您可以记录用户在服务器“中”尝试执行的所有操作。
答案3
答案4
如果你在端口 22 上运行单独的 SSH 服务器,则可以使用 sshd 配置文件中的选项将其设置为不允许任何用户登录AllowUsers
。手册页显示:
This keyword can be followed by a list of user name patterns, separated by spaces. If specified, login is allowed only for user names that match one of the patterns. Only user names are valid; a numerical user ID is not recognized. By default, login is allowed for all users. If the pattern takes the form USER@HOST then USER and HOST are separately checked, restrict- ing logins to particular users from particular hosts.
您可以设置一个不存在的用户名,并允许它仅从本地主机连接。SSHD 仍可在端口上使用,但无论攻击者尝试使用什么用户名,都不会被允许登录。
您还可以将其与要求公钥登录和不允许密码相结合,以增强安全性。
然而,正如 kasberd 所说,与有监听的端口相比,封闭的端口总是更难被攻破。尽管采取了这些措施,您仍然容易受到 sshd 服务器软件中漏洞的攻击,这些漏洞可能会允许攻击者进入。