使用 Nginx 和 ModSecurity 时如何通过 DNS 解析远程主机名?

使用 Nginx 和 ModSecurity 时如何通过 DNS 解析远程主机名?

问题mod_security 与 OWASP CRS:将 googlebot 列入白名单的自定义规则提供以下规则作为验证客户端主机名的答案:

SecRule REMOTE_HOST “@rx google(bot|)\.com$” “id:50000,nolog,allow”

此规则旨在与 Apache 一起使用 ModSecurity,并且需要HostnameLookups On在 Apache 上配置指令。MODSECURITY 手册说:

远程主机
如果 Apache 指令 HostnameLookups 设置为 On,则此变量将保存通过 DNS 解析的远程主机名。如果指令设置为 Off,则此变量将保存远程 IP 地址(与 REMOTE_ADDR 相同)。此变量的可能用途包括拒绝已知的不良客户端主机或网络阻止,或者相反,允许授权主机进入。

当使用 Nginx 作为没有 Apache 的反向代理时,有没有办法REMOTE_HOST返回通过 DNS 解析的主机名?

答案1

远程 IP 地址已在 nginx 变量$remote_addr和 ModSecurity 变量中REMOTE_ADDR。参考手册说:

远程地址

此变量保存远程客户端的 IP 地址。

SecRule REMOTE_ADDR "@ipMatch 192.168.1.101" "id:35"

您应该REMOTE_ADDR在这里使用(可能 Apache 用户也应该使用)。

相关内容