我有一个长期存在的问题。我正在运行一个 VMware ESX 服务器 (6.5),上面有多个 Ubuntu 服务器。其中两台服务器托管一个网站(一个是公共网站,另一个是 Web 邮件客户端)。两台服务器都有 IPv4 和 IPv6 地址。
这些服务器大多数时候都运行良好。偶尔会有一台或两台服务器冻结的情况。CPU 使用率达到 100%,我无法再登录服务器。甚至无法通过 VMware 直接控制台登录。恢复这些系统的唯一方法是进行硬重启。
服务器运行几分钟。这种情况持续数小时,有时甚至一天,然后服务器突然停止冻结并连续数周无问题地运行。奇怪的是,当我阻止服务器上网(删除端口转发)时,冻结停止。另一件奇怪的事情是,所有其他 Ubuntu 服务器都没有这个冻结问题。它们都以相同的方式安装。
在日志中我能够找到以下一致的条目:
Apr 21 14:30:39 helios kernel: [ 124.446850] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:f3:7b:e8:98:9b:cb:b2:87:d9:08:00 SRC=62.204.66.10 DST=10.0.0.65 LEN=40 TOS=0x00 PREC=0x00 TTL=58 ID=0 DF PROTO=TCP SPT=22016 DPT=443 WINDOW=0 RES=0x00 RST URGP=0
^@^^@^@^@^@^@^@
^@^@^@^@^@^@^@^
[...]
Apr 21 14:36:00 helios systemd-sysctl[497]: Not setting net/ipv4/conf/all/promote_secondaries (explicit setting exists).
Apr 21 14:36:00 helios systemd-sysctl[497]: Not setting net/ipv4/conf/default/promote_secondaries (explicit setting exists).
Apr 21 14:36:00 helios systemd[1]: Starting Flush Journal to Persistent Storage...
写入奇怪的字符时,服务器就会挂起。我认为这与 UFW 防火墙有关。当我禁用防火墙时,冻结的频率会降低。我想让 UFW 防火墙保持运行作为安全措施。我只在 UFW 中启用 HTTP(S) 和 SSH。SSH 不会在路由器上转发(呃)。
更新:它可能不是 UFW 防火墙,因为当禁用 UFW 时系统仍然保持冻结。
我已经为此苦苦挣扎多年了。这个问题存在于 Ubuntu 18.04 上,并且一直发生在 Ubuntu 20.04 上。在这段时间里,我更换了整个硬件(已经过时了),并将 VMware 从 5 升级到了 6.5。所以它与硬件或 ESX 无关。
这可能是某种拒绝服务攻击吗?如果是这样,我可以保护我的服务器吗?
Apache 2 已安装,我启用了 mod security 和 mod evasive 来阻止各种攻击。我已尽我所能确保服务器的安全。