terça-feira, 17 de julho de 2007

Detecção de intrusos (IDS), conceitos e implantação do SNORT

Autor: Everton Godoi
Data: 09/05/2007

Detecção de intrusos e anomalias

Sistema de Detecção de intrusos, IDS (intrusion detection system), são sistemas que detectam vários tipos de trafego da rede (NIDS) e também de computadores maliciosos (HIDS) que não são detectados por um firewall da rede. Os IDS são compostos por diversos componentes: sensores que geram todos os eventos de segurança, um console que monitora os eventos e alertas. Para controlar os sensores existe uma central que grava os eventos registrados pelos sensores em uma base de dados e usam regras que geram alertas dos eventos de segurança.

Sistemas de detecção de intrusos é dividido em HOST (HIDS - Host Intrusion Detection System), que seria monitoramento em um computador e REDE (NIDS - Network Intrusion Detection System), monitoramento de uma rede de computadores.

Sistemas de detecção de anomalias consistem em um monitoramento nas variações nas atividades da rede relacionando com um padrão de utilização normal da rede.

Sistema de detecção de intrusos da rede (NIDS) é um sistema que trabalha detectando atividades maliciosas na rede, como ataques baseados em serviço, port scans ou até monitoramento do tráfego da rede. O NIDS faz isto lendo todos os pacotes que entram na rede e tenta encontrar alguns testes padrões, suporte que houvesse um grande número de requisição TCP a várias portas diferentes, pode haver um port scan em algum computador da rede.

Sistema de detecção de intrusos por host (HIDS) é um sistema que monitora o comportamento de um sistema, pois o NIS verifica somente os pacotes de uma rede e o HIDS pode detectar que um software esta tentando fazer alguma atividade que não faz parte de seu funcionamento, ele consegue verificar o estado do sistema operacional, informações armazenadas, memória RAM, e certifica que os índices estão normais, podemos considerar o HIDS como um agente que monitora tudo que seja interno e externo.

Sistema de detecção anomalia é um sistema que para detectar intrusos e mal utilização do computador ele utiliza classificação no monitoramento que seria entre normal e anômalo, a classificação é baseada em regras, ele acaba sendo o contrário dos sistemas baseados em assinatura, que podem somente detectar os ataques para que uma assinatura tenha sido criada previamente.


Software de IDS Snort

O Snort é um sistema de detecção de intruso que é capaz de executar registros dos pacotes e a análise do tráfego de uma rede em tempo real, ele consegue executar análise do protocolo, ele faz combinações que pode detectar uma variedade de ataques e probabilidades, como port scan, ataques CGI, ataques pelo Samba (smb) e vários outros.

O sistema também pode ser utilizado para finalidades de uma análise de tentativa de ataque no momento em que elas estão ocorrendo, ele pode ser trabalhado com outro software para ter uma interface visual de simples visualização, um exemplo é trabalho o Snort com o (BASE) Basic Analysis and Security Engine. O Snort suporta ainda um scaneamento da rede com um antivírus como o Amavis e ele trabalha na camada de rede 3 e 4, e com isto é possível ele ter uma observação histórica dos possíveis ataques a rede.

Abaixo imagem de um IDS em funcionamento, basicamente ele tem três placas de rede que serão o scanner das redes externa e interna (setas vermelhas), ele é ligado em um HUB que filtra todas as entradas e saídas da rede para verificar a existência de algum protocolo ou requisição maliciosas.


Funcionamento do Snort

Instalação do Snort

Antes de iniciar a instalação do Snort temos que instalar todas as dependências dele para que funcione junto com o BASE, vamos então iniciar a instalação baseado na lista abaixo:

* APACHE: apache apache-ssl
* MYSQL: mysql-server libmysqlclient12-dev zlib1g-dev
* PHP 4: php4 php4-mysql libphp-adodb libnet1 libnet1-dev php4-gd php4-gd php4-pear php4-cli
* TCPDUMP: tcpdump libpcap0.8 libpcap0.8-dev libpcre3-dev


Vamos então iniciar a instalação:

Instalação do servidor Web:

# apt-get install apache apache-ssl

Instalação do servidor de Banco de Dados:

# apt-get install mysql-server libmysqlclient12-dev zlib1g-dev

Instalação da linguagem Web PHP:

# apt-get install php4 php4-mysql libphp-adodb libnet1 libnet1-dev php4-gd php4-gd php4-pear php4-cli

Instalação do TCPDump:

# apt-get install tcpdump libpcap0.8 libpcap0.8-dev libpcre3-dev

Agora vamos fazer a instalação do Snort, é recomendável sempre verificar no site oficial do Snort qual a última versão do software para fazer a instalação, hoje vamos fazer a instalação da versão 2.6.1.4.

Vamos acessar a pastar /usr/local/src/ que eu utilizo como a pasta padrão para os source que eu faço download:

# cd /usr/local/src/

Baixando o snort-2.6.1.4.tar.gz:

# wget http://www.snort.org/dl/current/snort-2.6.1.4.tar.gz

Descompactando o arquivo baixado:

