1

我目前在我的网络服务器上使用以下 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"
4

1 回答 1

1

是的,它可以。或者,您可以使用以下方法在一个链式规则中执行此操作:

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"
于 2017-12-15T19:40:12.373 回答