O que é o Tripwire e por que ele é essencial para hardening?
O Tripwire é uma ferramenta de detecção de intrusão baseada em host (HIDS) clássica e robusta, utilizada há décadas para monitorar a integridade do sistema de arquivos. Em ambientes Linux, especialmente sob o rigor das práticas de hardening, garantir que os binários do sistema, arquivos de configuração críticos e bibliotecas essenciais não tenham sido alterados é uma linha de defesa fundamental.
Diferente de soluções modernas baseadas em comportamento em tempo real (como Wazuh ou OSSEC), o Tripwire opera através de uma abordagem snapshot. Ele gera um banco de dados criptografado das propriedades dos arquivos (permissões, timestamps, hashes CRC e SHA) em um momento específico. Qualquer desvio futuro em relação a esse baseline é alertado imediatamente.
Este tutorial guiará você, como sysadmin, pela instalação, configuração inicial e execução da auditoria do Tripwire no Ubuntu Server. O foco aqui é a segurança defensiva: detectar modificações não autorizadas, whether por malware, erro humano ou acesso indevido de root.
Passo 1: Preparação do Ambiente e Instalação
Antes de instalar o pacote, é crucial garantir que seu sistema esteja atualizado. Isso minimiza falsos positivos causados por atualizações normais do sistema operacional que ocorrem antes da primeira geração do banco de dados.
- Atualize os repositórios:
sudo apt update && sudo apt upgrade -y
O pacote tripwire está disponível nos repositórios padrão do Ubuntu. A instalação é direta, mas o processo exigirá a criação de chaves criptográficas.
- Instale o Tripwire:
sudo apt install tripwire -y
Durante a instalação, você será solicitado a definir senhas para as chaves de site e local. Importante: Anote essas senhas em um local seguro (offline ou gerenciador de senhas). Se você perder a senha do site (sitekey), não poderá verificar o banco de dados nem atualizar a configuração.
Passo 2: Geração das Chaves Criptográficas
O Tripwire utiliza criptografia assimétrica para proteger seus arquivos de configuração e banco de dados contra adulteração. Existem dois tipos de chaves:
- Site Key: Usada para assinar o banco de dados e os arquivos de configuração. Deve ser mantida em segredo absoluto.
- Local Key: Usada para criptografar o arquivo de relatório. Como os relatórios podem conter informações sensíveis, eles são criptografados com esta chave.
Se o instalador não gerou as chaves automaticamente, ou se você precisa regenerá-las, execute:
sudo twadmin --generate-keys
O sistema solicitará a senha da Site Key e da Local Key novamente. Certifique-se de que são senhas fortes e únicas.
Passo 3: Configuração Inicial do Modelo
O comportamento do Tripwire é ditado por dois arquivos principais localizados em /etc/tripwire/:
twpol.txt: O arquivo de política (em texto legível).tw.cfg: O arquivo de configuração do sistema.
A instalação padrão cria versões compiladas desses arquivos (.txt para política e .cfg para configuração) que o daemon lê. No entanto, para fazer alterações, devemos editar os arquivos em texto e recompilá-los.
- Copie os modelos padrão:
sudo cp /etc/tripwire/twpol.txt.txt /etc/tripwire/twpol.txt
sudo cp /etc/tripwire/twcfg.txt /etc/tripwire/twcfg.txt
Agora, vamos abrir o arquivo de política para entender a estrutura básica. Abra /etc/tripwire/twpol.txt com seu editor favorito (vim, nano, etc.).
Um bloco de regra no Tripwire segue esta sintaxe:
<RuleSet>
<path> NomeDoCaminho Parâmetros
(type=<TipoDeArquivo>, perm=<Permissões>, owner=<Dono>, ...) ;
</path>
</RuleSet>
Dica de Hardening: A configuração padrão monitora diretórios críticos como /etc, /bin, /sbin, /usr/bin e /boot. Para a maioria dos servidores, isso é suficiente. No entanto, você pode adicionar caminhos específicos de sua aplicação, como um diretório web ou logs sensíveis.
Para adicionar uma pasta personalizada, insira algo como:
/var/www/myapp/config
(perm=* , owner=root, group=root) ;
Isso monitorará qualquer alteração nas permissões, dono ou grupo dentro de /var/www/myapp/config.
Passo 4: Compilação da Configuração e Política
Após editar os arquivos de texto, é obrigatório compilá-los para gerar as versões binárias que o Tripwire lê. Isso também serve para validar a sintaxe.
- Compile a configuração:
sudo twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
- Compile a política:
sudo twadmin --create-polfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twpol.txt
Se houver erros de sintaxe, o comando falhará. Corrija os arquivos .txt e tente novamente antes de prosseguir.
Passo 5: Geração do Banco de Dados Inicial (Baseline)
Agora que a política está definida, precisamos tirar uma "foto" atual do sistema. Este banco de dados servirá como sua linha de base (baseline). Qualquer arquivo alterado depois deste momento será sinalizado como violação.
sudo tripwire --init
A execução pode levar alguns minutos, dependendo da quantidade de arquivos no seu sistema. O processo irá:
- Ler a política compilada.
- Varredura recursiva dos diretórios especificados.
- Criar hashes SHA/CRC para cada arquivo.
- Salvar o banco de dados em
/var/lib/tripwire/report/(formato texto) e em/var/lib/tripwire/<hostname>.twdb(binário).
Aviso Crítico: Após a geração do banco de dados, é recomendável mover o arquivo binário .twdb para um local seguro ou mídia removível se possível. Se um invasador comprometer o root, ele poderá alterar o banco de dados falso para esconder suas pegadas. O Tripwire verifica a integridade do próprio banco de dados usando a Site Key.
Passo 6: Executando a Verificação de Integridade
Para verificar se houve alterações desde o último snapshot, execute:
sudo tripwire --check
O resultado será um relatório em texto localizado em /var/lib/tripwire/report/. O nome do arquivo segue o padrão: <hostname>-<date>-<time>.twr.
Você pode ler o relatório diretamente no terminal:
cat /var/lib/tripwire/report/<nome-do-arquivo-report>.twr
O relatório classificará as mudanças em categorias como:
- Added: Arquivos ou diretórios novos.
- Removed: Arquivos que existiam na baseline e foram deletados.
- Changed: Alterações em permissões, tamanho, inode ou hash.
Se você receber muitos falsos positivos devido a atualizações de pacote, pode ser necessário ajustar a política ou aguardar o ciclo de atualização.
Passo 7: Gerenciamento de Falsos Positivos e Atualização do Banco
No dia a dia de um sysadmin, é comum que atualizações legítimas (via apt upgrade) gerem alertas. Existem duas abordagens para lidar com isso:
Abordagem A: Atualização do Banco de Dados (Recomendada após manutenções)
Se você sabe que realizou uma atualização intencional e verificou que as mudanças são legítimas, pode atualizar o banco de dados para refletir o novo estado "saudável" do sistema.
sudo tripwire --update --check
Este comando gera um novo relatório comparando o sistema atual com o último snapshot e, se você aceitar as mudanças, atualiza o banco de dados binário. Cuidado: Isso "apaga" o histórico das violações anteriores.
Abordagem B: Ajuste da Política
Se um arquivo ou diretório muda frequentemente e você não se importa com a integridade dele (ex: logs temporários), remova-o da política twpol.txt e recompile.
# Exemplo: Ignorar completamente um diretório de cache
! /var/cache/myapp ;
Lembre-se de recompilar a política após qualquer edição:
sudo twadmin --create-polfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twpol.txt
Passo 8: Automatização com Cron
A verificação manual é insuficiente para segurança contínua. Configure o cron para executar o tripwire --check diariamente e enviar relatórios por e-mail.
- Instale o MTA (se necessário):
sudo apt install postfix -y
- Edite o cron do root:
sudo crontab -e
Adicione a seguinte linha para executar a verificação às 3:00 da manhã e enviar o relatório para admin@seudominio.com:
0 3 * * * /usr/sbin/tripwire --check --email-report admin@seudominio.com >/dev/null 2>&1
Verifique se o arquivo de configuração /etc/tripwire/twcfg.txt tem os parâmetros de e-mail configurados corretamente:
TWREPORTDIR = /var/lib/tripwire/report
MAILCOMMAND = /usr/sbin/sendmail -t
Boas Práticas de Segurança para Tripwire
Para maximizar a eficácia do Tripwire em seu ambiente de segurança linux, siga estas diretrizes:
- Proteja as Chaves: A Site Key (
site.key) é a chave mestra. Se ela for comprometida, um atacante pode modificar sua política e banco de dados sem deixar rastros. Armazene-a em um servidor separado ou mídia offline. - Imutabilidade dos Binários: Use
chattr +inos arquivos binários compilados (twpol.txt,tw.cfg) e no banco de dados para prevenir alterações acidentais ou maliciosas por scripts root. - Monitoramento de Logs: Configure o
logwatchou um SIEM para monitorar os logs do sistema. O Tripwire gera entradas em/var/log/syslog. - Revisão Periódica: Não ignore os relatórios. Falsos positivos crônicos levam à "fadiga de alerta", onde alertas reais são ignorados. Reveja a política mensalmente.
- Backup do Banco de Dados: Faça backup regular do banco de dados binário e dos relatórios antigos para um repositório remoto imutável.
Conclusão
O Tripwire é uma ferramenta essencial no toolkit de qualquer profissional de TI que leve a segurança a sério. Embora não impeça uma invasão em tempo real, ele fornece a capacidade crítica de auditoria e detecção pós-incidente.
Ao implementar o monitoramento de integridade de arquivos com Tripwire no Ubuntu, você estabelece uma linha de base confiável. Qualquer desvio nessa linha é imediatamente visível, permitindo resposta rápida a comprometimentos. Lembre-se: a segurança é um processo contínuo, e a manutenção da política do Tripwire deve ser parte integrante do seu ciclo de vida de administração de sistemas.
Com esta configuração em vigor, seu servidor está significativamente mais resiliente contra adulterações silenciosas, alinhando-se às melhores práticas de compliance e hardening para infraestruturas modernas.