Monitoração de Integridade de Arquivos Joomla com Tripwire

January 20th, 2017

Category: Administracao e Suporte, Administrator, Desenvolvimento, Linux, Seguranca, Software Livre e Open Source

Tripwire é um pacote Open Source de verificação de integridade de arquivos. Ele ajuda na detecção de intrusão ao identificar mudanças em permissões e conteúdo de arquivos, além de monitorar também alterações em permissões de arquivos e diretórios.
Bom, mas aqui quero mostrar um uso específico do Tripwire para monitorar um web site em Joomla.

Vamos primeiro enumerar o que pretendemos:

  1. Detectar criação de arquivos;
  2. Detectar alterações em permissões de diretórios e arquivos;
  3. Evitar falso positivo para os diretórios de log;


Um tipo muito comum de invasão é a criação de scripts PHP dentro de pastas do seu site. Esses scripts normalmente são então usados para o envio de SPAM.
Assumindo que você já tem o Tripwire instalado e configurado para verificação de arquivos do sistema, vamos acrescentar as regras (policies) necessárias para monitorar a árvore de diretórios e arquivos do web server. No exemplo temos /var/www/ e abaixo disso temos outra ramificação para cada virtual host definido no Apache, na forma sitename/public_html. Veja, o fato de mostrar com virtual host e Apache não faz a menor diferença. Se você tem um site único em /var/www/public_html, /opt/bitnami/htdocs, ou qualquer outro padrão, não importa. Basta usar o caminho apropriado no arquivo de políticas.

O Tripwire guarda as políticas em um arquivo criptografado. Precisamos exportar as políticas para um arquivo texto:
sudo sh -c 'twadmin --print-polfile > /etc/tripwire/twpol.txt'

Em seguida, vamos adicionar ao final do arquivo as definições abaixo:

#
# WWW files
#
(
rulename = "Critical web files",
severity = $(SIG_HI)
)
{
/var/www/site1/public_html -> $(SEC_CRIT) (rulename="Site1 files");
/var/www/site1/public_html/logs -> $(SEC_LOG) (rulename="Site1 logs");
/var/www/site2/public_html -> $(SEC_CRIT) (rulename="Site2 files");
/var/www/site2/public_html/logs -> $(SEC_LOG) (rulename="Site2 logs");
}

Usamos a máscara $(SEC_CRIT) para os arquivos do site, o que significa verificar qualquer alteração nos arquivos existentes, além de criação de novos arquivos em qualquer parte da árvore de diretórios. A máscara $(SEC_LOG) ignora o aumento de tamanho dos arquivos de log.

Uma vez alterado o arquivo de políticas, devemos carregá-lo de volta em forma encriptada. Você deve fornecer a passphrase do site para isso.
sudo sh -c 'twadmin --create-polfile /etc/tripwire/twpol.txt'

O arquivo texto pode ser removido agora.
sudo rm twpol.txt

O banco de dados do Tripwire deve ser gerado novamente. Agora, o Tripwire irá solicitar a passphrase local.
sudo tripwire --init

Rode a verificação.
sudo tripwire --check

Confirme no relatório que as novas regras foram processadas.

======================================================================
Rule Summary:
======================================================================

----------------------------------------------------------------------
Section: Unix File System
----------------------------------------------------------------------

Rule Name Severity Level Added Removed Modified
--------- -------------- ----- ------- --------
Other binaries 66 0 0 0
Tripwire Binaries 100 0 0 0
Other libraries 66 0 0 0
Root file-system executables 100 0 0 0
Tripwire Data Files 100 0 0 0
System boot changes 100 0 0 0
(/var/log)
Site1 files 100 0 0 0
(/var/www/site1/public_html)
Site1 logs 100 0 0 0
(/var/www/site1/public_html/logs)
Site2 files 100 0 0 0
(/var/www/site2/public_html)
Site2 logs 100 0 0 0
(/var/www/site2/public_html/logs)

Root file-system libraries 100 0 0 0
(/lib)
Critical system boot files 100 0 0 0
Other configuration files 66 0 0 0
(/etc)
Boot Scripts 100 0 0 0
Security Control 66 0 0 0
Root config files 100 0 0 0
Devices & Kernel information 100 0 0 0
Invariant Directories 66 0 0 0

Total objects scanned: 85107
Total violations found: 0

Para testar se a detecção funciona, basta criar um arquivo dentro de uma das pastas monitoradas. O Tripwire irá detectar uma violação no diretório onde o arquivo foi criado, além de outra violação pelo aparecimento do próprio arquivo.

Simplesmente apagar o arquivo de teste elimina uma violação, mas ainda persistirá a violação detectada no diretório. Para atualizar a base do Tripwire, registrando essa mudança como permanente, basta você rodar o check com a opção –interactive e salvar (CTRL-X) a alteração.

sudo tripwire --check --interactive

Sempre que precisar fazer alguma manutenção nos arquivos, como aplicar um patch, por exemplo, você deve rodar esse comando para atualizar a base do Tripwire e evitar falso positivos.

É isso!

No comments yet


Leave a Reply

Your email address will not be published. Required fields are marked *