在 ModSecurity/Coraza 中混合逻辑 OR 和 AND

问题描述 投票:0回答:1

在 ModSecurity 中(我实际上使用的是 Coraza,但它应该是相同的东西),我如何混合逻辑 OR 和 AND?例如,我想要一个规则,如果源 IP 与 CIDR 范围列表匹配并且与主机标头列表匹配,则拒绝请求。这相当于:

if (srcIp in ['3.4.5.0/24', '2.3.4.0/24']) AND (host in ['foo.com', 'bar.com'])
  deny

我可以通过链接来实现AND。对于 IP 地址,这有效:

SecRule REQUEST_HEADERS:X-Forwarded-For "@ipMatch 3.4.5.0/24,2.3.4.0/24" "id:9,phase:1,chain"

但是如何在一条规则中匹配多个主机呢?

我试过了

SecRule REQUEST_HEADERS:Host "@pm bar.com baz.com" "id:10,phase:1,deny"

但这也与

abar.com
bar.coma

匹配

每个主机的多个链式规则被视为 AND。

mod-security
1个回答
0
投票

@within
运算符与值列表匹配:

SecRule REQUEST_HEADERS:Host "@within bar.com,baz.com" "id:10,phase:1,deny"
© www.soinside.com 2019 - 2024. All rights reserved.