我租用的运行 Ubuntu 22.04 的 VDS 服务器遇到问题。为了保护我的服务器,我启用了 ufw(简单防火墙)并只允许访问两个 TCP 端口:2222
SSH 服务器和8080
代理服务器。
作为监视传入连接的一部分,我安装了该tcptrack
应用程序。最初,一切似乎都进展顺利。然而,我注意到大量不相关的 TCP 连接请求源自我未知的 IP 地址。虽然大多数请求在合理的时间范围内被正确拒绝和关闭,但某些连接无限期地保持在 ESTABLISHED 状态。不幸的是,除非我重新启动服务器,否则这个持久连接列表会继续增长。
为了进行调查,我检查了位于 的 SSH 服务器日志,除了我自己的日志(仅支持身份验证)/var/log/auth.log
之外,我没有发现任何成功身份验证的实例。publickey
我担心仍处于该ESTABLISHED
状态并持续出现在tcptrack
列表中的连接。我预计这些连接会在一段时间不活动后终止。为什么它们无限期地保持这种状态,不断增长的列表对我的服务器功能有什么影响?最后,有没有办法配置 Linux 或 sshd 在没有活动时自动终止已建立的连接?
答案1
我有浏览了 tcptrack 源代码,并得出结论,tcptrack 确实进行了自己的连接状态跟踪。您看到的状态与 Linux 内核中 TCP 状态机 1 的状态不同。
换句话说,我们不知道这种显示是否是 Linux 内核内部的错误,Linux 内核实际上为数十亿联网设备提供动力,或者它是否只是tcptrack
误解了数据包并得出了长期处于非正常状态的连接的结论。 -ESTABLISHED 状态为已建立。
我认为这是tcptrack
错误的,除非分析您的实际内核网络堆栈告诉您您正在因为连接跟踪而失去计算周期。你可以测试一下——停止tcptrack
并重新开始。是否仍然出现相同数量的 ESTABLISHED 但空闲数小时的连接?
¹ 如果你想这样称呼它——事情就是这样复杂的。