Apache访问日志CONNECT请求安全问题及配置方案咨询
问题1:这些返回302响应的请求日志是否意味着我的服务器被用作开放代理?
目前你的服务器没有被成功用作开放代理。
CONNECT是HTTP协议中专门给正向代理使用的请求方法,用来在客户端和目标服务器之间建立TCP隧道。正常的开放代理在收到合法CONNECT请求后会返回200 Connection Established响应,之后直接转发双方流量。你日志中的302响应是服务器把CONNECT请求当成了普通HTTP请求,触发了默认的重定向规则(最常见的是80端口HTTP请求全局重定向到443端口HTTPS),攻击者的代理探测并没有成功得到转发。
不过你的服务器已经被公网的代理扫描爬虫识别为潜在目标,如果后续配置出现疏漏,很容易被滥用为开放代理。
问题2:为什么会有客户端请求我的服务器以CONNECT方式访问我自身的域名?
这类请求是代理扫描的标准流程之一,没有特殊的定向攻击含义。
扫描器在对公网IP做代理探测时,通常会发送两类CONNECT请求:一类是请求第三方外部域名(比如你日志里的多个Minecraft服务器地址),用来测试服务器能不能作为代理访问外部资源;另一类就是请求目标服务器自身的443端口,用来绕过部分基础的域名白名单限制,验证代理功能是否可用。
问题3:在不关闭mod_proxy的前提下,我可以采取哪些措施拦截这类重定向、加固服务器安全?
你使用mod_proxy仅用于对接PHP-FPM的反向代理场景,以下措施完全不会影响现有业务功能:
- 关闭正向代理功能:mod_proxy默认同时支持正向、反向代理,你不需要正向代理功能,直接在Apache主配置文件(Bitnami环境路径为
/opt/bitnami/apache2/conf/httpd.conf)中添加ProxyRequests Off即可,该参数不会影响反向代理对接PHP-FPM的逻辑,是首选加固方案。 - 全局拦截CONNECT请求:如果你的业务完全不需要使用CONNECT方法,直接在虚拟主机配置(Bitnami环境路径为
/opt/bitnami/apache2/conf/vhosts/wordpress-vhost.conf)中添加重写规则,直接返回405方法不允许错误:
RewriteEngine On RewriteCond %{REQUEST_METHOD} ^CONNECT [NC] RewriteRule .* - [R=405,L]
- 限制重定向规则的作用范围:调整你现有HTTP转HTTPS的重定向规则,仅对GET、POST等常规业务请求方法生效,不对CONNECT等异常方法生效,避免给扫描器返回有效响应。
- 拉黑高频探测IP:对多次发送CONNECT请求的IP,直接通过AWS Lightsail防火墙或者Apache的
Deny from规则拉黑,减少无效资源消耗。
修改完配置后执行sudo /opt/bitnami/ctlscript.sh restart apache即可生效。
问题4:我如何自行发送CONNECT请求用于测试验证?
你可以直接用curl工具发送CONNECT请求做测试,命令示例如下:
# 测试请求外部域名的CONNECT请求,将地址替换为你服务器的公网IP/域名 curl -x http://www.mypersonaldomain.com:80 https://www.baidu.com -v # 测试请求自身域名的CONNECT请求 curl -x http://www.mypersonaldomain.com:80 https://www.mypersonaldomain.com -v
如果加固配置生效,上述请求会返回405或者403错误,不会正常建立隧道连接。
内容的提问来源于stack exchange,提问作者Gfour
相关产品推荐
相关产品推荐

