我正在调查安装 Snort IDS 后在我管理的服务器上发现的一些异常。
我有大约 10 个 Ubuntu 生产网络服务器,这些服务器使用 Ansible 设置并定期配置。其中一个服务器的请求路由非常奇怪。
假设服务器的公共 IP 是111.1.1.11
。
- 它是“数字海洋”的一颗水滴。
- 它只有一个 NIC。
ifconfig
显示具有公网 IP 的 NIC111.1.1.11
。
当我查看 Snort 中的日志时,以及当我使用以下工具监控网络流量时伊夫托普我看到:
10.0.0.0
我预期的所有流量(ssh、https、SQL 端口)都被路由到-范围内的私有地址的主机10.255.255.255
。假设它是:10.20.0.10
。- 其他端口的流量不是被重定向到那里,并解析为 上的端口
111.1.1.11
。
如果我查看我的iptables
规则,没有提到此主机10.20.0.10
,也没有路由方面的任何异常。netstat
没有显示任何异常。如果我 ping,10.20.0.10
我可以看到那里有东西。我看不到服务器上正在运行任何意外的进程。
我无法弄清楚为什么或如何将来自外部地址的流量路由到这个私有地址。我检查了其他 10 台服务器(通过 Ansible 进行完全相同的配置),它们没有这种奇怪的路由行为。它们的所有流量都解析到各自公共 IP 上的常规端口。
有任何想法吗?
更新:
在我们托管于 Digital Ocean 的服务器上,网络接口配置似乎是非标准的。
标准配置:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
DO配置:
auto lo
iface lo inet loopback
dns-nameservers 67.207.67.2 67.207.67.3 # This is custom Digital Ocean DNS
auto eth0
iface eth0 inet static
address 111.1.1.11/20
gateway 111.1.0.1
# control-alias eth0
iface eth0 inet static
address 10.20.0.10/16
所以谜题已经解开了。我们其他的 DO 托管服务器也有类似的配置(当然,IP 不同)。
剩下的问题是我们的其他 DO 托管服务器不将任何传入流量路由到“control-alias eth0”下列出的地址,所以我仍然不明白为什么一台服务器这样做,而其他服务器却不这样做。
答案1
事实证明,私有地址就是 Digital Ocean 所称的“锚 IP”,内部用于路由来自浮动 IP 的流量。
其他人已向该 Droplet 添加了浮动 IP,但我没有意识到。
/捂脸
好吧,至少我学到了一些新东西,也许有一天这会对其他困惑的系统管理员有所帮助。
可能的解决方案:
- 摆脱浮动 IP
- 调整 Snort 配置(它会对该流量产生大量误报,并会阻止其中的大部分)