我试图在启用了 modsecurity 的 nginx 入口控制器上阻止一个国家,但仍然没有成功。我的配置是:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/modsecurity-snippet: |
SecRuleEngine On
SeqRequestBodyAccess On
SecAuditEngine On
SecAuditLogParts ABIJDEFHZ
SecAuditLog /var/log/modsec_audit.log
SecGeoLookupDb /etc/nginx/geoip/GeoIP.dat
SecRule REMOTE_ADDR "@geoLookup" "chain,id:22,drop,msg:WrongIP"
SecRule GEO:COUNTRY_CODE "@streq GR"
nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0
当我尝试使用curl 访问URL 时,我得到的是HTTP 200 而不是HTTP 403。
首先验证您的解决方案是否有效:
尝试改变您的状况:
"@streq GR"
至:
"!@streq GR"
并再次测试。如果您的规则确实有效,那么您得到的结果应该翻转:200 到 403 或 403 到 200。