Nginx正向代理需严格管控:仅允许可信IP、限制CONNECT端口(如443/993/995)、强制auth_basic认证、记录完整审计日志。禁用公网暴露、高危端口及伪认证,配置后必须外部验证。
Nginx 默认不支持正向代理,需通过第三方模块(如
)或非标准方式(如 HTTP CONNECT + 代理转发)实现。一旦开启,若未严格限制,极易被用作开放代理,成为恶意流量跳板、扫描中转或垃圾邮件网关。核心防御思路是:只允许可信客户端、仅放行合法协议与端口、强制身份校验、记录可追溯行为。
严格限定客户端访问来源
正向代理必须关闭公网裸露,仅允许内网或指定 IP 段发起请求:
在 server 块中使用
/
明确白名单,例如:
避免使用
或留空规则;若需办公网多出口,建议结合 GeoIP 或上游网关统一做源认证,而非在 Nginx 层放宽限制
注意:Nginx 的
配置需正确设置,防止伪造
绕过 IP 限制
限制 CONNECT 方法与目标端口
正向代理主要依赖 HTTP CONNECT 建立隧道,攻击者常借此连接任意端口(如 25、445、3389)。应只放行业务必需端口:
启用
后,配置:
禁止开放 25(SMTP)、22(SSH)、1433(MSSQL)等高危端口
对非 CONNECT 请求(如 GET/POST),直接返回 405 错误,避免被误用为反向代理或缓存服务
若无需 HTTPS 代理,可直接禁用 CONNECT:在 location 中添加
强制基础身份验证
即使内网使用,也应启用简单但有效的认证机制,杜绝横向滥用:
使用 Nginx 内置的
,配合
(推荐用
生成 bcrypt 加密用户):
避免明文存储密码;定期轮换账号,按角色分组(如 dev/prod),不同团队使用独立凭证
不建议仅靠 IP+Referer 或 User-Agent 做“伪认证”,这些字段极易伪造
启用日志审计与异常监控
完整记录代理行为,是事后追溯和主动发现异常的关键:
自定义 log_format,至少包含:客户端 IP、用户名($remote_user)、目标域名(从 CONNECT 请求头提取)、目标端口、响应状态、耗时:
将日志单独写入文件(如
),并配合 logrotate 防止磁盘占满
部署轻量级分析(如 goaccess、awk + grep)每日检查高频目标域名、非常规端口请求、认证失败暴破行为
正向代理不是常规 Web 服务,它的安全边界更接近防火墙策略。每一条 allow 规则、每一个开放端口、每一次认证绕过,都可能成为入侵链路的一环。配置完成后务必用 curl 或专用工具(如
)从外部验证是否仍可被未授权调用。
ngx_http_proxy_connect_moduleallowdenyallow 192.168.10.0/24;
allow 10.0.5.100;
deny all;allow allreal_ipX-Forwarded-Forngx_http_proxy_connect_moduleproxy_connect_allow 443 993 995;
proxy_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;if ($request_method !~ ^(CONNECT)$) { return 405; }auth_basicauth_basic_user_filehtpasswdauth_basic "Restricted Proxy Access";
auth_basic_user_file /etc/nginx/.proxy_users;log_format proxy_log '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_host" $request_time';access_log /var/log/nginx/proxy_access.log proxy_log;proxycheck