有人可以解释一下 ossec 代理在主动响应配置中如何检测或响应事件(例如,对 Web 服务器 404 状态代码的扫描尝试)。
我知道服务器端的以下 xml 块会触发代理端的响应。但所有规则都保存在 /root 目录中,而不是代理的通常安装目录中。除了监控 apache 访问日志外,它没有脚本或正则表达式来告诉我们要检查什么状态代码。
这是使用 udp 端口 1514 在客户端和服务器之间动态共享的东西吗?请帮助我理解它。
!-- Active response to block http scanning -->
<active-response>
<command>route-null</command>
<location>local</location>
<!-- Multiple web server 400 error codes from same source IP -->
<rules_id>31151</rules_id>
<timeout>600</timeout>
</active-response>
答案1
这正是 Ossec 的工作方式。引用Ossec 文档:
OSSEC 由多个部分组成。它有一个中央管理器,负责监控一切,并从代理、系统日志、数据库和无代理设备接收信息。
因此,Ossec 代理在某种程度上是“愚蠢的”,它们无法自行决定阻止/解除阻止。它们将来自指定日志源(在 中定义etc/shared/agent.conf
)的所有数据提供给管理服务器(在 中定义etc/ossec.conf
)。管理服务器解析日志条目并根据 下定义的规则采取行动rules/
,如果需要,命令代理采取预定义的操作(通常是阻止/解除阻止 IP 地址)。
要监控 ossec 管理服务器日志解析,您可以执行以下示例tail -f logs/alerts/alerts.log
。
rules/local_rules.xml
如果您希望忽略 http 日志中的所有 400 错误,您可以在 Ossec 服务器上添加以下内容。
<rule id="100010" level="2">
<if_sid>31151</if_sid>
<description>Don't care about 400 errors</description>
</rule>
您应该始终在文件中进行自定义local_rules.xml
,并保留提供的解码器(例如web_rules.xml
)。您还应该将本地规则的规则 ID 保持在 100000-119999 之间,因为它们是专门为此用途保留的。