quinta-feira, 10 de julho de 2008

Tutorial de Instalação do HLBR Versão 1.5Rc2



O Emprego de uma Bridge como IPS
Para detecção de tráfego anômalo em redes.


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.

Atuação do HLBR em relação ao Modelo ISO/OSI

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.


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 - Instalação do Sistema Operacional

Para instalar o HLBR aconselho que a máquina seja instalada com um Debian Minimal Install que pode ser adiquirido no seguinte link:

http://cdimage.debian.org/debian-cd/4.0_r3/i386/iso-cd/debian-40r3-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

Em especial, a partir da versão 1.5, a biblioteca libpcre é necessária para que as expressõres regulares sejam utilizadas. Para isso você também deve instalar:

apt-get install libpcre3-dev libpcre3

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.

3 - Configurando 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.


4- Instalação do HLBR.

a) Baixe o código fonte em:

wget http://ufpr.dl.sourceforge.net/sourceforge/hlbr/hlbr-1.5rc2.tar.gz

b) Descompacte

tar xzvf hlbr-1.5rc2.tar.gz


c) Entre no diretório

cd hlbr-1.5-rc2


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

./configure
make
make install


5 - Configurando


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:

<IPList www>
200.xxx.yyy.195
200.xxx.yyy.196
</list>

<IPList dns>
200.xxx.yyy.195
200.xxx.yyy.197
</list>

<IPList email>
200.xxx.yyy.198
</list>

<IPList firewall>
200.xxx.yyy.210
</list>

<IPList network>
200.xxx.yyy.192/26
</list>

<IPList others>
200.xxx.yyy.194
200.xxx.yyy.199
</list>

<IPList servers>
www
dns
email
firewall
others
200.xxx.yyy.209
</list>

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.

<IPList www>
192.168.0.1
</list>

<IPList dns>
192.168.0.2
</list>

<IPList email>
192.168.0.3
</list>

<IPList firewall>
192.168.0.4
</list>

<IPList network>
192.168.0.0/24
</list>

<IPList others>
192.168.0.5
</list>

<IPList servers>
www
dns
email
firewall
others
</list>


c) Para configurar as regras

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

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

Note que toda regra começa com a tag <rules> e termina com </rule> 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:


<action action1>
response=alert file(/var/log/hlbr/hlbr.log)
response=dump packet(/var/log/hlbr/hlbr.dump)
response=drop
</action>

<action action2>
response=alert file(/var/log/hlbr/hlbr-2.log)
response=dump packet(/var/log/hlbr/hlbr-2.dump)
</action>

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


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.

7 - 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.




8 - 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:
Vídeo Brinde: Se quiser ver um vídeo de como é feita a instalação do HLBR veja aqui

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

9 - Colocando pra 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, veja os parâmetros possíveis:

10 - Logs

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.

11 - Colocando no ar de forma definitiva

Você pode colocar em um arquivo de incializaçã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

Referências:

http://hlbr.sourceforge.net
http://www.eriberto.pro.br
http://bertelli.name

Obs: Este tutorial foi baseado no artigo de Eriberto Mota e André Bertelli.

Este artigo foi publicado no VivaoLinux e pode ser acessado aqui



5 comentários:

  1. Uma dúvida. Minha rede já tem proxy transparente, e eu queria um hlbr.conf que usasse 127.0.0.2, bem básico somente para bloquear msn, como faço?

    ResponderExcluir
  2. Oi voyeg3r.
    Não é recomendado colocar um IPS para fazer o trabalho de um Firewall. Bloquerar portas, protocolos e afins, é trabalho para proxy e firewall. Portanto não é a praia do HLBR fazer isso e além disso não é recomendado, pois o tornaria bastante lento trazendo um overhead a sua rede.
    Aconselho você utilizar o L7-FILTER para fazer este trabalho. Ele deve ser utilizado junto com o Iptables.

    ResponderExcluir
  3. ola estou com uma duvida...besta mais uma duvida FD..o cabo da net entra na eth1 ...com o ip 127.0.0.2...na eth2 que tem o ip 127.0.0.3 sai o cabo que vai pro meu firewall (iptables)esse cabo que sai da eth2 ele não ta passando a net axo que e a configuração dos loopback..tem algum lugar que possa ler sobre isso...uso debian ...

    vlw...muito bom esse blog...ja li e reli varia veses ...tem me ajudado muito...

    ResponderExcluir
  4. Oi Gustavo

    Obrigado pelos comentários!!
    Você lembrou que este cabo deve ser um cabo crossover ???

    Dailson

    ResponderExcluir
  5. Dailson , primeiramente parabens pelo site !!!!
    Gostaria de sugerir um tutorial para aprendermos a desabilitar o IP no kernel para implementar o HLBR.

    Desde já agradeço !!!
    VALEU!!!

    Marcelo Sandro
    bmsandro@gmail.com

    ResponderExcluir