我有一个想要隐藏的 Web 服务器。对我的 IP 的任何请求都应被丢弃 - 服务器甚至不应该知道它们的存在。但是,带有实际主机名的请求应该通过。
我该怎么做?据我所知,UFW(我正在使用的防火墙)不允许进行 http 标头解析。
我正在使用 Arch Linux。
答案1
这是不可能的。为了让客户端发送其请求(无论是否带有“魔术”主机名),必须先建立 TCP 连接。
如果所需的标头没有出现,您当然可以终止/黑洞连接Host
,但这不太隐蔽。
答案2
尽管有其他答案声称如此,但这是可能的。
我首先想到的解决方案是添加一个反向代理,在匹配主机后,该代理可以将请求转发到 Web 服务器。事实上,这正是 Cloudflare 等服务所提供的功能。
使用简单的防火墙规则无法做到这一点,因为在传递域名之前需要与 IP 地址建立连接。(我不推荐这样做,但也许可以检查数据包内容并查找域名标头,然后可以阻止它 - 可以使用 iptables/ufw - 但这可能会使与 Web 服务器的连接保持打开状态,而且无论如何在 Web 服务器看到流量之前都不会发生这种情况)
答案3
最后我决定研究一下mod_security
Apache。它看起来就像我想要的那样(命令drop
)。但是似乎原生 Arch 存储库中没有 mod_security,因此 Arch 可能不是这种设置的最佳系统。
答案4
不可能,在这种情况下,IP 地址和主机名本质上是联系在一起的。
这就像要求你去约翰史密斯家送披萨,但却在你唯一的地址簿上划掉他的名字。