У меня есть программное обеспечение OSSEC HIDS версии 2.8.3, работающее на сервере RHEL 6. Мы тестировали это в лабораторных условиях с помощью DNS-сервера, чтобы отслеживать запросы, поступающие в наши зоны RPZ и вредоносного ПО. На DNS-сервере установлен агент OSSEC. Чтобы это сработало, нам пришлось использовать собственный письменный декодер. Есть ли у кого-нибудь еще опыт работы с OSSEC и кастомными декодерами, кроме тех, которые устанавливаются «из коробки». В основном я ищу творческие идеи о том, что другие системные администраторы делают с OSSEC, которые также могут быть полезны в нашей производственной среде.
Например, удалось ли кому-нибудь написать / использовать собственный декодер для обнаружения USB-накопителя для Linux?
ОБНОВЛЕНИЕ: я работал над настраиваемым декодером и правилом для определения того, когда 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>
iptables использует ядро так как program_name:
<decoder name="iptables">
<program_name>^kernel</program_name>
</decoder>
Мы можем использовать iptables как родитель (вместе с ядро). Также, мне бы поле используется для облегчения создания правил. Итак, вам понадобится этот декодер:
<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.
Я только что добавил в наш репозиторий наборов правил: Декодер и Правила.
Вы можете попробовать наш набор правил 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, думаю, было бы еще проще. У вас есть пример сообщения журнала? Скорее всего, вам нужно только создать для него правило.