Apache正向代理配合ACL的核心是限制授权客户端访问以防止滥用,需启用ProxyRequests并用<Proxy *>块结合Require指令配置IP、域名等细粒度访问控制,同时禁用高危端口和协议,并通过日志验证ACL生效。

Apache 正向代理配合 ACL(访问控制列表)的核心,是让代理只对授权客户端开放,防止被滥用为开放代理。配置关键不在“能不能代理”,而在“谁可以代理”——ACL 就是干这个的。
启用正向代理模块并开启 ProxyRequests
Apache 默认不启用正向代理功能,必须显式打开:
在 httpd.conf 或站点配置中加入:
LoadModule proxy_module modules/mod_proxy.so-
LoadModule proxy_http_module modules/mod_proxy_http.so(若需 HTTPS 代理,还需mod_ssl和proxy_connect) -
ProxyRequests On—— 这是正向代理开关,缺它不行 -
ProxyVia On(可选,用于记录代理链路,便于审计)
用 <proxy></proxy> 段定义访问范围
ACL 控制就写在这里,不是靠全局 IP 白名单,而是通过 <proxy></proxy> 块 + Require 指令实现细粒度限制:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 只允许内网某网段使用:
<Proxy *><br> Require ip 192.168.10.0/24<br></Proxy>
- 只允许特定几个 IP:
Require ip 192.168.10.5 192.168.10.8 10.0.2.100 - 结合域名或主机名(需 DNS 可解析):
Require host client1.example.com client2.internal - 禁用所有未明确允许的请求(安全必需):
Require all denied放在最后兜底
禁止代理高危端口与协议(防御滥用)
开放正向代理后,攻击者可能尝试 CONNECT 到 SMTP、SSH、数据库端口。建议用 ProxyRemote 或 ProxyBlock 加强防护:
- 禁用 CONNECT 方法到非标准端口:
ProxyBlock 25 465 587 22 3306 5432 - 或更严格地限制 CONNECT 目标:
ProxyBadHeader Ignore+ 配合 mod_security 规则拦截异常 CONNECT 请求 - 如需支持 HTTPS 代理,确保
mod_proxy_connect已加载,并仅对可信目标放行
验证与日志辅助排查
ACL 生效后,未授权请求会返回 403 Forbidden;确认是否生效,可查 Apache 错误日志:tail -f /var/log/httpd/error_log
常见提示如 client denied by server configuration 即表示 ACL 触发。
同时建议开启访问日志记录代理行为:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Forwarded-For}i\"" proxy<br>CustomLog logs/proxy_access.log proxy

















