我的 Web 应用程序收到大量请求,要求提供没有主机的 IP 以及与我通常提供的任何内容都不匹配的主机。
我发现了一个stackoverflow 问题与此相关,但我不确定将这个 apache 配置放在哪里(或者我是否需要将其分别添加到我的 :80 和 :443 配置中)。
以下是他们展示的内容,仅供参考。注意 - 这似乎仅支持单个主机,我如何才能为 2 个或 3 个主机做到这一点?
SetEnvIfNoCase Host example\.com VALID_HOST
Order Deny,Allow
Deny from All
Allow from env=VALID_HOST
答案1
Mod_Security 可能就是你要找的东西。默认规则会阻止此类请求,下面是我在调试日志中发现的一个被阻止的侦察示例:
消息:访问被拒绝,代码为 403(阶段 2)。REQUEST_HEADERS:Host 处的模式匹配“^[\d.:]+$”。[文件“/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf”] [行“98”] [id“960017”] [rev“2”] [msg“主机头是一个数字 IP 地址“] [数据“1.2.3.4”] [严重性“警告”] [版本“OWASP_CRS/2.2.6”] [成熟度“9”] [准确度“9”] [标签“OWASP_CRS/协议违规/IP_HOST“] [标签“WASCTC/WASC-21”] [标签“OWASP_TOP_10/A7”] [标签“PCI/6.5.10”] [标签“http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx“]
答案2
您可以使用 NameVirtualHost 功能,定义一个 first VirtualHost
(我通常用系统的主机名来命名它 - 如果与它在其上提供 Web 应用程序的主机名不同 - 或用它的数字 IP)。让它为空,也可以Deny from All
。
然后,使用正确的主机名定义另一个应用于您的网站/应用程序的 VirtualHost,并让其执行其业务。