OSSEC 在启动时发送电子邮件,但在停止时不发送。所以,如果有人能以某种方式访问服务器,他可以停止 OSSEC 并在我不知情的情况下为所欲为。还是我错过了什么?
在过去的几天里,这被证明是一种烦恼,我还没有找出根本原因。
在实验室中,我设置了两个虚拟机,一个 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 用作 sudo SIEM 的帖子,将日志从各种服务器发送到一个 OSSEC 服务器并使用相关性来触发警报。总体而言,该解决方案运行良好,但我最近出于负载平衡的原因不得不划分日志,所以现在我有了以下内容:
OSSEC 服务器
- /mnt/logs/unix1.log
- /mnt/logs/unix2.log
- /mnt/logs/unix3.log
- /mnt/logs/unix4.log
出于负载平衡的原因,每个日志文件都由不同的 syslog 服务器写入,并且总体上运行良好。但是,我遇到的问题是 OSSEC 可以单独针对每个日志文件运行关联规则,但是如果有 4 次登录失败并且它们恰好分布在 4 个日志文件中,则 OSSEC 只会在每个实例上看到 1,而不是来自 1 个用户的 4 次登录失败警报。
有没有办法让 OSSEC 将文件视为一个文件?我正在寻找其他解决方案,例如 gluster/cluster 文件系统,我可以在其中从多个服务器写入一个文件,从而解决问题。
我已经让 ossec 与默认 UDP:1514 的多个客户端/代理一起正常工作。但是,在将 tcp 添加到服务器的 ossec.conf 文件、删除并重新添加代理以及在所有计算机上重新启动 ossec 之后,代理日志显示他们无法联系服务器,可能是因为他们试图通过 UDP 这样做.
虽然ossec.conf的服务器文档显示了您可以指定 TCP 或 UDP 的协议选项,但 ossec.conf 的代理文档中没有这样的内容,所以我的问题是如何配置代理以也使用 TCP?
我们目前在 Windows 上运行了一些 ossec 代理,并实时监控激活的文件 - 在代理站点上具有以下配置:
<syscheck>
<!-- Frequency that syscheck is executed - default to every 2 hours -->
<frequency>7200</frequency>
<directories check_all="yes" realtime="yes">D:\path1</directories>
<directories check_all="yes" realtime="yes">D:\path2</directories>
<disabled>no</disabled>
<auto_ignore>no</auto_ignore>
</syscheck>
这基本上是可行的——除了实时报告文件的第一次编辑。同一文件的任何后续更改仅通过每 7200 秒的计划扫描报告一次,但在第一次编辑后不会触发实时通知。
如果我编辑另一个以前未触及的文件 - 它会在第一次更改时再次起作用,但之后不会。
是否有任何其他设置可以检查/更改/设置以可靠地获得文件更改通知?可以查看什么来确定问题?
这有点令人费解......非常感谢您的任何意见。
我在 RHEL 6 服务器上运行 OSSEC HIDS 软件版本 2.8.3。我们一直在实验室中使用 DNS 服务器对此进行测试,以跟踪进入我们的 RPZ 和恶意软件区域的查询。DNS 服务器已安装 OSSEC 代理。为了让它工作,我们必须使用一个定制的书面解码器。除了那些“开箱即用”安装的解码器之外,还有其他人对 OSSEC 和自定义解码器有任何经验吗?我主要是想获得关于其他系统管理员正在使用 OSSEC 做什么的创造性想法,这些想法在我们的生产环境中也可能有用。
例如,有没有人成功编写/使用自定义解码器来检测 Linux 的 USB 存储?
更新:我一直在研究自定义解码器和检测 USB 设备何时插入服务器的规则。这是我想要匹配的日志行:
Feb 3 10:23:08 testsys kernel: usb 1-1.2: New USB device found, idVendor=0781, idProduct=5575
我在 OSSCE 中的解码器规则:
<decoder name="usb-storage">
<program_name>kernel</program_name>
</decoder>
<decoder name="usb-storage-attached">
<parent>usb-storage</parent>
<regex offset="after_parent">^USB \S+: New</regex>
<order>extra_data</order>
</decoder>
我在 OSSEC 的规则:
<group name="syslog,">
<!-- USB Storage Detection Log Types -->
<!-- level=0 for not generating alerts by default -->
<rule id="310201" level="0">
<decoded_as>usb-storage</decoded_as>
<description>Looking for unknown USB attached storage</description>
</rule>
<!-- USB Storage Detection Event Chains -->
<!-- Fire an alert (level=8) if the log line contains "New USB device found" -->
<rule id="310202" level="8">
<if_sid>310201</if_sid>
<match>^New USB device found</match>
<description>Attached USB Storage</description>
</rule>
</group>
根据manage_clients的帮助文档:
-f 从文件批量生成客户端密钥。(仅限经理)。包含 IP,NAME 格式的行。
所以我尝试了这个:
root@ossec-server:/var/ossec/etc# /var/ossec/bin/manage_agents -f /tmp/agent
Bulk load file: /tmp/agent
Opening: [/tmp/agent]
Failed.: No such file or directory
2015/05/16 15:07:34 manage_agents(1103): ERROR: Unable to open file '/tmp/agent'.
即使拥有完全访问权限:
root@ossec-server:/var/ossec/etc# ls -l /tmp/agent
-rw-r--r-- 1 777 root 16 May 16 14:57 /tmp/agent
内容看起来不错:
root@ossec-server:/var/ossec/etc# cat /tmp/agent
127.0.0.1,agent
我不得不向我们的服务器添加另一个 IP 地址(eth0:1 192.168.0.100),突然 ossec 客户端停止工作。
在客户端我看到这个:2014/02/19 02:31:28 ossec-agentd: INFO: Trying to connect to server (server_ip:1514)。2014/02/19 02:31:28 ossec-agentd:信息:将 IPv4 用于:server_ip。2014/02/19 02:31:49 ossec-agentd(4101):警告:等待服务器回复(未启动)。试过:'server_ip'。
如何解决这个问题?很可能我必须在客户端指定源 ip 或源接口,但我不知道在哪里。
有人可以解释主动响应配置中的 ossec 代理如何检测或响应事件(例如,扫描网络服务器 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>
一段时间以来,我一直在使用 CSF 作为主防火墙和 LFD,并使用 OSSEC 作为主 IDS。(我喜欢 OSSEC 而不是 CSF 的过度反应内置 IDS)。
我测试了它的小型 DoS 攻击,例如 slowloris 变体和 synfloods。工作正常。Apache 使用 mod_security 和 mod_evasive 运行。工作正常。
在后端审计中,我正在观察我的密码文件是否有更改,我将 Clam AV 作为主 AV 与夜间运行的 LMD(linux 恶意软件检测)一起运行。LSM 正在监视所有守护进程的端口活动。
在服务器上运行的唯一可访问互联网的服务是 TOR 中继(非退出)、Apache 和 SSHD。
问题:为什么我应该使用 CSF 过滤来自我的服务器的传出流量?
除了管理允许哪些流量退出我的服务器外,我找不到任何优势。由于我没有其他用户使用我的服务器,黑客/破解者可以简单地使用任何开放的退出端口 22,80,443,9001,9030,9595 退出我的服务器;为什么要过滤它?
元:Centos 64b、LMD、审计、CSF、LFD、OSSEC HIDS、ClamAV、LSM
PS: 忘了说为什么提这个问题了:Clamd要定时更新,貌似不能设置出端口。