我使用 UFW 创建了一条规则,使用以下命令禁止了某个 IP 地址
sudo ufw insert 1 deny from <ip address> to any
现在,如果我尝试从该 IP 地址通过 SSH 连接到服务器,它会阻止它,但如果我尝试访问该服务器上托管的其中一个网站,它就会正常工作。
我检查了 nginx 访问日志,它显示流量来自正确的 IP,并且我已经完成了
sudo ufw status numbered
并且该 IP 在任何允许规则之前被列为第一位。
我该如何解决这个问题?
我唯一能想到的是该特定网站位于 cloudflare 后面。我们已经进行了必要的更改,以便原始 IP 地址出现在 nginx 日志中.....但 UFW 应该在它到达 nginx 之前阻止它...所以我们需要对 UFW 做些什么才能让它识别原始源 IP 地址。
答案1
UFW 仅查看到达您服务器的 IP 数据包标头中的 IP 地址。因此,它仅查看 Cloudflare 的 IP 地址。
在 nginx 中情况有所不同,因为它可以查看 HTTP 标头,其中 Cloudflare 添加原始请求 IP 地址,并且 nginx 可以将其用作客户端 IP 地址。
您无法通过 UFW 规则实现您想要的效果。您唯一的选择是使用 nginx,或者看看 Cloudflare 是否有任何 IP 地址阻止功能。