Ossec Wazuh – Compliance PCI 3.2 – HIDS parte 11

O Ossec Wazuh é um projeto de open source de segurança com foco em detecção, visibilidade e compliance. Ele nasceu como um fork do Ossec e depois foi integrado ao Elastic Stack e ao OpenSCAP evoluindo para um solução mais completa. Segue abaixo uma breve descrição sobre essas ferramentas e o que elas fazem:

OBS: Pessoal quero deixar claro que esse post é basicamente a tradução do manual do Ossec Wazuh, o manual é incrivelmente didático e completo, por isso não vi nenhuma necessidade de adicionar mais conteúdo ou exemplos. Caso haja erros na tradução por favor informe para eu poder corrigir!

OSSEC HIDS

O Ossec HIDS é um sistema de detecção de intrusão baseado no host usado para detecção, visibilidade e compliance. Ele é baseado em um agente multi-plataforma que encaminha os dados do sistema como mensagens de log, hash de arquivos e detecção de anomalias para um gerenciador central, onde esses dados são analisados e processados, resultando assim em alertas de segurança. Os agentes enviam os dados de eventos para o gerenciador central através de um canal seguro e autenticado.

Adicionalmente, o Ossec fornece um servidor de logs centralizado e um sistema de monitoramento de configuração sem agente, fornecendo uma visão voltada a segurança através dos eventos e mudanças em dispositivos que não podem ter o agente instalado como firewalls, switches, roteadores, APs, appliances de rede e etc.

OpenSCAP

O OpenSCAP é um interpretador OVAL (Open Vulnerability Assessment Language) e XCCDF (Extensible Configuration Checklist Description Format) usado para checar configurações de sistemas e detectar vulnerabilidades de aplicações. É uma ferramenta conhecida designada para compliance de segurança e hardening de sistemas usando baselines de segurança de padrões da industria para ambientes empresariais.

Elastic Stack

O Elastic Stack é uma suite de software (Filebeat, Logstash, Elasticsearch, Kibana) usado para coletar, analisar, indexar, armazenar, procurar e apresentar dados de log. Ele fornece um frontend web muito útil para obter uma visualização de eventos em dashboards de alto nível, assim como para realizar analise avançada de dados e mineração profunda em seu armazenamento de dados. A integração com o ELK faz o Ossec uma solução completa, ele permite analise e visualização centralizada de dados enviados por vários agentes para seu gerenciador Ossec e também permite que você retenha os dados por um longo período de tempo.

Payment Card Industry – PCI

O PCI DSS (Payment Card Industry Data Security Standard) foi desenvolvido para encorajar e elevar o nível de segurança das empresas que armazenam números de cartão de crédito além de facilitar a ampla adoção de medidas consistentes de segurança de dados globalmente. O PCI DSS um baseline de requerimentos técnicos e operacionais designados para proteger o armazenamento de dados de cartão de crédito.  O PCI DSS aplica-se a todas as entidades envolvidas no processamento de cartões, incluindo comerciantes, processadores, adquirentes, emissores e prestadores de serviços, bem como todas as outras entidades que armazenam, processam ou transmitem dados do titular do cartão (CHD) e dados de autenticação sensíveis (SAD).

A WAZUH implementa as melhores soluções técnicas para ajudar as empresas a cumprir os controles de segurança do PCI DSS. Ela usa um conjunto personalizado de regras de IDS para detectar ataques que podem comprometer os dados relacionados ao cartão de crédito. Além disso, a WAZUH implementa os melhores sistemas de gerenciamento de integridade de arquivos (FIM) e sistemas de monitoramento de logs.

Garantir que você esteja em conformidade com o PCI DSS evita violações de segurança dispendiosas que podem incluir 100% de responsabilidade por perdas dos titulares de cartão, multas e despesas de investigações forenses. O Ossec fornece alguns dos recursos necessários para estar em compliance com o PCI DSS, incluindo monitoramento de integridade de arquivos, detecção de intrusão, implementação de políticas, centralização de mensagens de log e alertas, desencadeando automaticamente regras de resposta ativa quando necessário. Esses recursos, combinados com sua escalabilidade e suporte multi-plataforma, o tornam uma ferramenta poderosa para atender aos requisitos de conformidade técnica. OSSEC ajuda com os seguintes requisitos PCI DSS 3.2:

  • 6.4 – Siga os procedimentos de controle de alterações para todas as alterações nos componentes do sistema.
  • 10.5 – Proteja as trilhas de auditoria para que não possam ser alteradas.
  • 10.6 – Revise os registros e ocorrências de segurança para todos os componentes do sistema para identificar irregularidades ou atividades suspeitas.
  • 11.4 – Use técnicas de detecção de invasão e/ou prevenção contra invasões para detectar e/ou evitar invasões na rede.
  • 11.5 – Implemente um mecanismo de detecção de mudanças (por exemplo, ferramentas de monitoramento da integridade do arquivo) para alertar a equipe sobre modificações não autorizadas de arquivos críticos do sistema, arquivos de configuração ou arquivos de conteúdo.
  • 12.10 – Implemente um plano de resposta a incidentes. Prepare-se para reagir imediatamente a uma falha no sistema.

Além de diversos outros requisitos que não vou listar aqui para não me estender muito, caso queira checar todos os requisitos no qual o Ossec Wazuh pode ajudar acesse: OSSEC_PCI_DSS_Guide.pdf. Para acessar o documento oficial do PCI DSS 3.2 com todos os requisitos em português acesse: PCI_DSS_v3-2_3_pt-BR.pdf.

Agente wazuh

O agente Wazuh é executado no sistema operacional Windows, Linux, Solaris, BSD ou Mac. Ele é usado para coletar diferentes tipos de dados do sistema e das aplicações. O agente envia os dados coletados para o servidor Wazuh através de um canal criptografado e autenticado. Para estabelecer este canal seguro é utilizado um processo de registro envolvendo chaves pré-compartilhadas únicas.

Os agentes podem ser usados para monitorar servidores físicos, máquinas virtuais e instâncias da nuvem (por exemplo, Amazon AWS, Azure ou Google Cloud). Os pacotes pré-compilado de instalação dso agentes  já estão disponíveis para esses sistemas operacionais: Linux, AIX, Solaris, Windows e Darwin (Mac OS X).

Nos sistemas operacionais baseados em Unix, o agente executa vários processos, esses processos se comunicam através de um soquete de domínio Unix local, um desses processos é responsável pela comunicação e envio de dados para o servidor Wazuh. Nos sistemas Windows, existe apenas um agente que executa várias tarefas usando mutexes.

Diferentes tarefas ou processos do agente são usados para monitorar o sistema de maneiras diferentes (por exemplo, monitorando a integridade do arquivo, lendo as mensagens do log do sistema e as configurações do sistema). O diagrama abaixo representa as tarefas e processos internos que ocorrem no nível do agente:

Todos os processos dos agentes têm propósitos e configurações diferentes. Aqui está uma breve descrição do que é feito por cada um deles:

Rootcheck: Este processo executa várias tarefas relacionadas à detecção de rootkits, malware e anomalias do sistema. Ele também executa certas verificações de segurança básicas contra arquivos de configuração do sistema.

Log Collector: Este componente do agente é usado para ler mensagens de log das aplicações e do sistema operacional, incluindo arquivos de log planos, registros de eventos padrão do Windows e até mesmo canais de eventos do Windows. Também pode ser configurado para ser executado periodicamente e capturar saídas de comandos específicos.

Syscheck: Este processo executa o monitoramento de integridade de arquivos (FIM). Também pode monitorar chaves de registro em sistemas Windows. É capaz de detectar mudanças no conteúdo de um arquivo, propriedade e outros atributos, além de observar a criação e exclusão de arquivos. Enquanto executa varreduras FIM periódicas por padrão, também pode ser configurado para se comunicar com o kernel do sistema operacional para fazer detecção de mudanças de arquivos em tempo real , além de realizar relatórios de mudanças detalhadas (diffs) de arquivos de texto.

OpenSCAP: Este módulo usa baselines de perfis de segurança OVAL  e XCCDF , verifica periodicamente o sistema e pode encontrar aplicações ou configurações vulneráveis que não seguem padrões conhecidos como aqueles definidos nos benchmarks CIS (Center for Internet Security).

Agent Daemon: Este é o processo que recebe os dados gerados ou coletados por todos os outros componentes do agente. Ele comprime, criptografa e entrega os dados para o servidor através de um canal autenticado. Este processo é executado em um ambiente “chroot” isolado, o que significa que ele tem acesso limitado ao sistema monitorado. Isso melhora a segurança geral do agente porque é o único processo que se conecta à rede.

Servidor wazuh

