Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

Se acreditarmos nas estatísticas, o volume de tráfego na rede aumenta cerca de 50% a cada ano. Isso resulta em um crescimento da carga sobre o equipamento e, em particular, aumenta as exigências de desempenho dos IDS/IPS. É possível comprar hardware especializado caro, mas há uma opção mais barata: a implementação de um dos sistemas de código aberto. Muitos administradores iniciantes acreditam que instalar e configurar um IPS gratuito é bastante complicado. No caso do Suricata, isso não é totalmente verdade — você pode instalá-lo e começar a repelir ataques típicos com um conjunto de regras gratuitas em poucos minutos.

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata
Snort ou Suricata. Parte 1: escolhendo um IDS/IPS gratuito para proteger a rede corporativa

Por que precisamos de mais um IPS de código aberto?

Durante muito tempo, o sistema Snort, considerado o padrão, foi desenvolvido desde o final dos anos 90, portanto, originalmente era monothread. Ao longo dos anos, ele adquiriu todos os recursos modernos, como suporte a IPv6, capacidade de análise de protocolos de nível de aplicativo ou um módulo de acesso a dados universal.

O motor básico do Snort 2.X aprendeu a trabalhar com múltiplos núcleos, mas permaneceu monothread e, portanto, não pode aproveitar de forma ideal as vantagens das plataformas de hardware modernas.

O problema foi resolvido na terceira versão do sistema, mas levou tanto tempo para ser desenvolvido que o mercado já tinha uma alternativa multithread criada do zero: o Suricata. Em 2009, seu desenvolvimento começou precisamente como uma alternativa de múltiplos threads ao Snort, com funções IPS incluídas desde o início. O código é distribuído sob a licença GPLv2, mas os parceiros financeiros do projeto têm acesso a uma versão fechada do motor. Alguns problemas de escalabilidade nas primeiras versões do sistema surgiram, mas foram rapidamente resolvidos.

Por que Suricata?

O Suricata possui vários módulos (assim como o Snort): captura, coleta, decodificação, detecção e saída. Por padrão, o tráfego capturado é processado em um único fluxo até a decodificação, embora isso sobrecarregue mais o sistema. Se necessário, os fluxos podem ser divididos nas configurações e distribuídos entre os processadores — o Suricata é muito bem otimizado para hardware específico, embora isso já não seja um nível de HOWTO para iniciantes. Também vale a pena mencionar a presença no Suricata de ferramentas avançadas de inspeção HTTP baseadas na biblioteca HTP. Estas podem também ser utilizadas para registrar o tráfego sem detecção. O sistema também suporta a decodificação de IPv6, incluindo túneis IPv4-em-IPv6, IPv6-em-IPv6 e outros.

Para interceptar o tráfego, podem ser utilizados diferentes interfaces (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), e no modo Unix Socket é possível analisar automaticamente os arquivos PCAP capturados por outro sniffer. Além disso, a arquitetura modular do Suricata facilita a adição de novos elementos para captura, decodificação, análise e processamento de pacotes de rede. É importante também notar que, no Suricata, a bloqueação de tráfego é realizada por meio do filtro padrão do sistema operacional. No GNU/Linux, existem duas opções para o funcionamento do IPS: através da fila NFQUEUE (modo NFQ) e através de zero copy (modo AF_PACKET). No primeiro caso, o pacote que entra no iptables é enviado para a fila NFQUEUE, onde pode ser processado em nível de usuário. O Suricata verifica suas regras e emite um dos três veredictos: NF_ACCEPT, NF_DROP e NF_REPEAT. Os dois primeiros não requerem explicações, enquanto o último permite que pacotes sejam marcados e enviados para o início da tabela atual do iptables. O modo AF_PACKET se destaca por sua maior velocidade, mas impõe algumas limitações ao sistema: ele deve ter duas interfaces de rede e operar como um gateway. O pacote bloqueado simplesmente não é enviado para a segunda interface.

Uma importante característica do Suricata é a capacidade de usar as regras desenvolvidas para o Snort. O administrador tem acesso, entre outras coisas, a conjuntos de regras do Sourcefire VRT e do OpenSource Emerging Threats, bem como às comerciais Emerging Threats Pro. A saída unificada pode ser analisada usando backends populares, e também oferece suporte à saída em PCAP e Syslog. As configurações do sistema e as regras são armazenadas em arquivos no formato YAML, que é facilmente legível e pode ser processado automaticamente. O motor Suricata reconhece vários protocolos, portanto, não há necessidade de vincular as regras a um número de porta. Além disso, as regras do Suricata aplicam ativamente o conceito de flowbits. Para rastreamento de ativação, são utilizadas variáveis de sessão, permitindo criar e aplicar diferentes contadores e flags. Muitos IDS consideram diferentes conexões TCP como entidades separadas e podem não perceber a relação entre elas, que indica o início de um ataque. O Suricata busca ver o quadro completo e, em muitos casos, reconhece o tráfego malicioso distribuído em diferentes conexões. Poderíamos discutir suas vantagens por muito tempo, mas vamos nos concentrar na instalação e configuração.

Como instalar?

Vamos instalar o Suricata em um servidor virtual que está executando o Ubuntu 18.04 LTS. Todos os comandos devem ser executados como superusuário (root). A opção mais segura é conectar-se ao servidor via SSH com um usuário comum e, em seguida, usar a ferramenta sudo para elevar privilégios. Para começar, precisamos instalar os pacotes de que iremos precisar:

sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https

Conectando ao repositório externo:

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update

Instalando a versão estável mais recente do Suricata:

sudo apt-get install suricata

Se necessário, ajustamos os arquivos de configuração, trocando o nome padrão eth0 pelo nome real da interface externa do servidor. As configurações padrão estão armazenadas no arquivo /etc/default/suricata, enquanto as personalizadas estão em /etc/suricata/suricata.yaml. A configuração do IDS é em grande parte limitada à edição deste arquivo de configuração. Ele contém muitos parâmetros que, em nome e propósito, correspondem aos análogos do Snort. O sintaxe, no entanto, é completamente diferente, mas o arquivo é muito mais fácil de ler do que as configurações do Snort, além de ser bem comentado.

sudo nano /etc/default/suricata

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

e

sudo nano /etc/suricata/suricata.yaml

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

Atenção! Antes de iniciar, deve-se verificar os valores das variáveis na seção vars.

Para concluir a configuração, será necessário instalar o suricata-update para atualizar e baixar as regras. Isso é bastante simples:

sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-update

Em seguida, precisamos executar o comando suricata-update para instalar o conjunto de regras Emerging Threats Open:

sudo suricata-update

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

Para visualizar a lista de fontes de regras, executamos o seguinte comando:

sudo suricata-update list-sources

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

Atualizando as fontes de regras:

sudo suricata-update update-sources

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

Visualizamos novamente as fontes atualizadas:

sudo suricata-update list-sources

Se necessário, é possível ativar as fontes gratuitas disponíveis:

sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklist

Após isso, é necessário atualizar as regras mais uma vez:

sudo suricata-update

A instalação e configuração inicial do Suricata no Ubuntu 18.04 LTS pode ser considerada concluída. A partir daqui, começamos a parte mais interessante: no próximo artigo, conectaremos o servidor virtual à rede do escritório via VPN e começaremos a analisar todo o tráfego de entrada e saída. Faremos especial atenção ao bloqueio de ataques DDoS, atividades de malware e tentativas de exploração de vulnerabilidades em serviços acessíveis de redes públicas. Para mostrar tudo de forma clara, simularemos ataques dos tipos mais comuns.

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

Snort ou Suricata. Parte 2: instalação e configuração inicial do Suricata

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster