SIEM exporter

Utilita pro automatické odlévání logů z aplikace TAS (zdroj ArangoDB).

Poznámky:

  • Každý log obsahuje _key, tak aby šlo dohledat log v TAS aplikaci přes rozhraní Aranga.
  • Logy neobsahují metadata, veškerá metadata zůstávají v Arango, možno dohledat viz bod 1
  • Datum logu bude zapsán ve formátu ISO 8601
  • Autentizační údaje k ArangoDB jsou čteny ze souboru tas-back/config/local.js, je zajištěna funkčnost při změně hesla/názvu kolekce
  • Utilita běží pomocí node prostředí

Zdrojový kód
  • GIT repozitář https://github.com/teamassistant/siem-export (node 20.4.0) (pouze interní přístup)

Build binárky

Binárka se vytvoří do složky /bin.

npm run build
npm run make

Instalace a konfigurace

  1. Stáhnout předvytvořenou utilitu:
  2. Rozbalit archiv

  1. Nakonfigurovat .env soubor
  2. Nastavit případnou filtraci logů
  3. Nastavit systémový kron - pravidelný běh

Konfigurace (default pro fs export)

Upravit soubor .env

SE_APP_LOGS_PATH= -> složka pro logy z aplikace siem, pokud neexistuje, použije se root binárky

SE_APP_CACHE_PATH= -> cesta pro soubor uchovávající informace o posledním běhu (např. poslední exportovaný log)

SE_TAS_CONFIG_PATH= -> cesta k souboru local.js (konfigurační soubor backendu TASu), ze kterého se čte arango konfigurace (může být podvrženo, ale musí zůstat struktura konfigu, jako z local.base.js).

SE_SIEM_LOGS_FOLDER= -> složka pro export logů (každý běh generuje samostatný soubor ve formátu YYYY-MM-DDTHH-mm-s.log)

SE_EXPORTED_APP_NAME= -> název exportované aplikace např. TAS_TEST

SE_EXPORTED_HOST_NAME= -> hostname serveru, default = os.hostname()

SE_TEMP_PATH= -> cesta k tmp, export logů jde do tmp a při hotové dávce se soubor přesouvá do SE_SIEM_LOGS_FOLDER

SE_TIMEZONE= -> IANA time zone canonical name

SE_DATE_FORMAT= -> 'dd-MM-yyyy HH:mm:ss'

PAGE_SIZE=200 -> velikost dávky čtení z aranga (omezení na velikost kurzoru a síťového přenosu)

Filtrace logů

  1. V root složce siem utility vytvořit soubor arangoFilter.json
  2. Zadat aql filter (dostupný je objekt row z kolekce logs, meta nejsou dostupné, ani nejsou exportované)

https://docs.arangodb.com/3.11/aql/high-level-operations/filter/

Příklad:

[
"FILTER row.level < 3",
]

Konfigurace pro syslog transport (nepovinné)

  • Pouze pro linux
  • Funkcionalita pro transport do systémových logů
  • Při zapnutém syslogu se logy neexportují do souboru
  1. V root složce siem utility vytvořit soubor syslog.json

https://github.com/paulgrove/node-syslog-client#readme

{
"testOnly": true,
"host": "127.0.0.1",
"config": {
"transport": 1, // 1=TCP, 2=UDP
"port": 514
}
}

Pro testOnly: true nedojde k transportu logů, ale pouze jedné testovací zprávy SIEM logger test message.. Syslog neposílá žádnou odpověď statusCode, tzn. je potřeba ověřit na serveru, po ověření průchopdnosti je možné pustit ostrý export.

Testování syslogu

version: '3'
services:
debian-server:
image: debian:latest
container_name: my-debian-server
ports:
- "8014:514"
command: tail -f /dev/null
  • sudo apt-get install rsyslog
  • editovat /etc/rsyslog.conf

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

Nastavení systémového kronu

  • Pro opakovaný běh siem utility
Windows

Vynucení odeslání logů opakovaně

Smazat nebo editovat soubor SE_APP_CACHE_PATH/cache.json. Ta obsahuje pole běžících dávek (posledních 30). Je možné podvrhnout poslední _key nebo umazat historii.

Příklad:

2022-11-19T05:20:45.494Z server01 TAS-TEST INFO 24266 Server lifted in C:\tas-back

[2022-11-19T05:20:45.494Z] -> datum/čas

server01 -> host

TAS-TEST -> aplikace

INFO -> severity (ERROR, WARN, INFO)

24266 -> _key, identifikátor řádku v Arango databázi

Server lifted in C:\tas-back -> Vlastní zpráva logu

Frantisek Brych Updated by Frantisek Brych

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)