如何使标准 ssh 端口成为隐形端口?

如何使标准 ssh 端口成为隐形端口?

我在非标准端口上运行个人 ssh 服务器。如果有人尝试通过标准端口 22 登录我的 ssh 服务器,服务器似乎会发送“连接被拒绝”消息。

$ ssh localhost
ssh: connect to host localhost port 22: Connection refused

我怎样才能使它不发送这样的消息并且表现得像没有运行一样?

答案1

服务器没有发送任何内容,而是客户告诉您服务器拒绝连接。如果 TCP 端口关闭当您尝试连接时。

如果你希望你的系统默默地丢弃数据包而不发送“此端口已关闭”的 TCP 应答(所谓的隐身若要阻止任何端口,则需要在系统上和/或系统与客户端之间使用防火墙。

答案2

您已经完成了——当尝试连接到没有任何监听的端口时,操作系统会发送连接被拒绝响应。

答案3

您所看到的很可能是您的客户对ICMP 端口不可达服务器在收到第一个 TCP SYN 数据包(针对不接受连接的端口)时发送此消息。这是正确的行为,并且允许客户端快速告知您。

如果您实际上指的是“此主机不存在、已死或离线且不发送任何内容”的隐身,请配置防火墙以丢弃(而不是拒绝)发往此端口的任何数据包。假设 netfilter/iptables:

iptables -I INPUT -p tcp --dport 22 -j DROP

这会导致客户端挂起一段时间,因为它无法确定响应是否正在传输中或不存在。

注意:这实际上会立即终止所有连接,包括正在运行的连接。Molly 开关警报!

答案4

您可以完全隐藏您的ssh端口,并fwknop设置默认拒绝策略以iptables悄悄丢弃数据包。所有nmap可见的都是公共服务。

福克诺普部署后,任何使用 nmap 查找 SSHD 的人都无法分辨它是否在监听——如果他们想针对 SSHD 运行密码破解程序,或者即使他们有零日漏洞,也没有任何区别。

看看我的fwknop 指南以及随附的安全密码页面ssh

相关内容