Skip to main content

CNSL

Correlated Network Security Layer

CI PyPI Python 3.10+ MIT License

A self-hosted SIEM for Linux.
Detects attacks that span SSH, web, database, and cloud logs simultaneously -- then blocks them automatically.


What it does

Most tools watch one log and count failures. CNSL watches everything at once.

When an attacker scans your web server, probes your database, then tries SSH with stolen credentials -- CNSL sees all three as one coordinated attack and responds before the breach completes.

Web scan      from 45.33.32.1  --+
SSH brute     from 45.33.32.1  --+--->  HIGH alert + auto-block
DB auth fail  from 45.33.32.1  --+

It also tracks how far each attacker has progressed through the kill chain, learns new attack patterns automatically, and shares threat intelligence across multiple servers in real time.

Beyond core detection: multi-node federation with a unified hub view, STIX 2.1 export and a built-in TAXII 2.1 server for sharing IOCs, Wazuh/OSSEC integration, PostgreSQL support with a migration tool, a Kubernetes Helm chart, attacker fingerprinting (spots the same actor rotating IPs), graph-based campaign correlation, and opt-in predictive blocking that reacts to an attack's trajectory before any single rule's threshold fires.


Quick start

pip install cnsl[full]
sudo python -m cnsl --dashboard --no-tcpdump
# Open http://127.0.0.1:8765
# Default login: admin / cnsl-change-me

Or from source:

git clone https://github.com/rahadbhuiya/cnsl.git
cd cnsl
python3 -m venv venv && source venv/bin/activate
pip install -e ".[full]"
sudo venv/bin/python -m cnsl --dashboard --no-tcpdump

Start in dry-run mode (default) -- no real blocks until you add --execute.

Or on Kubernetes (one DaemonSet pod per node, protecting every node in the cluster):

helm install cnsl ./helm/cnsl --namespace cnsl --create-namespace

See docs/kubernetes.md and helm/cnsl/README.md for the full walkthrough (federation, the multi-node hub view, enabling real blocking).


Dashboard

Enable with --dashboard. Runs at http://127.0.0.1:8765.

Tabs: Overview, Incidents, Blocks, Live Feed, Kill Chain, Graph, Correlation, Hub, Campaigns, Cases, UEBA, ML, Honeypot, FIM, Rules, Rate Limit, Settings.

For remote access use an SSH tunnel:

ssh -L 8765:127.0.0.1:8765 user@yourserver

Configuration

Copy and edit the example config:

cp config/config.example.json /etc/cnsl/config.json

All options are documented in docs/configuration.md.
Key sections: thresholds, actions, dashboard, notifications, redis, cloud_identity, zero_trust, siem, federation.


Documentation

Document What it covers
docs/installation.md Full install, systemd, Docker
docs/configuration.md Every config option explained
docs/features.md Complete feature list
docs/architecture.md Module structure and design
docs/api.md Full REST API reference
docs/kubernetes.md Helm chart deployment (DaemonSet, hub view, federation)
docs/kill-chain.md Kill chain tracker (predictive blocking: see docs/api.md)
docs/federation.md Multi-node setup and the hub view
docs/cloud-identity.md AWS + Azure AD + GCP integration
docs/sigma-rules.md Sigma detection rule import
docs/attack-mapping.md MITRE ATT&CK technique tagging and coverage
docs/oidc-sso.md OIDC single sign-on setup
docs/source-health.md Log source silence detection
docs/zero-trust.md Trust score engine
docs/siem-connectors.md Splunk, Sentinel, Webhook push
docs/pattern-learning.md Automated rule discovery
docs/rules.md Detection rule tuning (correlation-rule tuning: see docs/api.md)
docs/ueba.md User/entity behavior analytics
docs/cases.md Case management
docs/threat-feed.md External threat feed ingestion
docs/2fa.md Two-factor auth for the dashboard
docs/agent.md Remote log-shipping agent
docs/kafka.md Kafka log ingestion
docs/zeek.md Zeek log integration
docs/ot-iot.md OT/ICS protocol support (Modbus, DNP3, SCADA)
docs/country-blocking.md Geo-based blocking
docs/rate-limiting.md API rate limiting
docs/tenants.md Multi-tenant setup
docs/huddle.md Incident huddle/collaboration
docs/notifications.md Email/Slack/Telegram alerts
docs/changelog.md Version history
docs/ Browse all 31 guides

Requirements

  • Linux (Ubuntu 20.04+ / Debian 11+ / RHEL 8+)
  • Python 3.10+
  • Root or CAP_NET_ADMIN for iptables blocking

Optional: Redis (distributed blocklist + federation), MaxMind GeoIP database.


License

MIT. See LICENSE.

Release files for cnsl 3.4.24

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cnsl 3.4.24
File Size Uploaded
cnsl-3.4.24.tar.gz 369.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cnsl 3.4.24
File Interpreter ABI Platform
cnsl-3.4.24-py3-none-any.whl Python 3 none any Details

Total release size: 679.9 kB

Release files / cnsl-3.4.24.tar.gz

Download URL cnsl-3.4.24.tar.gz
Size 369.2 kB
Tags Source
SHA-256 checksum
How to use checksums
cc495c865c2ac1e44b6ffde66e026c29127a080926774941beac8f314c171775
BLAKE2b-256 checksum
How to use checksums
5c6c18cff04ca2f17216a87ec8f5e04a0f8fd3b3801c13cbcd74f88279664572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / cnsl-3.4.24-py3-none-any.whl

Download URL cnsl-3.4.24-py3-none-any.whl
Size 310.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b5674e7e3eb103bc680a8a26cb12ea8ce4e903c8285134ea7aae6c30d3cedf54
BLAKE2b-256 checksum
How to use checksums
b78cae93868ac2865d268c25d4c2027c005f03b0e8ed474a32d9f88d44e03bde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

3.4.26

2 release files

3.4.25

2 release files

This release

3.4.24 This release

2 release files

3.4.22

2 release files

3.4.18

2 release files

3.4.17

2 release files

3.4.16

2 release files

3.4.15

2 release files

3.4.11

2 release files

3.4.10

2 release files

3.4.9

2 release files

3.4.8

2 release files

3.4.7

2 release files

3.4.5

2 release files

3.4.4

2 release files

3.4.3

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.9.0

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page