O Emprego de uma Bridge como IPS
Para detecção de tráfego anômalo em redes.
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.
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_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.
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:
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
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
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
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 <
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
Prezado Dailson,
ResponderExcluirTrabalho na área de segurança a algum tempo e gostei muito do seu artigo, alias está bem completo. Simplesmente adorei sua idéia de colocar vídeos explicando o ataque com e sem o hlbr. Embora meu mundo seja praticamente todo Linux eu sempre trabalhei com IPS baseados em sistemas windows. Agora, uma coisa que sinto muita falta neste tipo de IPS pra Linux é a inexistência de ambiente gráfico para visualizaçào de logs e configuração do ambiente. Ainda acho que falta um programa ou um ambiente LAMP que faça isso. Se existir me avise pois preciso muito.
Abraço
Felipe Martins
martins.felipe@gmail.com
Olá.
ResponderExcluirMuito bom o artigo e o programa. Gostaria de saber como que vocês fizeram aqueles gráficos, mostrando o funcionamento do programa.
Obrigado
Gostaria de ajudar no que for possivel nesse projeto.
ResponderExcluirQualquer coisa tá aqui meu site.
www.inovar.net
Site Linux.
www.inovar.net/linux
Oi Anônimo
ResponderExcluirEu não sei qual programa foi feito as figuras, pois não fui que fiz.
Mas vou procurar saber no grupo.
Gledson
ResponderExcluirO Melhor para começar, é se cadastrar no nosso grupo e conhecer nosso trabalho.
http://br.groups.yahoo.com/group/hlbr/
Dailson