我最近在一台运行 Apache Web 服务器的 Debian 机器上安装了 Nagios。
问题是最近,Nagios 告诉我 HTTP 服务间歇性地失败,而且似乎在随机的时刻,服务器从其外部地址获得了大量的连接,并且大量 apache2 进程开始从字面上分叉我的计算机屁股。
为了解释这一点,假设我的公共 IP 地址是 1.2.3.4,并且我有一个网络服务器在 192.168.0.10 的 LAN 中运行,而 192.168.0.1 是一个路由器,NAT 的 http 流量进出。
每当事件发生时,我(通过 netstat)看到很多 tcp 连接处于 ESTABLISHED 状态,从 192.168.0.10:randomport 到 1.2.3.4:80(传出连接?),另外还有大量 tcp6 连接也从 1.2.3.4 处于 ESTABLISHED 状态:随机端口到 192.168.0.10:80。
我真的不知道发生了什么,对于常规的 DDoS,我希望有多个外国地址,但不是我自己的公共 IP 地址。
问题是我不知道是 Nagios 本身导致了这种情况,还是以前发生过,我不知道。
有人对可能发生的事情有任何想法吗?
非常感谢
PD:ATM 我放了一个 iptables 规则,它似乎可以在不影响服务的情况下修复它,但我想知道这背后的原因,所以我删除了该规则以进行进一步测试。
PD2:对 netstat 输出的进一步分析表明,IP 之间的随机端口匹配,所以我的机器似乎是出于痛苦而 DoSing 本身?当机器不忙时运行 check_http nagios 插件可以正常工作并且不会导致事件,所以必须有别的东西在做,关于如何缩小它的任何想法?
编辑: ss 透露,发起连接的是 apache2 进程,所以基本上 apache2 只是与自身建立连接?
好的,我设法通过使用 localhost 浏览网络服务器来重现该问题,并触发了该事件。我有一些读取 %{HTTP_HOST} 变量的 RewriteCond 规则,当该主机不是 ServerName 或 ServerAlias 之一时,它会以某种方式造成严重破坏。
我在 /etc/hosts 上有一个条目,将 nagios 的 check_http 插件使用的主机名作为主机地址链接到 127.0.1.1,这引起了整个骚动。
现在它没有发生,幸运的是事件应该停止发生。
我希望它可以帮助某人。