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 / 问题 / 877991
Accepted
dark_st3alth
dark_st3alth
Asked: 2017-10-08 22:27:40 +0800 CST2017-10-08 22:27:40 +0800 CST 2017-10-08 22:27:40 +0800 CST

OSSEC Windows 代理无法同步配置

  • 772

在过去的几天里,这被证明是一种烦恼,我还没有找出根本原因。

在实验室中,我设置了两个虚拟机,一个 OSSEC Server Appliance 和一个 Windows 7 x64 Enterprise SP1 客户端。

当他们做自己的事情时,两者似乎都工作得很好。如果我在 Windows 客户端上有一个扩展的配置文件,代理会读取它并执行所需的操作。

当我尝试将配置集中到“管理器”或 OSSEC 服务器设备时,问题就出现了。

[root@ossec etc]# md5sum /var/ossec/etc/shared/agent.conf
9cc4c937f4eae011ecbccf4468973133  /var/ossec/etc/shared/agent.conf
[root@ossec etc]# /var/ossec/bin/agent_control -i 004

OSSEC HIDS agent_control. Agent information:
   Agent ID:   004
   Agent Name: ABC
   IP address: 192.168.0.93
   Status:     Active

   Operating system:    Microsoft Windows 7 Enterprise Edition Professional ..
   Client version:      OSSEC HIDS v2.9.0 / cd66e10fca4cc1dc4c459a1f05f9b2d1
   Last keep alive:     Sat Oct  7 22:52:09 2017

   Syscheck last started  at: Sat Oct  7 21:35:12 2017
   Rootcheck last started at: Sat Oct  7 22:27:19 2017
[root@ossec etc]# 

毫不奇怪,配置不是同一版本。

什么应该是重新启动设备和 Windows 代理(并等待几分钟)的简单解决方法,但事实并非如此。

通过阅读文档,我了解到代理将尝试合并集中配置:

<agent_config name="ABC">
    <localfile>
        <location>/var/log/my.log2</location>
        <log_format>syslog2</log_format>
    </localfile>
</agent_config>


<agent_config os="Linux">
    <localfile>
        <location>/var/log/my.log2</location>
        <log_format>syslog</log_format>
    </localfile>
</agent_config>


<agent_config os="Windows">
 <!-- This is a test config -->

  <!-- One entry for each file/Event log to monitor. -->
  <localfile>
    <location>Application</location>
    <log_format>eventlog</log_format>
  </localfile>

  <!-- Additional contents are in here. -->

  <active-response>
    <disabled>no</disabled>
  </active-response>

</agent_config>

用一个在本地。这是代理的配置(ossec.conf):

<ossec_config>
  <active-response>
    <disabled>no</disabled>
  </active-response>
  <client>
        <server-ip>192.168.0.21</server-ip>
        <notify_time>120</notify_time>
        <time-reconnect>240</time-reconnect>
  </client>
</ossec_config>

以及代理上共享文件夹中的 agent.conf 文件:

<agent_config>
    <localfile>
        <location>/var/log/my.log</location>
        <log_format>syslog</log_format>
    </localfile>
</agent_config>

我可以从日志中看到,合并没有发生,它正在运行本地副本:

2017/10/08 00:06:52 ossec-agentd: INFO: Trying to connect to server 192.168.0.21, port 1514.
2017/10/08 00:06:52 INFO: Connected to 192.168.0.21 at address 192.168.0.21:1514, port 1514
2017/10/08 00:06:52 ossec-agent: Starting syscheckd thread.
2017/10/08 00:06:52 ossec-syscheckd(1702): INFO: No directory provided for syscheck to monitor.
2017/10/08 00:06:52 ossec-syscheckd: WARN: Syscheck disabled.
2017/10/08 00:06:52 ossec-rootcheck: INFO: Started (pid: 2512).
2017/10/08 00:06:52 ossec-syscheckd: INFO: Started (pid: 2512).
2017/10/08 00:06:53 ossec-agentd(4102): INFO: Connected to server 192.168.0.21, port 1514.
2017/10/08 00:06:53 ossec-agent: INFO: System is Vista or newer (Microsoft Windows 7 Enterprise Edition Professional Service Pack 1 (Build 7601) - OSSEC HIDS v2.9.0).
2017/10/08 00:06:53 ossec-logcollector(1103): ERROR: Could not open file '/var/log/my.log' due to [(9)-(Bad file descriptor)].
2017/10/08 00:06:53 ossec-logcollector(1950): INFO: Analyzing file: '/var/log/my.log'.

最后,似乎不是代理/经理无法:

  • 相互连接。
  • 解析配置文件。
  • 来回发送数据(触发规则)。
  • 验证它使用的是哪个版本的配置文件。
  • 合并配置(我在代理上定期看到一个 0KB 的 merge.mg 文件)。

我是否未能在设备/管理器上设置选项,还是其他地方的问题?

ossec
  • 1 1 个回答
  • 2784 Views

