我们正在考虑将CloudFlare部署为我们网站的WAF。 其中一个要求是我们限制从北美以外的网站访问。 幸运的是,CloudFlare支持GeoLocation,并使用位置标头将请求标记到源服务器。
但是,现在我需要弄清楚如何列入白名单的国家。 理想情况下,我想指定CA和US或其他什么作为允许的值,并拒绝一切,但在IIS中,它似乎只支持黑名单。
有没有办法做到这一点在IIS中,或者是否有人知道这样做的第三部分模块?
您可以使用IIS重写模块 。
使用规则来匹配所有URL,并使用条件来检查CloudFlare注入的http头,检查国家/地区值并拒绝所有不是来自美国或加拿大的请求。
示例规则是这样的:
<rewrite> <rules> <rule name="RequestBlockingRule1" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{HTTP_CF_IPCOUNTRY}" pattern="^CA|US$" negate="true" /> </conditions> <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="Using this site from your location is not supported." /> </rule> </rules> </rewrite>
CF-IPCountry将成为CloudFlare注入头的名称。