Hoje abordarei algo bem legal. A idéia é oferecer uma “receita de bolo” de como instalar um SDI ou IDS (Sistema de Detecção de Intrusão – Intrusion Detection System) em seu AP.
Em meus testes utilizei:
* AP Linksys WRT54GS v.3 com: CPU MIPS de 200MHz, 32MB de RAM e 8MB de flash;
* Firmware OpenWRT versão WHITE RUSSIAN (RC5);
* Snort-Wireless versão 2.4.3.
Abaixo uma imagem do roteador utilizado:
Para instalar o Snort-Wireless no Access Point foi, no meu caso, necessário trocar o firmware original do equipamento. Por indicação de meu professor, resolvi pesquisar sobre o OpenWRT. Após algum tempo constatei que muitas pessoas estavam satisfeitas com o OpenWRT e então decidi testá-lo.
O que é OpenWRT?
É um firmware para roteadores com linux embarcado. Trata-se de uma mini-distribuição desenvolvida sob a GPL (General Public License). Mini-distribuição porque o número de funções é reduzido perante “distros completas” como: SuSe, Mandriva, Slackware, entre outros. Isto ocorre devido a limitação das memórias dos roteadores, consideravelmente menores comparadas a computadores pessoais comuns, pois raramente possuem mais do que 32MB de RAM e 8MB de ROM. A troca do firmware pode ocorrer via interface gráfica (utilizando seu browser preferido) ou linhas de comando!
Linhas de comando: Em primeiro lugar, deve-se atribuir boot_wait=on na NVRAM (Non-Volatile RAM) do WRT54GS. Com boot_wait=on, o roteador aguarda por uma nova imagem de firmware. Eis um problema, pois desconheço uma “receita de bolo” confiável para isso. Alguns se aproveitam de um erro de programação da página ping.asp, pois através desta falha comandos em linux poderão ser executados.
Comigo não funcionou!
Após boot_wait=on (quem souber um método confiável, avise-me), deve-se desligar o roteador. Com ele ainda desligado, digita-se (em linux):
tftp 192.168.1.1
binary
rexmt 1
trace
tracing on
put openwrt-gs-code.bin
Após a última linha ser escrita, liga-se primeiro o equipamento e logo em seguida se tecla ENTER (logo em seguida = alguns milésimos de segundo). A transferência do firmware deverá ocorrer após este momento. Caso a mensagem “Code pattern is incorrect” aparecer, a troca do firmware não foi executada com sucesso. Isso porque o firmware não é adequado ao modelo do roteador envolvido.
Troca via interface gráfica: Moleza! Não requer qualquer explicação!
Com a troca, também não há necessidade de preocupação com os valores configurados pelo administrador no access point (senha de root, endereços IP, etc), pois eles não são perdidos. Isto acontece porque os roteadores da família WRT54GS gravam seus dados de configuração no último bloco de armazenamento da flash, a NVRAM. Minha versão, como já exposto, é a White Russian RC5. Caso tudo der certo, após a instalação do openWRT, deve-se ter a seguinte tela:
Para se evitar bloqueios por acidente, deve-se ter muito cuidado com as alterações internas do roteador. Por exemplo: Alguém, por descuido, poderá fechar todas as portas e desligar o boot_wait. Caso as tentativas comuns (botão de reset ou TFTP anônimo) fracassem ainda há solução. Esta solução se encontra no circuito integrado da memória flash, dentro do roteador. Através da inscrição Intel Flash o chip é facilmente encontrado. No modelo WRT54GS é preciso fechar um curto-circuito entre os pinos 5 e 6 (nos modelos WRT54G os pinos são 15 e 16). Devido a este curto-circuito a flash não poderá ser mais lida por completo. Como a soma de verificação (checksum) não baterá o carregador permanecerá em modo TFTP.
Abaixo uma tabela com as interfaces de rede de alguns modelos Linksys – utilizadas pelo openWRT:
Agora, com o openWRT instalado, é importante saber inserir dados de configuração na NVRAM. A melhor referência para isto está em http://openwrt.org/ . Abaixo alguns exemplos:
Há também comandos para o próprio firmware.
Exemplos:
logread -> lista as atividades executadas pelo firmware. Isto ocorre por ordem de hora e data.
Mas, como alterar a data e hora do openWRT?
Caso você quiser inserir a data 18/10/2007, faça:
date 101800002007
Para alterar a hora, faça:
date –s 09:51
Viu só? Tranqüilo!
Além disso tudo, tem-se a interface gráfica. Nesta é possível fazer diversas (diversas mesmo) configurações dando apenas alguns cliques no mouse. Por exemplo: inserir endereços MAC’s no MAC filter list, instalar e desinstalar softwares, ativar e desativar o DHCP e até mesmo escrever regras iptables para o firewall. Estas funções e muitas outras! Abaixo a tela principal:
Bom, percebe-se com estas básicas demonstrações a flexibilidade do openWRT. Porém, caso o mesmo não atenda as suas expectativas é possível voltar ao firmware original.
Primeiro, baixa-se o firmware original no site do fabricante. Em sua máquina salve com o nome linux.bin. Feito isso, é necessário inserir 32 bytes nulos no início do arquivo. Assim:
dd bs=16 skip=2 if=linux.bin of=linux.trx
Agora copie o linux.trx para o roteador em /tmp e execute:
mtd write /tmp/linux.trx linux && reboot
Este comando salvará o novo firmware na flash do equipamento e reiniciará o dispositivo. Após instantes (JAMAIS PRESSIONE RESET NESTE MOMENTO) o roteador irá trabalhar novamente com o firmware original.
Snort-Wireless
O snort surgiu antes da popularização das redes sem fio. Primeiramente como solução para redes cabeadas, mostrou-se uma ferramenta extremamente eficiente. Escrito em linguagem C e de código-fonte aberto, é um software capaz de realizar análise de tráfego e registro de pacotes em tempo real, em redes IP. De modo geral, utiliza regras para analisar e avaliar os pacotes que entram na rede. Os pacotes poderão ser aceitos ou rejeitados conforme estas regras. As regras podem ser criadas ou obtidas através de sites atualizados diariamente.
Optei pelo patch específico para wireless, o snort-wireless versão 2.4.3. A instalação do snort-wireless no WRT54GS aconteceu através do sistema de pacotes ipkg (sistema este do openWRT). Este é semelhante ao popular apt, utilizado em algumas distribuições linux. Seus comandos mais importantes são: ipkg update para atualizar a lista de pacotes, ipkg list para listar todos os pacotes disponíveis e instaláveis, ipkg install nome e ipkg remove nome para instalação e remoção de pacotes, respectivamente.
Pode-se acompanhar todo o processo de instalação a seguir:
root@OpenWrt:/# ipkg install http://openwrt.alphacore.net/experimental/snort-wireless_2.4.3-alpha04-1_mipsel.ipk
Downloading http://openwrt.alphacore.net/experimental/snort-wireless_2.4.3-alpha04-1_mipsel.ipk
Installing snort-wireless (2.4.3-alpha04-1) to root…
Installing libnet (1.0.2a-7) to root…
Downloading http://downloads.openwrt.org/whiterussian/packages/libnet_1.0.2a-7_mipsel.ipk
Installing libpcap (0.9.4-1) to root…
Downloading http://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk
Installing libpcre (5.0-3) to root…
Downloading http://downloads.openwrt.org/whiterussian/packages/libpcre_5.0-3_mipsel.ipk
Configuring libnet
Configuring libpcap
Configuring libpcre
Configuring snort-wireless
Successfully terminated.
Prontinho!
Agora é só configurá-lo e aumentar significativamente a segurança de sua rede. Informações sobre a configuração do mesmo não serão expostas aqui, afinal, este é um assunto muito extenso.
É isso!