www.tiagolima.com.br

August 23, 2008

Sim, agora dei uma caprichada e tá ae meu novo endereço: www.tiagolima.com.br

Até lá! 😀


Wii + Dlink DIR 300 = Decepção

August 21, 2008

Recentemente comprei um roteador wireless Dlink DIR 300 para poder usar meu Wii na Internet, jogar on-line e tudo mais. Se fosse apenas pelo meu notebook, não teria comprado. Um cabo de rede com alguns metros, que tenho em casa, já era o suficiente para as pouquíssimas horas que tenho passado em casa e no computador, em virtude do trabalho e da faculdade. Então, reforço que o desejo era apenas para ter meu Wii on-line 🙂

Comprei e estou frustrado até o presente momento: o Wii funciona apenas com a rede “aberta” ou com WEP, ou seja, praticamente sem segurança alguma, já que o WEP é facilmente “quebrável” e uma rede aberta … é uma rede aberta …

Configurando com WPA ou WPA2, não funciona. O mais estranho é ver no dlink o meu Wii autenticando e se associando adequadamente ao dispositivo, mas na hora de trafegar os dados … nada acontece!

Bom, então se autentica, associa e não trafega …pode ser o algorítmo de criptografia dos dados: TKIP … nada … AES … menos! Não vai …

Verifiquei por atualizações para o console, mas ele está 100% atualizado!

Achei que fosse problema do Wii e fui pesquisar. Nada de útil! Apenas mandam trocar de canal a minha rede sem fio, o que acreditei não ajudar muito mas, não custava nada testar: eu estava certo, nada mudou.

Bom então, é preciso improvisar. Para me proteger um pouco mais fiz alguns ajustes pequenos para melhorar um pouco a segurança, mesmo que um pouco …

Diminui a potência do sinal do Dlink para 25% apenas e permito apenas os meus endereços MAC (wii, PCs e notebooks), devidamente cadastrados no AP.

Agora me toquei de uma coisa: e uma atualização no firmware do AP? É uma última e muito boa tentativa que, confesso, já deveria ter pensando antes e provavelmente você que começou a ler este texto já havia pensado.

É isso, depois conto o resultado pra vocês.

Essas “pequenas” incompatibilidades de dispositivos de fabricantes diferentes e “distantes” por assim dizer (nintendo x dlink) deixam a gente bastante frustrado. A palavra “conectividade” acaba trazendo mais dor de cabeça do que facilidades. Ou a palavra seria “convergência”? Mais dor de cabeça e frustração …

Um abraço,

Tiago Lima


Pense duas vezes … ou três …

June 5, 2008

apt-get install wife

fora, dependências! 🙂


TCC mode enable

June 3, 2008

Então, por motivos de força maior, conforme o título, as coisas por aqui andam bem paradas. Aliás, já eram meio paradas! 🙂

Apenas então um sinal de que estou vivo e pretendo atualizar as coisas por aqui.

Até mais,

Tiago Lima


Treze razões pelas quais uma rede wireless é lenta

April 29, 2008

No meu último ano de graduação tenho estudado redes sem fio. Confesso que não gostava muito desse assunto mas, passando a conhecê-lo um pouco mais, realmente tomei gosto pela coisa. É interessantíssimo o funcionamento de uma rede sem fio (e complexo também).

Como parte de um trabalho realizado, listo abaixo algumas conclusões sobre o porque de uma rede sem fio ser mais lenta (ter menos vazão de dados) do que uma rede cabeada, por exemplo.

Como introdução, vale destacar que alterações na pilha tcp/ip versão 4 foram necessárias para o funcionamento das redes sem fio (padrão 802.11), porém, estas alterações (significativas, você perceberá) foram feitas apenas nas camadas 1 e 2. Na camada dois apenas na parte MAC (Media Access Control). Assim, ter um conhecimento prévio da pilha de protocolos tcp/ip v4 ajuda no entendimento do que vem a seguir.

Outro detalhe importante é que uma rede sem fio possui três tipos de quadros: dados, gerenciamento e controle.

Ok, vamos aos fatos:

