
Open-Source-Sicherheitsdatenlake für Threat Hunting, Detection & Response und Cybersecurity-Analytik im Petabyte-Maßstab auf AWS
Der Matano Open Source Security Data Lake ist ein Open-Source-Cloud-nativer Sicherheitsdatenlake, der für Sicherheitsteams auf AWS entwickelt wurde.
[!NOTE] Matano bietet einen kommerziell verwalteten Cloud-SIEM für eine vollständige Enterprise-Sicherheitsoperationsplattform. Erfahren Sie mehr.
Die vollständigen Installationsanweisungen ansehen
Installieren Sie die Matano-CLI, um Matano in Ihrem AWS-Konto bereitzustellen und Ihre Bereitstellung zu verwalten.
Linux```bash curl -OL https://github.com/matanolabs/matano/releases/download/nightly/matano-linux-x64.sh chmod +x matano-linux-x64.sh sudo ./matano-linux-x64.sh
**macOS**```bash
curl -OL https://github.com/matanolabs/matano/releases/download/nightly/matano-macos-x64.sh
chmod +x matano-macos-x64.sh
sudo ./matano-macos-x64.sh
Lesen Sie die vollständige Dokumentation zu den ersten Schritten
Um loszulegen, führen Sie den Befehl matano init aus.
Nach der Initialisierung wird Ihr Matano-Verzeichnis verwendet, um alle Ressourcen in Ihrem Projekt zu steuern und zu verwalten, z. B. Log-Quellen, Erkennungen und andere Konfigurationen. Es ist wie folgt strukturiert:```bash ➜ example-matano-dir git:(main) tree ├── detections │ └── aws_root_credentials │ ├── detect.py │ └── detection.yml ├── log_sources │ ├── cloudtrail │ │ ├── log_source.yml │ │ └── tables │ │ └── default.yml │ └── zeek │ ├── log_source.yml │ └── tables │ └── dns.yml ├── matano.config.yml └── matano.context.json
Beim Onboarding einer neuen Logquelle oder beim Erstellen einer Erkennung führen Sie `matano deploy` von überall in Ihrem Projekt aus, um die Änderungen in Ihrem Konto bereitzustellen.
## 🔧 Logtransformation & Datenormalisierung
[**Lesen Sie die vollständige Dokumentation zur Konfiguration benutzerdefinierter Logquellen**](https://www.matano.dev/docs/log-sources/configuration)
[Vector Remap Language (VRL)](https://vector.dev/docs/reference/vrl/) ermöglicht es Ihnen, benutzerdefinierte Logquellen einfach einzubinden, und ermutigt Sie, Felder gemäß dem [Elastic Common Schema (ECS)](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html) zu normalisieren, um erweiterte Pivotierung und Massensuche nach IOCs in Ihrem Security Data Lake zu ermöglichen.
Benutzer können benutzerdefinierte VRL-Programme definieren, um unstrukturierte Logs zu parsen und zu transformieren, während sie über einen der unterstützten Mechanismen für eine Logquelle (z. B. S3, SQS) aufgenommen werden.
VRL ist eine ausdrucksorientierte Sprache, die für die sichere und leistungsstarke Transformation von Observability-Daten (z. B. Logs) entwickelt wurde. Sie zeichnet sich durch eine einfache Syntax und eine Vielzahl integrierter Funktionen aus, die speziell auf Observability-Anwendungsfälle zugeschnitten sind.
### Beispiel: Parsen von JSON
Schauen wir uns ein einfaches Beispiel an. Stellen Sie sich vor, Sie arbeiten mit HTTP-Log-Ereignissen, die wie folgt aussehen:```json
{
"line": "{\"status\":200,\"srcIpAddress\":\"1.1.1.1\",\"message\":\"SUCCESS\",\"username\":\"ub40fan4life\"}"
}
Sie möchten diese Änderungen auf jedes Ereignis anwenden:
line-String in JSON und entpacken Sie die Felder auf die oberste EbenesrcIpAddress in das ECS-Feld source.ip umusername-Feldmessage in KleinbuchstabenDas Hinzufügen dieses VRL-Programms zu Ihrer Log-Quelle als transform-Schritt würde all das bewirken:
transform: | . = object!(parse_json!(string!(.json.line))) .source.ip = del(.srcIpAddress) del(.username) .message = downcase(string!(.message))
schema: ecs_field_names: - source.ip - http.status
Das daraus resultierende Ereignis 🎉:```json
{
"message": "success",
"status": 200,
"source": {
"ip": "1.1.1.1"
}
}
Lies die vollständige Dokumentation zu Erkennungen
Verwende Erkennungen, um Regeln zu definieren, die über Bedrohungen in deinen Sicherheitslogs alarmieren können. Eine Erkennung ist ein Python-Programm, das in Echtzeit mit Daten aus einer Logquelle aufgerufen wird und einen Alarm auslösen kann.
def detect(record): return ( record.deepget("event.action") == "CreateInstanceExportTask" and record.deepget("event.provider") == "ec2.amazonaws.com" and record.deepget("event.outcome") == "failure" )
#### Erkennen von Brute-Force-Anmeldungen nach IP über alle konfigurierten Log-Quellen (z.B. Okta, AWS, GWorkspace)
###### detect.py```python
def detect(r):
return (
"authentication" in r.deepget("event.category", [])
and r.deepget("event.outcome") == "failure"
)
def title(r):
return f"Multiple failed logins from {r.deepget('user.full_name')} - {r.deepget('source.ip')}"
def dedupe(r):
return r.deepget("source.ip")
tables:
#### Erfolgreichen Login von einer zuvor nie gesehenen IP für Benutzer erkennen```python
from detection import remotecache
# a cache of user -> ip[]
user_to_ips = remotecache("user_ip")
def detect(record):
if (
record.deepget("event.action") == "ConsoleLogin" and
record.deepget("event.outcome") == "success"
):
# A unique key on the user name
user = record.deepget("user.name")
existing_ips = user_to_ips[user] or []
updated_ips = user_to_ips.add_to_string_set(
user,
record.deepget("source.ip")
)
# Alert on new IPs
new_ips = set(updated_ips) - set(existing_ips)
if existing_ips and new_ips:
return True
Lesen Sie die vollständige Dokumentation zur Alarmierung
Alle Alarme werden automatisch in einer Matano-Tabelle mit dem Namen matano_alerts gespeichert. Die Alarme und Regelübereinstimmungen werden auf ECS normalisiert und enthalten Kontext über das ursprüngliche Ereignis, das die Regelübereinstimmung ausgelöst hat, zusammen mit den Alarm- und Regelndaten.
Beispielabfragen
Fassen Sie Alarme der letzten Woche zusammen, die aktiviert wurden (Schwellenwert überschritten)```sql select matano.alert.id as alert_id, matano.alert.rule.name as rule_name, max(matano.alert.title) as title, count(*) as match_count, min(matano.alert.first_matched_at) as first_matched_at, max(ts) as last_matched_at, array_distinct(flatten(array_agg(related.ip))) as related_ip, array_distinct(flatten(array_agg(related.user))) as related_user, array_distinct(flatten(array_agg(related.hosts))) as related_hosts, array_distinct(flatten(array_agg(related.hash))) as related_hash from matano_alerts where matano.alert.first_matched_at > (current_timestamp - interval '7' day) and matano.alert.activated = true group by matano.alert.rule.name, matano.alert.id order by last_matched_at desc
#### Zustellung von Benachrichtigungen
Du kannst Benachrichtigungen an externe Systeme senden. Du kannst das SNS-Thema für Benachrichtigungen verwenden, um Warnungen an E-Mail, Slack und andere Dienste zu senden.
<div align="center">
<br>
<img src="https://assets.kitploit.com/production/public/readmes/5606/979ffa3a7d4505421e1206b39e30e6e2cd96d47949ae953cdb755f00b64ac86e.png" width="600">
<br>
<i>Ein mittelschwerer Alarm, der an Slack gesendet wurde</i>
</div>
## ❤️ Community-Support
Bei allgemeinen Fragen zur Nutzung siehe bitte die offizielle [Dokumentation](https://matano.dev/docs). Für weitere Hilfe kannst du gerne einen dieser Kanäle nutzen, um eine Frage zu stellen:
- [Discord](https://discord.gg/YSYfHMbfZQ) \(Komm in die Familie und triff das Team und die Community\)
- [Forum](https://github.com/matanolabs/matano/discussions) \(Für tiefergehende Gespräche über Funktionen, das Projekt oder Probleme\)
- [GitHub](https://github.com/matanolabs/matano) \(Fehlermeldungen, Beiträge\)
- [Twitter](https://twitter.com/matanolabs) \(Aktuelle Neuigkeiten direkt von der Quelle\)
## 👷 Mitwirkende
Dank geht an diese wunderbaren Leute ([Emoji-Schlüssel](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/shaeqahmed"><img src="https://assets.kitploit.com/production/public/readmes/5606/da6af7bd665b48461fc19bf8cb33b49258aa7060fc2cb4d3dc143889596acfd0.jpg" width="100px;" alt="Shaeq Ahmed"/><br /><sub><b>Shaeq Ahmed</b></sub></a><br /><a href="#maintenance-shaeqahmed" title="Wartung">🚧</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.matano.dev/"><img src="https://assets.kitploit.com/production/public/readmes/5606/837b51975f416f31c504d2fe6f14d3a1b1ba787578f6363d666892d745d5d7fc.jpg" width="100px;" alt="Samrose"/><br /><sub><b>Samrose</b></sub></a><br /><a href="#maintenance-Samrose-Ahmed" title="Wartung">🚧</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kai-ten"><img src="https://assets.kitploit.com/production/public/readmes/5606/a0825103807e9a55e29f2208f6a4b1820214b1ca7000b602bf4895bbeaa50908.jpg" width="100px;" alt="Kai Herrera"/><br /><sub><b>Kai Herrera</b></sub></a><br /><a href="https://github.com/matanolabs/matano/commits?author=kai-ten" title="Code">💻</a> <a href="#ideas-kai-ten" title="Ideen, Planung & Feedback">🤔</a> <a href="#infra-kai-ten" title="Infrastruktur (Hosting, Build-Tools, etc.)">🚇</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rams3sh"><img src="https://assets.kitploit.com/production/public/readmes/5606/75ea8a3a8b768a26e69217f4700efeea7e56ee99d4273ece2fb757d7d3fd3842.jpg" width="100px;" alt="Ram"/><br /><sub><b>Ram</b></sub></a><br /><a href="https://github.com/matanolabs/matano/issues?q=author%3Arams3sh" title="Fehlermeldungen">🐛</a> <a href="#ideas-rams3sh" title="Ideen, Planung & Feedback">🤔</a> <a href="#userTesting-rams3sh" title="Benutzertests">📓</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://zbmowrey.com/"><img src="https://assets.kitploit.com/production/public/readmes/5606/3cf4d1cd4dac53a82628dacff2ea9b99505aef82723f4ee6fd4506fd1b63ed48.png" width="100px;" alt="Zach Mowrey"/><br /><sub><b>Zach Mowrey</b></sub></a><br /><a href="#ideas-zbmowrey" title="Ideen, Planung & Feedback">🤔</a> <a href="https://github.com/matanolabs/matano/issues?q=author%3Azbmowrey" title="Fehlermeldungen">🐛</a> <a href="#userTesting-zbmowrey" title="Benutzertests">📓</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marcin-kwasnicki"><img src="https://assets.kitploit.com/production/public/readmes/5606/8c89eb3f4824adbc668f7e8e8d4714ba6ed7f3e08a9dcdb392335d42d0c5ff3b.png" width="100px;" alt="marcin-kwasnicki"/><br /><sub><b>marcin-kwasnicki</b></sub></a><br /><a href="#userTesting-marcin-kwasnicki" title="Benutzertests">📓</a> <a href="https://github.com/matanolabs/matano/issues?q=author%3Amarcin-kwasnicki" title="Fehlermeldungen">🐛</a> <a href="#ideas-marcin-kwasnicki" title="Ideen, Planung & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/gdrapp"><img src="https://assets.kitploit.com/production/public/readmes/5606/efef1d590d1f113b3e2f0a59de8d7a5cb67534b61b25f20089688a7ee7533488.png" width="100px;" alt="Greg Rapp"/><br /><sub><b>Greg Rapp</b></sub></a><br /><a href="https://github.com/matanolabs/matano/issues?q=author%3Agdrapp" title="Fehlermeldungen">🐛</a> <a href="#ideas-gdrapp" title="Ideen, Planung & Feedback">🤔</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/niheconomoum"><img src="https://assets.kitploit.com/production/public/readmes/5606/2fbec725261340b771febb64341a3cf224757dec4b630ad3dc264dd2f06b004d.png" width="100px;" alt="Matthew X. Economou"/><br /><sub><b>Matthew X. Economou</b></sub></a><br /><a href="https://github.com/matanolabs/matano/issues?q=author%3Aniheconomoum" title="Fehlermeldungen">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jarretraim"><img src="https://assets.kitploit.com/production/public/readmes/5606/caa7cc87b6164d0f803772fab5bac40a3d997437b6c383919a5e077a466ac334.jpg" width="100px;" alt="Jarret Raim"/><br /><sub><b>Jarret Raim</b></sub></a><br /><a href="https://github.com/matanolabs/matano/issues?q=author%3Ajarretraim" title="Fehlermeldungen">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mdfranz.dev/"><img src="https://assets.kitploit.com/production/public/readmes/5606/65c31a803bb41772596c3e2daadd6d9a74a678fc1043321ed77883b03a4d7930.jpg" width="100px;" alt="Matt Franz"/><br /><sub><b>Matt Franz</b></sub></a><br /><a href="https://github.com/matanolabs/matano/issues?q=author%3Amdfranz" title="Fehlermeldungen">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/francescofaenzi/"><img src="https://assets.kitploit.com/production/public/readmes/5606/c46cb3d9f09d191e8a3da1732159dd75187435993d87d7c9655e02df9feeb239.jpg" width="100px;" alt="Francesco Faenzi"/><br /><sub><b>Francesco Faenzi</b></sub></a><br /><a href="#ideas-FrancescoFaenzi" title="Ideen, Planung & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://nishant.daspatnaik.com/"><img src="https://assets.kitploit.com/production/public/readmes/5606/b35b7582c587503707d73914779acb8592fe5eb95535e0c7d823e4cc50e6b097.jpg" width="100px;" alt="Nishant Das Patnaik"/><br /><sub><b>Nishant Das Patnaik</b></sub></a><br /><a href="#ideas-dpnishant" title="Ideen, Planung & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/timoguin"><img src="https://assets.kitploit.com/production/public/readmes/5606/c4c413260019be4943b6c577c46a587862f553ceda7ef70a8adf3f92c003f523.png" width="100px;" alt="Tim O'Guin"/><br /><sub><b>Tim O'Guin</b></sub></a><br /><a href="#ideas-timoguin" title="Ideen, Planung & Feedback">🤔</a> <a href="https://github.com/matanolabs/matano/issues?q=author%3Atimoguin" title="Fehlermeldungen">🐛</a> <a href="https://github.com/matanolabs/matano/commits?author=timoguin" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/francescor"><img src="https://assets.kitploit.com/production/public/readmes/5606/7174ae423e954ecd8be9849969348acd29fc7b8f8ce3d539398669d564d0ee92.jpg" width="100px;" alt="Francesco R."/><br /><sub><b>Francesco R.</b></sub></a><br /><a href="https://github.com/matanolabs/matano/issues?q=author%3Afrancescor" title="Fehlermeldungen">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://grue.io"><img src="https://assets.kitploit.com/production/public/readmes/5606/1d375cb6024264e2e8116b4114d4537734bcca383526d32754e0d8e335641bd3.jpg" width="100px;" alt="Joshua Sorenson"/><br /><sub><b>Joshua Sorenson</b></sub></a><br /><a href="https://github.com/matanolabs/matano/commits?author=grue" title="Code">💻</a> <a href="https://github.com/matanolabs/matano/commits?author=grue" title="Dokumentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://www.nevermind.co.nz"><img src="https://assets.kitploit.com/production/public/readmes/5606/6afd9108528633598c724be40eae37abdde5ea9c89fd498d35c398f98bc4f765.jpg" width="100px;" alt="Chris Smith"/><br /><sub><b>Chris Smith</b></sub></a><br /><a href="https://github.com/matanolabs/matano/commits?author=chrismsnz" title="Code">💻</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
Dieses Projekt folgt der [all-contributors](https://allcontributors.org) Spezifikation. Beiträge jeder Art sind willkommen!
## Lizenz
- [Apache-2.0 Lizenz](https://github.com/matanolabs/matano/blob/HEAD/LICENSE)
<img referrerpolicy="no-referrer-when-downgrade" src="https://assets.kitploit.com/production/public/readmes/5606/93ae7d494fad0fb30cbf3ae746a39c4bc7a0f8bbf87fbb587a3f3c01f3c5ce20.png"/>