我在 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>
答案1
iptables正在使用核心作为程序名称:
<decoder name="iptables">
<program_name>^kernel</program_name>
</decoder>
我们可以用iptables作为父母(而不是核心)。 还,ID字段用于方便创建规则。因此,你需要这个解码器:
<decoder name="usb-storage-attached">
<parent>iptables</parent>
<regex offset="after_parent">^(usb) </regex>
<order>id</order>
</decoder>
规则可以是:
<rule id="310201" level="0">
<decoded_as>iptables</decoded_as>
<id>usb</id>
<description>USB messages grouped.</description>
</rule>
<rule id="310202" level="1">
<if_sid>310201</if_sid>
<match>New USB device found</match>
<description>Attached USB Storage</description>
</rule>
现在,您可以将规则 310201 用于与 USB 相关的所有内容。规则 310202 就是您想要的规则:
Feb 3 10:23:08 testsys kernel: usb 1-1.2: New USB device found, idVendor=0781, idProduct=5575
**Phase 1: Completed pre-decoding.
full event: 'Feb 3 10:23:08 testsys kernel: usb 1-1.2: New USB device found, idVendor=0781, idProduct=5575'
hostname: 'testsys'
program_name: 'kernel'
log: 'usb 1-1.2: New USB device found, idVendor=0781, idProduct=5575'
**Phase 2: Completed decoding.
decoder: 'iptables'
id: 'usb'
**Phase 3: Completed filtering (rules).
Rule id: '310202'
Level: '1'
Description: 'Attached USB Storage'
**Alert to be generated.
答案2
您可以尝试我们的 OSSEC 规则集。它会定期更新新的解码器和规则。
在这里能找到它:
https://github.com/wazuh/ossec-rules
说明如下(包括自动运行更新的脚本):
http://documentation.wazuh.com/en/latest/ossec_ruleset.html
关于 USB 存储检测,我已经在 Windows 上完成了,配置如下:
<localfile>
<frequency>10</frequency>
<log_format>full_command</log_format>
<command>reg QUERY HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR</command>
</localfile>
规则如下:
<rule id="140125" level="7">
<if_sid>530</if_sid>
<match>ossec: output: 'reg QUERY</match>
<check_diff />
<description>New USB device connected</description>
</rule>
对于 Linux,我认为这会更容易。您有日志消息的示例吗?很可能您只需要为其创建规则。