GeoIP 转换可用于将 IPv4 地址转换为地址的相应国家/地区代码 (Country Code, CC) 或自治系统编号 (Autonomous System Number, ASN)。除了用于 GeoIP 转换的 IPv4 地址外,还支持 IPv6 地址。

WAF 功能的 ModSecurity (ModSec) 语言提供了两个新转换。

  • t:IPtoCountryCode

  • t:IPtoASNumber

用例示例

  1. 当 IP 不是来自美国时,阻止该 IP。

     SecRule REMOTE_ADDR "!@streq US" "phase:1,id:1,t:IPtoCountryCode,deny,msg:'IP address is not from the US'"
    
  2. 当 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'"
    
  3. 如果 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 配置指南》中的“额外共享内存”主题。