AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 632162
Accepted
user2845840
user2845840
Asked: 2014-09-30 09:33:10 +0800 CST2014-09-30 09:33:10 +0800 CST 2014-09-30 09:33:10 +0800 CST

对 mod_security 日志的细粒度控制

  • 772

我在几十台服务器上安装了mod_security2(每台服务器都有几十个 VHost),没有时间为每个 VHost 配置它。在默认配置中,它会在日志文件中产生大量误报,所以我选择让它在DetectionOnly-mode 下运行(它不会阻止任何东西,但我仍然可以获得大多数黑客尝试的详细日志),但只有一个选择几个虚拟主机。

我对这个设置很满意,直到我发现一些服务器上的日志文件在不到 3 周的时间内增长到了几个 GB。我决定关闭生成大部分日志条目的少数 VHost 的日志记录。有几种不同的方法可以做到这一点,我最终决定使用非常具体的触发器制定新规则,这些触发器都有"nolog,phase:1,t:none,ctl:secAuditEngine=Off"作为动作。只要审计日志中的条目数量减少到可管理的水平,就可以成功。

但我仍然得到千兆字节的日志,因为我似乎无法阻止 mod_security2 写入错误日志。我尝试过SecDebugLogLevel 0,因为它是唯一与错误日志有关的配置指令(无论如何我都能找到),但无济于事。唯一似乎有帮助的是SecRuleEngine Off,它首先破坏了安装 mod_security2 的目的。

我错过了什么吗?无论我尝试什么,似乎我只能控制记录到审计日志的数量,而无法控制记录到错误日志的数量。

logging
  • 1 1 个回答
  • 319 Views

1 个回答

  • Voted
  1. Best Answer
    user2845840
    2014-10-07T03:14:54+08:002014-10-07T03:14:54+08:00

    经过大量的试验和错误后,我仍然没有一个完全令人满意的解决方案,但至少有一个解决方法。添加SecRemoveRuleById内部<Directory>-Blocks 可防止错误日志中的条目 - 但它似乎不适用于所有规则,仅适用于其中一些规则(例如,停用规则 id 960010 有效,但 960243 和 960257 无效)。当然,这只有在 Apache 能够确定目录路径时才有效——对于许多格式错误的请求和缺少关键信息的请求,Apache 不知道路径。

    通过定义表单的新规则来停用规则SecRule SERVER_NAME "^domain.tld$" "nolog,phase:1,t:none,id:100,ctl:ruleRemoveById=960010"也可以,但是必须在所有其他规则之前定义它们(因此在包含 CRS 规则之前)才能可靠地停用现有规则。据我所知 mod_security 按定义的顺序应用规则,因此在触发后停用 phase:1-rule 显然不会阻止已经发生的日志条目(在阶段 1 中停用 phase:2-rule 似乎总是工作,这是意料之中的)。在不改变定义顺序的情况下,我无法影响应用程序的顺序,这有点不方便。

    当然,我真正在寻找的解决方案是停用错误日志条目。为每个 VHost 找到频繁触发的规则 ID 并单独停用它们需要花费太多精力。10000 个 VHosts á 10 分钟的配置 -> 几乎一年的时间让它在每个 VHost 上工作。

    • 0

相关问题

  • IIS 6 - 仅记录某些目录

  • 什么是好的日志查看器,例如 apache、postfix、syslog?

  • 如何提供可搜索的 IRC 日志?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

  • Tomcat 6 HTTP 日志滚动和清除

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve