modsecurity仅允许1个国家/地区

时间:2017-12-15 15:40:00

标签: mod-security2

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

1 个答案:

答案 0 :(得分: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"