Archive for December, 2008

Descaso no Pagseguro (antigo brpay) feedback e “detonação” do ocorrido!

Monday, December 29th, 2008

Quem não lembra dos tempos em que “a facilidade de receber dinheiro pela web” reinou por causa de uma excelente e fundamental ferramenta, o BRPAY?

Pois é, com muita lástima lembro-me deste “período de ouro”, o qual não posso mais manter tal pensamento para os dias de hoje.

Na realidade, o que venho postar não é difamação contra a UOL, muito pelo contrário, por ser uma empresa gigante, respeitada e competente na área de internet, sem dúvidas deixo meu feedback para que nunca mais venham deixar cair o ditado -> Melhor obedecer a sacrificar!
Pois bem, desde o dia 9 deste mês estive tentando alterar o endereço de minha residência e confirmar o meu CPF, e acreditem, até o presente momento deste post o descaso foi tomando conta. Sem mais acreditar na qualidade outrora conquistada pela equipe BRPAY, infelizmente tenho de recorrer aos concorrentes (F2B e Pagamento digital).

Quem deseja hoje receber por cartão de crédito procure pela visanet ou pagamento digital, ou mesmo f2b.

Aí está minha recomendação.

Ah… bons e velhos tempos do brpay… assim como bons e velhos tempos do Corvette que se vão e nunca mais voltam…

OBS: Continuo dando ponto positivo no portal da uol e serviços de internet banda larga e discada, mas para este serviço citado, não recomendo.

OBS2: O fato de ter me frustrado profundamente com uma mega empresa não quer dizer que isto ocorrerá com você, mas comigo foi imundo!

Abraços a todos e “bons recebimentos”!

Apresento-lhes o EXT 4, um tour no ext4, sistema de arquivos ext4

Sunday, December 28th, 2008


Está é uma tradução livre do texto originalmente publicado aqui: http://kernelnewbies.org/Ext4. Meu inglês não é muito bom, e por essa razão traduzi este texto, e outros textos que podem vir a ser postado em meu blog, para melhorar ele. Caso encontrem erros, o que é provável que aconteça, me informe (andreoandre <> gmail <dot> com ) para corrigir e manter o texto atualizado.

Introdução

Ext4 é a evolução do sistema de arquivos mais usados no Linux, o Ext3. De muitas maneiras, Ext4 é uma profunda melhoria sobre o  Ext3, sendo o Ext3, com muitas melhorias frente o Ext2. No Ext3 foi principalmente a adição de Journaling sobre o Ext2, mas Ext4 teve mudanças importantes na estrutura do sistema de arquivos destinado ao armazenamento de dados. O resultado é um sistema de arquivos com um designer aperfeiçoado, melhor performance, confiável e com muitos recursos.


Recursos do Ext4

Compatibilidade

Um sistema de arquivos Ext3 existente, pode ser migrado para Ext4 com um procedimento fácil, onde consiste a execução de um casal de comandos em modo “read-only” (descrito na próxima seção). Por meio disto você melhora a performance, limites de armazenamentos e recursos do sistema de arquivos corrente, com ou sem a “reformatação” e/ou reinstalação do SO e softwares “environment”. Se você precisa das vantagens do Ext4 em um sistema em produção, você pode atualizar o sistema de arquivos. O processo é seguro é não há riscos para seus dados (obviamente, fazer backup de dados críticos é recomendado, pois você está atualizando seu sistema de arquivos). O Ext4 vai usar uma nova estrutura de dados somente em novos dados, a estrutura antiga continuará intocada, é será possível para leitura/escrita se for preciso. Desta forma, é claro, assim que uma vez convertido o sistema de arquivos para Ext4, você não vai poder voltar para o Ext3 novamente (embora há uma possibilidade, descrita na próxima seção, montando um sistema de arquivos Ext3 com Ext4 com ou sem o uso de um novo disco formatado, e você poderá montar com o Ext3 novamente, porém você irá perder todas as vantagens do Ext4).

Sistema de arquivos ou arquivos grandes

Atualmente, Ext3 suporta 16TB de tamanho máximo no sistema de arquivos, e 2TB de tamanho máximo de um arquivo. Ext4 adiciona 48-bit endereçados, obtendo assim 1EB de tamanho máximo de sistema de arquivos e 16TB de tamanho máximo de arquivos. 1 EB = 1,048,576 TB (1 EB = 1024 PB, 1 PB = 1024 TB, 1 TB = 1024 GB). Porque 48-bit e não 64-bit? Há algumas limitações daquele que pode precisar que seja fixado antes da construção do Ext4 enchendo a capacdade de 64-bit, no qual não tem como ser endereçado no Ext4. A estrutura de dados do Ext4 tem que ser desenhada mantendo em mente, um recurso de atualização para o Ext4 implementando completamente suporte a 64-bit até algum ponto. 1EB pode ser suficiente (realmente enquanto isso acontecer). (Note: o código para criar sistemas de arquivos grandes como 16TB não é estável nas versões do e2fsprogs).

Escabilidade de subdiretórios

Atualmente a possibilidade máxima de número de subdiretórios contendo um único diretório no Ext3 é 32.000. Ext4 quebra esse limite, e possibilita um número ilimitado de subdiretórios.

Extends

Os tradicionais sistemas de arquivos derivados do Unix como o Ext3, utilizam um esquema de mapeamento indireto de blocos para manter cada trilho do bloco usado correspondente no dado de um arquivo. Isto é ineficiente para arquivos grandes, especialmente um arquivo grande deletado e/ou operações “truncate”, porque o mapeamento mantém uma entrada para muitos blocos únicos, e grandes arquivos tem muitos blocos – > mapeamentos enormes, lentidão para o manuseio. Os sistemas de arquivos modernos usam uma abordagem diferente chamada “extends”. Um extends é basicamente um punhado de blocos físicos continuo. Isto pode ser basicamente definido: “Os dados no próximo bloco n”. Por exemplo, um arquivo de 100MB pode ser alocado em um único extends deste tamanho, em vez de precisar da criação de um mapeamento indireto para 25600 blocos ( 4KB por bloco). Arquivos grandes são divididos em diversos extends. Extends melhora a performance e também ajuda a reduzir a fragmentação, uma vez que incentiva o continuo “layouts” do disco.

Alocação multiblock

Quando o EXT3 precisa de nova escrita de dados no disco, há um alocador de blocos que decide quais blocos livres deverá ser usado para a escrita do dado. Mas o alocador de blocos do Ext3 somente alocar um bloco (4KB) em um momento. Esta forma que o sistema precisa para escrever 100MB de dados mencionado anteriormente em outro ponto, será necessário para chamar o alocador de blocos 25600 vezes (isto simplesmente para 100MB!). Não só isto é ineficiente, como também não permite que o bloco de alocação utilize a política de alocação porque ele não sabe como o total de muitos dados deve ter a alocação iniciada, ele apenas conhece sobre um simples bloco. Ext4 usa “multiblock allocator” (mballoc), no qual, aloca muitos blocos em uma simples chamada, em vez de um simples bloco por chamada, evitando um monte de overhead. Isto melhora a performance, e é especialmente útil com “alocação atrasada” e extends. Este novo recurso não afeta o formato do disco. Também, note que o Ext4 blocos/inode tem outras melhorias no alocador, descrição e detalhes neste documento (http://ols.fedoraproject.org/OLS/Reprints-2008/kumar-reprint.pdf).

Atraso na alocação

Atraso na alocação (http://en.wikipedia.org/wiki/Allocate-on-flush) é um recurso de performance (isto não muda o formato do disco) encontrado em poucos sistemas de arquivos modernos, tais como o XFS, ZFS, btrfs ou Reiser 4, que constitui em um atraso na alocação de blocos tanto quando possível, contrário aos tradicionais sistemas de arquivos (tais como o Ext3, Reiser3, etc) fazem: alocando os blocos com a maior brevidade possível. Por exemplo, em um processo de escrita, o código do sistema de arquivos irá atribuir imediatamente os blocos quando os dados forem coletados – mesmo se os dados não estiverem sendo escritos agora para o disco, eles vão ser mantidos em cache durante um tempo. Esta abordagem tem algumas desvantagens.Por exemplo, quando um processo esta escrevendo continuamente em um arquivo, crescente, sucessivamente sendo escritos atribuindo blocos para os dados, mas ele não sabe se o arquivo se manterá crescente. Atrasando a alocação, por outro lado, não afetaria os blocos imediatamente quando o processo de escrita, sim, ela atrasa a alocação dos blocos, enquanto o arquivo é mantido em cache, até que ele esteja realmente indo para escrito no disco. Isto da ao bloco de alocação a capacidade de alocar em situações em que sistemas antigos não poderia. Atraso na alocação trabalha muito bem com as duas características anteriormente mencionadas, extents e alocação multiblock, porque, em muitos casos um trabalho em que o arquivo é gravado para o último disco que será atribuído em blocos extends, cuja alocação é feita com o mballoc. O desempenho é muito melhor, e a fragmentação é muito melhorada em alguns workloads.

fsck rápido

Fsck é uma operação muito lenta, especialmente o primeiro passo: checagem de todos os inodes em um sistema de arquivos. No Ext4, até o fim de cada grupo da tabela de inode estará armazenado uma lista de inodes inutilizados ( com checksum, por segurança), assim o fsck não irá checar estes inodes. O resultado final é que o tempo do fsck melhorou de 2 a 20 vezes, dependendo do número usado de inodes (http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4). Deve-se notar que é o fsck, e não o Ext4, que irá montar a lista de inodes inutilizados. Isso significa que você deve executar o fsck para obter a lista de inodes inutilizados construída, e só na próxima execução do fsck será mais rápida (você precisa passar o fsck, a fim de converter um ext3 filesystem para Ext4 de qualquer forma). Há também uma característica que ajuda a acelerar o fsck – “flexible block groups” – que também acelera as operações em arquivos.

Journal checksumming

O Journal é mais utilizado na parte do disco, construindo os blocos mais propensos a falhas de hardware. A recuperação de um  journal corrompido pode levar a uma corrupção massiva. Ext4 checksums do dados de journal verificando se os blocos de journal estão falhando ou corrompendo. Mas “journal checksumming” tem um bonus: ele permite para conversão e gravação em duas-fases, sendo no Ext3 o journal em única fase, acelerando a operação no sistema de arquivos para mais de 20% em alguns casos – assim a reabilitação e a performance são melhoradas ao mesmo tempo (Nota: parte dos novos recursos e melhorias de performance, e “asyncrhonous logging”, está desativada por padrão e será ativada em versões futuras).

Desfragmentação Online

(Este recurso não está disponível no 2.6.28, mas provavelmente estará disponível na próxima versão). Enquanto o atraso de alocação, extends e alocação multiblock ajuda a reduzir a fragmentação, em uso de sistemas de arquivos que podem estar fragmentados. Por exemplo: Você escreveu três arquivos em um diretório e “contigually” no disco. Algum dia você irá atualizar o arquivo médio, mas o arquivo atualizado cresceu um pouco, portanto não há espaço para ele. Você não tem nenhuma opção, além do excesso fragmentado de dados para outro local do disco, o que irá causar uma procura, ou alocar a atualização do arquivo “contigually” em outro lugar, longe dos dois outros arquivos, resultando em uma procura se uma aplicação necessitar ler todos os arquivos no diretório (digamos, um gerenciador de arquivos fazendo thumbs em um diretório cheio de imagens). Além disso, o sistema de arquivos só pode preocupar-se com certos tipos de fragmentação, não é possível saber, por exemplo, que deve manter todos os arquivos relacionados com o “boot-related”, porque não sabe quais arquivos estão relacionados com a inicialização. Para resolver este problema, Ext4 apoiará online fragmentação, e há uma ferramenta, e4defrag, que pode desfragmentar arquivos individuais ou todo o sistema de arquivos.

Recursos relacionados aos Inodes

Aumento de inodes, timestamps em nano segundos, rápida alocação extends, reserva de inodes…

* Aumento de inodes: Ext3 suporta a configuração de tamanho de inode ( pelo parâmetro -l do mkfs), mas o tamanho padrão de inode é 128 bytes. Ext4 tem como padrão 256 bytes. Isto é necessário para acomodar algumas características extras (como o timestamp em nano segundos ou versonamento de inodes), e o espaço restante do inode será utilizado para armazenar atributos extends suficientemente pequenos para caber nesse espaço. Isto facilitará o acesso aos atributos com maior agilidade, e melhora no desempenho das aplicações que usem alocação extend por um fator de 3-7 vezes.

* A reserva de inode consiste em alocar vários inodes quando um diretório é criado, esperando que eles sejam utilizados no futuro. Melhorando a performance, porque quando novos arquivos forem criados neste diretório, eles serão capazes de utilizar os inodes reservados. Portanto a criação de um arquivo, como também a ação de apagar o mesmo, será mais eficiente.

* timestamps em nano segundos significa que áreas com “tempo modificado” sejam capazes de usar resoluções em nano segundos em vez de segundo como no Ext3.

Persistência na pré-alocação

Este recurso, disponível no Ext3 e em versões anteriores do kernel, e emulado para glibc em sistemas de arquivos sem suporte a isto, permitindo que aplicação pré-alocarem espaço em disco: As aplicações chamam o sistema de arquivos para pré-alocar o espaço, e o sistema de arquivos aloca a quantida necessária de blocos e estrutura de dados, mas não há dados sobre o assunto até que a aplicação realmente precisa para escrever os dados no futuro. Isto é o que faz aplicações P2P quando “pré-aloca” o espaço necessário para uma transferência que irá durar horas ou dias, mas muito mais eficiente implementado por um sistema de arquivos do que por uma API genérica. Isto tem varios usos: em primeiro lugar, para evitar aplicações (como aplicativos P2P) faze-lo propriamente e ineficientemente, mediante o preenchimento de um arquivo com zeros. Segundo, para melhoria da fragmentação,
uma vez que os blocos serão alocados em um tempo, e continuamente se possível. Terceiro, para assegurar que os pedidos tenham sempre o mesmo espaço solitado para a necessidade, o que é importante para aplicações RT-ish, pois sem a pré-alocação o sistema de arquivos poderá ficar cheio no meio de uma operação importante. Este recurso estará disponível via libc posix_fallocate() interface.

Padrões de barreiras

Este é uma opção que melhora a integridade de um sistema de arquivos ao custo de cerca de desempenho (você pode desabilitar isso com “mount -o barrier=0″, recomendado que seja testado com um benchmarking). Neste artigo da LWN (http://lwn.net/Articles/283161/): “O código do sistema de arquivos tem, antes de escrever [journaling] e gravando o registro, ter certeza absoluta de todas as informações de operações para a criação do journaling. Apenas escrever, no bom sentido, é insuficiente; os dispositivos atuais mantêm grandes chache interno e reordenam operações para melhor performance. Portanto, os sistemas de arquivos devem explicitamente instruir o disco para obter todos os dados do journaling antes da escrita e gravação das alterações; se a gravação dos registros forem escritas em primeiro lugar, o journaling pode ser corrompido. No kernel, os subsistemas de blocos de I/O torna essa capacidade disponível através de uso de barreiras, na sua essência, uma barreira impede a escrita de qualquer bloco após a barreira até que todos os blocos escritos antes da barreira sejam gravados na mídia. Ao utilizar barreiras, o sistema de arquivos pode ter certeza que sua estrutura em disco permaneçam consistentes em todo o momento”.

Como usar o Ext4

Esta é a primeira versão estável do Ext4, assim, mesmo que todo o lançamento e desenvolvimento deste sistema de arquivos fosse lento, e atrasando muito para garantir que o mesmo nível de estabilidade que você esperaria da implementação atual do Ext3, sendo aplicadas a regras de qualquer software “.0″.

Uma coisa muito importante para se manter em mente, é que não há suporte Ext4 no GRUB. Bem, isso não é exatamente verdade: há suporte para o grub, mas as versões atuais do grub, na maioria das distribuições, não tem este suporte. Há suporte no grub2 no branch de desenvolvimento, mas só a partir deste commit (http://svn.savannah.gnu.org/viewvc?view=rev&root=grub&revision=1699). Há pacotes disponíveis do grub2 para Ubuntu, distribuições baseadas no Debian e distribuições com o pacote grub-pc. No branch 0.9x, há suporte não oficial, mas há um projeto no Google SoC (http://code.google.com/p/grub4ext4/) com suporte a isto, e no google finds patches (http://lists.openwall.net/linux-ext4/2008/11/19/8). Então, você escolhe. As próximas distribuições baseadas no Kernel 2.6.28, provavelmente, terá suporte de uma forma ou de outra. A opção segura é manter seu diretório /boot em uma partição formatada com Ext3.

Você também precisa realizar a atualização da ferramenta e2fsprogrs, é claro, a última versão estável – 1.41.3 – é recomendada.

Mudar para Ext4 é muito fácil. Há 3 formas diferentes para fazer essa mudança:

Criando um novo sistema de arquivos do zero

É muito fácil, recomendado para novas instalações. Basta fazer a atualização do seu pacote e2fsprogs para o Ext4. E criar um sistema de arquivos com mkfs.ext4.

Migrando um sistema de arquivos com Ext3 para Ext4

Você vai precisar usar as ferramentas tun2fs e o fsck no sistema de arquivos, sendo que o sistema de arquivos deve estar desmontado, execute:

tune2fs -O extents,uninit_bg,dir_index /dev/seu_sistema_de_arquivos

Após rodar esse comando você DEVE rodar o fsck. Se você não fazer isso, o Ext4 NÃO PODERÁ MONTAR seu sistema de arquivos. Executar o fsck é necessário para retornar um sistema de arquivos consistente. Ele irá informar se encontrou checksum com erros na descrição de grupos – e espera – exatamente o que precisa ser reconstruído para montar o Ext4, não se surpreenda com ele. Cada vez que ele encontrar um erro irá perguntar o que fazer, sempre digo sim (YES). Se você não quiser ser questionado, passe o parâmetro “-p” ao executar o comando fsck, que significa “reparação automática”.

fsck -pf /dev/seu_sistema_de_arquivos

Há um outro aspecto que deve ser mencionado. Todos os arquivos existentes irão continuar utilizando o mapeamento indireto para mapear todos os blocos de dados. A ferramenta “online defrag” será capaz de migrar cada um destes arquivos para o formato extends (usando um ioctl que diz para o sistema de arquivos para reescrever o arquivo no formato extends; enquanto você estiver usando o sistema de arquivos normalmente).

Mountando um sistema Ext3 existente com Ext4 sem alterar o formato

Você pode montar um sistema de arquivos Ext3 com Ext4 mas sem utilizar recursos que altere o formato do disco. Isso significa que você poderá montar um sistema de arquivos com Ext3 novamente. Você pode montar um sistema de arquivos com Ext3 pelo comando “mount -t ext4 /dev/sua_partição /mnt”. Fazendo isto, sem ter feito o processo de conversão descrito anteriormente, forçando o Ext4 a não utilizar os recursos de mudança deste formato de disco, tais como extends, que irá utilizar as funcionalidades que não altera o formato de disco, tais como mballoc ou atraso de alocação. Você será capaz de montar seu sistema de arquivos Ext3 novamente. Mas, obviamente, você perderá todas as vantagens e características do uso do Ext4…

Fonte: http://andrem.wordpress.com/2008/12/26/ext4/

Um facebook grátis, opensource e de fácil utilização, tenha já o seu facebook!

Monday, December 22nd, 2008

Observei um pessoal em busca de um script no estilo Facebook, e não poderia deixar de compartilhar minha informação aqui. Para quem está afim de um sistema bem parecido com o facebook, opensource e grátis basta apenas acessar  o link abaixo:

http://www.elgg.org/index.php

A engenharia do sistema é bem interessante e faz o usuário sentir-se no Facebook mesmo!

Vale a pena conferir!

Adicione um Live Support Grátis, Opensource e de perfeito funcionamento

Monday, December 22nd, 2008

Gente, estive acessando o blog de uns mestres em aplicações web e fiquei muito feliz com uma iniciativa que avistei. Estou desenvolvendo um suite OpenSource para minha empresa e também para a comunidade e estava tentando entender bem o funcionamento dos chats online, mais precisamente os Live Supports da vida que precisava. Estava observando para preparar meus estudos e Justo agora descobri o sistema Open Web Messenger. Simplesmente maravilhoso, leve e funciona de verdade! Feito em PHP e com recursos bastante modernos, o sistema é perfeitamente elaborado.

Sua interface é limpa e muito amigável.

Se você quer um sistema de chat (live support) para seu site não deixe de acessar:

http://openwebim.org/

Obs: De bom que é será usado em meu projeto!

Fedora 10: Lamp2 – linux apache 2 mysql e php 5 + ruby + python

Monday, December 22nd, 2008

Vou mandar ver em um how to interessante para os amantes do LAMP sob fedora. Todos que usam Fedora devem (ou deveriam) saber que a versão atual deste fabuloso sistema encontra-se na 10. Iremos fazer um how to sobre lamp 2 no Fedora 10, então atente para estar usando Fedora 10.

Requisitos:

Internet (se rápida será melhor ainda),
Fedora 10,
Vontade de rodar o lamp2 no Fedora 10 ?:) ,
Estar logado como root.

Indo ao Combate

Após instalar seu Fedora acesse o console como root e execute os seguintes comandos:

yum update -y

Isso vai atualizar os repositórios e recursos do sistema (kernel, utilitários  e etc).

Após vamos instalar o mysql:

yum -y install mysql mysql-devel mysql-server

Isso vai instalar o mysql, mas logo após sua instalação aplique os comandos abaixo:

chkconfig –levels 235 mysqld on
/etc/init.d/mysqld start

Confirme se a porta já está ativa e esperando conexões:

netstat -tap | grep mysql

Isto deve gerar uma saída mais ou menos assim:

tcp        0      0 *:mysql                     *:*                         LISTEN      2407/mysqld

Após faça este ajuste aqui:

vi /etc/my.cnf

#skip-networking

Comentar a linha acima.

Reinicie o mysql com o comando:

/etc/init.d/mysqld restart

Pronto, defina a senha de root do mysql com os comandos abaixo:

mysqladmin -u root password Sua_nova_SENHA
mysqladmin -h maquina.meudominio.com -u root password Sua_nova_SENHA

Isso aplicará a senha de root do mysql.

Agora vamos aplicar php, python e ruby + apache 2:

yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel

chkconfig –levels 235 httpd on

Pronto, depois disso faça o teste com —>

/etc/init.d/httpd start

Instale o ruby:

yum install httpd-devel ruby ruby-devel

cd /tmp
wget http://www.modruby.net/archive/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby-1.3.0/
./configure.rb –with-apr-includes=/usr/include/apr-1
make
make install

vi /etc/httpd/conf.d/ruby.conf

LoadModule ruby_module modules/mod_ruby.so

/etc/init.d/httpd restart

yum install mod_python

/etc/init.d/httpd restart

Prontooo!

O que há de novo no PHP 5.3?

Sunday, December 21st, 2008

Em alguns instantes os desenvolvedores PHP se perguntam:

O que há de novo no PHP 5.3?

Aqui está a resposta elaborada por parte da IBM em um overview interessante e dividido em 2 partes (até o momento):

http://www.ibm.com/developerworks/opensource/library/os-php-5.3new1/?ca=dgr-lnxw07PHPv5.3P1&S_TACT=105AGX59&S_CMP=GRsitelnxw01
http://www.ibm.com/developerworks/opensource/library/os-php-5.3new2/index.html?ca=dgr-lnxw01os-php-5.3new2&S_TACT=105AGX59&S_CMP=GRsitelnxw01

Fonte: www.tinews.org

World of Warcraft com Bush, a skill do sapato é ÚNICA!

Wednesday, December 17th, 2008

bush1

Nem comento…

Detecção de Intrusos em Aplicações WEB PHP com PHPIDS

Wednesday, December 17th, 2008

Detecção de Intrusos em Aplicações php com PHPIDS

A dica aqui vai para servidores que rodam com o apache e php5 (sob linux).
O PHPIDs é um sistema de detecção de instrusos, simples, rápido, bem estruturado e de fácil utilização. Isto cria mais uma camada de segurança para a sua aplicação web. Ele não vai filtrar entradas maliciosas, tampouco fazer maravilhas, como se estivesse com inteligência artificial, ele irá detectar o ataque e irá reagir segundo as suas configurações. O interessante é que ele tem o poder de decisão no momento de uma tentativa de invasão. Ele
pode servir para informar ao atacante que está tentando invadir de cuidade, alerta e etc, ou mesmo, notificar ao core de desenvolvimento da aplicação por email a tal tentativa de invasão.

Este how to é beta e nada aqui é GARANTIDO de funcionar, mas deve!

Requerimentos:

Os testes foram realizados na plataforma Gnu/Linux, no sabor Debian Etch, o qual teve ip

setado como 192.168.0.100, tendo por usuário e grupo de usuário do apache www-data.
Nos testes o diretório principal usado é um virtual host -> /var/www/web1/web

Por questões de segurança o diretório do PHPIDs será criado em outro lugar para evitar problemas com a estrutura, tornando-a mais difícil contra vulnerabilidade, no caso:

mkdir /var/www/web1/phpids

Criamos um diretório recursivo, evitando acesso público ao web, que deixaria o script vulnerável.

O arquivo que usamos neste tutorial é phpids-0.4.7.tar.gz, o qual temos apenas a necessidade de uso diretório lib.

cd /tmp
wget http://php-ids.org/files/phpids-0.4.7.tar.gz
tar xvfz phpids-0.4.7.tar.gz
cd phpids-0.4.7
mv lib/ /var/www/web1/phpids/

Agora mudamos o diretório para /var/www/web1/phpids/lib/IDS:

cd /var/www/web1/phpids/lib/IDS

Agora iremos fazer com que o /tmp permita escrita para o usuário do apache (log do phpids necessitará):

chown -R www-data:www-data tmp/

Agora vamos configurar o PHPIDs em seu arquivo de configuração:

cd Config/
vi Config.ini

As configurações são padrão, todavia iremos alterar o caminho de onde estão os arquivos, sendo o ajuste final idêntico a isto aqui:

; PHPIDS Config.ini

; General configuration settings

; !!!DO NOT PLACE THIS FILE INSIDE THE WEB-ROOT IF DATABASE CONNECTION DATA WAS ADDED!!!

[General]

filter_type     = xml
filter_path     = /var/www/web1/phpids/lib/IDS/default_filter.xml
tmp_path        = /var/www/web1/phpids/lib/IDS/tmp
scan_keys       = false

exceptions[]    = __utmz
exceptions[]    = __utmc

; If you use the PHPIDS logger you can define specific configuration here

[Logging]

; file logging
path            = /var/www/web1/phpids/lib/IDS/tmp/phpids_log.txt

; email logging

; note that enabling safemode you can prevent spam attempts,
; see documentation
recipients[]    = test@test.com.invalid
subject         = “PHPIDS detected an intrusion attempt!”
header                      = “From: <PHPIDS> info@php-ids.org”
safemode        = true
allowed_rate    = 15

; database logging

wrapper         = “mysql:host=localhost;port=3306;dbname=phpids”
user            = phpids_user
password        = 123456
table           = intrusions

; If you would like to use other methods than file caching you can configure them here

[Caching]

; caching:      session|file|database|memcached|none
caching         = file
expiration_time = 600

; file cache
path            = /var/www/web1/phpids/lib/IDS/tmp/default_filter.cache

; database cache
wrapper         = “mysql:host=localhost;port=3306;dbname=phpids”
user            = phpids_user
password        = 123456
table           = cache

; memcached
;host           = localhost
;port           = 11211
;key_prefix     = PHPIDS
;tmp_path       = /var/www/web1/phpids/lib/IDS/tmp/memcache.timestamp

Pronto, terminado.

Usando o PHPIDs

Nós iremos criar o arquivo que vai fazer a chamada do PHPIDs (depois iremos ajustar o arquivo para chamar automaticamente os recursos do PHPIDs para todas as contas do servidor):

<?php
set_include_path(
get_include_path()
. PATH_SEPARATOR
. ‘/var/www/web1/phpids/lib’
);

require_once ‘IDS/Init.php’;
$request = array(
‘REQUEST’ => $_REQUEST,
‘GET’ => $_GET,
‘POST’ => $_POST,
‘COOKIE’ => $_COOKIE
);
$init = IDS_Init::init(‘/var/www/web1/phpids/lib/IDS/Config/Config.ini’);
$ids = new IDS_Monitor($request, $init);
$result = $ids->run();

if (!$result->isEmpty()) {
// Take a look at the result object
echo $result;
require_once ‘IDS/Log/File.php’;
require_once ‘IDS/Log/Composite.php’;

$compositeLog = new IDS_Log_Composite();
$compositeLog->addLogger(IDS_Log_File::getInstance($init));
$compositeLog->execute($result);
}
?>

Se você chamar o arquivo no browser, perceberá que o mesmo ficará em branco, no caso http://192.168.0.100/phpids.php – porém, mas se você tentar usar um suposto ataque, nosso amigo PHPIDs vai entrar em ação, use o exemplo -> http://192.168.0.100/phpids.php?test=%22%3EXXX%3Cscript%3Ealert(1)%3C/script%3E

Pronto, agora iremos ver o caminho para que os scripts usem o PHPIDs, e o interessante aqui, você não precisará alterar todos os seus scripts, isto por que iremos chamar o script automaticamente como recurso do PHP, isto carregará o mesmo “como se fosse um módulo”, e o parâmetro que define isto bacaninha é -> auto_prepend_file, iremos apontar o arquivo no php.ini principal do servidor, isso dará força e velocidade no desenvolvimento usando tal recurso. Isto também pode ser feito em um arquivo .htaccess, desde que apontemos tudo corretamente, haverá de funcionar turbinado.

NO CASO DO PHP.INI

vi /etc/php5/apache2/php.ini

procure pela linha auto_prepend_file, se não achar, insira no meio do arquivo aberto:

auto_prepend_file = /var/www/web1/web/phpids.php

Reinicie o Apache:

/etc/init.d/apache2 restart

NO CASO DO ARQUIVO .HTACCESS

vi /var/www/web1/web/.htaccess

php_value auto_prepend_file /var/www/web1/web/phpids.php

Verifique os confs de vhost, se estão assim:

<Directory /var/www/web1/web/>
AllowOverride All
</Directory>

Caso sim, caso tenha mudado algo no apache e retorne para este padrão acima, reinicie o apache.

Crie um simples arquivo ->

vi /var/www/web1/web/info.php
dentro dele:

<?php
phpinfo();
?>

Faça um acesso simples -> http://192.168.0.100/info.php

Agora, para ver o PHPIDs em ação use http://192.168.0.100/info.php?test=%22%3EXXX%3Cscript%3Ealert(1)%3C/script%3E

Se as mensagens de alerta forem vistas é por que o script de /var/www/web1/web/phpids.php foi chamado automaticamente de dentro de /var/www/web1/web/info.php.

Sobre os logs

Podem ser vistos em /var/www/web1/phpids/lib/IDS/tmp/phpids_log.txt, para ver rapidamente o teste use:

cat /var/www/web1/phpids/lib/IDS/tmp/phpids_log.txt

Algo parecido com os termos abaixo será exibido:

“192.168.0.77″,2008-06-04T17:36:08+02:00,54,”xss csrf id rfe

lfi”,”REQUEST.test=%5C%22%3EXXX%3Cscript%3Ealert%281%29%3C%2Fscript%3E GET.test=%5C%22%3EXXX%3Cscript%3Ealert%281%29%3C%2Fscript%3E”,”%2Finfo.php%3Ftest%3D%2522%253EXXX%253Cscript%253Ealert%281%29%253C%2Fscript%253E”

Isso é bom para quem quer analisar tipos de ataques e quer reaplicar mudanças valiosas na segurança.

Vamos fazer uma mudança no nível de segurança para que seja exibida informação, caso esteja vazio o ataque, prossiga, do contrário será parado o script!

vi /var/www/web1/web/phpids.php

<?php
set_include_path(
get_include_path()
. PATH_SEPARATOR
. ‘/var/www/web1/phpids/lib’
);

require_once ‘IDS/Init.php’;
$request = array(
‘REQUEST’ => $_REQUEST,
‘GET’ => $_GET,
‘POST’ => $_POST,
‘COOKIE’ => $_COOKIE
);
$init = IDS_Init::init(‘/var/www/web1/phpids/lib/IDS/Config/Config.ini’);
$ids = new IDS_Monitor($request, $init);
$result = $ids->run();

if (!$result->isEmpty()) {
// Take a look at the result object
echo $result;
require_once ‘IDS/Log/File.php’;
require_once ‘IDS/Log/Composite.php’;

$compositeLog = new IDS_Log_Composite();
$compositeLog->addLogger(IDS_Log_File::getInstance($init));
$compositeLog->execute($result);

die(‘<h1>Go away!</h1>’);
}
?>

fonte:

http://www.howtoforge.com/intrusion-detection-for-php-applications-with-phpids

Vídeo Mais punk da Internet, por favor, assista tudo para o seu bem!

Saturday, December 13th, 2008

[youtube=http://br.youtube.com/watch?v=whir-QO7lcw]

Se não prestar, DÊ NA MINHA CARA!

Como alterar Timezone no CenTos/Red Hat?

Friday, December 12th, 2008

Calma, NADA de pânico gente, novamente o tampa de crush da história sou eu… se queres colocar o timezone para algo brasileiro, siga os passos abaixo:

cp -rp /usr/share/zoneinfo/Brazil/DeNoronha /etc/localtime

Se desejar outra região, mude DeNoronha para uma das citadas aqui:

Acre,

East,

West.

PHP 5.2.8 – Eu hein!

Friday, December 12th, 2008

Caramba, os caras do PHP estão mais rápidos que o super-herói The Flash, já lançaram a versão 5.2.8, que na realidade não passa de um pacth rápido da versão 5.2.7.

Para conferir o lançamento “flash”, acessem:

http://www.php.net/archive/2008.php#id2008-12-08-1

Como solucionar BUG do Perfect World Brasil

Thursday, December 11th, 2008

Hoje consegui solucionar o Bug do Perfect World Brasil que impedia a captura de itens de quest, baú e materias para Forja.

A solução é super simples, você verá que seu PC até mais leve ficará, siga os passos:

Iniciar -> Configurações -> Painel de Controle -> Adicionar e Remover Programas -> Perfect World -> Clique em DESINSTALAR!

Feito isto, confirme e por fim deverá aparecer uma mensagem dizendo:

Perfect World foi Removido com sucesso do Seu Computador.

Pronto, logo após isto, acesse sites como cabal, ragnarok e até mesmo TIBIA, baixe, instale e seja feliz!

OBS: A Culpa não é da levelup, mas da desenvolvedora do Game que, sem dúvidas nÃo estão recebendo as devidas quantias de Gold (que poucos compram, eu sei) e o jogo tem patch lento.

Lamentável ter um char em level alto e ter de fazer isso.

Abaixo “prova do crime”:

fujadomico

Servidor de email não envia para o Hotmail (postfix, sendmail, qmail ou exim)

Monday, December 8th, 2008

Nem entre em pânico, você sabe que o mestre da cocada preta aqui está com a solução, e de fato é simples, acesse os links:

http://postmaster.live.com/FAQ.aspx

http://www.microsoft.com/mscorp/safe…d/default.mspx

Se após ajustes de SPF e MX perfeitamente configurados o serviço de email não enviar corretamente para hotmail, yahoo ou uol, veja isto aqui:

http://help.yahoo.com/help/us/mail/defer/defer-06.html

Nada de pânico, negócio é ver se há blacklist de spam, veja:

http://mxtoolbox.com/blacklists.aspx

Ibm lança Microsoft-Free Linux Virtual Desktop

Monday, December 8th, 2008

Repassando a nota oficial:

“According to Information Week, IBM has introduced a line of business computers that avoid Microsoft’s desktop environment in favor of open source software. IBM worked with Canonical and Virtual Bridges to create the platform, which IBM claims saves businesses $500 to $800 per user on software licenses and an additional $258 per user ’since there is no need to upgrade hardware to support Vista and Office.’”

fonte: http://www.cyberlinux.com.br

Firefox 2 lança update para remover detecções de fishing

Monday, December 8th, 2008

Vou postar a notícia oficial:

“Computerworld and others are reporting that Firefox 2.0.0.19, the last security update to be released before 2.0 goes end-of-life, will remove the phishing detection at the request of Google. The browser is using an older version of the Safe Browsing protocol that Google will discontinue. According to the latest NetApplications report, about 25% of all Firefox users were still on version 2.0. This move ought to result in an increased adoption of Firefox 3.0 and other browsers, unless it goes unnoticed by most users.”

Instalando php mais novo em servidores CentOs, Red Hat ou Fedora

Monday, December 8th, 2008

É comum que tenhamos um servidor feito sem recursos de painéis de controle como Plesk ou Cpanel que tornam a versão do php muito antiga… porém, em observação, precisava de uma versão tunada do php para poder programar feliz e contente!

O Centos Veio com a versão 5.1.6, que nada tinha de tão importante (o que precisava), então, abaixo segue how to para subir para uma versão 5.2.x:

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-4.el5.remi.noarch.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

yum --enablerepo=remi update php

pronto, depois disso só precisa verificar:

php -v

PHP 5.2.6 (cli) (built: May  7 2008 00:50:43)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

OpenSolaris 2008.11 Released

Saturday, December 6th, 2008

Vou replicar a nota oficial do lançamento do OpenSolaris 2008.11:

OpenSolaris 2008.11 has been released. In addition to improvements in ZFS, DTrace, IPS (the new OpenSolaris package manager) and the other OpenSolaris specialties, it also ships with a host of other OSS goodies: Gnome 2.24, Firefox 3, CherryPy, MySQL, DTrace for Ruby and many more. This new release targets developers and desktop users as well as traditional server roles. Download the live cd and give it a spin. Release notes here.

Lançado Slackware 12.2 RC 1

Saturday, December 6th, 2008

Essa notícia eu faço questão de publicar -> Só para amantes do Slack!

O bom e velho slack vem aí com uma versão mais bombada!
Confira a nota vinda do Br-Linux:

“Segundo o ChangeLog do Slackware current, com as atuais modificações, pode ser considerado lançado o primeiro release candidade da próxima versão estável.

Entre as considerações a notar, o fato do release estar bem próximo, talvez para a próxima semana, e que o KDE4 só entrará definitivamente na versão estável – saindo do repositório testing – no Slackware 13.0.”

Para conferir acesse:

http://br-linux.org/2008/lancado-slackware-122-rc-1/
http://dev.slackware.it/changelogs/view.php?q=current/1228282443

http://www.linux-mg.org/comunidade/index.php?topic=285.msg762#new

Lançado Python 3.0

Saturday, December 6th, 2008

Abaixo segue nota retirada do OsNews:

Python 3.0 (a.k.a. ‘Python 3000′ or ‘Py3k’) is a new version of the language that is incompatible with the 2.x line of releases. The language is mostly the same, but many details, especially how built-in objects like dictionaries and strings work, have changed considerably, and a lot of deprecated features have finally been removed. Also, the standard library has been reorganized in a few prominent places.” See what’s new in Python 3.0 for differences between 2.x and 3.x.

Reinstalar Horde, Reinstalar RoundCube e Reinstalar Squirrel

Saturday, December 6th, 2008

No SSH execute o script:

Para horde:
/usr/local/cpanel/bin/updatehorde –force

Para RoundCube:
/usr/local/cpanel/bin/update-roundcube –force

Para RoundCube:
/usr/local/cpanel/bin/update-squirrelmail –force

Mas atenção este processo fara a reinstalação do webmail e com isso o banco de dados atual sera removido(é feito backup antes) então voce tera de restaurar os dados como catalogo de endereços etc…

Dica retirada de:

http://www.forumcpanel.com.br/index.php?showtopic=5735&hl=