You are viewing revision #1 of this wiki article.
This is the latest version of this article.
- 1) Instalação
- 2) Reagindo ao ataque:
- 3) Habilitando/Desabilitando
- 4) Próxima versão 0.3
- 5) Como atualizar?
- Créditos e agradecimentos a equipe de desenvolvedores do PHPIDS.
PHPIDS é conhecido projeto que pode ser visto em php-ids.org.
PHPIDS é um sistema de detecção de intrusos, basicamente baseado em regras o IDS reconhece ataques filtrando as informações enviadas para o sistema, retornando uma classificação e um relatório do que for considerado um ataque potencial. A partir dessa informação o sistema pode reagir ao ataque, enviar e-mails de alerta, gerar logs detalhados, bloquear o usuário, gerar black list, etc.
O projeto PHPIDS foi encapsulado na forma de componente de aplicação do Yii e pode ser baixado em http://www.yiiframework.com/extension/phpids/ junto da suas instruções de instalação e uso.
Esse how-to mostra desda sua instalação e mais detalhadamente algumas possibilidades de uso.
Este componente foi testado nas versões 1.1.5 e 1.1.4 com PHP 5.2. A versão atual do componente é 0.2 na inscrição desse how-to.
1) Instalação ¶
Faça o download da versão mais recente do componente PHPIDS em http://www.yiiframework.com/extension/phpids/
Descompacte o arquivo em ….webapp/protected/components/ids
Torne o diretório .../components/ids/IDS/tmp acessível para escrita
Atualize seu main.php em …/protected/config
...
//'preload'=>array('log'),
'preload'=>array('log','ids'),
...
components = array(
...
'ids'=>array(
'class'=>'application.components.ids.CPhpIds',
),
)
Adicione o componente ids ao preload da aplicação. Em componentes adicione a entrada do componente ids e suas configurações. O arquivo acima é o mínimo para o funcionamento do ids.
Todos os formulários da aplicação serão filtrados pela PHPIDS, as variáveis $_REQUEST, $_GET, $_POST e $_COOKIE são verificadas por tipos de ataques relatados nas regras de detecação do IDS. Caso um ataque potencial seja detectado a aplicação é interrompida antes do processamento da requisição, uma exception é lançada com uma mensagem de erro genérica sem detalhes para o atacante e um log detalhado é gerado.
Esse log é gerado pelo componente Log da aplicação Yii, sendo assim, um ataque pode ser enviado por e-mail (EmailLog), ou armazenado em banco, arquivo ou simplesmente exibido no navegador com o WebLog.
Podemos elaborar mais esta configuração, um detalhes simples é a mensagem enviada ao atacante:
…
'ids'=>array(
'class'=>'application.components.ids.CPhpIds',
'genericMessage'=>'Ocorreu um erro inesperado!', //Mensagem enviada ao atacante
),
…
O objetivo é que esta mensagem não tenha detalhes sobre o ataque, nem informe ao atacante que seu ataque foi detectado. E o devido tratamento seja dado internamente pela aplicação, enviando e-mails de Alerta ou simplesmente bloqueando o usuário.
Essa mensagem não entra no log, informações detalhadas sobre o ataque são geradas e enviadas para o componente de log.
2) Reagindo ao ataque: ¶
…
'ids'=>array(
'class'=>'application.components.ids.CPhpIds',
'genericMessage'=>'Ocorreu um erro inesperado!', //Mensagem enviada ao atacante
'callback'=>create_function('',"echo 'Error!'; Yii::app()->end(); return false;"),
),
…
O parametro callback recebe um callback válido como parametro, veja a função call_user_func no manual do PHP. Pode ser uma função, ou uma classe e o método que deve ser chamado. No exemplo acima criamos uma função simples, imprime erro, encerra a aplicação.
Através dessa configuração o desenvolvedor pode tratar da melhor forma os ataques detectados, enviando e-mails, alertas, criando um black list, removendo o acesso do usuário, finalizando a sessão, etc. Após o processamento do callback a exception padrão do componente não será lançada, encerrar a requisição passa a ser responsabilidade do desenvolvedor através da função/método passado como callback.
3) Habilitando/Desabilitando ¶
…
'ids'=>array(
'class'=>'application.components.ids.CPhpIds',
'genericMessage'=>'Ocorreu um erro inesperado!', //Mensagem enviada ao atacante
'callback'=>create_function('',"echo 'Error!'; Yii::app()->end(); return false;"),
'enable'=>create_function('','return $_GET["r"] != "site/contact";'),
),
…
O parametro enable serve para habilitar ou desabilitar a execução do PHPIDS. Esse parametro pode receber diretamente um valor boolean, true para executar a verificação IDS ou false para não executar. Ou pode receber um callback válido que deve retornar um valor boolean. Com essa configuração a IDS pode ser ativada em apenas algumas requisições baseadas nas regras do callback válido passado como parametro. Veja a função call_user_func para saber mais sobre callbacks válidos.
4) Próxima versão 0.3 ¶
Para próxima versão, mais possibilidades de configuração do PHPIDS, como Log interno do IDS, tmp folder e outras.
Tendo sua principal mudança no processamento do callback, que recebera como parametro a avaliação do impacto do ataque, assim o desenvolvedor poderá decidir como reagir baseado no nível de conhecimento do atacante.
5) Como atualizar? ¶
Faça download do arquivo default_rules.xml atualizado em http://php-ids.org/ e substitua a versão antiga na pasta …/protected/components/ids/IDS
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.