1 – Meio de transmissão, ruídos e sobreposição de canais: Como o meio de transmissão é o ar, este está sujeito a ruídos causados por vários Access Points no mesmo meio e/ou demais equipamentos que possam causar intereferência. Além disso, basicamente temos 11 canais de transmissão diferentes nas redes sem fio, em uma faixa de freqüência que se for dividida para separar estes 11 canais, trará sobreposíções. Destacando que os únicos canais que não se sobrepõem são os de número 1, 6 e 11.

2 – Confirmação em camada 2: Para cada quadro de dados transmitido, é necessário enviar uma confirmação, gerando tráfego excessivo. Esta confirmação é enviada apenas para quadros de dados.

3 – Beacon frames: informações sobre características das camadas 1 e 2 precisam ser enviadas constantemente para que os dispositivos saibam como está sendo realizada a transmissão. Todos devem “falar a mesma língua” em aspectos como a frequência de transmissão, por exemplo. Um beacon frame, por padrão, é enviado em média a cada 100ms. Desta forma, por segundo temos 10 beacon frames enviados, que ajudam a aumentar o volume de tráfego.

4 – Informações redundantes nos quadros transmitidos: Para aumentar a confiablidade dos dados transmitidos, informações redundantes são enviadas para que alguma informação perdida possa ser restaurada, haja vista o meio de transmissão utilizado pelas redes sem fio. Conforme o dispositivo sem fio se distancia do Access Point (AP), mais informações redundantes são enviadas, assim, a quantidade de dados efetivos transmitidos por quadro diminui, exigindo que mais quadros sejam usados para transmitir a informação útil (aquela proveniente das camadas superiores).

5 – Divisão de largura de banda com o aumento de hosts adicionados ao AP: Conforme o número de equipamentos associados à um ap aumenta, a largura de banda é divida entre eles, semelhante ao que acontece num hub (meio de transmissão não determinístico).

6 – RTS / CTS (Request to Sent / Clear to Sent): Com alguns problemas de interferência e, consequentemente, na transmissão, o rts/cts pode ser usado como alternativa para “organizar” a transmissão, onde cada dispositivo solicita permissão para transmitir e o AP libera para este dispositivo, fazendo os demais aguardarem. E como para cada transmissão este processo é executado, quando configurado, acarreta inevitavelmente numa sobrecarga.

7 – Democratização do meio: Com recursos como IFS (Inter-frame Spacing), Janela de contenção e janelamento de valor igual a 1 (um quadro transmitido por vez, com confirmação, conforme item 2), tem-se como objetivo democratizar o meio para que cada dispositivo tenha seu espaço para transmitir, sem esperar muito tempo. Assim, para cada quadro a ser transmitido, todos os trâmites da transmissão devem ser executados (o envio da confirmação do quadro de dados, por exemplo).

8 – Power Save Mode: Este modo utilizado pelos dispositvos wireless (exceto APs) visa desligar por espaços de tempo aleatórios, parte do dispositivo, para economizar energia. Neste meio tempo, se o AP tentar transmitir algo e a placa estiver no modo power save, ele irá armazenar em buffer o quadro até que o dispositivo wireless esteja totalmente ligado, para fazer a transmissão. Este trabalho de armazenar o quadro em buffer, comunicar o computador de destino e transmitir o quadro, acarreta em mais sobrecarga ao AP. Imagine, por exemplo, transmissões em broadcast com dispostivos no modo power save.
9 – MTU padrão maior que o padrão utilizado em Ethernet 802.3: A unidade de transmissão de transmissão do wireless é de 2304 bytes. O padrão utilizado no ethernet é de 1500 bytes (em média). Assim, para esta transmissão, pacotes em ap precisam ser bufferizados e fragmentos para transmissão no meio cabeado.

10 – CSMA físico e virtual: Além do CSMA (Carrier Sense Multiple Access) utilizado também em redes 802.3, é necessário o uso de um CSMA virtual para aumentar a garantia de que o meio estará livre para transmitir. O problema de nó escondido é o motivo para a criação do CSMA virtual.

11 – Redundância de recursos na camada 2: Como a pilha de protocolos tcp/ip foi escrita para redes cabeadas, alterações foram realizadas até a camada 2 ( até a subcamada MAC) para se adaptar ao meio de transmissão da wireless lan e com isso algumas questões se tornaram redundantes como por exemplo a fragmentação e a confirmação nesta camada. Estes também ocorrem nas camadas 3 (ip) e 4 (tcp) do modelo tcp/ip, respectivamente.

12 – Implementação de tecnologias para segurança aumentam o tráfego: Como o meio da wireless lan é de acesso livre (ar) são necessárias várias tecnologias para evitar a captura de tráfego sensível por parte de pessoas mal intencionadas (é mais fácil ligar uma antena do que plugar um cabo em uma rede cabeada). Assim, tecnologias como a troca constante de chaves por parte do WPA2 aumentam o tráfego corrente e carga dos equipamentos.

13 – Maior número de endereços de origem e destino: No modo Root de um AP, por exemplo, um quadro pode conter até 4 endereços: Estes são:

Origem: Quem manda o pacote.

Destino: A quem o pacote é destinado, obviamente.

Como os access points são intermediários de uma comunicação e usam o meio cabeado para trocar dados (denominado DS: Distribution System), se a estação de origem estiver associada à um AP e a de destino à outro, também precisarão ir ao cabeçalho os endereços dos APs. Isso também influencia no processo de comutação, pois mais endereços precisam ser identificados e/ou alterados durante o processo de transmissão dos quadros.

Estas são algumas razões para uma rede sem fio ter baixa vazão, se comparada com uma rede cabeada. É óbvio que apenas um dos ítens apresentados não teria tanta influência na vazão da rede. Porém, o conjunto da obra é que faz tanta diferença.

Atualmente, ainda não homologado pelo ieee, temos o padrão 802.11n que promete taxas de até 600Mbps, basicamente usando mais de uma antena para transmissão. Mas claro, estamos falando de promessas e teoria 🙂

Espero que você tenha entendido um pouco mais sobre redes wireless e deixo aberto aqui para sugestões e/ou mais comentários para quem tiver algo para acrescentar sobre redes sem fio, assunto realmente muito interessante.

Um abraço,

Tiago Lima


Instalação do Snort + BASE no Debian Etch pelos Fontes

April 24, 2008

Introdução:

Este tutorial visa auxiliar as pessoas interessadas em instalar o NIDS Snort, com suporte à gravação em banco de dados MySQL, e ainda a instalação e configuração do Apache2 com BASE para análise dos dados coletados pelo Snort. Utilizamos aqui a distribuição Debian GNU/Linux 4.0 (Etch), com uma instalação básica e utilizando os principais softwares a partir do código fonte.Desenvolvemos esta instalação como parte de um trabalho de faculdade sobre o Snort.

Caso alguém deseje testar em outro sabor de Linux, retorne pra gente os resultados, por favor.

Considerações:

Achamos interessante compilar os programas pois assim podemos configurar cada software como queremos, além de outros aspectos de segurança e desempenho que poderiam ser mencionados aqui, mas vamos nos limitar à instalar o Snort 🙂 Porém o debate é sempre interessante.

Sobre o tratamento das regras do Snort, como posicioná-lo em sua rede e demais aspectos não fazem parte deste tutorial. Aos iniciantes vale para, como primeiro passo, instalar o snort de maneira adequada e depois fuçá-lo para aprender a utilizar a ferramenta. Os que já tem certa experiência, uma instalação com fontes sempre trás melhor desempenho, além de deixar o software com a nossa cara 🙂

Complementando, em 95% das vezes utilizamos o script ./configure para fazer uma checagem sobre o nosso sistema estar pronto ou não para compilação. Além disto, a opção –help lista as opções disponíveis para compilação. Sempre verifique as opções disponíveis pois com certeza haverá algo que você irá gostar e que pode não estar disponível no pacote pré-compilado.

Preparando o Sistema:

Após a instalação básica do Debian Etch, vamos instalar as ferramentas necessárias para compilação de programas. No caso do Debian isto é muito simples, utilizando o apt: apt-get install build-essential

Com o sistema pronto para compilar programas, vamos baixar os pacotes. Como temos atualizações constantes dos softwares, caso você utilize versões mais recentes e encontre alguma peculiaridade na instalação, comparti-lhe conosco 🙂

baixados os pacotes:

  • httpd-2.2.4.tar.bz2 (apache)
  • mysql-5.0.45.tar.gz
  • php-5.2.3.tar.bz2
  • adoDB
  • libpcap-0.9.7.tar.gz
  • pcre-7.2.tar.bz2
  • snort-2.8.1.tar.gz
  • snortrules-snapshot-CURRENT.tar.gz

Mãos à obra!

Após baixar os fontes, copie-os para /usr/local/src. Nesta primeira parte, vamos instalar o Snort com o MySQL e faremos um teste inicial. Após, faremos a instalação do BASE com suas respectivas ferramentas. Uma coisa de cada vez 🙂

Instalação MySQL:

Descompacte o fonte do mysql: tar -zxvf mysql-5.0.45.tar.gz
Acesse a pasta descompactada: cd mysql-5.0.45

Para configurar a compilação do mysql, diremos apenas o diretório o qual ele será instalado: ./configure –prefix=/usr/local/mysql
Compile: make
Instale: make install

Se ainda não tiver, crie o usuário mysql: adduser mysql (o grupo será criado automaticamente com a criação do usuário. Se não, groupadd mysql)

Copie o arquivo de configuração do mysql: cp support-files/my-medium.cnf /etc/my.cnf
Instale a base: mysql_install_db –user=mysql

Altere as permissões para o diretório /usr/local/var, onde informações do mysql serão gravadas: chgrp -R mysql /usr/local/var

Inicie o banco, para testes: mysqld_safe &
Defina a senha de root do MySQL: mysqladmin -u root password “senha_pessoal”
Conecte no banco, para testes: mysql -u root -p
Na pasta do fonte do mysql há um script para que seja utilizado para inicialização automática do banco durante o processo de boot do sistema. Copie-o para o init.d e crie os devidos atalhos para os runlevels: cp /usr/src/mysql-5.0.45/scripts/mysql.server /etc/init.d/

Mais detalhes para manipulação do MySQL, use este link

Ok, deixamos nosso MySQL pronto para o Snort. Vamos colocá-lo de lado agora e partir para o Snort. A integração dele com o Snort e o BASE será feita futuramente.

Instalação libcap:

A libcap é componente essencial para o snort. Por questões de desempenho e segurança é interessante compilá-lo, pois qualquer vulnerabilidade encontrada pode ser atualizada de maneira fácil, baixando o fonte da nova versão e compilando, sem esperar pelo pacote da distro, por exemplo. Por outro lado, o Debian, por exemplo, tem um foco em segurança onde às correções surgem rapidamente e o apt é uma ótima ferramenta . Então, como tudo no software livre, você decide! 🙂

Instale o pacote flex: apt-get install flex
Descompacte: tar zxvf libpcap-0.9.7.tar.gz
Configure: ./configure
Compile e instale: make && make install (o ‘&&’ no comando diz que o segundo comando só será executado se o primeiro não retornar com erro)


Instalação Snort2:

Vamos ao de sempre 🙂
Descompacte e acesse a pasta: tar -zxvf snort-2.7.0.1.tar.gz
Configure o Snort para compilação, onde neste caso compilaremos com suporte ao MySQL que configuramos anteriormente: ./configure –with-mysql=/usr/local
Compile e instale: make && make install
Crie o diretório de configuração do Snort: mkdir /etc/snort
O mesmo para logs: mkdir /var/log/snort
Crie o usuário snort: adduser snort
Configure as devidas permissões: chown snort:snort /var/log/snort

Descompacte as regras baixadas anteriormente: tar -zxvf /usr/local/src/snortrules-snapshot-CURRENT.tar.gz

Vamos às regras do snort: cd /etc/snort
Copie as regras para o diretório de configuração: cp /usr/local/src/snort-2.7.0.1/etc/*.conf* . && cp /usr/local/src/snort-2.7.0.1/etc/*.map .

Edite o arquivo snort.conf: Lembrando que esta configuração é básica para iniciar o Snort. Cada um deve configurar conforme sua necessidade. Os arquivos de configuração são bem comentados para você se orientar. Sugerimos uma boa lida neles: vi /etc/snort/snort.conf

Basicamente, altere as seguintes variáveis:
var RULE_PATH /etc/snort/rules
var HOME_NET “rede/máscara”
var EXTERNAL_NET !$HOME_NET

Antes de iniciar o snort, dê uma olhada também no arquivo local.rules: vi /etc/snort/rules/local.rules

Iniciando snort: /usr/local/bin/snort -Dq -u snort -g snort -c /etc/snort/snort.conf &

Verifique se o processo do snort continua rodando e monitore o syslog, pois as mensagens de sucesso ou erro aparecerão nele.

Você pode utilizar também snort -v para ver na tela como o snort trabalha. Neste primeiro momento estamos utilizando o snort para saída padrão em logs do sistema. O ambiente MySQL preparado anteriormente será finalizado juntamente com a instalação do BASE.

Criando base de dados Snort:

Conecte-se ao banco: mysql -u root -p (lembre-se da senha de root do banco, definida anteriormente)
Crie uma base: mysql> create database snort;
Configure as permissões e crie o usuário snort para o mysql: mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
Defina a senha do usuário snort: mysql> SET PASSWORD FOR snort@localhost=PASSWORD(‘senha’);

Na pasta ‘schemas’, no código fonte do Snort existem scripts para criação da base em alguns SGBDs.

Acesse a pasta: cd /usr/local/src/snort-2.7.0.1/schemas
Jogue o sql no banco mysql: mysql -u root -p < create_mysql snort

Para testar, acesse a base e suas tabelas, conectando-se ao mysql:
mysql> use snort;
mysql> show tables;

Instalação do Apache:

Descompacte o fonte do Apache: tar -zxvf httpd-2.2.4.tar.bz2
Acesse a pasta descompactada: cd httpd-2.2.4

Prepare para compilação: ./configure –enable-so
Compile e instale: make && make install

Edite o arquivo de configuração do Apache e teste a instalação.

Instalação pcre

cd /usr/local/src
Descompacte: tar jxvf pcre-7.2.tar.bz2
Acesse a pasta: cd pcre-7.2
Configure, compile e instale: ./configure && make && make install

Instalação biblioteca gd:

A biblioteca GD é componente essencial para compilação do PHP.

cd /usr/src
Descompacte: tar jxvf gd-2.0.35.tar.gz
Acesse a pasta: cd gd-2.0.35
Configure, compile e instale: ./configure && make && make install

Eu sei, é meio repetitivo! Mas, faz parte 🙂

Instalação php:

Vamos compilar o php para utilizar com o Apache e o BASE. Aqui temos um motivo de muitas discussões. Compilar o php não é algo tão simples. Ele dispõe de muitos recursos que precisam ser ativados na configuração. Depois de “apanharmos” bastante, disponibilizamos o configure abaixo. Os feras em compilar php, por favor se manifestem com dicas. Caso algum recurso solicitado durante o configure não esteja disponível, instale com o apt.

Alguns que precisamos instalar: apt-get install xml2 libxml2 libxml2-dev libxml2-utils libssl-dev zlib-bin zlib1g zlib1g-dev libbz2-1.0 libbz2-dev libcurl3-dev libpng12-dev libgmp3-dev libc-client-dev libpspell-dev

cd /usr/local/src
tar jxvf php-5.2.3.tar.bz2
cd php-5.2.3

./configure –host=i386-debian-linux –build=i386-debian-linux –target=i386-debian-linux-gnu –enable-force-cgi-redirect –enable-pic –enable-inline-optimization –with-bz2 –with-curl –with-smtp –with-layout=GNU –with-curl –with-gd –with-gettext –with-config-file-scan-dir=/etc/php –enable-libxml –with-libxml –with-ncurses –with-gmp –with-iconv –enable-reflection –enable-spl –disable-path-info-check –with-openssl –with-openssl –with-png –with-pspell –with-xml –with-expat-dir=/usr –with-xmlrpc=shared –enable-bcmath –enable-exif –enable-ftp –enable-magic-quotes –enable-safe-mode –enable-sockets –enable-sysvsem –enable-sysvshm –enable-discard-path –enable-track-vars –enable-trans-sid –enable-yp –enable-wddx –with-imap=shared –with-imap-ssl –with-kerberos –enable-memory-limit –enable-bcmath –enable-shmop –with-apxs2=/usr/local/apache2/bin/apxs –with-regex=php –enable-dom –enable-xmlwriter –enable-xmlreader –with-xmlrpc –enable-xml –enable-wddx –enable-tokenizer –enable-sockets –enable-soap –enable-simplexml –enable-session –enable-calendar –enable-dbx –enable-dio –enable-mcal –enable-mbstring=shared –enable-mbstr-enc-trans –enable-mbregex –enable-posix –enable-pdo –with-pcre –with-pcre-regex –with-mysql=/usr/local/mysql –with-bzip2=/bin

Compile e instale: make && make install (aproveite e faça uma pausa pro café =)
Copie o arquivo de configuração do php: cp php.ini-dist /usr/local/etc/php.ini

Adicione suporte no Apache2: vi /usr/local/apache2/conf/httpd.conf
Adicione as seguintes linhas:
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
Edite a tag DirectoryIndex adicionando: index.php index.phps

Pear: O pear é um componente do php para instalar demais recursos necessários. Aqui precisamos de alguns como o Image_Graph:

pear install –alldeps Image_Graph-alpha channel://pear.php.net/Image_Graph-0.7.2
Dê as permissões para o usuário do apache: chown -R www-data:www-data /usr/local/share/pear/

Configurando Snort para o MySQL:

Agora vamos configurar o Snort para gravar dados no MySQL.

Edite o arquivo de configuração: vi /etc/snort/snort.conf

Descomentar a linha: output database: log, mysql, user=snort password=’senha da base snort’ dbname=snort host=localhost

Reinicie o Snort e verifique registros no banco: mysql -u root -p snort -D snort -e “select count(*) from event”

Instalação BASE:

O BASE é uma boa ferramenta que retira dados do MySQL e gera estatísticas e gráficos sobre as ameaças detectadas pelo snort. Claro que, para termos melhores resultados, a configuração adequada do seu snort influencia diretamente nesta análise.

Vamos à instalação:

cd /usr/local/apache2/htdocs
tar -zxvf /usr/local/src/base-1.3.6.tar.gz
mv base-1.3.6/ base

Copie as regras do snort para o subdiretório /signatures do base: cp -R /etc/snort/rules/* /usr/local/apache2/htdocs/base/signatures

Instalação adoDB:

Descompactar e mover o diretório descompactado para dentro do diretório do base: mv adoDB /usr/local/apache2/htdocs/base/

chown -R www-data:www-data base
Acessando via web: http://”ipdoservidor”/base
Se tudo ocorrer bem, o base exibirá um passo-a-passo de configuração. Ele irá pedir parâmetrós já definidos anteriormente, tais como configuração de nomes, senhas, banco de dados, etc.

Com o base configurado, faça seu login e teste.

Considerações finais:

Esperamos que este tutorial tenha sido útil. Pedimos para que todos que tenham suas peculiaridades, dicas e demais comentários a fazer, que o façam, para assim melhorarmos o processo de instalação e nos aprimorarmos cada vez mais.

Qualquer dúvida, entre em contato conosco:

Jean Vieira: sepoys@gmail.com

Tiago Lima: peacenet@gmail.com

Um abraço e até a próxima! 🙂


FISL9 e a Força do Software Livre

April 23, 2008

O FISL9 estava demais! Excelentes palestras, muita gente (quase 7500 pessoas inscritas) e muitos contatos.

Pela segunda vez vou ao evento e mal posso esperar pelo ano que vem. Com palestas em todos os níveis o FISL torna-se cada vez mais importante no cenário mundial do software livre.

Figuras carimbadas como Jon ‘maddog’ estavam presentes, além, é claro, de grandes empresas como google, globo.com, intel, terra, sun e outras procurando pro profissionais para trabalhar com SL, em todos os níveis.

Acho que fica claro do que estamos falando …

Bom, ficam aí umas fotinhos pra vocês:

Mais fotos depois! e até o FISL10 =)

Beijo do nerd!