Blindando sua rede com o HLBR

Sistemas de Detecção de Intrusos são utilizados para perceber tráfego anômalo em uma rede de dados e tomar decisões de acordo com as regras e configurações definidas pelo gestor de segurança da rede.

Estes sistemas são divididos ativos e reativos. Os sistemas ativos, também conhecidos como IDS (Intrusion Detection Systems), percebem o tráfego malicioso fazem a gravação em log e alertam o administrador da rede sobre o que está acontecendo.

Os sistemas reativos, conhecidos como IPS (Intrusion Prevention System), tem todas as características do sistema ativo, porém é capaz de tomar decisões e interferir no tráfego malicioso e tornar o ataque inviável.

Em alguns sistemas IDS é possível torná-lo em IPS bastando ativar as configurações para que ele intervenha no tráfego. Esta artigo tem como objetivo mostrar a instalação e configuração do HLBR, que é um IPS brasileiro, open source que tem como principal característica a sua “invisibilidade” na rede e sua fácil configuração.

O que é o HLBR?

O HLBR (Hogwash Light Brasil) é Sistema de Detecção de Intruso que trabalha de forma reativa o que o classifica como IPS, baseado no IPS HOGWASH desenvolvido originalmente por Jason Larsen que colhe dados diretamente na camada 2 do Modelo OSI. Funcionando como uma bridge, sendo capaz de interceptar tráfego malicioso baseado em arquivos de regras e assinaturas de ataques.

O HLBR é invisível na rede e é praticamente impossível de ser detectado pelo atacante. Esta característica é possível pelo fato do HLBR não alterar o cabeçalho dos pacotes. O fato de citar que é praticamente impossível de ser detectado é porque até então ainda nenhuma atacante não conseguiu comprovar sua presença na rede. O HLBR se comporta como um ativo de rede, como uma Ponte, Hub ou Switch. Isto é possível pelo fato de suas placas de redes não usarem endereços de IP ou ainda, usar endereços de Ip não roteáveis.

O HLBR é responsável em fazer a ponte entre as placas de rede da máquina. Por essa razão, não há aplicativos intermediários como a Libcap para fazer tal trabalho. Todo o trabalho de capturar, desmontar, analisar e remontar é feito pelo HLBR. O HLBR é capaz de analisar o pacote TCP em todas as camadas do Modelo ISO/OSI e TCP.

Ele lê os campos dos cabeçalhos de camada 2 (ethernet), 3 (cabeçalho IP) e 4 (TCP e UDP). São esses valores que são testados pelas regras. É importante notar que o próprio HLBR faz esse reconhecimento dos formatos dos cabeçalhos, sem o apoio da pilha TCP/IP do sistema operacional. Isso esclarece o fato do HLBR poder negar ataques na camada 2 do Modelo ISO/OSI mesmo a máquina onde ele está instalado não possuir número de IP.

Hardware e softwares necessários

1. Hardware necessário
O HLBR faz jus ao L (light), pois os recursos de hardware e software são mínimos, sendo possível instalar em máquinas consideradas antigas com processador de 200Mhz e 64 de Ram. e um HD de 2 GB. Estes requisitos são suficientes para o HLBR funcionar. Em relação aos adaptadores de rede, o HLBR necessita de no mínimo 2 placas para que seja possível fazer a ponte entre duas redes. O HLBR é capaz de formar mais de uma ponte em uma mesma máquina, sendo que para cada ponte, 2 placas de redes sejam utilizadas.

2. Sistema operacional
Para instalar o HLBR aconselho que a máquina seja instalada com um Debian Minimal Install que pode ser adquirido no seguinte link:

http://cdimage.debian.org/debian-cd/4.0_r1/i386/iso-cd/debian-40r1-i386-netinst.iso

Este sistema instala o mínimo necessário em uma máquina para ter o Linux funcionando. Sem servidores e serviços adicionais, provendo assim uma maior proteção por não haver serviços extras sendo executados na ponte.

Um passo importante após a instalação do Debian Minimal Install é instalar os pacotes necessários para compilação de programas no Linux. Para isto execute:

# apt-get install build-essential

Você pode usar a distribuição que você achar melhor, não há problemas. Também pode ser usado outros sabores *NIX como o FREEBSD. Porém vale salientar, que a equipe mantenedora do software recomenda Debian.

Preparando o ambiente para o HLBR

a) Desativando o suporte a IP do Kernel

Para configurar o HLBR sem suporte a IP é necessário ter o código fonte do Kernel do Linux e recompilar sem o suporte a IP. Desta maneira as placas não terão nenhum tipo de endereçamento local sendo controladas pelo daemon do HLBR. Isso será necessário porque o TCP/IP irá conflitar com o fato dos adaptadores de rede estarem ativos sem endereço IP. Assim, o HLBR poderá ter problemas no seu funcionamento, como retardo nos no tráfego (Eriberto Mota;André Bertelli, 2006).

Porém esta forma de configuração desabilita a possibilidade de analisar o tráfego com ferramentas sniffers como TCPDump, IPTraf e o Wireshark.

b) Utilizando endereços de loopback

Caso o usuário opte usar endereço de nas placas do HLBR para facilitar a configuração basta utilizar os endereços de loopback como 127.0.0.0/8. Por exemplo:

eth0 : 127.0.0.2
eth1 : 127.0.0.3

Esta maneira é bem mais fácil de fazer, e não diminui a segurança do sistema em nada, pois endereços de loopback não são roteáveis. E ainda acrescenta a possibilidade de uso de Analisadores de Tráfego como o TCPDump, IPTraf e o Wireshark na camada 3 do modelo ISO/OSI (camada de rede), é possível também com esta configuração que um IDS como o Snort possa colher dados para análise e confecção de novas regras caso seja instalado na mesma máquina.

Instalando o HLBR

a) Baixe o código fonte em:

http://ufpr.dl.sourceforge.net/sourceforge/hlbr/hlbr-1.1.tar.gz

b) Descompacte:

# tar xzvf hlbr-1.1.tar.gz

c) Entre no diretório:

# cd hlbr-1.1

d) Faça a compilação e instalação com:

# ./configure
# make
# make install

Nesta fase existe um grande diferencial. Na hora do ./configure, o script pergunta se o HLBR deve ser instalado em Português ou Inglês. Assim os Logs e mensagens do HLBR estarão traduzidos para você.

Configurando o HLBR

a) Vá para o diretório /etc/hlbr:

# cd /etc/hlbr

b) Abra o arquivo de configuração hlbr.config:

# vi hlbr.config

Aqui você deverá apontar quais são os servidores e máquinas que você quer proteger. Veja que o HLBR traz alguns exemplos para que você possa alterar de acordo com as suas necessidades. Veja abaixo:


200.xxx.yyy.195
200.xxx.yyy.196


200.xxx.yyy.195
200.xxx.yyy.197


200.xxx.yyy.198


200.xxx.yyy.210


200.xxx.yyy.192/26


200.xxx.yyy.194
200.xxx.yyy.199


www
dns
email
firewall
others
200.xxx.yyy.209

Você deverá trocar os IPs para os correspondentes dos seus servidores. Abaixo um exemplo utilizando IPs de redes locais, mas com certeza você irá colocar os IPs reais dos seus servidores (caso o HLBR esteja protegendo sua WAN). Se o HLBR estiver em rede local, protegendo servidores ou uma DMZ, o exemplo abaixo é válido.


192.168.0.1


192.168.0.2


192.168.0.3


192.168.0.4


192.168.0.0/24


192.168.0.5


www
dns
email
firewall
others

As regras de detecção de ataque

O HLBR já vem com muitas regras prontas. Todas elas ficam dentro do diretório /etc/hlbr/rules em vários arquivos. Geralmente, estes arquivos armazenam regras por assunto. Por exemplo: o arquivo webattacks.rules trazem regras que inibem ataques aos servidores webs. Um arquivo pode (e deve) armazenar diversas regras.

