Depois de aprender o que é Snort e descobrir as principais características desse poderoso sistema de detecção de intrusões, chegou o momento de instalar o Snort e configurá-lo em sua máquina.
Se você estiver lendo isto sem saber ao certo do que estou falando, primeiro veja esta apresentação que fiz do programa.
O que considerar antes do processo? Primeiramente, recomendo que crie uma máquina virtual rodando o Ubuntu Server — você pode utilizar programas como VirtualBox ou similares. Durante a configuração reserve pelo menos 4 GB de RAM e um espaço razoável de armazenamento.
Caso a sua pretensão seja de instalar no sistema operacional convencionalmente, certifique-se de criar um ponto de restauração. Mas como fazê-lo no Linux? Instalando o Timeshift. Nas distribuições Ubuntu, utilize os comandos:
sudo add-apt-repository ppa:noobslab/apps # na versão server sudo add-apt-repository ppa:teejee2008/ppa # no desktop sudo apt update sudo apt install timeshift
Depois disso, basta criar um snapshot do sistema a partir da interface gráfica do programa. Simples e fácil! Sem mais delongas, vamos aos procedimentos de instalação e configuração do Snort.
Snort Instalação: Ubuntu
É muito importante deixar o sistema pronto para receber a instalação do programa e, com isso, evitar que falhas aconteçam.
Preparando o sistema
Além do tradicional sudo apt update e sudo apt upgrade, no caso do Snort é necessário instalar uma série de dependências. A boa notícia é que a maior parte do trabalho pode ser feita usando um só comando:
sudo apt install openssh-server ethtool build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev liblzma-dev openssl libssl-dev libnghttp2-dev
Outra dependência é o DAQ (Data Aquisition), necessário para fazer requisições a bibliotecas de captura de pacotes. Baixe o arquivo tar da versão mais recente diretamente do site oficial. Se preferir, utilize o comando wget conforme as instruções, abaixo:
wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz tar -zxvf daq-2.0.6.tar.gz cd daq-2.0.6 ./configure && make && make install
Sistema preparado? Ainda não. Segundo o manual de usuário do Snort, publicado em 2017, a ferramenta, automaticamente, irá truncar pacotes cujo tamanho ultrapassa o padrão estabelecido de 1518 bytes.
Para evitar que isso aconteça, é necessário desativar duas funcionalidades da placa de rede: Large Receive Offload (lro) e Generic Receive Offload (gro). Como proceder? O administrador do sistema deve editar o arquivo /etc/network/interfaces. Ao abri-lo, localize as linhas conforme o exemplo:
sudo vi /etc/network/interfaces post-up ethtool -K eth0 gro off post-up ethtool -K eth0 lro off
Observação: localize as linhas correspondentes, também, a outras interfaces de redes que se comunicarão com o Snort. Exemplo: post-up ethtool -K interface gro / lro off.
Instalando o Snort
Utilize novamente o comando wget para fazer o download da versão mais recente do Snort (consultar a página oficial), como fizemos na instalação do DAQ.
wget https://www.snort.org/downloads/snort/snort-2.9.13.tar.gz tar xvzf snort-2.9.13.tar.gz cd snort-2.9.13 ./configure --enable-sourcefire --enable-sourcefire make make install sudo ldconfig sudo ln s /usr/local/bin/snort /usr/sbin/snort
Finalizando, digite no terminal /usr/sbin/snort -V para validar a instalação.
Configurando o Snort
É bem provável que você se lembre de que o Snort funciona em diferentes modos: sniffer, registrador de pacotes, e IDS de rede (Network Intrusion Detection System – NIDS). Neste tópico vamos configurá-lo como NIDS.
Iniciaremos a configuração criando, manualmente, uma série de diretórios que servirão de base para o Snort. Siga a demonstração, abaixo:
mkdir /etc/snort mkdir /etc/snort/preproc_rules mkdir /etc/snort/rules mkdir /var/log/snort mkdir /usr/local/lib/snort_dynamicrules touch /etc/snort/rules/white_list.rules touch /etc/snort/rules/black_list.rules touch /etc/snort/rules/local.rules
Para que se possa trabalhar adequadamente com os diretórios recém-criados, acrescente a permissão 5775 — confira este artigo sobre chmod e compreenda melhor o conceito de permissões no Linux — na seguinte relação:
chmod -R 5775 /etc/snort/ chmod -R 5775 /var/log/snort/ chmod -R 5775 /usr/local/lib/snort sudo chmod -R 5775 /var/log/snort/archived_logs chmod -R 5775 /usr/local/lib/snort_dynamicrules/
Em seguida, use o comando chown para alterar a propriedade dos arquivos nas seguintes pastas:
sudo chown -R snort:snort /etc/snort sudo chown -R snort:snort /var/log/snort sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
Movendo arquivos essenciais do Snort
Tudo pronto? Então vamos agora mover alguns arquivos presentes na pasta do Snort que extraímos na instalação. São eles:
- attribute table.dtd: permite ao Snort utilizar informações externas para determinar políticas e protocolos;
- classification.config: descreve os tipos de classes de ataques compreendidos pelo Snort;
- file_magic.conf: descreve regras para identificar o tipo de cada arquivo;
- gen-msg.map: deixa o Snort ciente de qual pré-processador é acionado por cada regra;
- reference.config: armazena URLs inseridas nas regras para fornecer informações sobre alertas;
- snort.conf: é o próprio arquivo de configuração do Snort;
- threshold.conf: permite ao usuário controlar o número de eventos necessários para gerar um alerta; e
- unicode.map: fornece o mapeamento entre linguagens Unicode e o identificador.
Faça a seguinte sequência de comandos para mover os arquivos listados acima:
cd ~/snort_src/snort-2.9.13/etc/ sudo cp *.conf* /etc/snort sudo cp *.map /etc/snort sudo cp *.dtd /etc/snort cd ~/snort_src/snort-2.9.13/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/ sudo cp * /usr/local/lib/snort_dynamicpreprocessor/
Editando o snort.conf
O último passo da configuração é a edição de algumas linhas do arquivo snort.conf. Utilizando o Stream Editor (comando sed), vamos comentar todas as regras usando o seguinte comando:
sed -i "s/include \$RULE\_PATH/#include \$RULE\_PATH/" /etc/snort/snort.conf
Ao concluir, selecione um editor de texto para que possamos modificar as linhas. Na 45ª linha, configure a rede local com o endereço de IP que você deseja proteger (194.168.15.0/24, por exemplo).
ipvar HOME_NET 194.168.15.0/24
Em seguida, indicaremos ao Snort os diretórios que criamos no início da configuração e, concluindo a etapa, habilitaremos o arquivo /etc/snort/rules/local.rules, no qual você guardará as regras que criará. Digite os comandos:
var RULE_PATH /etc/snort/rules var SO_RULE_PATH /etc/snort/so_rules var PREPROC_RULE_PATH /etc/snort/preproc_rules var WHITE_LIST_PATH /etc/snort/rules/iplists var BLACK_LIST_PATH /etc/snort/rules/iplists include $RULE_PATH/local.rules
Vamos conferir se as configurações estão funcionam?
Testando as configurações do Snort
Depois de tanto trabalho para cuidar de todos os detalhes para configurar o Snort, chegou a hora de validá-lo. Baseando-se no exemplo a seguir, digite o comando de teste — preste atenção ao inserir a interface de rede.
sudo snort -T -c /etc/snort/snort.conf -i eth0
Resumindo, a flag -T significa teste, enquanto a -c mostra ao Snort que o diretório leva ao snort.conf e o -i, indica que uma interface será especificada.
Ao longo deste conteúdo você teve acesso a um tutorial básico, porém rico, para instalar o Snort em sua máquina e deixá-lo rodando corretamente. Além disso, fizemos um pequeno teste para confirmar o funcionamento da ferramenta. O que achou das dicas? Deixe a resposta nos comentários!
No mais, um convite: se você está avançando em seus estudos sobre o Linux e deseja alcançar o nível profissional de maneira organizada e rápida, visite agora mesmo o site do projeto Profissionais Linux.