在Web服务器防止Host头攻击
字数 1331 2025-08-18 11:37:28
Web服务器防止Host头攻击的全面防护指南
一、Host头攻击概述
Host头攻击是指攻击者通过篡改HTTP请求中的Host头部字段,试图绕过安全限制或实施其他恶意行为的攻击方式。虽然自动补全路径导致的302/301跳转风险较低,但出于合规要求,大多数企业仍需修复此类漏洞。
二、Apache服务器防护方案
方法一:使用规范名称
- 修改
conf/httpd.conf文件 - 设置
ServerName为应用域名:ServerName www.domain.com:80 - 添加配置:
UseCanonicalName On - 重启Apache服务
效果:服务器将始终使用预设的ServerName,忽略客户端提供的Host头
方法二:虚拟主机配置
- 修改
conf/httpd.conf文件,添加以下配置:NameVirtualHost 192.168.0.16 <VirtualHost 192.168.0.16> ServerName 192.168.0.16 <Location /> Order Allow,Deny Deny from all </Location> </VirtualHost> <VirtualHost 192.168.0.16> DocumentRoot "C:\www" ServerName www.test.com </VirtualHost> - 重启Apache服务
效果:
- 直接通过IP(192.168.0.16)访问将被拒绝
- 仅允许通过www.test.com域名访问
- 主目录指向C:\www
方法三:重写模块方案
- 修改
conf/httpd.conf文件 - 取消注释重写模块:
LoadModule rewrite_module modules/mod_rewrite.so - 添加重写规则:
RewriteEngine on RewriteCond %{HTTP_HOST} !^192.168.0.16$ [NC] RewriteRule ^(.*)$ /error.html - 重启Apache服务
效果:当Host头不是192.168.0.16时,重定向到错误页面
三、Nginx服务器防护方案
方法一:默认server配置
- 修改nginx.conf文件
- 添加默认server配置:
server { listen 8888 default; server_name _; location / { return 403; } } - 重启Nginx服务
效果:当Host头不匹配任何server时,返回403错误
方法二:Host头检测规则
- 修改nginx.conf文件
- 在目标server中添加检测规则:
server { server_name 192.168.0.171; listen 8888; if ($http_Host !~*^192.168.0.171:8888$) { return 403; } include /etc/nginx/default.d/*.conf; location / { root /www/dvwa; index index.php index.html index.htm; } } - 重启Nginx服务
效果:当Host头不匹配192.168.0.171:8888时,返回403错误
四、Tomcat服务器防护方案
- 修改
tomcat/conf/server.xml文件 - 找到
<Host>标签,修改name属性为静态域名:<Host name="www.yourdomain.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> - 重启Tomcat服务
五、IIS 6.0防护方案
使用ISAPI_Rewrite插件
- 下载并安装ISAPI_Rewrite插件
- 使用破解工具替换安装目录中的三个文件
- 为ISAPI_Rewrite.dll添加SERVICE用户组,授予读取、读取和运行权限
- 在IIS管理工具中添加ISAPI筛选器
- 配置Host头白名单规则
规则示例:
RewriteCond %{HTTP_HOST} !^192\.168\.2\.141$
RewriteRule ^(.*)$ - [F]
效果:当Host头不是192.168.2.141时,返回403错误
六、IIS 7.0/7.5/8.0防护方案
使用URL重写模块
- 下载并安装URL重写模块
- 在IIS管理工具中添加入站规则
- 选择"请求阻止"规则类型
- 配置规则:
- 模式:
.* - 条件:
{HTTP_HOST}不匹配^192\.168\.124\.149$
- 模式:
- 设置操作类型为"中止请求"
- 重启网站服务
效果:当Host头不是192.168.124.149时,服务器中止请求
七、总结
针对不同Web服务器,防护Host头攻击的主要方法包括:
- 强制使用规范域名(UseCanonicalName)
- 配置虚拟主机限制访问来源
- 使用重写模块检测并拦截非法Host头
- 设置默认server/站点处理非法请求
- 使用第三方模块增强防护能力
企业应根据实际使用的Web服务器类型选择适合的防护方案,确保在满足合规要求的同时,有效防范Host头攻击带来的安全风险。