Instalação do Snort com Snorby no Debian Wheezy

E ai galera, aqui eu vou abordar a instalação do Snort trabalhando em conjunto com o Snorby para termos um gerador de relatórios mais sofisticado do que o Base.

Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialwheezy_en para que não falte nenhum pacote ou configuração.

OBS: Prepare uma VM com pelo menos 2 GB de RAM para um ambiente de produção pois o rails é meio pesado rodando com o Apache.

Vamos mandar atualizar os repositórios e vamos atualizar o sistema

aptitude update && aptitude dist-upgrade -y

Agora vamos efetuar a instalação do MySQL server que vai ser o backend para o Snort e Snorby, informe uma senha para o root do MySQL e confirme ela.

aptitude install mysql-server mysql-client -y

Agora vamos instalar o snort com suporte ao MySQL

aptitude install snort-mysql -y

Informações para o Snort:

  • Sua rede ex: 192.168.1.0/24
  • Deseja configurar uma base de dados para o snort-mysql fazer registros: Não

Agora vamos instalar as dependências para o Snorby.

aptitude install libyaml-dev git-core default-jre imagemagick libmagickwand-dev build-essential libssl-dev \
libreadline-gplv2-dev zlib1g-dev linux-headers-$(uname -r) libsqlite3-dev libxslt1-dev libxml2-dev libmysqlclient-dev \
libmysql++-dev apache2-prefork-dev apache2-mpm-worker libcurl4-openssl-dev ruby ruby-dev libcurl4-openssl-dev curl -y

Agora vamos obter mais uma dependência do Snorby

wget -c http://wiki.douglasqsantos.com.br/Downloads/ips/wkhtmltox-0.12.2_linux-wheezy-amd64.deb

Agora vamos mandar instalar o nosso pacote

dpkg -i wkhtmltox-0.12.2_linux-wheezy-amd64.deb

Se ainda ficar alguma dependência mal resolvida vamos instala-lá como seguinte comando

apt-get install -f -y

Agora vamos mandar installar alguns gems para o ruby

gem install bundler rails 

Vamos mandar instalar o rake

gem install rake --version=0.9.2

Agora vamos acessar o diretório que vai conter uma cópia do Snorby

cd /var/www/

Agora vamos obter uma cópia do Snorby

wget -c http://wiki.douglasqsantos.com.br/Downloads/ips/snorby.tar.gz

Agora precisamos desempacotar o snorby

tar -xvf snorby.tar.gz

Agora podemos remover o pacote

rm -rf snorby.tar.gz

Agora vamos acessar o diretório que contém os arquivos de configuração do Snorby

cd /var/www/snorby/config/

Agora vamos ajustar o nome dos arquivos que precisamos

cp database.yml.example database.yml
cp snorby_config.yml.example snorby_config.yml

Agora vamos ajustar o nosso arquivo de configuração do Snorby para o deploy

vim /var/www/snorby/config/snorby_config.yml
#/var/www/snorby/config/snorby_config.yml
production:
  baseuri: ''
  domain: 'snorby.douglasqsantos.com.br'
  wkhtmltopdf: /usr/local/bin/wkhtmltopdf
  ssl: false
  mailer_sender: 'douglas.q.santos@gmail.com'
  geoip_uri: "http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz"
  rules:
    - ""
  authentication_mode: database
  timezone_search: true
  time_zone: 'America/Sao_Paulo'

Agora vamos criar o banco de dados para o Snorby

mysql -u root -p
CREATE DATABASE snorby;
GRANT ALL PRIVILEGES ON snorby.* TO snorby@'localhost' IDENTIFIED BY 'senha';
FLUSH PRIVILEGES;
exit

Agora precisamos ajustar o arquivo de configuração para o banco de dados do Snorby

vim /var/www/snorby/config/database.yml
# /var/www/snorby/config/database.yml
snorby: &snorby
  adapter: mysql
  username: snorby
  password: "senha"
  host: localhost

production:
  database: snorby
  <<: *snorby

Agora vamos acessar o diretório raiz do Snorby

cd /var/www/snorby/

