Introdução
Os tutoriais anteriores nesta série guiaram você sobre como instalar e configurar o Suricata. Eles também explicaram como usar o Filebeat para enviar alertas do seu servidor Suricata para um servidor Elastic Stack, a ser usado com sua funcionalidade integrada de Gerenciamento de Informações e Eventos de Segurança (SIEM).
Neste último tutorial da série, você criará regras personalizadas do Kibana e gerará alertas dentro dos painéis SIEM do Kibana. Uma vez que você tenha regras em vigor e entenda onde e como filtrar os logs do Suricata usando o Kibana, você explorará como criar e gerenciar casos usando as ferramentas de análise de linha do tempo do Kibana.
Até o final deste tutorial, você terá um sistema SIEM que pode usar para rastrear e investigar eventos de segurança em todos os servidores de sua rede.
Pré-requisitos
Se você esteve acompanhando esta série de tutoriais, você deveria já ter um servidor com pelo menos 4GB de RAM e 2 CPUs, e um usuário não-root configurado. Para os propósitos deste guia, você pode configurar isso seguindo nossos guias de configuração inicial do servidor para Ubuntu 20.04, Debian 11, ou Rocky Linux 8, dependendo do seu sistema operacional de escolha.
Você também vai precisar do Suricata instalado e em execução no seu servidor. Se precisar instalar o Suricata no seu servidor, você pode fazer isso seguindo um dos tutoriais a seguir dependendo do seu sistema operacional:
- Ubuntu 20.04: Como Instalar o Suricata no Ubuntu 20.04
- Debian 11: Como Instalar o Suricata no Debian 11
- Rocky Linux 8: Como Instalar o Suricata no Rocky Linux 8
Você também vai precisar de um servidor rodando o Elastic Stack e configurado para que o Filebeat possa enviar logs do seu servidor Suricata para o Elasticsearch. Se precisar criar um servidor Elastic Stack, use um dos tutoriais da seguinte lista que corresponda ao seu sistema operacional:
- Ubuntu 20.04: Como Construir um Sistema de Gerenciamento de Informações e Eventos de Segurança (SIEM) com Suricata e o Elastic Stack no Ubuntu 20.04
- Debian 11: Como Construir um Sistema de Gerenciamento de Informações e Eventos de Segurança (SIEM) com Suricata e o Elastic Stack no Debian 11
- Rocky Linux 8: Como Construir um Sistema de Gerenciamento de Informações e Eventos de Segurança (SIEM) com Suricata e o Elastic Stack no Rocky Linux 8
Garanta que você possa fazer login no Kibana em seu servidor Elasticsearch e que haja eventos nos vários painéis de alertas e eventos do Suricata.
Assim que tiver todos os pré-requisitos em vigor, abra um túnel SSH para o seu servidor Kibana e faça login no Kibana com seu navegador usando as credenciais que você gerou no tutorial anterior.
Passo 1 — Habilitando Chaves de API no Elasticsearch
Antes de poder criar regras, alertas e linhas do tempo no Kibana, você precisa habilitar uma configuração do módulo de segurança xpack
.
Abra o arquivo /etc/elasticsearch/elasticsearch.yml
com o nano
ou o editor de sua preferência.
Adicione a seguinte linha destacada ao final do arquivo:
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
Salve e feche o arquivo quando terminar de editar. Se estiver usando o nano
, você pode fazer isso com CTRL+X
, depois Y
e ENTER
para confirmar.
Agora, reinicie o Elasticsearch para que a nova configuração tenha efeito.
Agora você está pronto para configurar regras, examinar alertas e criar linhas do tempo e casos no Kibana.
Passo 2 — Adicionando Regras ao Kibana
Para usar a funcionalidade SIEM do Kibana com dados de eventos do Suricata, você precisará criar regras que gerarão alertas sobre eventos recebidos. Visite o Painel de Regras na página do aplicativo de segurança do Kibana para criar ou importar regras.
Para os propósitos deste tutorial, usaremos as seguintes assinaturas para detectar tráfego direcionado a um servidor em portas não correspondentes (tráfego SSH, HTTP e TLS, respectivamente):
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)
alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)
alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)
Se estiver usando suas próprias assinaturas ou aquelas de um conjunto de regras, certifique-se de que pode gerar alertas e acessar os eventos correspondentes nos painéis do Suricata padrão no Kibana.
Agora visite a página de Regras no aplicativo de Segurança do Kibana http://localhost:5601/app/security/rules/. Clique no botão Criar nova regra no canto superior direito da página.
Assegure-se de que o tipo de regra Consulta personalizada esteja selecionado. Role até o campo de entrada Consulta personalizada e cole o seguinte nele:
rule.id: "1000000" or rule.id :"1000001"
Certifique-se de que os valores do rule.id
correspondam ao valor sid
do Suricata para o ataque ou ataques sobre os quais você deseja receber alertas.
Altere o menu suspenso Pré-visualização rápida da consulta para Último mês e então clique em Pré-visualizar resultados. Supondo que você tenha eventos correspondentes em seus registros do Suricata, a página será atualizada com um gráfico que mostra alertas do último mês. Sua página deve se parecer com a captura de tela a seguir:
Clique em Continuar para prosseguir adicionando um nome ao campo Nome da regra, que é necessário para cada regra que você adicionar. Adicione um nome ao campo Nome da regra. Neste exemplo, usaremos a descrição da mensagem da regra do Suricata TRÁFEGO SSH em porta não SSH
. Adicione também uma descrição para a regra. Usaremos Verificar tentativas de conexão SSH em portas não padrão
neste exemplo.
Você também pode expandir a seção Configurações avançadas e adicionar detalhes sobre a regra. Por exemplo, você pode adicionar uma explicação sobre como lidar com um alerta gerado pela regra ou vincular a artigos de pesquisadores de segurança sobre um determinado tipo de ataque.
Quando terminar de adicionar o nome da regra, a descrição e campos extras opcionais, clique em Continuar para prosseguir para o Passo 3 da criação da regra.
Deixe as configurações da seção Agendar regra seguinte com seus valores padrão e clique em Continuar.
Por fim, na etapa Ações da regra, clique em Criar e ativar regra.
Você será redirecionado para uma nova página que mostra detalhes sobre a regra:
Nota: Pode levar alguns minutos para que os dados de alerta sejam populados inicialmente. Esse atraso ocorre porque o agendamento padrão da regra é executar a cada 5 minutos.
Se houver outras regras do Suricata sobre as quais você gostaria de receber alertas, repita as etapas acima, substituindo o sid
da assinatura no campo de consulta personalizada do Kibana rule.id
.
Depois de ter uma ou mais regras em vigor, você estará pronto para prosseguir para o próximo passo, onde examinará os alertas e criará um ou mais casos para gerenciá-los.
Passo 3 — Criando uma Linha do Tempo para Rastrear Alertas Relacionados ao Tráfego SSH
Agora que você tem uma regra ou regras configuradas para gerar alertas no aplicativo SIEM do Kibana, você precisará de uma maneira de agrupar e gerenciar ainda mais os alertas. Para começar, visite o painel de alertas do Kibana: http://127.0.0.1:5601/app/security/alerts.
Certifique-se de ter gerado algum tráfego inválido que corresponda à assinatura ou assinaturas do Suricata que você está usando. Por exemplo, você pode acionar a regra de exemplo sid:1000000
do Suricata executando um comando como o seguinte de sua máquina local:
Este comando tentará se conectar ao seu servidor usando SSH na porta 80, em vez da porta padrão 22 e deve acionar um alerta. Pode levar alguns minutos para o alerta aparecer no Kibana, pois ele precisa ser processado pelo Elasticsearch e pela regra que você criou no Kibana.
Em seguida, você adicionará o campo comnunity_id
à tabela de alertas que é exibida na parte inferior da página. Lembre-se do primeiro tutorial que este campo é gerado pelo Suricata e representa os endereços IP e as portas únicas contidas em um fluxo de rede. Clique no botão Campos e na caixa de diálogo modal que aparece, digite network.community_id
e depois marque a caixa de seleção ao lado do nome do campo:
Feche a modal e o campo será adicionado à tabela de alertas. Agora, passe o mouse sobre qualquer um dos alertas com o mesmo valor de community_id
e clique no ícone Adicionar à investigação na linha do tempo. Isso garantirá que todos os alertas que compartilham o community_id
que o Suricata adicionou ao evento sejam adicionados a uma linha do tempo para investigação adicional:
Em seguida, clique no link Timeline Sem Título na parte inferior esquerda do seu navegador. Este link o levará a uma página que exibe apenas alertas com o campo community_id
do Suricata que você deseja investigar.
A página da linha do tempo mostra mais detalhes sobre pacotes individuais associados a um alerta ou fluxo de rede. Você pode usar a linha do tempo para ter uma ideia melhor de quando um fluxo de rede suspeito começou, de onde ele se originou e quanto tempo durou.
Clique no botão Todas as fontes de dados no lado direito da página e selecione o botão Alertas de Detecção, em seguida, clique em Salvar. Essa opção restringirá a linha do tempo para exibir apenas alertas que o Kibana gera. Sem essa opção, os alertas do Suricata também serão incluídos na linha do tempo.
Para salvar sua nova linha do tempo, clique no ícone de lápis no canto superior esquerdo da página da linha do tempo. A captura de tela a seguir destaca onde encontrar o ícone de lápis e o botão Todas as fontes de dados:
Você pode adicionar texto ao campo de descrição se houver informações adicionais que deseja adicionar à linha do tempo. Quando terminar de editar o nome e a descrição da linha do tempo, clique no botão Salvar no canto inferior direito da caixa de diálogo modal.
Repita as etapas acima para criar linhas do tempo para outros alertas que você gostaria de examinar com mais profundidade posteriormente.
No próximo passo, você usará suas visualizações de linha do tempo de eventos para anexar alertas ao aplicativo Casos do Kibana na suíte de ferramentas SIEM.
Passo 4 — Criando e Gerenciando Casos SIEM
No passo anterior, você criou uma linha do tempo para agrupar alertas individuais e pacotes com base no campo community_id
do Suricata. Nesta seção do tutorial, você criará um Caso para rastrear e gerenciar os alertas em sua linha do tempo.
Para criar um novo caso a partir de sua linha do tempo, certifique-se de estar em uma página de linha do tempo em seu navegador. Clique no botão Anexar ao caso no canto superior direito da página da linha do tempo e, em seguida, no botão Anexar a novo caso na lista que aparece.
Você será redirecionado para uma página onde poderá inserir informações sobre o incidente que está investigando. No exemplo de captura de tela a seguir, o caso é o nosso exemplo de alertas de Tráfego SSH em uma porta não SSH:
Preencha os campos com um nome descritivo e uma ou mais tags opcionais. Neste exemplo, o nome do caso é TRÁFEGO SSH em porta não SSH de 203.0.113.5
, pois esse é o tipo específico de tráfego e host que estamos investigando. Com muitos eventos para investigar em seu sistema SIEM, um esquema de nomenclatura como este ajudará você a acompanhar casos, linhas do tempo e alertas, pois o nome corresponderá ao alerta do Kibana e ao campo de mensagem da assinatura do Suricata.
Role até o final da página e clique no botão Criar caso. Seu navegador estará em uma página que mostra o caso salvo. Você pode adicionar comentários no formato Markdown com informações adicionais, além de editar o caso a partir desta página.
Em seguida, clique no link na descrição para ir à linha do tempo do caso que você adicionou na etapa anterior deste tutorial.
Para cada alerta que você deseja incluir no caso, clique no ícone Mais ações no alerta. Clique em Adicionar ao caso existente.
Clique no nome do caso no modal que aparece para adicionar o alerta ao caso. Certifique-se de selecionar o caso que corresponde à linha do tempo e alertas que você está investigando. Repita a adição de cada alerta na lista ao caso existente.
Agora visite o aplicativo Casos novamente no Kibana usando o menu de navegação no lado esquerdo da página. Clique no seu caso e observe como os alertas que você adicionou estão listados nos detalhes do caso:
A partir daqui, você pode rolar até o final do caso e adicionar qualquer informação adicional que desejar. Por exemplo, quaisquer etapas que você tenha realizado para investigar um alerta ou alertas, alterações de configuração no Suricata, como uma nova regra editada, escalonamento para outro membro da equipe ou qualquer outra coisa relevante para o caso.
Depois de se sentir confortável em criar casos para os vários tipos de alertas que você deseja acompanhar, agora você pode usar as ferramentas SIEM do Kibana para organizar e coordenar a investigação de qualquer alerta em um local central.
Conclusão
Neste tutorial, você construiu sobre seu sistema SIEM existente com Suricata e Elastic Stack, adicionando regras ao Kibana que geram alertas sobre tráfego específico de interesse. Você também criou uma linha do tempo ou várias linhas do tempo para agrupar conjuntos de alertas com base no seu community_id
. Finalmente, você criou um caso e vinculou sua linha do tempo a ele, juntamente com os alertas individuais de interesse.
Com este sistema SIEM em funcionamento, você pode agora rastrear eventos de segurança em seus sistemas em quase qualquer escala. Conforme você se familiariza mais com o Suricata e rastreia os alertas que ele gera em seu SIEM do Kibana, você poderá personalizar os alertas do Suricata e as ações padrão que ele toma para adequá-los à sua rede específica.
Para obter mais informações sobre as ferramentas SIEM do Kibana, visite a Documentação Oficial de Segurança Elástica. Os guias lá explicam como usar Regras, Alertas, Linhas do Tempo e Casos com muito mais detalhes.
Para uma interface SIEM mais leve, você também pode se interessar pelo EveBox, que apresenta todos os dados de eventos do Suricata e funcionalidades SIEM em uma única página.