我试图在启用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。