Моніторинг USB-накопичувачів на Linux за допомогою Wazuh

Про моніторинг USB-накопичувачів

Моніторинг USB-накопичувачів є важливим для підтримки загальної безпеки системи та захисту від потенційних загроз, створених зовнішніми пристроями зберігання даних. Вони можуть служити потенційною точкою входу для шкідливого ПЗ і несанкціонованого доступу до інформації. Проводячи моніторинг USB-накопичувачів, це можна виявити та запобігти. Крім того, він допомагає забезпечити відповідність політикам і нормам безпеки, захистити чутливі дані та зменшити ризик їх витоку.

У блозі також є публікація про моніторинг USB-накопичувачів на Windows.

Wazuh, платформа SIEM і XDR, надає out-of-the-box правило для моніторингу USB-пристроїв на кінцевих точках Linux. Однак ці журнали обмежені та не містять достатньо інформації про подію, як видно на зображенні нижче. Використовуючи правила udev, можна отримати розширені журнали про події, пов’язані з USB.

Інфраструктура

  • Налаштована та готова для використання остання версія віртуальної машини Wazuh OVA, що містить основні компоненти рішення (сервер, indexer, дешборд).
  • Встановлена та зареєстрована на сервері Wazuh кінцева точка Ubuntu 22.04 LTS з агентом Wazuh.

Конфігурація

Потрібно налаштувати кінцеву точку Ubuntu для використання утиліти udev, яка може генерувати розширені журнали, коли USB-накопичувач підключено до кінцевої точки. Також треба налаштувати кастомні правила та список CDB (constant database, постійна база даних) на сервері Wazuh, дозволяючи йому ініціювати сповіщення, коли до кінцевої точки Ubuntu підключається неавторизований USB-пристрій.

Кінцева точка Ubuntu

Пристрої Linux поставляються з утилітою udev за замовчуванням. udev – це менеджер девайсів для ядра Linux, який динамічно керує вузлами пристроїв у каталозі /dev. Він відповідає за розпізнавання та конфігурацію девайсів під час їх підключення до системи або відключення від неї. Утиліта udev полегшує користувачам і програмам взаємодію з апаратними компонентами.

Потрібно створити правило udev, яке виявляє підключення USB-пристроїв до контрольованої кінцевої точки. Воно запускає скрипт, який записує деталі про подію у файл журналу, який агент Wazuh читає та пересилає на сервер Wazuh для аналізу.

Треба виконати наведені нижче дії, щоб створити правило та налаштувати агент Wazuh для збору журналів.

1) Створити файл з назвою usb_detect.sh у каталозі /var/ossec/bin/:

touch /var/ossec/bin/usb_detect.sh

2) Додати наступний скрипт до файлу /var/ossec/bin/usb_detect.sh:

#!/bin/bash

log_file="/var/log/usb_detect.json"
vendor="$ID_VENDOR"
model="$ID_MODEL"
serial="$ID_SERIAL_SHORT"
device="$DEVNAME"
devtype="$DEVTYPE"
hostname=$(hostname)

json="{\"hostname\":\"$hostname\",\"vendor\":\"$vendor\",\"model\":\"$model\",\"serial\":\"$serial\",\"device\":\"$device\",\"type\":\"$devtype\"}"

echo "$json" >> "$log_file"

Цей скрипт дозволяє утиліті udev збирати детальну інформацію про USB-пристрій, підключений до кінцевої точки. Він також записує журнал у JSON-файл /var/log/usb_detect.json, доступний для Wazuh.

3) Змінити дозвіл файлу, щоб цей скрипт не могли виконувати інші:

chmod 700 /var/ossec/bin/usb_detect.sh

4) Створити файл usb-detect.rules у каталозі /etc/udev/rules.d/:

touch /etc/udev/rules.d/usb-detect.rules

5) Додати наступне правило до файлу:

ACTION=="add", SUBSYSTEMS=="usb", RUN+="/var/ossec/bin/usb_detect.sh"

6) Виконати наведену нижче команду, щоб перезавантажити правила udev:

udevadm control --reload

7) Додати наступну конфігурацію до файлу агента Wazuh /var/ossec/etc/ossec.conf, щоб збирати журнали з файлу /var/log/usb_detect.json:

<ossec_config>
  <!-- Logcollector for udev USB detected Logs -->
  <localfile>   
    <log_format>json</log_format>
    <location>/var/log/usb_detect.json</location>
  </localfile>
</ossec_config>

8) Перезапустити агент Wazuh, щоб застосувати зміни:

systemctl restart wazuh-agent

Сервер Wazuh

На сервері Wazuh необхідно створити список CDB авторизованих USB-пристроїв. Крім того, треба створити кастомне правило для ініціювання сповіщення, коли неавторизований USB-пристрій підключається до контрольованої кінцевої точки.

Виявлення USB-накопичувачів

1) Додати наступне правило до файлу /var/ossec/etc/rules/local_rules.xml:

<!-- Rule for USB monitoring in Linux-->
<group name="Linux, usb,">
  <rule id="111010" level="7">
    <field name="serial">\w+</field>
    <field name="type">usb_device</field>
    <description>A PNP device $(vendor) $(model) was connected to $(hostname).</description>
  </rule>
</group>

Де:

Правило ID 111010 виявляє підключення USB-накопичувача до кінцевої точки Linux.

2) Перезапустити менеджер Wazuh, щоб застосувати зміни:

systemctl restart wazuh-manager

Підключення USB-пристрою до контрольованої кінцевої точки запускає правило, як показано нижче.

На зображенні нижче продемонстровано додаткові деталі про USB-пристрій, підключений до кінцевої точки Ubuntu, як-от серійний номер девайсу, який потрібен для створення білого списку схвалених пристроїв.

Фільтрування авторизованих і неавторизованих USB-накопичувачів

Щоб виявляти, коли неавторизовані USB-накопичувачі підключаються до контрольованої кінцевої точки, потрібно створити список CDB (constant database, постійна база даних). Він містить серійні номери авторизованих USB-накопичувачів, які потрібні для кастомних правил.

Для цього треба виконати наступні дії:

1) Створити список CDB usb-drives у каталозі /var/ossec/etc/lists/:

touch /var/ossec/etc/lists/usb-drives

2) Додати серійний (serial) номер із двокрапкою (:) до списку CDB:

4C530001260524115055:

3) Додати конфігурацію <list>etc/lists/usb-drives</list> до блоку <ruleset> файлу /var/ossec/etc/ossec.conf:

<ruleset>
  <!-- Default ruleset -->
  <decoder_dir>ruleset/decoders</decoder_dir>
  <rule_dir>ruleset/rules</rule_dir>
  <rule_exclude>0215-policy_rules.xml</rule_exclude>
  <list>etc/lists/audit-keys</list>
  <list>etc/lists/amazon/aws-eventnames</list>
  <list>etc/lists/security-eventchannel</list>

  <!-- User-defined ruleset -->
  <decoder_dir>etc/decoders</decoder_dir>
  <rule_dir>etc/rules</rule_dir>
  <list>etc/lists/usb-drives</list>
</ruleset>

4) Додати наступне правило до попередньо створеної групи Linux, usb у файлі /var/ossec/etc/rules/local_rules.xm:

<!-- Rule for USB monitoring in Linux-->
<group name="Linux, usb,">
  <rule id="111010" level="7">
    <field name="serial">\w+</field>
    <field name="type">usb_device</field>
    <description>A PNP device $(vendor) $(model) was connected to $(hostname).</description>
  </rule>

  <rule id="111011" level="8">
    <if_sid>111010</if_sid>
    <list field="serial" lookup="not_match_key">etc/lists/usb-drives</list>
  <description>Unauthorized PNP device $(vendor) $(model) was connected to $(hostname).</description>
  </rule>
</group>

Де:

Правило ID 111011 проводить огляд списку CDB, щоб виявити, чи є підключений USB-накопичувач авторизованим.

5) Перезапустити менеджер Wazuh, щоб застосувати зміни:

systemctl restart wazuh-manager

Тестування конфігурації

Перевірка проводиться шляхом підключення неавторизованого USB-пристрою до контрольованої кінцевої точки Ubuntu. Серійного номера девайса немає в списку CDB. Це запускає правило виявлення неавторизованого USB, як показано нижче.

Підписатися на новини