使用 nginx 入口控制器和 modsecurity 通过 geoip 封锁国家/地区

问题描述 投票:0回答:1

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

kubernetes-ingress nginx-ingress mod-security
1个回答
0
投票

首先验证您的解决方案是否有效:

尝试改变您的状况:

"@streq GR"

至:

"!@streq GR"

并再次测试。如果您的规则确实有效,那么您得到的结果应该翻转:200 到 403 或 403 到 200。

© www.soinside.com 2019 - 2024. All rights reserved.