
Lago de datos de seguridad de código abierto para caza de amenazas, detección y respuesta, y análisis de ciberseguridad a escala de petabytes en AWS
Matano Open Source Security data lake es un lago de datos de seguridad nativo en la nube de código abierto, construido para equipos de seguridad en AWS.
[!NOTE] Matano ofrece un SIEM en la nube comercial gestionado para una plataforma completa de operaciones de seguridad empresarial. Más información.
Ver las instrucciones completas de instalación
Instala la CLI de matano para desplegar Matano en tu cuenta de AWS y gestionar tu despliegue.
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
Lea la documentación completa para comenzar
Para comenzar, ejecute el comando matano init.
Una vez inicializado, su directorio de Matano se utiliza para controlar y gestionar todos los recursos de su proyecto, por ejemplo, fuentes de registros, detecciones y otra configuración. Está estructurado de la siguiente manera:```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
Al incorporar una nueva fuente de registros o crear una detección, ejecute `matano deploy` desde cualquier lugar de su proyecto para implementar los cambios en su cuenta.
## 🔧 Transformación de registros y normalización de datos
[**Lea la documentación completa sobre la configuración de fuentes de registros personalizadas**](https://www.matano.dev/docs/log-sources/configuration)
El [Lenguaje de reasignación de vectores (VRL)](https://vector.dev/docs/reference/vrl/) le permite incorporar fácilmente fuentes de registros personalizadas y le anima a normalizar los campos según el [Esquema común de Elastic (ECS)](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html) para permitir una mejor pivoteo y búsqueda masiva de IOC en su lago de datos de seguridad.
Los usuarios pueden definir programas VRL personalizados para analizar y transformar registros no estructurados mientras se ingieren a través de uno de los mecanismos compatibles para una fuente de registros (por ejemplo, S3, SQS).
VRL es un lenguaje orientado a expresiones diseñado para transformar datos de observabilidad (por ejemplo, registros) de manera segura y eficiente. Cuenta con una sintaxis simple y un rico conjunto de funciones integradas adaptadas específicamente a casos de uso de observabilidad.
### Ejemplo: análisis de JSON
Vamos a ver un ejemplo sencillo. Imagine que está trabajando con
eventos de registro HTTP que tienen este aspecto:```json
{
"line": "{\"status\":200,\"srcIpAddress\":\"1.1.1.1\",\"message\":\"SUCCESS\",\"username\":\"ub40fan4life\"}"
}
Quieres aplicar estos cambios a cada evento:
line cruda en JSON y expandir los campos al nivel superiorsrcIpAddress al campo source.ip de ECSusernamemessage a minúsculasAgregar este programa VRL a tu fuente de registro como un paso de transform lograría todo eso:
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
El evento resultante 🎉:```json
{
"message": "success",
"status": 200,
"source": {
"ip": "1.1.1.1"
}
}
Lee la documentación completa sobre detecciones
Usa detecciones para definir reglas que pueden alertar sobre amenazas en tus registros de seguridad. Una detección es un programa de Python que se invoca con datos de una fuente de registro en tiempo real y puede crear una alerta.
def detect(record): return ( record.deepget("event.action") == "CreateInstanceExportTask" and record.deepget("event.provider") == "ec2.amazonaws.com" and record.deepget("event.outcome") == "failure" )
#### Detectar Inicios de Sesión por Fuerza Bruta por IP en todas las fuentes de registro configuradas (p. ej., 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:
#### Detectar inicio de sesión exitoso desde una IP nunca antes vista para el usuario```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
Lea la documentación completa sobre alertas
Todas las alertas se almacenan automáticamente en una tabla de Matano llamada matano_alerts. Las alertas y coincidencias de reglas se normalizan a ECS y contienen contexto sobre el evento original que desencadenó la coincidencia de la regla, junto con los datos de la alerta y la regla.
Consultas de ejemplo
Resumir alertas de la última semana que están activadas (superaron el umbral)```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
#### Entrega de alertas
Puedes enviar alertas a sistemas externos. Puedes usar el tema SNS de alertas para enviar alertas a Correo electrónico, Slack y otros servicios.
<div align="center">
<br>
<img src="https://assets.kitploit.com/production/public/readmes/5606/979ffa3a7d4505421e1206b39e30e6e2cd96d47949ae953cdb755f00b64ac86e.png" width="600">
<br>
<i>Una alerta de gravedad media enviada a Slack</i>
</div>
## ❤️ Soporte de la comunidad
Para ayuda general sobre el uso, consulta la [documentación](https://matano.dev/docs) oficial. Para ayuda adicional, no dudes en usar uno de estos canales para hacer una pregunta:
- [Discord](https://discord.gg/YSYfHMbfZQ) \(Únete a la familia y pasa el rato con el equipo y la comunidad\)
- [Foro](https://github.com/matanolabs/matano/discussions) \(Para conversaciones más profundas sobre características, el proyecto o problemas\)
- [GitHub](https://github.com/matanolabs/matano) \(Reportes de errores, Contribuciones\)
- [Twitter](https://twitter.com/matanolabs) \(Recibe noticias de última hora\)
## 👷 Contribuidores
Gracias a estas maravillosas personas ([clave de emojis](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="Mantenimiento">🚧</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="Mantenimiento">🚧</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="Código">💻</a> <a href="#ideas-kai-ten" title="Ideas, Planificación y Retroalimentación">🤔</a> <a href="#infra-kai-ten" title="Infraestructura (Alojamiento, Herramientas de compilación, 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="Reportes de errores">🐛</a> <a href="#ideas-rams3sh" title="Ideas, Planificación y Retroalimentación">🤔</a> <a href="#userTesting-rams3sh" title="Pruebas de usuario">📓</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="Ideas, Planificación y Retroalimentación">🤔</a> <a href="https://github.com/matanolabs/matano/issues?q=author%3Azbmowrey" title="Reportes de errores">🐛</a> <a href="#userTesting-zbmowrey" title="Pruebas de usuario">📓</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="Pruebas de usuario">📓</a> <a href="https://github.com/matanolabs/matano/issues?q=author%3Amarcin-kwasnicki" title="Reportes de errores">🐛</a> <a href="#ideas-marcin-kwasnicki" title="Ideas, Planificación y Retroalimentación">🤔</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="Reportes de errores">🐛</a> <a href="#ideas-gdrapp" title="Ideas, Planificación y Retroalimentación">🤔</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="Reportes de errores">🐛</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="Reportes de errores">🐛</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="Reportes de errores">🐛</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="Ideas, Planificación y Retroalimentación">🤔</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="Ideas, Planificación y Retroalimentación">🤔</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="Ideas, Planificación y Retroalimentación">🤔</a> <a href="https://github.com/matanolabs/matano/issues?q=author%3Atimoguin" title="Reportes de errores">🐛</a> <a href="https://github.com/matanolabs/matano/commits?author=timoguin" title="Código">💻</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="Reportes de errores">🐛</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="Código">💻</a> <a href="https://github.com/matanolabs/matano/commits?author=grue" title="Documentación">📖</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="Código">💻</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 -->
Este proyecto sigue la especificación [all-contributors](https://allcontributors.org).
¡Las contribuciones de cualquier tipo son bienvenidas!
## Licencia
- [Licencia Apache-2.0](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"/>