Monitorar Arquivos com o Tripwire

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a utilizar o Tripwire, um poderoso Sistema de Detecção de Intrusão baseado em Host (HIDS), para monitorar a integridade de arquivos. O Tripwire funciona criando um banco de dados de referência (baseline) dos arquivos do seu sistema e, periodicamente, os digitaliza para detectar quaisquer adições, exclusões ou modificações. Este processo é essencial para identificar alterações não autorizadas e manter a segurança do sistema.

Você passará por todo o processo, desde a configuração inicial das chaves de segurança até a personalização das políticas de monitoramento, criação da linha de base, detecção de alterações e revisão de relatórios.

Configurar as Chaves do Tripwire

Bem-vindo ao laboratório. O pacote tripwire já foi pré-instalado em seu ambiente para economizar tempo. Sua primeira tarefa é configurar as chaves criptográficas que o Tripwire utiliza para proteger seu banco de dados e arquivos de configuração. Essas chaves garantem que um invasor não consiga adulterar os próprios arquivos do Tripwire para esconder seus rastros.

  1. Primeiro, verifique se o Tripwire está instalado conferindo sua versão.

    tripwire --version
    

    Você deverá ver uma saída exibindo a versão instalada do Tripwire.

    Tripwire(R) 2.4.3.7
    (i686-pc-linux-gnu)
    ...
    
  2. Em seguida, gere as chaves criptográficas manualmente usando o twadmin. Você precisa criar tanto uma chave de site (site key) quanto uma chave local (local key). A chave de site protege os arquivos de política e configuração, enquanto a chave local protege o banco de dados na máquina local.

    Primeiro, gere a chave de site:

    sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
    

    Se o arquivo de chave já existir, você será solicitado a sobrescrevê-lo. Digite y e pressione Enter para confirmar.

    Quando for solicitada a senha (passphrase) da chave de site, digite labex-password e pressione Enter. Em seguida, confirme a senha digitando-a novamente.

    Nota: A entrada da senha fica oculta por segurança - você não verá nenhum caractere enquanto digita, mas o sistema ainda está recebendo sua entrada.

  3. Em seguida, gere a chave local:

    sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
    

    Novamente, se for solicitado para sobrescrever um arquivo de chave existente, digite y e pressione Enter.

    Quando solicitada a senha da chave local, digite labex-password e pressione Enter. Confirme a senha digitando-a novamente. Lembre-se, a entrada da senha está oculta.

    Após inserir as senhas, ambas as chaves serão geradas e salvas no diretório /etc/tripwire/. O processo de geração de chaves pode levar alguns minutos para ser concluído.

Personalizar a Política de Monitoramento

Antes de criar o banco de dados inicial (a linha de base), você precisa configurar quais arquivos e diretórios o Tripwire deve monitorar. Devido a problemas de compatibilidade com o arquivo de política padrão que podem causar falhas de segmentação durante a inicialização, você criará uma política simplificada focada em arquivos essenciais do sistema e no diretório do seu projeto.

  1. Primeiro, crie um backup do arquivo de política original.

    sudo cp /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
    
  2. Crie um novo arquivo de política simplificado que evite sistemas de arquivos virtuais problemáticos.

    sudo nano /etc/tripwire/twpol-simple.txt
    
  3. Adicione o seguinte conteúdo ao arquivo. Esta política simplificada monitora arquivos vitais do sistema e o diretório do seu projeto, evitando caminhos que possam causar erros de inicialização:

    #
    ## Simplified Tripwire Policy File for Lab Environment
    #
    
    @@section GLOBAL
    TWBIN = /usr/sbin;
    TWETC = /etc/tripwire;
    TWVAR = /var/lib/tripwire;
    
    @@section FS
    
    SEC_CRIT      = $(IgnoreNone)-SHa ;
    SEC_BIN       = $(ReadOnly) ;
    SEC_CONFIG    = $(Dynamic) ;
    SEC_LOG       = $(Growing) ;
    SEC_INVARIANT = +tpug ;
    SIG_LOW       = 33 ;
    SIG_MED       = 66 ;
    SIG_HI        = 100 ;
    
    (
      rulename = "Tripwire Binaries",
      severity = $(SIG_HI)
    )
    {
        $(TWBIN)/siggen         -> $(SEC_BIN) ;
        $(TWBIN)/tripwire       -> $(SEC_BIN) ;
        $(TWBIN)/twadmin        -> $(SEC_BIN) ;
        $(TWBIN)/twprint        -> $(SEC_BIN) ;
    }
    
    (
      rulename = "Tripwire Data Files",
      severity = $(SIG_HI)
    )
    {
        $(TWVAR)/$(HOSTNAME).twd    -> $(SEC_CONFIG) -i ;
        $(TWETC)/tw.pol             -> $(SEC_BIN) -i ;
        $(TWETC)/tw.cfg             -> $(SEC_BIN) -i ;
        $(TWETC)/$(HOSTNAME)-local.key  -> $(SEC_BIN) ;
        $(TWETC)/site.key           -> $(SEC_BIN) ;
        $(TWVAR)/report             -> $(SEC_CONFIG) (recurse=0) ;
    }
    
    (
      rulename = "Critical system files",
      severity = $(SIG_HI)
    )
    {
        /bin            -> $(SEC_BIN) ;
        /sbin           -> $(SEC_BIN) ;
        /etc/passwd     -> $(SEC_CONFIG) ;
        /etc/shadow     -> $(SEC_CONFIG) ;
    }
    
    (
      rulename = "Lab Project Files",
      severity = $(SIG_HI)
    )
    {
      /home/labex/project        -> $(SEC_BIN) ;
    }
    
  4. Salve o arquivo e saia do nano pressionando Ctrl + O, depois Enter e, finalmente, Ctrl + X.

  5. Substitua o arquivo de política original pela sua versão simplificada.

    sudo cp /etc/tripwire/twpol-simple.txt /etc/tripwire/twpol.txt
    

Agora você criou uma política de monitoramento simplificada que funcionará de forma confiável no ambiente de laboratório. Na próxima etapa, você usará esta política para criar o banco de dados inicial.

Inicializar o Banco de Dados do Tripwire

Com sua política simplificada configurada, você está pronto para criar o banco de dados do Tripwire. Este banco de dados serve como o instantâneo de referência "conhecido como íntegro" do seu sistema. O Tripwire comparará o estado atual dos seus arquivos com esta linha de base para detectar quaisquer alterações.

  1. Primeiro, recrie o arquivo de configuração com sua nova chave de site para garantir a compatibilidade.

    sudo twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
    

    Você será solicitado a inserir a senha da sua chave de site. Digite labex-password e pressione Enter.

  2. Converta o arquivo de política simplificado para o formato binário assinado que o Tripwire utiliza.

    sudo twadmin --create-polfile /etc/tripwire/twpol.txt
    

    Novamente, insira a senha da sua chave de site (labex-password) quando solicitado.

  3. Inicialize o banco de dados. Este comando verifica todos os arquivos e diretórios especificados em sua política e registra suas assinaturas criptográficas e atributos.

    sudo tripwire --init
    

    Você será solicitado a inserir a senha da sua chave local. Digite labex-password e pressione Enter.

  4. Durante a inicialização, você poderá ver um aviso sobre o arquivo de banco de dados não existir inicialmente:

    #### Warning: File system error.
    #### Filename: /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    #### No such file or directory
    #### Continuing...
    

    Isso é normal e esperado na primeira inicialização. O processo continuará e criará o arquivo de banco de dados.

  5. Assim que o processo for concluído, verifique se o arquivo do banco de dados foi criado.

    ls -l /var/lib/tripwire/
    

    Você deve ver um arquivo nomeado com o hostname da sua máquina e a extensão .twd (por exemplo, 68b1139d06fc790d9895e107.twd). A presença deste arquivo confirma que seu banco de dados de referência foi estabelecido com sucesso.

    total 8
    -rw-r--r-- 1 root root 4164 Aug 29 11:00 68b1139d06fc790d9895e107.twd
    drwxr-xr-x 2 root root    6 Nov 11  2021 report
    

Seu sistema Tripwire agora está devidamente inicializado com um banco de dados de referência. Quaisquer alterações futuras nos arquivos monitorados serão detectadas quando você executar as verificações de integridade.

Detectar e Relatar Alterações em Arquivos

Agora que o Tripwire possui uma linha de base, você pode testar sua capacidade de detectar alterações. Você criará um novo arquivo no diretório do seu projeto para ver como o Tripwire detecta modificações em áreas monitoradas.

  1. Primeiro, crie um novo arquivo no diretório project. Este é um diretório que você adicionou explicitamente à política de monitoramento.

    touch ~/project/test_file.txt
    
  2. Com a alteração feita, execute uma verificação de integridade. O Tripwire escaneará o sistema e o comparará com o banco de dados de referência.

    sudo tripwire --check
    

    Você será solicitado a inserir a senha da sua chave local. Digite labex-password e pressione Enter.

  3. Após a conclusão da varredura, o Tripwire gerará um relatório e imprimirá um resumo no console. O resumo destacará os objetos que foram adicionados ou modificados. Você deve ver uma saída semelhante a esta:

    ===============================================================================
    Rule Summary:
    ===============================================================================
    
      Rule Name                       Severity Level    Added    Removed  Modified
      ---------                       --------------    -----    -------  --------
      Tripwire Binaries               100               0        0        0
      Critical system files           100               0        0        0
    * Tripwire Data Files             100               1        0        0
    * Lab Project Files               100               1        0        1
      (/home/labex/project)
    
    Total objects scanned:  16
    Total violations found:  3
    
    ===============================================================================
    Object Summary:
    ===============================================================================
    
    -------------------------------------------------------------------------------
    Rule Name: Lab Project Files (/home/labex/project)
    Severity Level: 100
    -------------------------------------------------------------------------------
    
    Added:
    "/home/labex/project/test_file.txt"
    
    Modified:
    "/home/labex/project"
    
  4. O relatório mostra que o Tripwire detectou:

    • Adicionado (Added): O novo arquivo test_file.txt no diretório do seu projeto.
    • Modificado (Modified): O próprio diretório /home/labex/project (porque seu conteúdo mudou).
    • Arquivos de Dados do Tripwire (Tripwire Data Files): O arquivo do banco de dados também foi sinalizado como "adicionado" porque esta é a primeira verificação desde a inicialização.

Esta saída confirma que o Tripwire detectou com sucesso as alterações feitas no sistema de arquivos.

Revisar o Relatório de Integridade

O resumo do comando --check fornece uma boa visão geral, mas para uma análise detalhada, você pode visualizar o arquivo de relatório completo. Esses relatórios são armazenados em formato binário e devem ser lidos usando o utilitário twprint.

  1. Primeiro, liste o conteúdo do diretório de relatórios para encontrar o nome do relatório mais recente. Os relatórios possuem carimbos de data e hora em seus nomes de arquivo.

    sudo ls -lt /var/lib/tripwire/report/
    

    A saída listará os arquivos de relatório, com o mais recente no topo. Anote o nome do arquivo, que normalmente segue o formato hostname-YYYYMMDD-HHMMSS.twr.

    total 4
    -rw------- 1 root root 3456 Aug 29 11:02 68b1139d06fc790d9895e107-20250829-110252.twr
    
  2. Use o comando twprint para visualizar o relatório em um formato legível por humanos. Substitua [REPORT_FILENAME] pelo nome real do arquivo que você anotou no comando anterior.

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Por exemplo:

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/68b1139d06fc790d9895e107-20250829-110252.twr
    
  3. O relatório detalhado mostra as mesmas informações que o resumo, mas com metadados adicionais:

    Report created on:            Fri Aug 29 11:02:52 2025
    Database last updated on:     Never
    
    Host name:                    68b1139d06fc790d9895e107
    Host IP address:              172.18.0.8
    Policy file used:             /etc/tripwire/tw.pol
    Configuration file used:      /etc/tripwire/tw.cfg
    Database file used:           /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    Command line used:            tripwire --check
    

    O relatório fornece detalhes abrangentes sobre cada alteração, incluindo carimbos de data/hora, propriedades do arquivo e somas de verificação (checksums). Esse nível de detalhe é crucial para análises forenses, permitindo entender exatamente quais mudanças ocorreram em seu sistema.

  4. Você também pode visualizar uma versão mais detalhada com atributos de arquivo usando a flag --verbose:

    sudo twprint --print-report --verbose --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Isso mostrará informações adicionais como permissões de arquivo, proprietário, tamanho e vários hashes criptográficos para cada alteração detectada.

Compreender como ler esses relatórios é essencial para que administradores de sistema investiguem possíveis incidentes de segurança e mantenham a integridade do sistema.

Resumo

Neste laboratório, você aprendeu os fundamentos do uso do Tripwire para monitoramento de integridade de arquivos. Você configurou com sucesso as chaves de segurança do Tripwire, personalizou sua política de monitoramento para incluir um diretório de projeto específico e estabeleceu um banco de dados de referência do estado dos arquivos do seu sistema.

Além disso, você praticou o fluxo de trabalho principal de um administrador de sistemas ao modificar arquivos intencionalmente, executar uma verificação de integridade para detectar essas alterações e analisar o relatório detalhado para entender o que foi alterado. Essas habilidades são fundamentais para manter a segurança do sistema e detectar atividades não autorizadas.