elkserver/docker/redelk-base/redelkinstalldata/scripts/config.py (72 lines of code) (raw):

#!/usr/bin/python3 # -*- coding: utf-8 -*- """ Part of RedELK Script to load the config file Authors: - Outflank B.V. / Mark Bergman (@xychix) - Lorenzo Bernardi (@fastlorenzo) """ import json import logging with open("/etc/redelk/config.json", encoding="utf-8") as json_data: # pylint: disable=invalid-name data = json.load(json_data) # -- logging # CRITICAL, 50 # ERROR, 40 # WARNING, 30 # INFO, 20 # DEBUG, 10 # NOTSET, 0 LOGLEVEL = logging.WARN if "loglevel" in data: LOGLEVEL = data["loglevel"] # -- directory for cache files (including shelves) TEMP_DIR = "/tmp" if "tempDir" in data: TEMP_DIR = data["tempDir"] # -- Notifications # pylint: disable=invalid-name notifications = { "email": { "enabled": False, "smtp": {"host": "localhost", "port": 25, "login": "", "pass": ""}, "from": "", "to": [], }, "msteams": {"enabled": False, "webhook_url": ""}, "slack": {"enabled": False, "webhook_url": ""}, } if "notifications" in data: for n in data["notifications"]: notifications[n] = data["notifications"][n] # -- Alarms # pylint: disable=invalid-name alarms = { "alarm_filehash": { "enabled": False, "interval": 300, # Virustotal API "vt_api_key": "", # IBM X-Force API (can be retreived from a sample call on their swagger test site) "ibm_basic_auth": "", # Hybrid Analysis API "ha_api_key": "", }, "alarm_httptraffic": { "enabled": False, "interval": 310, "notify_interval": 86400, # Only notify on the same IP hit every 24h by default }, "alarm_useragent": {"enabled": False, "interval": 320}, "alarm_dummy": {"enabled": False, "interval": 300}, "alarm_manual": {"enabled": False, "interval": 300}, "alarm_backendalarm": {"enabled": False, "interval": 320}, } if "alarms" in data: for a in data["alarms"]: alarms[a] = data["alarms"][a] # -- Enrichments modules # pylint: disable=invalid-name enrich = { "enrich_csbeacon": {"enabled": True, "interval": 300}, "enrich_stage1": {"enabled": True, "interval": 300}, 'enrich_sliver': {"enabled": True, 'interval': 300}, "enrich_greynoise": { "enabled": True, "interval": 310, "cache": 86400, # Only query for the same IP hit every 24h by default # Greynoise Community API Key - Default RedELK key if none provided "api_key": "cEwJeLyDkNSXzabKNvzJSzZjZW0xEJYSYvf2nfhmmaXQHfCA8bJb49AvI3DF5Tlx", }, "enrich_tor": {"enabled": True, "interval": 320, "cache": 3600}, "enrich_iplists": {"enabled": True, "interval": 330}, "enrich_synciplists": {"enabled": True, "interval": 360}, "enrich_syncdomainslists": {"enabled": True, "interval": 355}, "enrich_domainscategorization": { "enabled": True, "interval": 345, # IBM X-Force API (can be retreived from a sample call on their swagger test site) "ibm_basic_auth": "", # Virustotal API "vt_api_key": "", }, } if "enrich" in data: for e in data["enrich"]: enrich[e] = data["enrich"][e] # pylint: disable=invalid-name es_connection = ["http://localhost:9200"] if "es_connection" in data: es_connection = data["es_connection"] project_name = data["project_name"] if "project_name" in data else "redelk-project"