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