Instalação do Snort + BASE no Debian Etch pelos Fontes

Introdução:

Este tutorial visa auxiliar as pessoas interessadas em instalar o NIDS Snort, com suporte à gravação em banco de dados MySQL, e ainda a instalação e configuração do Apache2 com BASE para análise dos dados coletados pelo Snort. Utilizamos aqui a distribuição Debian GNU/Linux 4.0 (Etch), com uma instalação básica e utilizando os principais softwares a partir do código fonte.Desenvolvemos esta instalação como parte de um trabalho de faculdade sobre o Snort.

Caso alguém deseje testar em outro sabor de Linux, retorne pra gente os resultados, por favor.

Considerações:

Achamos interessante compilar os programas pois assim podemos configurar cada software como queremos, além de outros aspectos de segurança e desempenho que poderiam ser mencionados aqui, mas vamos nos limitar à instalar o Snort 🙂 Porém o debate é sempre interessante.

Sobre o tratamento das regras do Snort, como posicioná-lo em sua rede e demais aspectos não fazem parte deste tutorial. Aos iniciantes vale para, como primeiro passo, instalar o snort de maneira adequada e depois fuçá-lo para aprender a utilizar a ferramenta. Os que já tem certa experiência, uma instalação com fontes sempre trás melhor desempenho, além de deixar o software com a nossa cara 🙂

Complementando, em 95% das vezes utilizamos o script ./configure para fazer uma checagem sobre o nosso sistema estar pronto ou não para compilação. Além disto, a opção –help lista as opções disponíveis para compilação. Sempre verifique as opções disponíveis pois com certeza haverá algo que você irá gostar e que pode não estar disponível no pacote pré-compilado.

Preparando o Sistema:

Após a instalação básica do Debian Etch, vamos instalar as ferramentas necessárias para compilação de programas. No caso do Debian isto é muito simples, utilizando o apt: apt-get install build-essential

Com o sistema pronto para compilar programas, vamos baixar os pacotes. Como temos atualizações constantes dos softwares, caso você utilize versões mais recentes e encontre alguma peculiaridade na instalação, comparti-lhe conosco 🙂

baixados os pacotes:

  • httpd-2.2.4.tar.bz2 (apache)
  • mysql-5.0.45.tar.gz
  • php-5.2.3.tar.bz2
  • adoDB
  • libpcap-0.9.7.tar.gz
  • pcre-7.2.tar.bz2
  • snort-2.8.1.tar.gz
  • snortrules-snapshot-CURRENT.tar.gz

Mãos à obra!

Após baixar os fontes, copie-os para /usr/local/src. Nesta primeira parte, vamos instalar o Snort com o MySQL e faremos um teste inicial. Após, faremos a instalação do BASE com suas respectivas ferramentas. Uma coisa de cada vez 🙂

Instalação MySQL:

Descompacte o fonte do mysql: tar -zxvf mysql-5.0.45.tar.gz
Acesse a pasta descompactada: cd mysql-5.0.45

Para configurar a compilação do mysql, diremos apenas o diretório o qual ele será instalado: ./configure –prefix=/usr/local/mysql
Compile: make
Instale: make install

Se ainda não tiver, crie o usuário mysql: adduser mysql (o grupo será criado automaticamente com a criação do usuário. Se não, groupadd mysql)

Copie o arquivo de configuração do mysql: cp support-files/my-medium.cnf /etc/my.cnf
Instale a base: mysql_install_db –user=mysql

Altere as permissões para o diretório /usr/local/var, onde informações do mysql serão gravadas: chgrp -R mysql /usr/local/var

Inicie o banco, para testes: mysqld_safe &
Defina a senha de root do MySQL: mysqladmin -u root password “senha_pessoal”
Conecte no banco, para testes: mysql -u root -p
Na pasta do fonte do mysql há um script para que seja utilizado para inicialização automática do banco durante o processo de boot do sistema. Copie-o para o init.d e crie os devidos atalhos para os runlevels: cp /usr/src/mysql-5.0.45/scripts/mysql.server /etc/init.d/

Mais detalhes para manipulação do MySQL, use este link

Ok, deixamos nosso MySQL pronto para o Snort. Vamos colocá-lo de lado agora e partir para o Snort. A integração dele com o Snort e o BASE será feita futuramente.

Instalação libcap:

A libcap é componente essencial para o snort. Por questões de desempenho e segurança é interessante compilá-lo, pois qualquer vulnerabilidade encontrada pode ser atualizada de maneira fácil, baixando o fonte da nova versão e compilando, sem esperar pelo pacote da distro, por exemplo. Por outro lado, o Debian, por exemplo, tem um foco em segurança onde às correções surgem rapidamente e o apt é uma ótima ferramenta . Então, como tudo no software livre, você decide! 🙂

