阻止到 {我的 ip 外部地址} 的端口 80 的流量,但允许到 {适当的主机名} 的流量

阻止到 {我的 ip 外部地址} 的端口 80 的流量,但允许到 {适当的主机名} 的流量

我有一个想要隐藏的 Web 服务器。对我的 IP 的任何请求都应被丢弃 - 服务器甚至不应该知道它们的存在。但是,带有实际主机名的请求应该通过。

我该怎么做?据我所知,UFW(我正在使用的防火墙)不允许进行 http 标头解析。

我正在使用 Arch Linux。

答案1

这是不可能的。为了让客户端发送其请求(无论是否带有“魔术”主机名),必须先建立 TCP 连接。

如果所需的标头没有出现,您当然可以终止/黑洞连接Host,但这不太隐蔽。

答案2

尽管有其他答案声称如此,但这是可能的。

我首先想到的解决方案是添加一个反向代理,在匹配主机后,该代理可以将请求转发到 Web 服务器。事实上,这正是 Cloudflare 等服务所提供的功能。

使用简单的防火墙规则无法做到这一点,因为在传递域名之前需要与 IP 地址建立连接。(我不推荐这样做,但也许可以检查数据包内容并查找域名标头,然后可以阻止它 - 可以使用 iptables/ufw - 但这可能会使与 Web 服务器的连接保持打开状态,而且无论如何在 Web 服务器看到流量之前都不会发生这种情况)

答案3

最后我决定研究一下mod_securityApache。它看起来就像我想要的那样(命令drop)。但是似乎原生 Arch 存储库中没有 mod_security,因此 Arch 可能不是这种设置的最佳系统。

答案4

不可能,在这种情况下,IP 地址和主机名本质上是联系在一起的。

这就像要求你去约翰史密斯家送披萨,但却在你唯一的地址簿上划掉他的名字。

相关内容