我在非标准端口上运行个人 ssh 服务器。如果有人试图通过标准端口 22 登录我的 ssh 服务器,服务器似乎发送“连接被拒绝”消息。
$ ssh localhost
ssh: connect to host localhost port 22: Connection refused
我怎样才能让它不发送这样的消息并且它的行为就像它没有运行一样?
我在非标准端口上运行个人 ssh 服务器。如果有人试图通过标准端口 22 登录我的 ssh 服务器,服务器似乎发送“连接被拒绝”消息。
$ ssh localhost
ssh: connect to host localhost port 22: Connection refused
我怎样才能让它不发送这样的消息并且它的行为就像它没有运行一样?
您已经完成了——当尝试连接到没有任何监听的端口时,操作系统会发送拒绝连接响应。
服务器没有发送任何东西,它是客户端告诉你服务器拒绝连接。如果在您尝试连接时关闭了 TCP 端口,这是预期的行为。
如果您希望您的系统静默丢弃数据包而不发送“此端口已关闭”TCP 应答(所谓的隐形端口),您需要在系统上和/或在系统和客户端之间使用防火墙。
您看到的很可能是您的客户端对服务器在接收到不接受连接的端口的第一个 TCP SYN 数据包时发送的ICMP 端口不可达的反应。这是正确的行为,可以让客户快速告诉您。
如果您实际上是在“此主机不存在、已死亡或离线并且根本不发送任何内容”中表示隐身,请将您的防火墙配置为丢弃(而不是拒绝)任何到此端口的数据包。假设 netfilter/iptables:
这会导致客户端暂停一段时间,因为它无法确定响应是在传输中还是不存在。
注意:这实际上会立即终止所有连接,包括正在运行的连接。莫莉开关警报!
服务器网络堆栈正在发送数据包以响应客户端 TCP 连接尝试。
当客户端程序发送 TCP SYN数据包请求连接时,根据对捕获数据包的检查,将设置了 ACK 和 RST 标志的回复数据包归类为连接被拒绝错误。没有服务在监听端口,端口被关闭。
此外,DROP 不是一个“礼貌的目标”,因为它使网络对客户来说是模糊的。DROP 应小心使用。
如果你真的想让一个端口成为一个很好的攻击者敌人,你可能会对tarpit iptables 模块感兴趣
如果你想迷惑你的攻击者,你可以加入 REJECT 目标并使用ICMP 错误代码和--reject-type的奇异组合:
您可以完全隐藏您的
ssh
端口,fwknop
并结合设置默认拒绝策略iptables
以静默丢弃数据包。所有人nmap
都会看到公共服务。请参阅我的 fwknop 指南和安全
ssh
密码的随附页面。