![看到很多请求进入 Web 服务器 - 针对的都是随机主机名,不是我自己的](https://linux22.com/image/560035/%E7%9C%8B%E5%88%B0%E5%BE%88%E5%A4%9A%E8%AF%B7%E6%B1%82%E8%BF%9B%E5%85%A5%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%20-%20%E9%92%88%E5%AF%B9%E7%9A%84%E9%83%BD%E6%98%AF%E9%9A%8F%E6%9C%BA%E4%B8%BB%E6%9C%BA%E5%90%8D%EF%BC%8C%E4%B8%8D%E6%98%AF%E6%88%91%E8%87%AA%E5%B7%B1%E7%9A%84.png)
这看起来像是钓鱼攻击,在这种情况下发送 404 响应是一种泄露漏洞。不幸的是,这正是 IIS 所做的。
我宁愿这些家伙不知道我的服务器的存在。
编辑:当然,一旦建立了 TCP 连接,他们就知道该端口上有东西。如果他们不知道另一边是 IIS,那就太好了
答案1
您说的“随机域”是指主机名,对吗?不是 IP 地址?
如果是前者,那么从服务器的角度来看,主机名至少在理论上与服务器的实际 IP 地址完全无关。每个(好吧,几乎每个)HTTP 请求都会有一个名为“Host”的 HTTP 标头,因此很容易模拟或“伪造”它。执行以下命令
curl -H "Host: serverfault.com" http://www.google.com/
(忽略输出)
该命令使 Google 的服务器响应对“serverfault.com”的请求,就好像它是一个普通的虚拟主机一样,对于 Google 而言,它看起来像是指向重定向到主 Google 网站的文件。
简而言之,如果不让防火墙分析每个请求,就无法“阻止”这些请求,而这又会带来一系列问题。404 或 403 响应是正确的,404 表示服务器上不存在该资源,尽管这通常是指文件,但也可能是指整个网站。
服务器是否响应(简单地说)完全取决于目标 IP 地址,而不是主机名。当服务器读取主机名时,它已经建立了连接。是的,您可以让它直接断开连接,但使用 404 进行响应是更好的选择,因为它正式告诉客户端资源不存在。