modsecurity 只允许 1 个国家

modsecurity allow 1 country only

我目前在我的网络服务器上使用以下 modsecurity 配置来阻止国家:

SecGeoLookupDb GeoIP.dat
SecRule REMOTE_ADDR "@geoLookup" "chain,id:1,deny,msg:'Block IN'"
SecRule GEO:COUNTRY_CODE "@streq IN"

现在对于一个新项目,我希望只允许某些国家/地区。这可以使用阻止所有流量的默认规则和类似以下内容以允许某个国家/地区来完成吗?

SecGeoLookupDb GeoIP.dat
SecRule REMOTE_ADDR "@geoLookup" "chain,id:1,pass,msg:'Block IN'"
SecRule GEO:COUNTRY_CODE "@streq IN"

是的,可以。或者你可以在一个链式规则中使用这样的东西来做到这一点:

SecGeoLookupDb /usr/local/geo/data/GeoLiteCity.dat
...
SecRule REMOTE_ADDR "@geoLookup" "chain,id:22,drop,msg:'Non-GB IP address'"
SecRule GEO:COUNTRY_CODE "!@streq GB"

这将只允许 GB。

此示例取自文档:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#GEO

或者要允许多个国家/地区,请尝试使用 @pm 运算符:

SecRule REMOTE_ADDR "@geoLookup" "chain,id:22,drop,msg:'Non-GB or IE IP address'"
SecRule GEO:COUNTRY_CODE "!@pm GB IE"