O componente do servidor é responsável por analisar os dados recebidos dos agentes, desencadeando alertas quando um evento corresponde a uma regra (por exemplo, intrusão detectada, arquivo alterado, configuração não compatível com política, possível rootkit, etc …).

O servidor geralmente é executado em uma máquina física, máquina virtual ou instância de nuvem. Também administra localmente componentes de agentes com o objetivo de monitorar-se. Abaixo está uma lista dos principais componentes do servidor:

Serviço de registro: Ele é usado para registrar novos agentes ao provisionar e distribuir chaves de autenticação pré-compartilhadas, essas chaves são exclusivas para cada agente. Este processo é executado como um serviço de rede e suporta autenticação via TLS / SSL e por uma senha fixa.

Serviço daemon remoto: Este é o serviço que recebe os dados dos agentes. Faz uso das chaves pré-compartilhadas para validar a identidade de cada agente e criptografar as comunicações com elas.

Daemon de análise: Este é o processo que realiza análise de dados. Ele utiliza descodificadores para identificar o tipo de informação que está sendo processada (por exemplo, eventos do Windows, registros SSHD, logs do servidor web …) e extrai elementos de dados relevantes das mensagens de log (por exemplo, ip de origem, identificação de evento, usuário …). Em seguida, usando regras, identifica padrões específicos nos registros descodificados que desencadeiam alertas e possivelmente até solicitam contra-medidas automatizadas (resposta ativa) como um bloqueio de IP no firewall.

RESTful API: Fornece uma interface para gerenciar e monitorar a configuração e o status de implantação dos agentes. Também é usado pela interface da web do Wazuh, que é um aplicativo para o Kibana.

Elastic Stack

A Elastic Stack é um conjunto unificado de projetos populares de código aberto para gerenciamento de logs, incluindo Elasticsearch, Logstash, Kibana, Filebeat e outros. As partes especialmente relevantes para a solução Wazuh são:

Elasticsearch: Um mecanismo de pesquisa e análise de texto completo altamente escalável. O Elasticsearch é distribuído o que significa que os dados (índices) são divididos em fragmentos e cada fragmento pode ter zero ou mais réplicas.

Logstash: Uma ferramenta para coletar e analisar logs para serem salvos em um sistema de armazenamento (por exemplo, Elasticsearch). Os eventos coletados também podem ser enriquecidos e transformados usando plugins de entrada, filtro e saída.

Kibana: Uma interface web flexível e intuitiva para mineração, análise e visualização de dados. Ele é executado em cima do conteúdo indexado em um cluster Elasticsearch.

Filebeat: Um encaminhador leve usado para transmitir logs em uma rede, geralmente para Logstash ou Elasticsearch.

Wazuh integra-se com o Elastic Stack para fornecer um feed de mensagens de log já descodificadas a serem indexadas pelo Elasticsearch, bem como um console web em tempo real para análise de dados de alerta e log. Além disso, a interface do usuário do Wazuh (rodando em cima do Kibana) pode ser usada para gerenciamento e monitoramento de sua infraestrutura Wazuh.

Arquitetura

A arquitetura Wazuh é baseada em agentes que são executados em hosts monitorados que enviam dados de log para um servidor central. Além disso, os dispositivos sem agente (como firewalls, switches, roteadores, pontos de acesso, etc.) são compatíveis, eles podem ativamente enviar dados de log via syslog e analisar suas mudanças de configuração periodicamente para enviar mais tarde os dados para o servidor central. O servidor central decodifica e analisa as informações recebidas e transmite os resultados ao longo de um cluster Elasticsearch para indexação e armazenamento.

Um cluster Elasticsearch é uma coleção de um ou mais nós (servidores) que se comunicam entre si para executar operações de leitura e gravação em índices. Pequenas implantações do Wazuh (<50 agentes), podem ser facilmente manipuladas por um cluster de um único nó. Os clusters de vários nós são recomendados quando há uma grande quantidade de sistemas monitorados, quando um grande volume de dados está planejado ou quando é necessária uma alta disponibilidade.

Quando o servidor Wazuh e o cluster Elasticsearch estão em hosts diferentes, o Filebeat é usado para transmitir com segurança alertas Wazuh e eventos arquivados para o servidor Elasticsearch usando criptografia TLS.

Em implementações Wazuh menores, o Wazuh e o Elastic Stack com um cluster Elasticsearch de um único nó é suficiente, todos podem ser implantados em um único servidor. Nesse cenário, o Logstash pode ler os alertas Wazuh e eventos arquivados diretamente do sistema de arquivos local e alimentá-los na instância Elasticsearch local.