Agora vamos mandar instalar os gems para o Snorby

bundle install

Agora vamos mandar instalar carregar o banco de dados para o Snorby.

bundle exec rake snorby:setup RAILS_ENV=production

Vamos receber o seguinte erro pois já criamos o bando de dados para o snorby.

ERROR 1007 (HY000) at line 1: Can't create database 'snorby'; database exists

Agora podemos iniciar o Snorby da seguinte forma

bundle exec rails server -e production -b 0.0.0.0

Vamos acessar o Snorby em http://ip_do_servidor:3000

Vamos precisar de um usuário e senha:

  • Usuário: snorby@snorby.org
  • Senha: snorby

Vamos ter uma tela como abaixo.

Agora vamos mandar reconfigurar o snort-mysql para ele reconhecer o banco de dados do Snorby.

dpkg-reconfigure snort-mysql

Selecionar como abaixo:

  • Arranque → para iniciar o snort junto ao sistema operacional
  • eth0 → Caso seja a interface
  • Rede: 192.168.1.0/24 → Sua rede Interna
  • Deve o Snort desabilitar o modo promíscuo no interface?: Sim → Para produção
  • Opções adicionais de personalização: Deixar vazio
  • Devem ser enviados por e-mail sumários diários?: Sim
  • Deseja configurar uma base de dados para o snort-mysql fazer registos?: Sim
    • Nome da máquina do servidor da base de dados: localhost
    • Nome da base de dados: snorby
    • Nome de utilizador para acesso à base de dados: snorby
    • Palavra-passe para a ligação à base de dados: senha
    • OK

Agora precisamos remover um arquivo que não é mais necessário que controla se o banco de dados já foi ou não configurado para o snort.

rm -rf /etc/snort/db-pending-config

Agora vamos mandar reiniciar o serviço do Snort

/etc/init.d/snort restart

Agora precisamos subir o Snorby novamente para verificar os novos dados

cd /var/www/snorby && bundle exec rails server -e production -b 0.0.0.0

De outra máquina vamos mandar scanear as portas abertas

nmap -A -T5 ip_do_server

Após algum tempo o snorby vai carregar para o painel os dados e vamos ter algo como abaixo.

OBS: Podemos forçar o Snorby atualizar os dados da seguinte forma: Vá no menu More Options/Force Cache Update

Se clicarmos no Medium Severity vamos ter algo como abaixo.

Configurando o Apache com o Passenger

Agora vamos mandar instalar o módulo para o apache

aptitude install libapache2-mod-passenger -y

Agora vamos criar o virtualhost para o Snorby

vim /etc/apache2/sites-available/snorby.conf
<VirtualHost *:80>
      ServerName snorby.douglasqsantos.com.br
      DocumentRoot /var/www/snorby/public
      RailsEnv production
      <Directory /var/www/snorby/public>
        AllowOverride all
        Options -MultiViews
      </Directory>
        LogLevel info
        CustomLog /var/log/apache2/snorby.douglasqsantos.com.br-access.log combined
        ErrorLog /var/log/apache2/snorby.douglasqsantos.com.br-error.log
</VirtualHost>

Agora vamos ajustar as permissões do diretório do Snorby

chown -R www-data:www-data /var/www/snorby

Agora vamos desativar o virtualhost default do apache

a2dissite default

Agora vamos ativar o virtualhost do Snorby

a2ensite snorby.conf

Agora já podemos reiniciar o Apache

/etc/init.d/apache2 restart

Agora já podemos acessar o Snorby em http://snorby.douglasqsantos.com.br ou http://ip_do_servidor

Podemos visualizar os logs no seguinte endereço

tail -f /var/log/apache2/snorby.douglasqsantos.com.br-*

Agora precisamos adicionar uma linha no /etc/rc.local antes do exit para que seja iniciado os workers do Snorby

vim /etc/rc.local
[...]
cd /var/www/snorby; RAILS_ENV=production /usr/local/bin/rails runner 'Snorby::Worker.start'
exit 0

Agora já podemos reiniciar o servidor para testar se a inicialização vai acontecer sem problemas

reboot

Referências