GeoIP 转换可用于将 IPv4 地址转换为地址的相应国家/地区代码 (Country Code, CC) 或自治系统编号 (Autonomous System Number, ASN)。除了用于 GeoIP 转换的 IPv4 地址外,还支持 IPv6 地址。
WAF 功能的 ModSecurity (ModSec) 语言提供了两个新转换。
t:IPtoCountryCode
t:IPtoASNumber
用例示例
当 IP 不是来自美国时,阻止该 IP。
SecRule REMOTE_ADDR "!@streq US" "phase:1,id:1,t:IPtoCountryCode,deny,msg:'IP address is not from the US'"
当 IP 不是来自美国时,阻止该 IP(即使它通过美国代理也会被阻止)。
SecRule REMOTE_ADDR|REQUEST_HEADERS:X-Forwarded-For "!@streq US" "phase:1,id:2,t:IPtoCountryCode,deny,msg:'IP address is not from the US'"
如果 IP 来自
AS64496
,则阻止该 IP。SecRule REMOTE_ADDR|REQUEST_HEADERS:X-Forwarded-For "@streq 64496" "phase:1,id:3,t:IPtoASNumber,deny,msg:'IP address is from AS64496'"
与 DataScript 地理查找功能的关系
DataScript 函数 get_geo_from_ip 可以使用 avi.utils.get_geo_from_ip(IP, "COUNTRY")
从给定的 IP 获取国家/地区代码,或者使用 avi.utils.get_geo_from_ip(IP, "ASN")
从给定的 IP 获取 ASN。这将使用与 WAF 相同的数据和映射。
与 ModSecurity @geoLookup Operator 的关系
ModSecurity 包含 @geoLookup Operator 和 GEO 集合。出于多种原因,NSX Advanced Load Balancer 不支持此功能。例如,您有一个来自 ModSecurity 的 GEO 规则,如下所示:
# Configure geolocation database SecGeoLookupDb /path/to/GeoLiteCity.dat ... # Lookup IP address SecRule REMOTE_ADDR "@geoLookup" "phase:1,id:155,nolog,pass" # Block IP address when it is not from the US SecRule GEO:COUNTRY_CODE "!@streq US" "phase:1,id:156,deny,msg:'IP address is not from the US'"
可以使用新转换将其替换为以下规则:
SecRule REMOTE_ADDR "!@streq US" "phase:1,id:4,t:IPtoCountryCode,deny,msg:'IP address is not from the US'"
客户端 IP 受选项 Use_True_Client_IP 的限制。客户端 IP 可能为 L3 标头中的源 IP,也可能为从用户定义的 HTTP 标头中获取的 IP。有关更多信息,请参阅《VMware NSX Advanced Load Balancer 配置指南》中的“L7 安全功能中的真正的客户端 IP”主题。
注意事项
- 其他内存要求
-
仅当配置了额外的共享内存时,转换表才会加载到内存中。有关额外内存要求的更多信息和配置详细信息,请参阅《VMware NSX Advanced Load Balancer 配置指南》中的“额外共享内存”主题。