# tar -xvzf snort-2.6.1.4.tar.gz

Agora vamos compilar e instalar o Snort já com suporte a MySQL:

# cd /usr/local/src/snort-2.6.1.4
# ./configure --with-mysql
# make
# make install
# ./configure --with-mysql

Criar as pastas padrões para o Snort funcionar:

# mkdir /etc/snort /var/log/snort

Agora vamos criar a conta e o grupo de trabalho do Snort:

# addgroup --gid 70 snort
# adduser --no-create-home --shell /bin/false --gid 70 --uid 70 --disabled-password snort

Vamos adicionar algumas regras oficiais no Snort, acesse o site:

* http://www.snort.org/pub-bin/downloads.cgi


e verifique qual a última versão que está disponível no site, aqui iremos instalar a 2.4:

# cd /etc/snort
# wget http://www.snort.org/pub-bin/downloads.cgi/\
Download/sub_rules/snortrules-snapshot-2.4_s.tar.gz

Descompactando o pacote com as regras e fazendo uma copia dos arquivos .conf e .map do snort:

# tar -xvzf snortrules-snapshot-2.4_s.tar.gz

Após descompactar ele irá criará automaticamente as pastas rules e doc, isso dentro da pasta que você descompactar, que deve ser a /etc/snort.

Agora vamos fazer cópia dos arquivos .conf e .map:

# cp /usr/local/src/snort-2.6.1.4/etc/*.conf* /etc/snort/
# cp /usr/local/src/snort-2.6.1.4/etc/*.map /etc/snort/

Agora vamos configurar o snort:

# vi /etc/snort/snort.conf

## Edite o arquivo como monstra abaixo
#
# Arquivo com regras do snort
var RULE_PATH /etc/snort/rules
# Rede onde o snort irá trabalhar
var HOME_NET 192.168.1.0/24
#
var EXTERNAL_NET !$HOME_NET

Adicionando o Snort no MySQL para ele armazenar os logs de captura no banco de dados:

# mysql -u root -p
mysql> create database snort;
mysql> exit;
# cd /usr/local/src/snort-2.6.1.4/schemas/
# mysql -u root -p < create_mysql snort

Configuração para o Snort utilizar o MYSQL:

# vi /etc/snort/snort.conf

# Arquivo de configuração do Snort, para ele funcionar normalmente
# deve-se descomentar a linha output

# database: log to a variety of databases
# ---------------------------------------
#
output database: log, mysql, user=root password=senhaMysql dbname=snort host=localhost
#----------------------------------------

Finalizamos aqui a instalação do Snort com suporte a MySQL, agora vamos para a instalação do BASE.


Instalação do BASE

Agora vamos fazer a instalação do BASE, mas para ele funcionar precisamos ter um servidor Apache-SSL funcionando, então vamos fazer algumas configurações que são necessárias para ele rodar com suporte a PHP:

# vi /etc/apache-ssl/httpd.conf

#--------------------------------------------
# Se não tiver estas linhas você deve adicioná-las
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#
#-------------------------------------------

# vi/etc/php4/apache/php.ini

#--------------------------------------------
# Se não tiver estas linhas você deve adicioná-las
#
extension=mysql.so
#
#--------------------------------------------

Reiniciando o servidor Apache-SSL:

# . /etc/init.d/apache-ssl restart

Instalação do base (Basic Analysis and Security Engine)
Acessando a pasta www do apache:

# cd /var/www

Fazendo download do base:

# wget http://ufpr.dl.sourceforge.net/sourceforge/secureideas/base-1.2.7.tar.gz

Removendo a página index.html do diretório www e descompactando o base-1.2.7 aqui baixado, renomeando pasta e alterando permissões de usuários da pastas para o usuários web (www-data):

# rm index.html
# tar xvzf base-1.2.7.tar.gz
# mv base-1.2.7 base
# chown -R www-data:www-data base

Agora vamos configurar o base via web, primeiro abra o browser e acesse o endereço:

https://www.seuserver.com.br/base

E adicione as configurações básicas do BASE:

Linguagem: Português
Path para o Adobd: /usr/share/adodb/

Database Name: snort
Database Host: localhost
Database Port: deixe em branco!
Database User Name: root
Database Password: senhaMysql

Clique em "create baseag"

Agora vá para o passo 5: login

Configurando o PEAR no Debian:

# pear config-set preferred_state alpha

Instalando alguns pacotes necessários do Pear para que o BASE funcione normalmente:

# pear install Image_Color
# pear install Image_Canvas
# pear install Image_Graph

Configurando o php4 para suportar a biblioteca gráfica do php-gd:

# vim /etc/php4/cli/php.ini

#-------------------------------------------------------
# Descomente a linha abaixo
#
extension=gd.so
#
#-------------------------------------------------------

Espero ter ajudado a comunidade com este artigo, pois demorei algum tempo para fazê-lo. Está bem tranqüilo para entender o que é, como funciona e implantação de um IDS na rede.

Estou a disposição para esclarecer dúvidas dos usuários da comunidade, obrigado a todos, T+.

Nenhum comentário: