Інтеграція Wazuh+Mikrotik

Коли виникає потреба ми шукаємо різні шляхи реалізації.

Так сталося, що виникла потреба в зборі і аналізі логів з мережевого обладнання Mikrotik.

Оскільки я вже не перший рік (з 2018 року) використовую SIEM #wazuh — почав шукати рішення в цьому напрямку. В блозі Wazuh було знайдено відповідну статтю https://wazuh.com/blog/monitoring-network-devices/, але виявилося наступне:

Оскільки парк мікротів може бути різний я вніс зміни до rsyslog, де створив власний шаблон:

1
template(name="CustomLogFormat" type="string" string="%timegenerated% %FROMHOST-IP% %syslogtag%%msg%\n")

далі додав

1
if $fromhost-ip startswith 'ip mikrotik' then /var/log/mikrotik.log;CustomLogFormat & ~

Тепер в лог падає IP обладнання, що можна використовувати для побудови більш детальних дашбордів.

Після зміни лог набуває наступний вигляд

1
Jun 1 10:31:33 ххх.ххх.ххх.ххх user ххххххххх logged in from yyy.yyy.yyy.yyy via ssh

де:

ххх.ххх.ххх.ххх — srcip, ip адреса мережевого пристрою
ххххххххх — dstuser, логін користувача під яким коннект yyy.yyy.yyy.yyy — dstip, ip адреса з якої підключення

Переходимо до mikrotik_decoders.xml

Змінюємо наступне

1
2
3
4
5
<decoder name="mikrotik1">
 <parent>mikrotik</parent>
 <regex type="pcre2">\S+ (\w+ \d+ \d+:\d+:\d+) MikroTik user (\S+) (.*?) from (\d+.\d+.\d+.\d+) via (\w+)</regex>
 <order>logtimestamp, logged_user, action, ip_address, protocol</order>
</decoder>

замінити на

1
2
3
4
5
<decoder name="mikrotik1">
 <parent>mikrotik</parent>
 <regex type="pcre2">(\S+(.*?)\w+ \d+:\d+:\d+) (\d+.\d+.\d+.\d+) user (\S+) (.*?) from (\d+.\d+.\d+.\d+) via (\w+)</regex>
 <order>logtimestamp, month, srcip, dstuser, action, dstip, protocol</order>
</decoder>

додаємо невдалу спробу входу:

1
2
3
4
5
<decoder name="mikrotik2">
 <parent>mikrotik</parent>
 <regex type="pcre2">(\S+(.*?)\w+ \d+:\d+:\d+) (\d+.\d+.\d+.\d+) (.*?) for user (\S+) from (\d+.\d+.\d+.\d+) via (\w+)</regex>
 <order>logtimestamp, month, srcip, action, dstuser, dstip, protocol</order>
</decoder>

Переходимо до mikrotik_rules.xml, додаємо правило для невдалого входу

1
2
3
4
5
<rule id="110006" level="10">
 <if_sid>110000</if_sid>
 <match>login failure</match>
 <description>MikroTik login failure for $(dstuser) in from $(dstip) via $(protocol)</description>
 </rule>

Після збереження правил перейдемо до перезавантаження wazuh

1
systemctl restart wazuh-manager

Генеруємо невдалу спробу і отримуємо наступне:

PS: дану статтю надав дозвіл на публікування мій друг, та автор оригіналу – Medium

Залишити відповідь