Skip to main content

Configuration utility for the StrIEM open-source SIEM

Project description

StrIEM

🚀 A powerful open-source SIEM and security data pipeline management toolkit

Overview

StrIEM is an open-source SIEM system that leverages modern data engineering tools and open standards to provide security monitoring capabilities, data processing / normalization, and data routing.

StrIEM combines and builds on:

Key Features

  • 🔄 Vector-powered Data Pipelines: Uses Vector by Datadog for robust log collection and processing

  • 🛡️ Sigma Rules Integration: Detection engine using industry-standard Sigma rules

  • 📋 OCSF Normalization: Events are transformed and normalized to OCSF for consistent analysis, simplified querying, easier correlation across sources, and reduced storage complexity

  • 💾 Enterprise Storage Options: Store security events in Parquet format, with support for local storage, Snowflake, AWS Security Lake, and various data lake solutions. Search, analyze & investigate with DuckDB, Apache Arrow, Snowflake SQL, AWS Athena & more

  • 🔌 Integrations:

    • AWS CloudTrail
    • Google Cloud / Google Workspace
    • GitHub Enterprise
    • Okta
    • ...and anything else supported by Vector

Quick Start

  1. Install the configuration utility:

    pip install striem-configure
    

    (or, from this repository, pip install .)

  2. Generate your configuration, and follow the prompts:

    striem-configure
    
  3. Launch StrIEM:

    docker-compose up -d
    

Configuration

The configuration utility will help you set up:

  • Data sources and authentication
  • Detection rules and alerts
  • Storage configuration

The utility creates a directory containing docker-config.yaml and several subdirectories:

  • assets/schema: OCSF parquet schema, generated from crowdalert/ocsf-parquet
  • assets/detections: Sigma detection rules. You will be prompted if you'd like to download the open source rules from SigmaHQ, and you can add your own
  • assets/vrl: VRL transforms for normalizing data in to OCSF. Retrieved from crowdalert/ocsf-vrl
  • config/striem.yaml: configuration for StrIEM Store, if non-Vector sources have been configured
  • config/vector: Directory containing Vector config files
  • config/vector/static: Contains Vector configuration specific to StrIEM
  • data: The output directory for post-processed & normalized data. Hive partitioned by date. This is where the Parquet database lives.

Architecture

StrIEM consists of two major pieces:

  • Vector: Handles log ingestion, transformation, and routing
  • StrIEM State: A helper for the SIEM functions not currently supported by or outside the conceptual model of Vector: detections, correlations, enrichments, trigger actions (SOAR playbooks), and database generation (ie, Parquet). Also ingests data from sources not currently in Vector (eg, Okta)

striem-configure (this repository) generates a set of configuration files creating a security data pipeline with Vector. Each step of the pipeline follows a naming schema so you can add your own sources, transforms and sinks:

  • source-<source type>-<source id>: The initial ingest point for data

  • logsource-<source type>-<source id>: events will have a %logsource field added to metadata corresponding to the Sigma Log Source. StrIEM uses the category, product and service fields as filters if they are present, ignoring Sigma rules that do not apply to this log source

    Transforms should also add a %source_id metadata field equal to the source id for identitfication by downstream consumers matching on wildcards ( ie, Vector components configured with inputs: [logsource-*] )

  • ocsf-<source type>-<source id>: events will be normalized to valid OCSF

    Events from ocsf-* are then sent to StrIEM State to be written to Parquet files

  • actions-<action type>: Events from this data stream are OCSF normalized data filtered by type, indicating some action

    For instance, a Vector sink configuration can consume actions-alert as it's inputs parameter to send all detection matches to it's target. A Vector configuration for writing alerts to the console might look like the following:

    sinks:
        console-alerts:
        type: console
        encoding:
            codec: json
        inputs: ["actions-alert"]
    

Contributing

We welcome contributions! Submit your PR's, Issues, Suggestions or Enhancements!

License

Licensed under MPL-2.0. See LICENSE file for details.


Built with ❤️ by CrowdAlert, Inc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

striem_configure-0.0.1.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

striem_configure-0.0.1-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

File details

Details for the file striem_configure-0.0.1.tar.gz.

File metadata

  • Download URL: striem_configure-0.0.1.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for striem_configure-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f67c1503629f03ac525d5cf5d35b4a8463633953a91038b56f1f450c9465c5ce
MD5 b2496f57c53e883638a4d72b52f692d8
BLAKE2b-256 7365e03b37256466096d93f7521f0180fe3357a6fb0e422a951c7fc15f1f1ca8

See more details on using hashes here.

File details

Details for the file striem_configure-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for striem_configure-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a41c4ca6dd456bd862def9b051ca7238d623056b164a4d846af5300a60f81316
MD5 d7d822c5ce075163cb8666458f7d91d1
BLAKE2b-256 f0ef36f354956b0dbb8c73041f6f1d3b17241d6ee485577ef0cc5407b7ce7477

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page