我有一个在 Ubuntu 20.04 LTS 下运行的 Apache Web 服务器。
我只允许特定范围的 IP 地址访问该网站。
一切都运行正常,直到我看到一些来自不允许的 IP 地址(中国、新加坡、美国等)的请求(攻击),有时还会有一些恶意请求。
我仔细检查了所有内容,发现这些 IP 地址不属于允许的范围。
我通过 Google 查找了所有能查找到的地方,并通过 chatGPT 询问了相关问题。
我现在没有线索可以找出这个安全问题的原因。
原因可能是什么?
我甚至从头开始,问题仍然存在。UFW 无法正确阻止来自不受欢迎区域的所有 IP 地址,这确实是一个问题。
更新:根据要求,以下是添加规则的示例
80,443/tcp 允许 216.252.224.0/19
80,443/tcp 允许 217.11.32.0/20
80,443/tcp 允许 217.11.208.0/20
80,443/tcp 允许 217.14.64.0/20
80,443/tcp 允许 217.20.192.0/20
80,443/tcp 允许 217.22.128.0/20
80,443/tcp 允许 217.26.32.0/20
它只不过是一长串同类规则而已。
让我们通过以下规则示例来说明该问题:
80,443/tcp 允许 216.252.224.0/19
IP 地址范围 216.252.224.0/19 表示子网掩码为 255.255.224.0,允许 8,192 个唯一 IP 地址。在本例中,范围从 216.252.224.0 到 216.252.255.255(这是 chatGPF 告诉我的)。这些是我想要通过的唯一以 216.252.xx.xx 开头的 IP 地址
因此,如果我遇到一个访问者,其 IP 为 216.252.xxx.xx,但该 IP 不属于该范围,那么就会出现问题。
答案1
如果不知道所有规则,就不可能给出明确的答案,但需要检查以下几件事 -
您的默认规则是允许还是拒绝?如果是允许,您是否有一条拒绝规则来捕获所有流量?
规则是特定顺序的,因此如果您在拒绝规则之前有一个允许规则,则拒绝规则可能存在于您的防火墙中,但永远不会被击中。我不使用 UFW(更喜欢直接使用底层 iptables)。如果你这样做
sudo iptables -vnL
它将列出主表中的所有防火墙规则 - 每行的第一个数字是防火墙收到的命中次数。查看规则的顺序以及命中/未命中的规则可能会为您提供一些线索,让您知道问题出在哪里。