1 个回答

  • Voted
  1. Best Answer
    dark_st3alth
    2017-10-21T00:46:43+08:002017-10-21T00:46:43+08:00

    所以在没有成功之后security.stackexchange.com,问题就迁移到了这里。多花几天时间,我找到了“解决方案”。

    您可以将其归结为:找到另一个 HIDS 解决方案。

    在尝试了很多事情之后,我得出了这个结论:

    • 直接从项目网站 (2.8.3) 运行 OVA
    • 更新/升级了 OSSEC 项目网站上提供的 OVA。
    • 在全新安装的 CentOS 7 上安装 OSSEC 服务器/管理器。
    • 使用 CentOS 7 的“服务器 GUI”和“最小”安装安装服务器。
    • 尝试更新 Windows 7 客户端 VM。
    • 使用其他新的基于 Windows 的 VM。
    • 更改端口、防火墙规则和静态 IP 地址。
    • 禁用服务器和客户端上的防火墙。
    • 通过注册表增加 Windows 客户端中的 UDP 缓冲区。
    • 禁用 SELinux(许可模式激活)。
    • 验证服务器上列出了代理并重新启动以检测更改。
    • 从 RPM 源安装服务器
    • 从源代码编译和安装。
    • 尝试了 Windows 代理版本 2.9.0 和 2.9.2。

    为了得到一些合理的安装,至少工作(有点),我遵循了这些步骤:

    1. 引导服务器到 CentOS 7 安装介质。
    2. 选择最小安装
    3. 连接到您的网络,最好使用静态 IP。
    4. 安装后,以root身份登录。
    5. 打开防火墙firewall-cmd --permanent --zone=public --add-port=1514/udp
    6. 提交更改firewall-cmd --reload
    7. 安装一些额外的yum install mysql-devel postgresql-devel gcc wget vim
    8. 获取源代码wget https://github.com/ossec/ossec-hids/archive/2.9.2.tar.gz
    9. 解压代码tar -zxvf 2.9.2.tar.gz
    10. 进入新目录cd ossec-hids-2.9.2
    11. 运行安装程序./install.sh
    12. 选择server安装类型。
    13. 现在配置,除了将电子邮件设置为 no 之外,我默认了所有选项。
    14. 设置客户端的配置/var/ossec/bin/manage_agents
    15. 通过配置新的集中式配置文件vim /var/ossec/etc/shared/agent.conf
    16. 启动服务器/var/ossec/bin/ossec-control start
    17. 使用最新版本 (2.9.2) 安装 Windows 客户端。

    很棒的是,在花费了数小时后,我所有的工作都被浪费了。我找到了如何将 Windows 客户端设置为调试级别 2,并发现了以下消息:

    2017/10/20 02:13:40 ossec-agentd: Failed md5 for: shared/merged.mg -- deleting.
    

    事实证明,没有在“正常”日志级别引发配置的关键合并失败(严重!?)的警告。

    服务器在重新启动服务器和客户端(尝试 #2 到 #14)后无法检索客户端配置的 md5 哈希,这让我印象深刻。

    在使用 OVA 的一次运行(尝试 #1)中,服务器能够获取客户端的配置 md5,但它与服务器的不匹配。你可以在我原来的问题中看到这一点。我认为从代理发送的 md5 是因为我在代理上的 conf 目录中添加了一些额外的文件(主要是 agent.conf)。

    在纯粹的烦恼中,我转向互联网,找到了 OSSEC 的 Google Group 讨论。阅读完整的消息链后,很明显OSSEC 存在严重缺陷:

    正如我在恕我直言之前所说,这个问题会影响 Windows 和 UNIX 代理,但它在 Windows 中更常见,因为默认缓冲区更短。我们在私有 VirtualBox 网络上的 Windows 代理遇到了这个问题:共享文件没有到达。启用调试后,我们看到了以下消息:

    ossec-agent: Failed md5 for: merged.mg -- deleting.
    

    所以我们做了这个测试:我们修改了源代码,防止文件被损坏,但不会被删除,并将接收到的文件与原始文件进行比较:文件确实丢失了一些块,不是行尾问题。

    由于 UDP 协议以及任何其他代理事件或控制消息,共享文件块可能会丢失。事实上,使用 TCP 似乎是解决这个问题的好方法。一年前,我们从 1.1 版本开始在 Wazuh 中实现了 TCP 通信,我们取得了一些优势:

    No event losing. Communication is reliable for events, control messages and Active response requests.
    Agents detect that a manager is down immediately, so they are able to "lock" the transmission in order to prevent events from being dropped.
    

    具有 TCP 连接的代理在许多使用 Linux、Windows、OpenBSD、macOS、AIX 等的系统中都可以正常工作。

    这不是我期望读到的。最让我担心的是 OSSEC 基础设施可能会因为丢包而瘫痪。更令人担忧的是,在正常的日志级别,合并配置失败甚至不会出现。

    虽然我只测试过 Windows 代理,但我毫不怀疑 Linux 代理可以正常工作。也许在未来 OSSEC 会转向 TCP 连接,但目前,OSSEC 缺少一个关键的功能。

    tldr; 它归结为(至少在我看来)是糟糕的软件测试/质量保证。我从Google Group 讨论中发现UDP 连接会导致问题,并且对数据传输的验证有限。由于管理器的配置在传输过程中损坏,客户端拒绝合并它。这似乎只发生在 Windows 客户端上。

    • 0

相关问题

  • ossec 实时文件监控仅报告第一次更改,但完全更改仅由计划的后续扫描报告

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