Abaixo, veja um exemplo de uma regra que impede que usuários tentem fazer a mudança de diretório no seu servidor web e visualizar informações importantes como o arquivo de senhas do seu servidor. Esta regra está no arquivo /etc/hlbr/rules/passwd.rules.


ip dst(servers)
tcp dst(53,80,110,220)
tcp content(/etc/passwd)
message=(passwd-1) /etc/passwd call
action=action1

Note que toda regra começa com a tag e termina com o parâmetro ip dst está apontando para os servers que foi descrito no arquivo /etc/hlbr/hlbr.config. As portas destino estão especificadas no parâmetro tcp dst e o conteúdo malicioso é detectado através de tcp content, ou seja, caso seja invocado a string “/etc/passwd” o HLBR irá tomar uma atitude descrita em action.

As “actions” (ações) estão definidas no arquivo /etc/hlbr/hlbr.config. Na instalação padrão existem 3 actions:


response=alert file(/var/log/hlbr/hlbr.log)
response=dump packet(/var/log/hlbr/hlbr.dump)
response=drop


response=alert file(/var/log/hlbr/hlbr-2.log)
response=dump packet(/var/log/hlbr/hlbr-2.dump)


response=alert file(/var/log/hlbr/virus.log)
response=dump packet(/var/log/hlbr/virus.dump)
response=drop

Os parâmetros utilizados nas actions são:

alert file
Caminho do arquivo onde será gravado o log.

dump packet
Caminho do arquivo de dump no formato do TCPDump.

drop
Caso este parâmetro seja declarado, o pacote será negado e descartado pelo HLBR.

Onde posicionar o HLBR?

O HLBR pode ser posicionado de diversas maneiras. A Mais comum é você colocá-lo na frente de seu firewall e depois do seu roteador. Por exemplo: Entre seu roteador em casa e seu PC.

Veja na figura abaixo:

Um um ambiente corporativo, não vai ser necessário alterar sua atual estrutura de rede, você pode estar usando qualquer tipo de arquitetura de firewall com ou sem DMZ, Honeynet ou qualquer outro recurso. O HLBR não vai alterar em nada, basta colocá-lo da seguinte maneira:

Ou você pode proteger sua rede utilizando um HLBR na entrada da rede e outro HLBR junto aos usuários, que na maioria das vezes são os nossos inimigos em potencial.

Colocando para funcionar!

a) Para iniciar o servidor HLBR dê o seguinte comando:

# /etc/initd.d/hlbr start

b) Verifique se o HLBR está no ar:

# ps aux | grep hlbr

c) Para parar o HLBR:

# /etc/initd.d/hlbr stop

d) Se você prefere usar a inicialização em linha de comando use:

# hlbr -c /etc/hlbr/hlbr.config -r /etc/hlbr/hlbr.rules &

Veja os parâmetros possíveis via linha de comando:

hlbr

-c
-r

-l
-t Analisa regras e sai / Parse rules and exit
-n Processa n pacotes e sai / Process n packets and exit
-d Executa em modo daemon / Enter Daemon Mode (Background Execution)
-v Mostra versão e sai / Print version and exit

Para visualizar as opções acima, basta digitar no console hlbr sem parâmetros.

Você pode colocar em um arquivo de inicialização do Linux para toda vez que a máquina for ligada, a ponte seja “armada” e o hlbr esteja sempre analisando o tráfego.

Use o /etc/initd.d/bootmisc.sh e coloque a seguinte linha lá:

hlbr -c /etc/hlbr/hlbr.config -r /etc/hlbr/hlbr.rules &

Ou utilize o seguinte comando no Debian:

# update-rc.d -n hlbr defaults

Auditoria: Visualizando LOGS e arquivos de DUMP

Todos os logs do HLBR estão em /var/log/hlbr (local padrão). Lá você encontrará um arquivos textos com extensão .log e arquivos de dump do tcpdump com extensão dump.

Para visualizar os arquivo de log em modo texto basta usar o vi.

Ex: vi hlbr.log

Para visualizar os dumps do tcpdump, utilize a seguinte sintaxe:

# tcpdump -s 1500 -vvv -tttt -X -r hlbr.dump

Onde:

-s: Tamanho máximo do segmento (mtu)
-vvv: Em modo detalhado
-tttt: Modo de tempo detalhado (hora e data)
-X: Exibe os valores em Hexadecimal
-r: Especifica o arquivo de entrada.

Nota: Para visualizar com o TCPDUMP, este aplicativo deve estar instalado no sistema. para isso utilize apt-get install tcpdump (caso você use Debian e derivados).

Testando: Provocando uma reação do HLBR

Depois de todo o ambiente instalado, precisamos saber se o HLBR está no ar.

Como o HLBR é o responsável em fazer a ponte entre as máquinas. o fato de você executar um ping entre máquinas que tem o HLBR no meio já é suficiente para saber que ele está no ar e funcionando.

Porém vamos testar com um ataque. Para vermos a ação do HLBR em tempo real, vá em um console onde o HLBR está instalado e faça:

# tail -f /var/log/hlbr/hlbr.log

Vamos fazer um ataque simulando o vírus CODRED que atacava uma vulnerabilidade de um servidor IIS causando um Buffer Overflow.

Supondo que seu servidor Web seja 192.168.10.100, digite no browser:

http://192.168.0.100/GET/default.ida?

Veja no HLBR que o Log começa a aparecer com a mensagem:

22/09/2007 13:20:27 XXX.1.249.50:50019->200.XXX.XXX.XXX:80 (codered-nimda-1) default.ida request

Outro ataque, seria a mudança de diretório em um servidor Web. Este ataque permitia ao invasor navegar na estrutura de disco do servidor Web.

http://192.168.10.100/../..
ou
http://192.168.10.100/../../etc/passwd

Veja no HLBR que o Log começa a aparecer com a mensagem:

03/07/2007 17:08:12 XXX.1.249.50:50019->200.XXX.XXX.XXX:80 (webattacks-1-re) directory change attempt (unicode,asc,plain)

Ou ainda, um ataque para explorar o Shell das máquinas Windows (ataque que caracterizava o vírus NINDA)

http://192.168.10.100/system/cmd.exe?dir+c:

Veja no HLBR que o Log começa a aparecer com a mensagem:

22/09/2007 13:30:07 XXX.1.249.50:50019->200.XXX.XXX.XXX:80 (codered-nimda-2-re) (root|cmd|explorer) request

Vídeos do HLBR em ação

Se você quer ver o HLBR em ação, você pode ver através dos seguintes vídeos:

Vídeo 1: Ataque a um servidor DNS sem o HLBR
Vídeo 2: Ataque a um servidor DNS com o HLBR
Vídeo 3: Ataque a um Servidor HTTP

Brinde. Se quiser ver um vídeo de como é feita a instalação do HLBR veja em:

http://ufpr.dl.sourceforge.net/sourceforge/hlbr/hlbr_install.avi

Obs: Todos os vídeos foram produzidos pela equipe do HLBR.

Conclusão, créditos e links

A inserção de mais uma camada de proteção em profundidade na nossa rede seja ela doméstica ou corporativa é um fato a se considerar. Implementar novas camadas ao nosso sistema de Firewall com IDS, IPS, Briges/Pontes, Anti-Vírus, Proxys, Roteador Blindado com ACLs (Screening Router) deve ser estudada e implementada. Atribuir diversas tarefas ao firewall é uma maneira errônea de pensar em proteção. Sobrecarregar máquinas com diversos serviços de proteção provoca uma falsa sensação de segurança.

O HLBR é um projeto Promissor, que venho usando a 2 anos na empresa em que trabalho sem nenhum “crash” durante todo este tempo.

Site Oficial do HLBR:

http://hlbr.sourceforge.net

Obrigado e lembrem-se…

flames > /dev/null !!!

Rolar para cima