Compare commits

..

34 Commits

Author SHA1 Message Date
e412681f96 Atualização - 23/04/2026 - 12:17 2026-04-23 12:17:21 -03:00
82ac465600 Atualização - 22/04/2026 - 13:03 2026-04-22 13:03:16 -03:00
efc147a37c Atualização - 22/04/2026 - 10:23 2026-04-22 10:23:54 -03:00
3663fbceea Atualização - 22/04/2026 - 10:07 2026-04-22 10:07:35 -03:00
5df71eb9bc Atualização - 22/04/2026 - 09:52 2026-04-22 09:51:10 -03:00
ce9f2a2335 Atualização - 22/04/2026 - 09:32 2026-04-22 09:32:21 -03:00
ab1ee8354f Atualização 22/04/2026 - 09:22 2026-04-22 09:22:14 -03:00
b0459c875d Atualização - 21/04/2026 - 09:48 2026-04-21 09:48:46 -03:00
6399d7a97a Atualização - 21/04/2026 - 09:46 2026-04-21 09:47:00 -03:00
4a40bf5d71 Atualização - 21/04/2026 - 09:45 2026-04-21 09:45:35 -03:00
4fb62aa7f3 Atualização - 21/04/2026 - 09:42 2026-04-21 09:42:40 -03:00
7fddfc7e66 Atualização - 21/04/2026 - 08:07 2026-04-21 08:07:48 -03:00
a8dc3257a1 Atualização 20/04/2026 - 09:34 2026-04-20 09:34:05 -03:00
9b50ed3ce4 Merge branch 'main' of https://github.com/ricardokleber/rk-siem 2026-04-20 09:12:58 -03:00
225ebe8cc5 Atualização - 20/04/2026 - 09:12 2026-04-20 09:12:14 -03:00
df658bddcd Atualização - 19/04/2026 - 09:58 2026-04-19 09:58:58 -03:00
3d7f261592 Atualização - 19/04/2026 - 09:46 2026-04-19 09:46:41 -03:00
edbdcf08e6 Atualização - 19/04/2026 - 09:18 2026-04-19 09:18:52 -03:00
fcf08065ba Atualização - 19/04/2026 - 09:17 2026-04-19 09:17:58 -03:00
98a68857d4 Atualização - 19/04/2026 - 09:14 2026-04-19 09:14:49 -03:00
b6ddaf8f11 Atualização - 18/04/2026 - 18:43 2026-04-18 18:43:12 -03:00
cfdea67c04 Atualização - 18/04/2026 - 18:35 2026-04-18 18:35:23 -03:00
1f5bc37724 Atualização - 18/04/2026 - 18:27 2026-04-18 18:27:28 -03:00
d8d654284f Atualização - 18/04/2026 - 18:20 2026-04-18 18:20:09 -03:00
540020ef1a Atualização - 18/04/2026 - 18:17 2026-04-18 18:17:35 -03:00
ec17dcb3a7 Atualização - 18/04/2026 - 18:12 2026-04-18 18:12:56 -03:00
61bbabb834 Atualização - 18/04/2026 - 18:10 2026-04-18 18:10:08 -03:00
af178b467c Atualização - 18/04/2026 - 17:53 2026-04-18 17:53:56 -03:00
3a6b311d9f Atualização - 18/04/2026 - 17:51 2026-04-18 17:51:43 -03:00
9eeedf59cc Atualização - 18/04/2026 - 17:47 2026-04-18 17:47:29 -03:00
e10cfc8c34 Atualização - 18/04/2026 - 11:36 2026-04-18 11:36:22 -03:00
92f4b2ef96 Atualização - 18/04/2026 - 11:29 2026-04-18 11:29:58 -03:00
11601fc5a7 Atualização - 18/04/2026 - 11:25 2026-04-18 11:25:12 -03:00
b059db07ee Atualização - 18/04/2026 - 11:21 2026-04-18 11:21:19 -03:00
64 changed files with 1252 additions and 95 deletions

4
.gitignore vendored
View File

@@ -1,3 +1 @@
pipelines/ roteiros/05-lab03/dados/
hosts/host03/dados
rk-siem-collector/

View File

@@ -2,55 +2,3 @@
*** ***
RK - SIEM :: O SIEM (*Security Information and Event Management*) **100% Gratuito (OpenSource)** criado para você aprender a instalar, configurar, testar, personalizar e usar para estudo ou em produção. RK - SIEM :: O SIEM (*Security Information and Event Management*) **100% Gratuito (OpenSource)** criado para você aprender a instalar, configurar, testar, personalizar e usar para estudo ou em produção.
*** ***
#### Baixe e comece a usar já:
###### 1.Pra começar verifique se o limite de mapas de memória virtual do kernel do seu Linux está configurado adequadamente:
```
cat /proc/sys/vm/max_map_count
```
Se o valor estiver menor que **262.144** você deverá ajustá-lo (caso contrário o docker irá falhar ao iniciar).
###### Edite o arquivo /etc/sysctl.conf e adicione a linha:
```
vm.max_map_count=262144
```
#### 2. Baixe o docker-compose.yml pronto:
```
git clone https://github.com/ricardokleber/rk-siem.git
```
#### 3. Entre no diretório do projeto:
```
cd rk-siem
```
#### 4. Baixe as imagens dos contêineres para sua estação:
```
docker compose pull
```
#### 5. Inicie o docker com o Indexador do RK-SIEM (rk-siem-core):
```
docker compose up -d rk-siem-core
```
Aguarde alguns instantes (1 a 2 minutos em média) para o **rk-siem-core** executar o Java com todos os módulos e configurações padrões.
#### 6. Inicie o docker com a Interface Web do RK-SIEM (rk-siem-ui):
```
docker compose up -d rk-siem-ui
```
Aguarde alguns instantes (1 minuto em média) para o **rk-siem-ui** executar, ativar configurações padrões e disponibilizar o acesso web.
#### 7. Pronto!!! Agora é só acessar em seu navegador a interface Web do RK-SIEM:
```
http://localhost:5601
```
![](assets/rk-siem-login.png)
**Username:** *admin* | **Password:** *admin*
***
**Vídeos do RK-SIEM (Youtube):**
<a href="https://www.youtube.com/playlist?list=PLzEiYA7yCrq9-Dub9qwmFJFbh2NMoOjTh" target="_blank"><img width="400" height="120" alt="assistavideo" src="assets/rk-siem-youtube.png" /></a>

BIN
assets/lab01-01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

BIN
assets/rk-siem-lab03-01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

BIN
assets/rk-siem-lab03-02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

BIN
assets/rk-siem-lab03-03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

BIN
assets/rk-siem-lab03-04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
assets/rk-siem-lab03-05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
assets/rk-siem-lab03-06.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
assets/rk-siem-lab03-07.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
assets/rk-siem-lab03-08.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
assets/visao-geral-01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

BIN
assets/visao-geral-02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

BIN
assets/visao-geral-03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

BIN
assets/visao-geral-04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

BIN
assets/visao-geral-05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

BIN
assets/visao-geral-06.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

View File

@@ -1,8 +0,0 @@
services:
rk-siem-host01:
image: ricardokleber/rk-siem-host01:latest
container_name: rk-siem-host01
hostname: rk-siem-host01
tty: true
stdin_open: true
restart: always

View File

@@ -1,8 +0,0 @@
services:
rk-siem-host02:
image: ricardokleber/rk-siem-host02:latest
container_name: rk-siem-host02
hostname: rk-siem-host02
tty: true
stdin_open: true
restart: always

View File

@@ -1,22 +0,0 @@
services:
rk-siem-host03:
# image: ricardokleber/rk-siem-host03:latest
image: docker.ifrncn.com.br/rk/rk-windows:latest
container_name: rk-siem-host03
devices:
- /dev/kvm # Essencial para aceleração de hardware (KVM)
cap_add:
- NET_ADMIN
ports:
- 8006:8006 # Interface Web (NoVNC)
volumes:
- ./dados:/storage
stop_grace_period: 2m
restart: on-failure
environment:
VERSION: "7u" # Define a versão (win11, win10, etc)
RAM_SIZE: "2G" # Mínimo recomendado para Win11
CPU_CORES: "2" # Quantidade de núcleos
DISK_SIZE: "15G" # Tamanho do disco virtual
USERNAME: "admin"
PASSWORD: "admin"

View File

@@ -0,0 +1,57 @@
![](../../assets/rk-siem-titulo_instalacao.png)
***
### RK-SIEM :: Instalação
***
#### Baixe e comece a usar já:
###### 1.Pra começar verifique se o limite de mapas de memória virtual do kernel do seu Linux está configurado adequadamente:
```
cat /proc/sys/vm/max_map_count
```
Se o valor estiver menor que **262.144** você deverá ajustá-lo (caso contrário o docker irá falhar ao iniciar).
###### Edite o arquivo /etc/sysctl.conf e adicione a linha:
```
vm.max_map_count=262144
```
#### 2. Baixe o docker-compose.yml pronto:
```
git clone https://github.com/ricardokleber/rk-siem.git
```
#### 3. Entre no diretório do projeto:
```
cd rk-siem
```
#### 4. Baixe as imagens dos contêineres para sua estação:
```
docker compose pull
```
#### 5. Inicie o docker com o Indexador do RK-SIEM (rk-siem-core):
```
docker compose up -d rk-siem-core
```
Aguarde alguns instantes (1 a 2 minutos em média) para o **rk-siem-core** executar o Java com todos os módulos e configurações padrões.
#### 6. Inicie o docker com a Interface Web do RK-SIEM (rk-siem-ui):
```
docker compose up -d rk-siem-ui
```
Aguarde alguns instantes (1 minuto em média) para o **rk-siem-ui** executar, ativar configurações padrões e disponibilizar o acesso web.
#### 7. Pronto!!! Agora é só acessar em seu navegador a interface Web do RK-SIEM:
```
http://localhost:5601
```
![](assets/rk-siem-login.png)
**Username:** *admin* | **Password:** *admin*
***
**Vídeos do RK-SIEM (Youtube):**
<a href="https://www.youtube.com/playlist?list=PLzEiYA7yCrq9-Dub9qwmFJFbh2NMoOjTh" target="_blank"><img width="400" height="120" alt="assistavideo" src="../../assets/rk-siem-youtube.png" /></a>

View File

@@ -0,0 +1,48 @@
services:
rk-siem-core:
image: ricardokleber/rk-siem-core:latest
container_name: rk-siem-core
environment:
- cluster.name=rk-siem-core
- node.name=rk-siem-node
- discovery.type=single-node
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Ajuste conforme sua RAM disponível
- DISABLE_INSTALL_DEMO_CONFIG=false
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- rk-siem-data:/usr/share/opensearch/data
ports:
- 9200:9200 # API REST
- 9600:9600 # Performance Analyzer
networks:
- rk-siem-net
rk-siem-ui:
image: ricardokleber/rk-siem-ui:latest
container_name: rk-siem-ui
ports:
- 5601:5601 # Interface Web
expose:
- 5601
command: ["/bin/bash", "-c", "/etc/init.d/opensearch-dashboards start && tail -f /var/log/opensearch-dashboards/opensearch-dashboards.stdout"]
restart: always
environment:
- 'OPENSEARCH_HOSTS=["https://rk-siem-core:9200"]'
- "DISABLE_SECURITY_DASHBOARDS_PLUGIN=false"
networks:
- rk-siem-net
depends_on:
- rk-siem-core
volumes:
rk-siem-data:
networks:
rk-siem-net:

View File

@@ -0,0 +1,100 @@
![](../../assets/rk-siem-titulo-ingestao-01.png)
**1. Questões a Considerar: O que vai ser enviado?**
É importante fazer um planejamento sobre O QUE será enviado a partir dos hosts para ser processado e analisado no SIEM.
![](../../assets/visao-geral-01.png)
Em um primeiro momento talvez a intenção seja enviar TODOS os Logs de TODOS os hosts, mas, o volume de tráfego gerado e a demanda por armazenamento e indexação no SIEM devem ser considerados.
Na maioria dos casos, faz-se a opção por realizar "filtros" (seleção sobre o que será enviado de cada host) e o levantamento de serviços específicos em execução e então toma-se a decisão sobre o que vale a pena, de fato, enviar para ser processado pelo SIEM.
Além de Logs, tem sido cada vez mais comum o envio para geranciadores de Logs informações relacionadas a métricas e traces (comunicação entre microsserviços). O SIEM tem condições, também, de processar analisar e disponibilizar informações sintetizadas sobre esses dados.
***
**2. Questões a Considerar: Formato de Envio**
Os primeiros gerenciadores de Logs costumavam ser configurados para receber os logs dos hosts em formato "bruto" (sem qualquer filtragem) e então todo o processamento era feito pelo gerenciador (hoje o SIEM).
![](../../assets/visao-geral-02.png)
Mas, atualmente, muitos hosts (ou coletores instalados neles) têm a capacidade de fazer um pré-processamento (filtro/parser/pipeline) para que os logs sejam enviados já tratados e com isso diminuir o trabalho do SIEM.
Esses procedimentos recebem vários nomes, entre eles:
- Normalização de Logs
- Padronização de Logs
- Enriquecimento de Logs
- Anonimização de Logs
- Personalização de Logs
Uma decisão importante no planejamento é verificar SE os hosts têm essa capacidade de pré-processamento e, em caso positivo, se vale a pena utilizá-los, analisando o impacto desse pré-processamento comparado à possibilidade de processar essas filtragens no SIEM.
***
**3. Questões a Considerar: Quando enviar?**
Os SIEMs modernos (e o RK-SIEM naturalmente) têm a capacidade de processar dados praticamente em "tempo real", mas, isso é realmente necessário (e conveniente)?
![](../../assets/visao-geral-03.png)
É necessário considerar o número de hosts que enviam dados ao SIEM e o volume desses dados/logs enviados e decidir SE e QUAIS hosts/serviços terão seus logs analisados em tempo real pelo SIEM.
É possível configurar/personalizar o envio dos logs de acordo com a criticidade de sua análise e conveniência para serem enviados periodicamente em períodos como de 30 em 30 segundos, a cada minuto, a cada 5 minutos...
Dependendo do que se está monitorando pode ser conveniente programar o envio de logs para ser feito somente quando eventos específicos acontecerem ou quando deverminados serviços se encontrarem em situações específicas.
***
**4. Questões a Considerar: E depois de enviar?**
Os Logs depois de serem enviados pelos hosts ao SIEM ainda precisam existir?
![](../../assets/visao-geral-04.png)
Vários serviços de geração de logs nos próprios hosts já dispõem de configurações que fazem um rotacionamento de logs diariamente e/ou semanalmente ou em um período determinado. Isso é realmente necessário?
Se o volume de logs gerado é muito grande e o rotacionamento é implementado é necessário/possível armazenar logs mais antigos em algum sistema de backup?
Se sim, é importante definir a periodicidade (e se possível a automação do processo) dos backups e o tempo de armazenamento. Essa decisão pode ser em função de questões legais (LGPD, GDPR, ...) ou a partir de políticas institucionais.
Uma outra decisão pode ser a de descartar os logs gerados/armazenados nos hosts uma vez enviados ao SIEM. Nesses casos, o planejamento de arnazenamento e backup passa a ser exclusivo sobre os registros indexados e armazenados no próprio SIEM.
***
**5. Cenários de Ingestão de Logs no RK-SIEM:**
![](../../assets/visao-geral-05.png)
***
**6. Lista (não exaustiva) de possibilidade de Ingestão de Logs**
<ul>
<li>Logs no formato JSON (uso de Templates)</li>
<ul>
<li>Linux (RSyslog / Syslog-NG)</li>
<li><del>Windows (Windows Event Forwarding - WEF -> Binários ou XML)</del></li>
</ul>
<li>Uso de Logs Shippers (Data Forwarders) nos Hosts</li>
<ul>
<li>FluentBit</li>
<li>Beats (Filebeat, Metricbeat, Packetbeat, Heartbeat, Winlogbeat, Auditbeat)</li>
</ul>
<li>Agentes: OpenTelemetry (OTel Agent)</li>
<li>RK-SIEM-COLLECTOR / Data Prepper / FluentBit (como coletor)</li>
<li>Outros coletores (Logstash | Open Telemetry Collector)</li>
</ul>
***
**7. Ingestão de Logs: Visão Geral**
![](../../assets/visao-geral-06.png)
***
**Assista à Videoaula explicativa sobre o assunto clicando na imagem abaixo:**
<a href="https://www.youtube.com/watch?v=dXznQwfZ-8g" target="_blank"><img width="400" height="120" alt="assistavideo" src="../../assets/rk-siem-youtube.png" /></a>

168
roteiros/03-lab01/README.md Normal file
View File

@@ -0,0 +1,168 @@
![](../../assets/rk-siem-titulo-ingestao-lab01.png)
![](../../assets/lab01-01.png)
Neste primeiro laboratório o objetivo é enviar Logs de um host com Linux (Debian) diretamente a partir do RSyslog para o RK-SIEM.
Para isso utilizaremos um Docker com o Debian Linux "enxuto" (slim) adicionado dos seguintes pacotes:
<ul>
<li>RSyslog (Gerenciador de Logs do Linux)</li>
<li>RSyslog-Elasticsearch (Pacote para envio dos Logs para o RK-SIEM/OpenSearch)</li>
<li>OpenSSH -Servidor SSH para gerar logs de acesso a serem enviados para o RK-SIEM</li>
</ul>
O módulo *rsyslog-mmjsonparse* (presente no pacote RSyslog) será ativado para envio de Logs no formato JSON.
o módulo *omelasticsearch* (presente no pacote RSyslog-ElasticSearch) será ativado para envio de logs em bloco (bulk) para o RK-SIEM/OpenSearch.
Conteúdo do docker-compose.yml referente ao Host 01:
```
services:
rk-siem-host01:
image: ricardokleber/rk-siem-host01:latest
container_name: rk-siem-host01
hostname: rk-siem-host01
tty: true
stdin_open: true
restart: always
```
Conteúdo adicionado ao arquivo de configuração do RSyslog (*/etc/rsyslog.conf*) para formatar os logs em um Template JSON:
```
# Template para formatar o JSON
template(name="json-template" type="list") {
constant(value="{")
constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"host\":\"") property(name="hostname")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"message\":\"") property(name="msg" format="json")
constant(value="\"}")
```
Conteúdo adicionado ao arquivo de configuração do RSyslog (*/etc/rsyslog.conf*) para conexão ao RK-SIEM e envio dos Logs autenticando-se com usuário admin/admin:
```
# Envio para o RK-SIEM-CORE
action(type="omelasticsearch"
server="172.19.0.1"
serverport="9200"
template="json-template"
searchIndex="host01-logs"
bulkmode="on"
errorfile="/var/log/rsyslog-erros.log")
```
***
**Roteiro Passo a Passo:**
**1. Baixe o Repositório GIT do projeto**
```
git clone https://gitlab.ifrncn.com.br/ricardokleber/rk-siem.git
```
**2. Entre no diretório/pasta do projeto referente ao LAB01**
(O docker-compose deste diretório já contém as configurações do HOST01)
```
cd rk-siem/roteiros/03-lab01
```
**3. Levante o RK-SIEM-CORE**
```
docker compose up -d rk-siem-core
```
**4. Levante o RK-SIEM-UI**
```
docker compose up -d rk-siem-ui
```
(Após alguns segundos você já poderá subir a interface Web RK-SIEM-UI acessando http://localhost:5601 em um navegador)
![](../../assets/rk-siem-login.png)
**5. Levante o RK-SIEM-HOST01**
```
docker compose up -d rk-siem-host01
```
**6. Entre no HOST01 e ative os serviços RSyslog e SSH**
```
docker exec -it rk-siem-host01 bash
```
```
rsyslogd
```
```
service ssh start
```
***
**7. Acesse o RK-SIEM com as credenciais padrão**
```
Username: admin | Password: admin
```
**8. No Menu do canto superior esquerdo, na sessão 'Management' selecione 'Dashboards Management'**
![](../../assets/rk-siem-dashboards-management.png)
**9. Selecione a opção 'Index patterns' para configurar o seu primeiro índice no RK-SIEM (para receber os Logs do HOST01)'**
![](../../assets/rk-siem-index-patterns.png)
**10. Clique no botão 'Create index pattern' para Criar seu primeiro índice**
![](../../assets/rk-siem-botao-create-index-pattern.png)
Observe que o Host 01 já enviou logs para o RK-SIEM (A indicação do índice 'host01-logs' já aparece como fonte disponível)
![](../../assets/rk-siem-visualizacao-host01-logs.png)
**11. Preencha o campo 'Index pattern name' indicando que o índice que será criado deverá receber todo o tráfego de índices começando com 'host01-logs'**
```
host01-logs*
```
![](../../assets/rk-siem-index-pattern-name.png)
Clique no botão 'Next step' para o próximo passo.
**12. No campo 'Time field' você deverá indicar;selecionar o 'campo de índice de tempo' usado para indexar e exibir os logs. Clicando na seta surgirá o campo padrão utilizado em Logs '@timestamp'. Clique para selecioná-lo**
```
@timestamp
```
![](../../assets/rk-siem-selecao-timestamp.png)
(Clique no botão 'Create index pattern' para finalizar a criação do índice).
**Você já poderá visualizar os logs chegando do 'Host01' na seção 'Discover'**
![](../../assets/rk-siem-secao-discover.png)
![](../../assets/rk-siem-discover-logs-host01.png)
***
**Assista à Videoaula explicativa sobre o assunto clicando na imagem abaixo:**
<a href="https://www.youtube.com/watch?v=DoedlfxmR6g" target="_blank"><img width="400" height="120" alt="assistavideo" src="../../assets/rk-siem-youtube_lab01.png" /></a>

View File

@@ -0,0 +1,56 @@
services:
rk-siem-core:
image: ricardokleber/rk-siem-core:latest
container_name: rk-siem-core
environment:
- cluster.name=rk-siem-core
- node.name=rk-siem-node
- discovery.type=single-node
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Ajuste conforme sua RAM disponível
- DISABLE_INSTALL_DEMO_CONFIG=false
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- rk-siem-data:/usr/share/opensearch/data
ports:
- 9200:9200 # API REST
- 9600:9600 # Performance Analyzer
networks:
- rk-siem-net
rk-siem-ui:
image: ricardokleber/rk-siem-ui:latest
container_name: rk-siem-ui
ports:
- 5601:5601 # Interface Web
expose:
- 5601
command: ["/bin/bash", "-c", "/etc/init.d/opensearch-dashboards start && tail -f /var/log/opensearch-dashboards/opensearch-dashboards.stdout"]
restart: always
environment:
- 'OPENSEARCH_HOSTS=["https://rk-siem-core:9200"]'
- "DISABLE_SECURITY_DASHBOARDS_PLUGIN=false"
networks:
- rk-siem-net
depends_on:
- rk-siem-core
rk-siem-host01:
image: ricardokleber/rk-siem-host01:latest
container_name: rk-siem-host01
hostname: rk-siem-host01
tty: true
stdin_open: true
restart: always
volumes:
rk-siem-data:
networks:
rk-siem-net:

View File

@@ -32,7 +32,7 @@ template(name="json-template" type="list") {
# Envio para o RK-CORE # Envio para o RK-CORE
action(type="omelasticsearch" action(type="omelasticsearch"
server="172.19.0.1" server="172.18.0.1" ## IP do Docker RK-SIEM-CORE (mude se o IP não for esse)
serverport="9200" serverport="9200"
template="json-template" template="json-template"
searchIndex="host01-logs" searchIndex="host01-logs"

176
roteiros/04-lab02/README.md Normal file
View File

@@ -0,0 +1,176 @@
![](../../assets/rk-siem-titulo-ingestao-lab02.png)
![](../../assets/rk-siem-lab02-esquema.png)
Neste segundo laboratório o objetivo é enviar Logs de um host com Linux (Debian) em seu formato nativo (Syslog) para um Logshipper (Fluent-Bit) instalado no próprio host que providenciará o envio em formato JSON para o RK-SIEM.
Para isso também utilizaremos um Docker com o Debian Linux "enxuto" (slim) adicionado dos seguintes pacotes:
<ul>
<li>RSyslog (Gerenciador de Logs do Linux)</li>
<li>Fluent-Bit</li>
<li>Apache2 -Servidor Web para gerar logs de acesso a serem enviados para o RK-SIEM</li>
</ul>
Conteúdo do docker-compose.yml referente ao Host 02:
```
services:
rk-siem-host02:
image: ricardokleber/rk-siem-host02:latest
container_name: rk-siem-host02
hostname: rk-siem-host02
tty: true
stdin_open: true
restart: always
```
**Nenhum conteúdo foi adicionado ao arquivo de configuração do RSyslog!!!**
Conteúdo adicionado ao arquivo de configuração do Fluent-Bit (*/etc/fluent-bit/fluent-bit.conf*) para conexão ao RK-SIEM e envio dos Logs autenticando-se com usuário admin/admin:
```
# Capturar logs somente do apache (exemplo)
[INPUT]
Name tail
Path /var/log/apache2/access.log
Tag apache-logs-acesso
```
```
# Envio para o RK-SIEM-CORE
[OUTPUT]
Name opensearch
Match apache-logs-acesso
Host 172.18.0.1
Port 9200
Index host02-logs
HTTP_User admin
HTTP_Passwd admin
tls On
tls.verify Off
```
***
**Roteiro Passo a Passo:**
**1. Baixe o Repositório GIT do projeto**
```
git clone https://gitlab.ifrncn.com.br/ricardokleber/rk-siem.git
```
**2. Entre no diretório/pasta do projeto referente ao LAB02**
(O docker-compose deste diretório já contém as configurações do HOST02)
```
cd rk-siem/roteiros/04-lab02
```
**3. Levante o RK-SIEM-CORE**
```
docker compose up -d rk-siem-core
```
**4. Levante o RK-SIEM-UI**
```
docker compose up -d rk-siem-ui
```
(Após alguns segundos você já poderá subir a interface Web RK-SIEM-UI acessando http://localhost:5601 em um navegador)
![](../../assets/rk-siem-login.png)
**5. Levante o RK-SIEM-HOST02**
```
docker compose up -d rk-siem-host02
```
**6. Entre no HOST02 e ative os serviços RSyslog e Apache2 e, em seguida, execute o Fluent-Bit em background**
```
docker exec -it rk-siem-host02 bash
```
```
rsyslogd
```
```
service apache2 start
```
```
/opt/fluent-bit/bin/fluent-bit -c /etc/fluent-bit/fluent-bit.conf
```
***
**7. Como filtramos no Fluent-Bit para enviar somente logs de acesso ao Servidor Web, vamos gerar pelo menos um acesso no próprio host**
```
curl http://localhost
```
**8. Acesse o RK-SIEM com as credenciais padrão**
```
Username: admin | Password: admin
```
**9. No Menu do canto superior esquerdo, na sessão 'Management' selecione 'Dashboards Management'**
![](../../assets/rk-siem-dashboards-management.png)
**10. Selecione a opção 'Index patterns' para configurar o seu primeiro índice no RK-SIEM (para receber os Logs do HOST02)'**
![](../../assets/rk-siem-index-patterns.png)
**11. Clique no botão 'Create index pattern' para Criar seu primeiro índice**
![](../../assets/rk-siem-botao-create-index-pattern.png)
Observe que o Host 02 já enviou logs para o RK-SIEM (A indicação do índice 'host02-logs' já aparece como fonte disponível)
![](../../assets/rk-siem-visualizacao-host02-logs.png)
**11. Preencha o campo 'Index pattern name' indicando que o índice que será criado deverá receber todo o tráfego de índices começando com 'host02-logs'**
```
host02-logs*
```
![](../../assets/rk-siem-index-pattern-name-02.png)
Clique no botão 'Next step' para o próximo passo.
**12. No campo 'Time field' você deverá indicar;selecionar o 'campo de índice de tempo' usado para indexar e exibir os logs. Clicando na seta surgirá o campo padrão utilizado em Logs '@timestamp'. Clique para selecioná-lo**
```
@timestamp
```
![](../../assets/rk-siem-selecao-timestamp-02.png)
(Clique no botão 'Create index pattern' para finalizar a criação do índice).
**Você já poderá visualizar o log enviado do 'Host02' com o acesso ao servidor web local na seção 'Discover'**
![](../../assets/rk-siem-secao-discover.png)
![](../../assets/rk-siem-discover-logs-host02.png)
***
**Assista à Videoaula explicativa sobre o assunto clicando na imagem abaixo:**
<a href="https://www.youtube.com/watch?v=kpBKzi5iLQo" target="_blank"><img width="400" height="120" alt="assistavideo" src="../../assets/rk-siem-youtube_lab02.png" /></a>

View File

@@ -0,0 +1,64 @@
services:
rk-siem-core:
image: ricardokleber/rk-siem-core:latest
container_name: rk-siem-core
environment:
- cluster.name=rk-siem-core
- node.name=rk-siem-node
- discovery.type=single-node
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Ajuste conforme sua RAM disponível
- DISABLE_INSTALL_DEMO_CONFIG=false
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- rk-siem-data:/usr/share/opensearch/data
ports:
- 9200:9200 # API REST
- 9600:9600 # Performance Analyzer
networks:
- rk-siem-net
rk-siem-ui:
image: ricardokleber/rk-siem-ui:latest
container_name: rk-siem-ui
ports:
- 5601:5601 # Interface Web
expose:
- 5601
command: ["/bin/bash", "-c", "/etc/init.d/opensearch-dashboards start && tail -f /var/log/opensearch-dashboards/opensearch-dashboards.stdout"]
restart: always
environment:
- 'OPENSEARCH_HOSTS=["https://rk-siem-core:9200"]'
- "DISABLE_SECURITY_DASHBOARDS_PLUGIN=false"
networks:
- rk-siem-net
depends_on:
- rk-siem-core
rk-siem-host01:
image: ricardokleber/rk-siem-host01:latest
container_name: rk-siem-host01
hostname: rk-siem-host01
tty: true
stdin_open: true
restart: always
rk-siem-host02:
image: ricardokleber/rk-siem-host02:latest
container_name: rk-siem-host02
hostname: rk-siem-host02
tty: true
stdin_open: true
restart: always
volumes:
rk-siem-data:
networks:
rk-siem-net:

View File

@@ -16,7 +16,7 @@
[OUTPUT] [OUTPUT]
Name opensearch Name opensearch
Match apache-logs-acesso Match apache-logs-acesso
Host 172.20.0.1 Host 172.18.0.1
Port 9200 Port 9200
Index host02-logs Index host02-logs
Type _doc Type _doc

188
roteiros/05-lab03/README.md Normal file
View File

@@ -0,0 +1,188 @@
![](../../assets/rk-siem-titulo-ingestao-lab03.png)
***
**Como enviar Logs de hosts Windows para o RK-SIEM (se o padrão Microsoft é o .EVTX)?**
![](../../assets/rk-siem-lab03-01.png)
Neste terceiro laboratório o objetivo é enviar Logs de um host com Windows em seu formato nativo (.EVTX) para um Logshipper (Fluent-Bit) instalado no próprio host que providenciará o envio em formato JSON para o RK-SIEM.
![](../../assets/rk-siem-lab03-02.png)
Como estamos usando o ambiente Linux para nossas práticas (e para não usar um Máquina Virtual Windows VirtualBox ou VMWare à parte em nosso cenário) faremos uso de uma "adaptação" feita pelo projeto <a href="https://github.com/dockur/windows" target="_blank">Windows Dockur</a> que executa uma máquina virtual Windows (KVM) gerenciada de dentro de um container Docker.
![](../../assets/rk-siem-lab03-03.png)
Conteúdo do docker-compose.yml referente ao Host 03:
```
services
rk-siem-host03:
image: docker.ifrncn.com.br/rk/rk-windows:latest
container_name: rk-siem-host03
devices:
- /dev/kvm # Essencial para aceleração de hardware (KVM)
cap_add:
- NET_ADMIN
ports:
- 8006:8006 # Interface Web (NoVNC)
volumes:
- ./dados:/storage
stop_grace_period: 2m
restart: on-failure
environment:
VERSION: "7u" # Define a versão (win11, win10, etc)
RAM_SIZE: "2G" # Memória RAM
CPU_CORES: "2" # Quantidade de núcleos
DISK_SIZE: "15G" # Tamanho do disco virtual
USERNAME: "admin"
PASSWORD: "admin"
```
Em versões mais atuais do Windows (11 e/ou 2025 server) é só baixar gratuitamente a versão atualizada do <a href="https://fluentbit.io/" target="_blank">Fluent-Bit</a>, instalar e configurar seguindo as orientações deste roteiro.
Para não deixar nosso ambiente muito pesado, porém (em função dos recursos necessários para executar uma MV Windows 11/2025) fizemos a opção por instalar e configurar um Windows 7 necessitando, porém, da adição dos seguintes aplicativos:
<ul>
<li>.NET Framework 4.8</li>
<li>Fluent-Bit (versão 1.8.5)</li>
<li>NSSM (para executar o Fluent-Bit como serviço</li>
</ul>
Foram necessários, ainda, vários patches com atualizações no Windows 7 para que o sistema funcionasse perfeitamente:
<ul>
<li>KB4503575</li>
<li>KB4503575</li>
<li>KB3191566</li>
<li>KB4019990</li>
<li>KB3033929</li>
<li>KB2534111</li>
<li>KB2872035</li>
<li>KB2809215</li>
<li>KB976902</li>
</ul>
##
**ATENÇÃO!!! Se você optar por instalar "do zero" o Windows 7, deverá instalar todos os aplicativos e patches listados aqui, ou não funcionará**
##
**Para facilitar/agilizar esta prática, sugerimos baixar e utilizar a pasta compartilhada 'dados' de um Windows7 já com todos os aplicativos e patches aplicados. Disponibilizamos o passo-a-pasos em nosso Git <a href="https://gitlab.ifrncn.com.br/ricardokleber/rk-windows7" target="_blank">https://gitlab.ifrncn.com.br/ricardokleber/rk-windows7</a>**
Arquivo de configuração do Fluent-Bit (*C:\Program Files\fluent-bit\fluent-bit.conf*) para conexão ao RK-SIEM e envio dos Logs autenticando-se com usuário admin/admin:
![](../../assets/rk-siem-lab03-04.png)
**Verifique se o IP do RK-SIEM-CORE informado é o IP do gateway da máquina Windows ou o IP do seu host real (pode ser qualquer um deles)**
***
**Roteiro Passo a Passo:**
**1. Baixe o Repositório GIT do projeto**
```
git clone https://gitlab.ifrncn.com.br/ricardokleber/rk-siem.git
```
**2. Entre no diretório/pasta do projeto referente ao LAB03**
(O docker-compose deste diretório já contém as configurações do HOST03)
```
cd rk-siem/roteiros/05-lab03
```
**3. Levante o RK-SIEM-CORE**
```
docker compose up -d rk-siem-core
```
**4. Levante o RK-SIEM-UI**
```
docker compose up -d rk-siem-ui
```
(Após alguns segundos você já poderá subir a interface Web RK-SIEM-UI acessando http://localhost:5601 em um navegador)
![](../../assets/rk-siem-login.png)
**5. Baixe e descompacte a pasta 'dados' com o Windows 7 configurado**
```
wget http://arquivos.ifrncn.com.br/windows/rk-windows7-dados.tgz
```
```
tar -xvzf rk-windows7-dados.tgz
```
**6. Levante o RK-SIEM-HOST03**
```
docker compose up -d rk-siem-host03
```
**7. Acesse o HOST03 usando um Navegador (http://localhost:8006) e verifique se o arquivo de configuração do Fluent-Bit está apontando corretamente para o IP do RK-SIEM-CORE**
![](../../assets/rk-siem-lab03-04.png)
**8. Acesse o RK-SIEM (http://localhost:5601) com as credenciais padrão**
```
Username: admin | Password: admin
```
**9. No Menu do canto superior esquerdo, na sessão 'Management' selecione 'Dashboards Management'**
![](../../assets/rk-siem-dashboards-management.png)
**10. Selecione a opção 'Index patterns' para configurar o seu primeiro índice no RK-SIEM (para receber os Logs do HOST03)'**
![](../../assets/rk-siem-index-patterns.png)
**11. Clique no botão 'Create index pattern' para Criar o índice dos logs vindos do Host03**
![](../../assets/rk-siem-botao-create-index-pattern.png)
Observe que o Host 03 já enviou logs para o RK-SIEM (A indicação do índice 'host03-logs' já aparece como fonte disponível)
![](../../assets/rk-siem-lab03-05.png)
**11. Preencha o campo 'Index pattern name' indicando que o índice que será criado deverá receber todo o tráfego de índices começando com 'host03-logs'**
```
host03-logs*
```
![](../../assets/rk-siem-lab03-06.png)
Clique no botão 'Next step' para o próximo passo.
**12. No campo 'Time field' você deverá indicar;selecionar o 'campo de índice de tempo' usado para indexar e exibir os logs. Clicando na seta surgirá o campo padrão utilizado em Logs '@timestamp'. Clique para selecioná-lo**
```
@timestamp
```
![alt text](../../assets/rk-siem-lab03-07.png)
(Clique no botão 'Create index pattern' para finalizar a criação do índice).
**Você já poderá visualizar os logs enviados pelo 'Host03' na seção 'Discover'**
![](../../assets/rk-siem-secao-discover.png)
![alt text](../../assets/rk-siem-lab03-08.png)
***
**Assista à Videoaula explicativa sobre o assunto clicando na imagem abaixo:**
<a href="https://www.youtube.com/watch?v=tSvIpqMLhsw" target="_blank"><img width="400" height="120" alt="assistavideo" src="../../assets/rk-siem-youtube_lab03.png" /></a>

View File

@@ -0,0 +1,85 @@
services:
rk-siem-core:
image: ricardokleber/rk-siem-core:latest
container_name: rk-siem-core
environment:
- cluster.name=rk-siem-core
- node.name=rk-siem-node
- discovery.type=single-node
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Ajuste conforme sua RAM disponível
- DISABLE_INSTALL_DEMO_CONFIG=false
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- rk-siem-data:/usr/share/opensearch/data
ports:
- 9200:9200 # API REST
- 9600:9600 # Performance Analyzer
networks:
- rk-siem-net
rk-siem-ui:
image: ricardokleber/rk-siem-ui:latest
container_name: rk-siem-ui
ports:
- 5601:5601 # Interface Web
expose:
- 5601
command: ["/bin/bash", "-c", "/etc/init.d/opensearch-dashboards start && tail -f /var/log/opensearch-dashboards/opensearch-dashboards.stdout"]
restart: always
environment:
- 'OPENSEARCH_HOSTS=["https://rk-siem-core:9200"]'
- "DISABLE_SECURITY_DASHBOARDS_PLUGIN=false"
networks:
- rk-siem-net
depends_on:
- rk-siem-core
rk-siem-host01:
image: ricardokleber/rk-siem-host01:latest
container_name: rk-siem-host01
hostname: rk-siem-host01
tty: true
stdin_open: true
restart: always
rk-siem-host02:
image: ricardokleber/rk-siem-host02:latest
container_name: rk-siem-host02
hostname: rk-siem-host02
tty: true
stdin_open: true
restart: always
rk-siem-host03:
image: docker.ifrncn.com.br/rk/rk-windows:latest
container_name: rk-siem-host03
devices:
- /dev/kvm # Essencial para aceleração de hardware (KVM)
cap_add:
- NET_ADMIN
ports:
- 8006:8006 # Interface Web (NoVNC)
volumes:
- ./dados:/storage
stop_grace_period: 2m
restart: on-failure
environment:
VERSION: "7u" # Define a versão (win11, win10, etc)
RAM_SIZE: "2G"
CPU_CORES: "2" # Quantidade de núcleos
DISK_SIZE: "15G" # Tamanho do disco virtual
USERNAME: "admin"
PASSWORD: "admin"
volumes:
rk-siem-data:
networks:
rk-siem-net:

View File

@@ -0,0 +1,29 @@
# cat /etc/fluent-bit/fluent-bit.conf
[SERVICE]
Flush 1
Log_Level info
Daemon off
# Coleta logs do Arquivo Gerado
[INPUT]
Name tail
Path /root/teste.log
Tag logs_host04
# Envio para o RK-SIEM-CORE
[OUTPUT]
Name opensearch
Match logs_host04
Host 172.18.0.1
Port 9200
Index teste-logs
Type _doc
HTTP_User admin
HTTP_Passwd admin
tls On
tls.verify Off
Suppress_Type_Name On
#[OUTPUT]
# Name stdout
# Match *

View File

@@ -0,0 +1,56 @@
services:
rk-siem-core:
image: ricardokleber/rk-siem-core:latest
container_name: rk-siem-core
environment:
- cluster.name=rk-siem-core
- node.name=rk-siem-node
- discovery.type=single-node
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Ajuste conforme sua RAM disponível
- DISABLE_INSTALL_DEMO_CONFIG=false
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- rk-siem-data:/usr/share/opensearch/data
ports:
- 9200:9200 # API REST
- 9600:9600 # Performance Analyzer
networks:
- rk-siem-net
rk-siem-ui:
image: ricardokleber/rk-siem-ui:latest
container_name: rk-siem-ui
ports:
- 5601:5601 # Interface Web
expose:
- 5601
command: ["/bin/bash", "-c", "/etc/init.d/opensearch-dashboards start && tail -f /var/log/opensearch-dashboards/opensearch-dashboards.stdout"]
restart: always
environment:
- 'OPENSEARCH_HOSTS=["https://rk-siem-core:9200"]'
- "DISABLE_SECURITY_DASHBOARDS_PLUGIN=false"
networks:
- rk-siem-net
depends_on:
- rk-siem-core
rk-siem-host04:
image: ricardokleber/rk-siem-host04:latest
container_name: rk-siem-host04
hostname: rk-siem-host04
tty: true
stdin_open: true
restart: always
volumes:
rk-siem-data:
networks:
rk-siem-net:

View File

@@ -0,0 +1,4 @@
PUT /teste-logs/_settings
{
"index.default_pipeline": "rk-siem_web_logs"
}

View File

@@ -0,0 +1 @@
DELETE _ingest/pipeline/rk-siem_web_logs

View File

@@ -0,0 +1 @@
GET /_settings?filter_path=*.settings.index.default_pipeline

View File

@@ -0,0 +1 @@
GET _ingest/pipeline

View File

@@ -0,0 +1,6 @@
PUT /teste-logs/_settings
{
"index": {
"default_pipeline": null
}
}

View File

@@ -0,0 +1,61 @@
PUT _ingest/pipeline/rk-siem_ssh_logs
{
"description": "Pipeline do RK-SIEM para normalização de logs SSH",
"processors": [
{
"grok": {
"field": "log",
"patterns": [
"%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{WORD:program}\\[%{NUMBER:pid}\\]: %{WORD:ssh_event} password for %{USER:user} from %{IP:source_ip} port %{NUMBER:source_port} ssh2",
"%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{WORD:program}\\[%{NUMBER:pid}\\]: %{WORD:ssh_event} for invalid user %{USER:user} from %{IP:source_ip} port %{NUMBER:source_port} ssh2",
"%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{WORD:program}\\[%{NUMBER:pid}\\]: Connection closed by (authenticating |)%{IP:source_ip} port %{NUMBER:source_port}"
],
"description": "Extrai eventos de Accepted, Failed e Disconnected do SSH"
}
},
{
"date": {
"field": "timestamp",
"formats": ["MMM d HH:mm:ss", "MMM dd HH:mm:ss"],
"target_field": "@timestamp",
"description": "Padroniza o tempo vindo do syslog (ex: Oct 10 13:55:36)"
}
},
{
"set": {
"if": "ctx.ssh_event == 'Accepted'",
"field": "event.outcome",
"value": "success"
}
},
{
"set": {
"if": "ctx.ssh_event == 'Failed'",
"field": "event.outcome",
"value": "failure"
}
},
{
"geoip": {
"field": "source_ip",
"target_field": "geo",
"ignore_missing": true,
"description": "Enriquecimento: Localiza a origem do acesso"
}
},
{
"remove": {
"field": ["log", "timestamp", "program"],
"ignore_missing": true
}
}
],
"on_failure": [
{
"set": {
"field": "error.message",
"value": "Falha no processamento do pipeline rk_siem_ssh_logs"
}
}
]
}

View File

@@ -0,0 +1,10 @@
POST _ingest/pipeline/rk-siem_ssh_logs/_simulate
{
"docs": [
{
"_source": {
"log": "Oct 23 11:30:05 servidor-prod sshd[1234]: Failed password for root from 192.168.1.50 port 54321 ssh2"
}
}
]
}

View File

@@ -0,0 +1,51 @@
PUT _ingest/pipeline/rk-siem_web_logs
{
"description": "Pipeline do RK-SIEM para normalização de logs HTTP - Ajustado para campo 'log'",
"processors": [
{
"grok": {
"field": "log",
"patterns": [
"%{IPORHOST:source_ip} - %{USER:user_id} \\[%{HTTPDATE:timestamp}\\] \"%{WORD:http_method} %{NOTSPACE:url_path} HTTP/%{NUMBER:http_version}\" %{NUMBER:status_code} %{NUMBER:bytes_sent}"
],
"description": "Extrai dados do campo 'log' enviado pelo Fluent-bit"
}
},
{
"date": {
"field": "timestamp",
"formats": [
"dd/MMM/yyyy:HH:mm:ss Z"
],
"target_field": "@timestamp"
}
},
{
"convert": {
"field": "status_code",
"type": "integer"
}
},
{
"user_agent": {
"field": "user_agent_string",
"target_field": "browser_info",
"ignore_missing": true
}
},
{
"remove": {
"field": ["log", "timestamp"],
"ignore_missing": true
}
}
],
"on_failure": [
{
"set": {
"field": "error.message",
"value": "Falha no processamento do pipeline rk_siem_web_logs"
}
}
]
}

View File

@@ -0,0 +1,10 @@
POST _ingest/pipeline/rk-siem_web_logs/_simulate
{
"docs": [
{
"_source": {
"log": "192.168.1.10 - - [23/Apr/2026:14:00:12 +0000] \"DELETE /index.html HTTP/1.1\" 500 5124"
}
}
]
}

View File

@@ -0,0 +1,77 @@
import random
import time
from datetime import datetime
# Bancos de dados fictícios para os logs
IPS = ["192.168.1.10", "10.0.0.5", "172.16.0.2", "45.33.11.2", "185.22.14.5", "200.150.10.1", "8.8.8.8"]
USERS = ["root", "admin", "user1", "guest", "webmaster", "support", "devops", "db_admin"]
PAGES = ["/index.html", "/login", "/admin/dashboard", "/api/v1/user", "/wp-login.php", "/config.php"]
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
"curl/7.68.0",
"python-requests/2.25.1"
]
def generate_apache_log():
ip = random.choice(IPS)
date = datetime.now().strftime('%d/%b/%Y:%H:%M:%S +0000')
method = random.choice(["GET", "POST", "PUT", "DELETE"])
page = random.choice(PAGES)
status = random.choice([200, 201, 404, 500, 403, 301])
size = random.randint(150, 8000)
agent = random.choice(USER_AGENTS)
return f'{ip} - - [{date}] "{method} {page} HTTP/1.1" {status} {size} "-" "{agent}"'
def generate_ssh_log():
ip = random.choice(IPS)
user = random.choice(USERS)
date = datetime.now().strftime('%b %d %H:%M:%S')
host = "host04"
if random.random() > 0.6: # 40% de chance de sucesso, 60% de falha
return f'{date} {host} sshd[{random.randint(1000, 9999)}]: Failed password for {user} from {ip} port {random.randint(30000, 60000)} ssh2'
else:
return f'{date} {host} sshd[{random.randint(1000, 9999)}]: Accepted password for {user} from {ip} port {random.randint(30000, 60000)} ssh2'
def main():
print("--- Gerador de Logs Customizado ---")
# 1. Escolha do tipo
print("\n[1] Apache2 (HTTP)")
print("[2] SSH (Auth)")
service_choice = input("Escolha o tipo de log (1 ou 2): ")
# 2. Quantidade de linhas
try:
num_lines = int(input("Quantas linhas de log deseja gerar? "))
except ValueError:
print("Erro: Por favor, insira um número válido.")
return
# 3. Nome do arquivo
output_file = input("Digite o nome do arquivo de saída (ex: teste.log): ")
print(f"\nIniciando geração de {num_lines} linhas em '{output_file}'...")
try:
with open(output_file, "w") as f:
for i in range(num_lines):
if service_choice == "1":
line = generate_apache_log()
else:
line = generate_ssh_log()
f.write(line + "\n")
# Exibe progresso a cada 10% para não travar o terminal em arquivos gigantes
if num_lines > 100 and i % (num_lines // 10) == 0:
print(f"Progresso: {round((i/num_lines)*100)}%...")
print(f"\nSucesso! Arquivo '{output_file}' gerado com {num_lines} linhas.")
except Exception as e:
print(f"Ocorreu um erro ao gravar o arquivo: {e}")
if __name__ == "__main__":
main()