Configurar no servidor apache uma ferramenta de detecção de intrusão pode ajudar na tomada de decisão ou na correção no fluxo da aplicação ou correção no arquivo .htaccess.
Sugere-se a ferramenta PHPIDS para analisar as tentativas de inserção de código ou tentativas de endereçamento de URL e outras tentativas. A cada tentativa logs são gerados, será necessário periodicamente verifica-los, ou se necessário criar uma rotina para informar a ocorrência.
O processo de instalação é simples, porém necessita de configurações em alguns arquivos da ferramenta e do servidor apache, portanto siga os passos abaixo para fazer a instalação e configuração.
Escolha o diretório de instalação, se preferir pode utilizar a pasta compartilhada do php que se encontra em /usr/share/Zend é importante separar a ferramenta de configuração do servidor das aplicações que serão desenvolvidas.
Entrar no diretório PATH do php:
# cd /usr/share/
Faça download do phpides:
# wget http://php-ids.org/files/phpids-0.6.2.tar.gz
Descompactar o pacote:
# tar -xvzf phpids-0.6.2.tar.gz
Mudar usuário e grupo do diretório tmp da ferramenta IDS:
# cd phpids-0.6.2/lib/IDS
# chown -R www-data:www-data tmp
Fazer configuração do PHPIDS:
# cd config
# vim config.ini
Configurar caminho nas diretivas:
[General]
filter_type = xml
filter_path = /usr/share/phpids/lib/IDS/default_filter.xml
tmp_path = /usr/share/phpids/lib/IDS/tmp
[Logging]
; file logging
path = /usr/share/phpids/lib/IDS/tmp/phpids_log.txt
[Caching]
; file cache
path = /usr/share/phpids/lib/IDS/tmp/default_filter.cache
; memcached
;host = localhost
;port = 11211
;key_prefix = PHPIDS
;tmp_path = /usr/share/phpids/lib/IDS/tmp/memcache.timestamp
Pode-se criar uma aplicação que irá monitorar as requisições, que por sua vez, irá detectar possíveis tentativas de quebra de segurança, bem como, inserção de códigos, tentativas de descoberta de URL e entre outros.
Crie um subdiretório phpids dentro do diretório /home/aplicativos/estrutura/ ou no diretório que achar conveniente e adicione os códigos abaixo em um arquivo index.php ou phpids.php. Os comentários do arquivo relatam o que o mesmo está desempenhando.
<?php
/**
* autores: José Cleydson Ferreira da Silva, Néliton Antônio Campos
* primeira versão: 13 abr 2010
*/
/**
* Monitora as requisições, detectando possíveis tentativas de quebra de segurança.
*/
set_include_path(get_include_path() . PATH_SEPARATOR . '/usr/share/phpids/lib');
require_once 'IDS/Init.php';
$request = array('REQUEST' => $_REQUEST, 'GET' => $_GET, 'POST' => $_POST, 'COOKIE' => $_COOKIE);
$init = IDS_Init::init('/usr/share/phpids/lib/IDS/Config/Config.ini');
$ids = new IDS_Monitor($request, $init);
$result = $ids->run();
/**
* Registra as tentativas de quebra de segurança detectadas em log.
*/
if (!$result->isEmpty()) {
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);
header('location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
Após salvo o arquivo é necessário configurar a diretiva auto_prepend_file do arquivo php.ini, para vincular o arquivo no php.
; Automatically add files before or after any PHP document.
auto_prepend_file = /home/usuario/sistemas/estrutura/phpids/index.php
Os logs são gerados em /usr/share/phpids/lib/IDS/tmp/phpids_log.txt ou no local onde instalou a ferramenta phpIDS.