如何在K8s NGINX-ingress中禁用TRACE、OPTIONS及操作系统指纹识别?
Kubernetes NGINX Ingress 禁用TRACE/OPTIONS方法及操作系统指纹识别配置
一、禁用TRACE和OPTIONS HTTP方法
你之前写的opentracing off;是关闭OpenTracing追踪的指令,和禁用TRACE方法无关,正确配置如下:
全局生效(所有Ingress规则)
在Ingress Controller的ConfigMap中添加配置:
config: entries: server-snippets: | # 拦截TRACE请求并返回403 if ($request_method = TRACE) { return 403; } # 拦截OPTIONS请求并返回403(按需启用) if ($request_method = OPTIONS) { return 403; }
单个Ingress规则生效
如果仅需对特定Ingress禁用,直接在Ingress资源的annotations中配置:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-ingress annotations: nginx.ingress.kubernetes.io/server-snippets: | if ($request_method = TRACE) { return 403; } if ($request_method = OPTIONS) { return 403; } spec: rules: - host: demo.example.com http: paths: - path: / pathType: Prefix backend: service: name: demo-service port: number: 80
二、禁用操作系统指纹识别
可以在同一个server-snippets块中添加配置,减少指纹信息泄露:
config: entries: server-snippets: | # 禁用TRACE/OPTIONS方法 if ($request_method = TRACE) { return 403; } if ($request_method = OPTIONS) { return 403; } # 隐藏NGINX版本信息 server_tokens off; # 禁用ETag头(避免通过文件指纹推断系统信息) etag off; # 关闭客户端IP反向解析,减少暴露细节 resolver_timeout 5s;
验证配置
应用配置后,用curl命令验证效果:
# 测试TRACE方法是否被拦截 curl -X TRACE https://your-ingress-domain # 测试OPTIONS方法是否被拦截 curl -X OPTIONS https://your-ingress-domain # 检查响应头是否隐藏版本信息 curl -I https://your-ingress-domain
返回403则说明方法禁用生效,响应头无Server: nginx/x.x.x则说明版本信息隐藏成功。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