Comunicação e fluxo de dados

Comunicação agent-server

Os agentes Wazuh usam o protocolo de mensagem OSSEC para enviar eventos coletados para o servidor Wazuh através da porta 1514 (UDP ou TCP). O servidor Wazuh decodifica e verifica os eventos recebidos com o mecanismo de análise. Os eventos que batem com uma regra são aumentados com dados do alerta, como id de regras e nome de regra. O protocolo de mensagem OSSEC usa uma criptografia Blowfish de 192 bits com uma implementação completa de 16 rodadas, no momento não possui falhas criptográficas conhecidas publicamente.

Comunicação wazuh-elastic

Em implantações maiores, o servidor Wazuh usa o Filebeat para enviar dados de alerta e eventos para o Logstash (5000/TCP) no servidor Elastic Stack usando criptografia TLS. Para uma arquitetura de host único, o Logstash pode ler os eventos/alertas diretamente do sistema de arquivos local sem usar o Filebeat.

O Logstash formata os dados recebidos e opcionalmente, o enriquece com informações de GeoIP, antes de enviá-lo para o Elasticsearch (9200/TCP). Uma vez que os dados são indexados no Elasticsearch, o Kibana (5601/TCP) é usado para explorar e mineirar a informação.

A aplicação Wazuh é executada dentro do Kibana constantemente consultando a API RESTful (55000/TCP no gerenciador Wazuh) para exibir a configuração e informações relacionadas ao status do servidor e agentes, bem como para reiniciar os agentes quando desejado. Esta comunicação é criptografada com TLS e autenticada com nome de usuário e senha.

Instalando o Ossec Wazuh

O servidor Wazuh pode ser instalado em qualquer sistema operacional similar a Unix, mais comumente no Linux. É mais conveniente instalá-lo através de pacotes se estiver disponível para sua distribuição. No entanto, construir e instalá-lo a partir das fontes também é bastante simples. Existem dois componentes que você geralmente precisa instalar em um servidor Wazuh: o gerenciador e a API. Além disso, para arquiteturas distribuídas (onde o servidor Wazuh envia dados para um cluster Elastic Stack remoto), você precisará instalar Filebeat.

Bem, chega de papo e vamos começar a instalação, como o Wazuh é basicamente um Ossec turbinado o processo de instalação é muito parecido com o que já vimos aqui, só alguns pontos adicionais serão necessários. Primeiro iremos instalar as dependências necessárias:

# apt-get install gcc make git libc6-dev libssl-dev

Depois baixe o Wazuh e instale:

# curl -Ls https://github.com/wazuh/wazuh/archive/v2.1.0.tar.gz | tar zx 
# cd wazuh-*
# ./install.sh

Quando o wizard de instalação questionar que tipo de instalação você deseja, informe server:

1- What kind of installation do you want (server, agent, local, hybrid or help)? server

Depois inicie o serviço:

# /var/ossec/bin/ossec-control start

Agora que nosso servidor já está rodando precisamos instalar a API do Wazuh:

# curl -sL https://deb.nodesource.com/setup_6.x | bash -
# apt-get install -y nodejs
# curl -s -o install_api.sh https://raw.githubusercontent.com/wazuh/wazuh-api/v2.1.0/install_api.sh && bash ./install_api.sh download

Pronto, com isso nos já temos o Ossec Wazuh e sua API funcionando perfeitamente, se você rodar um netstat -nlpt provavelmente você verá a porta 55000 em listen. Você pode acessar o endereço http://ip_wazuh:55000 para checar se a API está funcionando, o usuário/senha é foo/bar, você verá uma mensagem: “Welcome to Wazuh HIDS API”.

Fonte: https://documentation.wazuh.com/current/index.html

Bem pessoal é isso ai, espero que tenham curtido. Em breve irei postar outros artigos da série Ossec mostrando mais configurações avançadas. Não esqueçam de curtir nossas páginas nas redes sociais, FacebookG+ e seguir o Guia do Ti no Twitter. Compartilhem e comentem esse artigo, isso é muito importante para divulgação do nosso trabalho.

Ricardo Galossi
Siga me

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão.Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.
Ricardo Galossi
Siga me

Últimos posts por Ricardo Galossi (exibir todos)

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão. Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.

Deixe seu comentário