Snorby – Snort Events under Control

Olá,

Para finalizar o nosso ultimo post sobre snort e a pfsense, chegou agora a altura de apresentar uma forma mais intuitiva de ver os logs de deteção do nosso snort.

Recordam-se da linha que mostrei de processo no nosso ultimo post?

final2
Como podem ver, alem do snort temos um outro processo de nome baryard2. O barnyard2 é um unificador, processador e concentrador de logs produzidos pelo snort (entre outras coisas).

Neste caso, o que nos interessa é a capacidade do barnyard2 enviar os dados trabalhados para uma base de dados para posterior análise.

Esta configuração pode ser conseguida na pfsense, secção snort, secção/instância, $instância Barnyard2:

snorby_sql
Vamos usar para tal, a instalação de snort do nosso ultimo post, e uma nova instalação de Snorby.
O Snorby é uma ruby on rails application – opensource – com uma versão comercial suportada.

snorby-dashboard

Então qual a necessidade do Snorby?

Se configuraram corretamente o vosso snort, devem ter notado o absurdo de logs que tem por dia, assim bem como a quantidade de eventos despoletados.
O Snorby auxilia que pequenas equipas que não tenham um analista de segurança em permanência, a classificar e analisar os resultados obtidos, conseguindo assim uma melhor gestão de incidentes e riscos das vossas plataformas de segurança.

A nossa instalação do Snorby será efetuada num container em CentOS 7.2 (compatível RHEL7.2) que vou assumir para encurtar este post que já está pronto e atualizado.

Em primeiro lugar será necessitar instalar dependências e pré requisitos do Snorby:

yum -y install epel-release
yum -y groupinstall “Development Tools”
yum install -y openssl-devel readline-devel libxml2-devel libxslt-devel mysql mysql-devel mysql-libs mysql-server urw-fonts libX11-devel libXext-devel qconf fontconfig-devel libXrender-devel unzip ImageMagick git

Manualmente instalaremos as dependências cuja versão em repositório de RPM não é preenche os pré-requisitos:

cd /usr/local/src
wget pyyaml.org/download/libyaml/yaml-0.1.6.zip
unzip yaml.zip
cd yaml
./configure
make
sudo make install

cd /usr/local/src
wget cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz
tar -zxvf ruby-1.9.3-p547.tar.gz
cd ruby-1.9.3-p547
./configure
make
sudo make install
sudo gem install rails
sudo gem install nokogiri — –use-system-libraries
sudo gem install bundler

cd /usr/local/src
wget www.imagemagick.org/download/ImageMagick.tar.gz
tar -zxvf ImageMagick.tar.gz
cd ImageMagick*
./configure
make
sudo make install

cd /usr/local/src
wget sourceforge.net/projects/wkhtmltopdf/files/archive/0.12.0/wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz
tar xJ wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz
cd wkhtml*
sudo mv bin/wkhtmltopdf /usr/local/bin

Finalmente é altura de instalar a aplicação:

cd /usr/local/src
git clone https://github.com/Snorby/snorby.git
cd snorby
sudo bundle install –deployment
sudo cp /usr/local/src/snorby/config/database.yml.example /usr/local/src/snorby/config/database.yml
sudo cp /usr/local/src/snorby/config/snorby_config.yml.example /usr/local/src/snorby/config/snorby_config.yml

No ficheiro de configuração do snorby deveremos indicar a password / user que demos na nossa configuração do barnyard.
Terão de ser credenciais válidas e a base de dados terá de estar a receber dados das pfsenses / barnyard:

password: “Enter Password Here” # Example: password: “s3cr3tsauce”
para
password: “l33tp@ssw0rd” # Example: password: “s3cr3tsauce”

Finalmente e para deploy, corremos:

cd /usr/local/src/snorby
bundle exec rake snorby:setup

A aplicação em si está agora instalada e se tiverem feito dos os passos estará a funcionar.
Mas será necessário disponibilizar a webgui de gestão da mesma. Para isso instalaremos o Phusion Passenger:

gem install passenger
passenger-install-apache2-module –auto

Em termos de despiste, caso existam problemas, a minha sugestão em primeiro lugar é validarem a vossa DB de snorby. Se conseguem aceder a ela com o utilizador que está configurado.

Para um despiste ainda mais profundo existem as seguintes opções self explanatory:

cd /usr/local/src/snorby
sudo RAILS_ENV=production script/rails r “Snorby::Worker.stop”
sudo RAILS_ENV=production script/rails r “Snorby::Worker.start”
sudo RAILS_ENV=production script/rails r “Snorby Cache Jobs”
sudo RAILS_ENV=production script/rails r “Snorby::Jobs::SensorCacheJob.new(true).perform”
sudo RAILS_ENV=production script/rails r “Snorby::Jobs::DailyCacheJob.new(true).perform”
sudo RAILS_ENV=production script/rails r “Snorby::Jobs.clear_cache”
sudo RAILS_ENV=production script/rails r “Snorby::Jobs.run_now”
sudo RAILS_ENV=production script/rails r “Snorby::Jobs::GeoipUpdatedbJob.new(true).perform”

Da experiência que tive em relação ao deployment do produto, posso dizer que a unica dificuldade foi uma credencial da base de dados mal passada. Tudo o resto funcionou assim que foi ligado.

Concluindo, com ferramentas opensource, simples e extremamente potentes, podemos alavancar a segurança que é tão importante nos nossos ambientes hoje em dia.

Como sempre, sabem onde me podem encontrar caso tenham duvidas ou comentários.

Até ao próximo post!

Abraço!
Nuno