我们正在考虑将 CloudFlare 部署为网站的 WAF。其中一个要求是限制北美以外的地区访问该网站。幸运的是,CloudFlare 支持 GeoLocation,并使用位置标头标记对原始服务器的请求。
但是现在我需要弄清楚如何将国家列入白名单。理想情况下,我希望指定CA
和US
或任何内容作为允许的值,并拒绝其他所有内容,但在 IIS 中,它似乎仅支持黑名单。
有没有办法仅在 IIS 中执行此操作,或者是否有人知道可以执行此操作的第三方模块?
答案1
您可以使用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>