Instale o pacote flex: apt-get install flex
Descompacte: tar zxvf libpcap-0.9.7.tar.gz
Configure: ./configure
Compile e instale: make && make install (o ‘&&’ no comando diz que o segundo comando só será executado se o primeiro não retornar com erro)


Instalação Snort2:

Vamos ao de sempre 🙂
Descompacte e acesse a pasta: tar -zxvf snort-2.7.0.1.tar.gz
Configure o Snort para compilação, onde neste caso compilaremos com suporte ao MySQL que configuramos anteriormente: ./configure –with-mysql=/usr/local
Compile e instale: make && make install
Crie o diretório de configuração do Snort: mkdir /etc/snort
O mesmo para logs: mkdir /var/log/snort
Crie o usuário snort: adduser snort
Configure as devidas permissões: chown snort:snort /var/log/snort

Descompacte as regras baixadas anteriormente: tar -zxvf /usr/local/src/snortrules-snapshot-CURRENT.tar.gz

Vamos às regras do snort: cd /etc/snort
Copie as regras para o diretório de configuração: cp /usr/local/src/snort-2.7.0.1/etc/*.conf* . && cp /usr/local/src/snort-2.7.0.1/etc/*.map .

Edite o arquivo snort.conf: Lembrando que esta configuração é básica para iniciar o Snort. Cada um deve configurar conforme sua necessidade. Os arquivos de configuração são bem comentados para você se orientar. Sugerimos uma boa lida neles: vi /etc/snort/snort.conf

Basicamente, altere as seguintes variáveis:
var RULE_PATH /etc/snort/rules
var HOME_NET “rede/máscara”
var EXTERNAL_NET !$HOME_NET

Antes de iniciar o snort, dê uma olhada também no arquivo local.rules: vi /etc/snort/rules/local.rules

Iniciando snort: /usr/local/bin/snort -Dq -u snort -g snort -c /etc/snort/snort.conf &

Verifique se o processo do snort continua rodando e monitore o syslog, pois as mensagens de sucesso ou erro aparecerão nele.

Você pode utilizar também snort -v para ver na tela como o snort trabalha. Neste primeiro momento estamos utilizando o snort para saída padrão em logs do sistema. O ambiente MySQL preparado anteriormente será finalizado juntamente com a instalação do BASE.

Criando base de dados Snort:

Conecte-se ao banco: mysql -u root -p (lembre-se da senha de root do banco, definida anteriormente)
Crie uma base: mysql> create database snort;
Configure as permissões e crie o usuário snort para o mysql: mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
Defina a senha do usuário snort: mysql> SET PASSWORD FOR snort@localhost=PASSWORD(‘senha’);

Na pasta ‘schemas’, no código fonte do Snort existem scripts para criação da base em alguns SGBDs.

Acesse a pasta: cd /usr/local/src/snort-2.7.0.1/schemas
Jogue o sql no banco mysql: mysql -u root -p < create_mysql snort

Para testar, acesse a base e suas tabelas, conectando-se ao mysql:
mysql> use snort;
mysql> show tables;

Instalação do Apache:

Descompacte o fonte do Apache: tar -zxvf httpd-2.2.4.tar.bz2
Acesse a pasta descompactada: cd httpd-2.2.4

Prepare para compilação: ./configure –enable-so
Compile e instale: make && make install

Edite o arquivo de configuração do Apache e teste a instalação.

Instalação pcre

cd /usr/local/src
Descompacte: tar jxvf pcre-7.2.tar.bz2
Acesse a pasta: cd pcre-7.2
Configure, compile e instale: ./configure && make && make install

Instalação biblioteca gd:

A biblioteca GD é componente essencial para compilação do PHP.

cd /usr/src
Descompacte: tar jxvf gd-2.0.35.tar.gz
Acesse a pasta: cd gd-2.0.35
Configure, compile e instale: ./configure && make && make install

Eu sei, é meio repetitivo! Mas, faz parte 🙂

Instalação php:

Vamos compilar o php para utilizar com o Apache e o BASE. Aqui temos um motivo de muitas discussões. Compilar o php não é algo tão simples. Ele dispõe de muitos recursos que precisam ser ativados na configuração. Depois de “apanharmos” bastante, disponibilizamos o configure abaixo. Os feras em compilar php, por favor se manifestem com dicas. Caso algum recurso solicitado durante o configure não esteja disponível, instale com o apt.

Alguns que precisamos instalar: apt-get install xml2 libxml2 libxml2-dev libxml2-utils libssl-dev zlib-bin zlib1g zlib1g-dev libbz2-1.0 libbz2-dev libcurl3-dev libpng12-dev libgmp3-dev libc-client-dev libpspell-dev

cd /usr/local/src
tar jxvf php-5.2.3.tar.bz2
cd php-5.2.3

./configure –host=i386-debian-linux –build=i386-debian-linux –target=i386-debian-linux-gnu –enable-force-cgi-redirect –enable-pic –enable-inline-optimization –with-bz2 –with-curl –with-smtp –with-layout=GNU –with-curl –with-gd –with-gettext –with-config-file-scan-dir=/etc/php –enable-libxml –with-libxml –with-ncurses –with-gmp –with-iconv –enable-reflection –enable-spl –disable-path-info-check –with-openssl –with-openssl –with-png –with-pspell –with-xml –with-expat-dir=/usr –with-xmlrpc=shared –enable-bcmath –enable-exif –enable-ftp –enable-magic-quotes –enable-safe-mode –enable-sockets –enable-sysvsem –enable-sysvshm –enable-discard-path –enable-track-vars –enable-trans-sid –enable-yp –enable-wddx –with-imap=shared –with-imap-ssl –with-kerberos –enable-memory-limit –enable-bcmath –enable-shmop –with-apxs2=/usr/local/apache2/bin/apxs –with-regex=php –enable-dom –enable-xmlwriter –enable-xmlreader –with-xmlrpc –enable-xml –enable-wddx –enable-tokenizer –enable-sockets –enable-soap –enable-simplexml –enable-session –enable-calendar –enable-dbx –enable-dio –enable-mcal –enable-mbstring=shared –enable-mbstr-enc-trans –enable-mbregex –enable-posix –enable-pdo –with-pcre –with-pcre-regex –with-mysql=/usr/local/mysql –with-bzip2=/bin

Compile e instale: make && make install (aproveite e faça uma pausa pro café =)
Copie o arquivo de configuração do php: cp php.ini-dist /usr/local/etc/php.ini

Adicione suporte no Apache2: vi /usr/local/apache2/conf/httpd.conf
Adicione as seguintes linhas:
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
Edite a tag DirectoryIndex adicionando: index.php index.phps

Pear: O pear é um componente do php para instalar demais recursos necessários. Aqui precisamos de alguns como o Image_Graph:

pear install –alldeps Image_Graph-alpha channel://pear.php.net/Image_Graph-0.7.2
Dê as permissões para o usuário do apache: chown -R www-data:www-data /usr/local/share/pear/

Configurando Snort para o MySQL:

Agora vamos configurar o Snort para gravar dados no MySQL.

Edite o arquivo de configuração: vi /etc/snort/snort.conf

Descomentar a linha: output database: log, mysql, user=snort password=’senha da base snort’ dbname=snort host=localhost

Reinicie o Snort e verifique registros no banco: mysql -u root -p snort -D snort -e “select count(*) from event”

Instalação BASE:

O BASE é uma boa ferramenta que retira dados do MySQL e gera estatísticas e gráficos sobre as ameaças detectadas pelo snort. Claro que, para termos melhores resultados, a configuração adequada do seu snort influencia diretamente nesta análise.

Vamos à instalação:

cd /usr/local/apache2/htdocs
tar -zxvf /usr/local/src/base-1.3.6.tar.gz
mv base-1.3.6/ base

Copie as regras do snort para o subdiretório /signatures do base: cp -R /etc/snort/rules/* /usr/local/apache2/htdocs/base/signatures

Instalação adoDB:

Descompactar e mover o diretório descompactado para dentro do diretório do base: mv adoDB /usr/local/apache2/htdocs/base/

chown -R www-data:www-data base
Acessando via web: http://”ipdoservidor”/base
Se tudo ocorrer bem, o base exibirá um passo-a-passo de configuração. Ele irá pedir parâmetrós já definidos anteriormente, tais como configuração de nomes, senhas, banco de dados, etc.

Com o base configurado, faça seu login e teste.

Considerações finais:

Esperamos que este tutorial tenha sido útil. Pedimos para que todos que tenham suas peculiaridades, dicas e demais comentários a fazer, que o façam, para assim melhorarmos o processo de instalação e nos aprimorarmos cada vez mais.

Qualquer dúvida, entre em contato conosco:

Jean Vieira: sepoys@gmail.com

Tiago Lima: peacenet@gmail.com

Um abraço e até a próxima! 🙂

3 Responses to Instalação do Snort + BASE no Debian Etch pelos Fontes

  1. Ficou bacana!! 😉

  2. Emerson says:

    Parabens pelo site, muito bom.
    Carinha, voçê sabe como configurar o BASE, para enviar e-mail com alertas de eventos?

    Vlw

Leave a comment