Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Assinatura e verificação de arquivos verificados por executivo (Veriexec) para o Junos OS

Saiba mais sobre a assinatura e verificação de arquivos Veriexec, os benefícios e como usá-la.

Para proteger o Sistema operacional Junos (OS) contra software não autorizado e atividades que possam comprometer a integridade do dispositivo, a Verified Exec (Veriexec) fornece uma estrutura de assinatura e verificação de arquivos que garante que apenas software autorizado e confiável seja executado. O Junos OS adapta o framework Veriexec, originalmente desenvolvido para o NetBSD, e o habilita por padrão para ajudar a garantir a integridade do software por meio da verificação de arquivos.

A Veriexec usa uma impressão digital associada a cada arquivo autorizado do Junos OS para verificar sua integridade e determinar se o arquivo pode ser aberto ou executado.

A Veriexec ajuda a proteger componentes críticos de software, verificando sua integridade antes de serem usados pelo sistema, incluindo:

  • O kernel
  • Módulos do kernel
  • Arquivos executáveis
  • Bibliotecas compartilhadas
  • Pacotes de software
  • Outros arquivos de sistema protegidos

Como funciona a Veriexec

A Veriexec usa um manifesto assinado digitalmente que contém impressões digitais para executáveis e outros arquivos que devem permanecer imutáveis.

O processo de verificação normalmente segue estas etapas:

  1. O carregador Veriexec verifica as assinaturas digitais associadas ao manifesto.
  2. Após a verificação bem-sucedida, o carregador fornece o conteúdo do manifesto ao kernel.
  3. O sistema verifica o kernel durante a inicialização.
  4. O sistema verifica os módulos do kernel quando eles são carregados, seja durante a inicialização ou durante a operação do sistema.
  5. O kernel verifica se os arquivos correspondem às impressões digitais esperadas antes de permitir que sejam usados.

O Veriexec requer que o kernel, a imagem do sistema de arquivos raiz e os módulos do kernel passem na verificação antes que o sistema possa usá-los.

Se a aplicação Veriexec estiver habilitada, somente executáveis com impressões digitais verificadas poderão ser executados. Além disso, os arquivos protegidos não podem ser gravados, modificados ou alterados.

Escopo de verificação

A Veriexec verifica a integridade do software em vários estágios:

Componente Estágio de verificação
Kernel Durante a inicialização do sistema
Imagem do sistema de arquivos raiz Durante a inicialização do sistema
Módulos do kernel Quando carregado durante a inicialização ou tempo de execução
Pacotes de software Antes da instalação
Arquivos protegidos Durante o tempo de execução antes do uso

Antes da instalação, a estrutura Veriexec verifica se um pacote de software não foi alterado e pode ser confiável. A verificação de pacotes e a verificação de tempo de execução usam a mesma estrutura Veriexec e oferecem suporte aos mesmos algoritmos de hash.

Considerações sobre a execução de scripts

  • A Veriexec impede que um script de shell verificado execute um script não assinado que não esteja listado no manifesto.

  • Você pode usar o arquivo /bin/sh para executar scripts arbitrários. Do ponto de vista da segurança, esses scripts são tratados de forma semelhante aos comandos interativos porque a execução é controlada por meio de autenticação e permissões do usuário.

Falhas de verificação

Se uma impressão digital estiver ausente ou incorreta, o carregador ou kernel rejeitará o arquivo. O impacto depende do tipo de arquivo e de sua função no sistema.

Quando a verificação falha:

  • O carregador ou kernel rejeita o arquivo afetado.
  • O impacto varia dependendo da importância do arquivo.
  • Por padrão, o carregador ignora os arquivos que falham na verificação.
  • Opcionalmente, você pode configurar o carregador para interromper o processo de inicialização quando encontrar um hash incorreto.

Algoritmos de manifesto e hash

Cada imagem de instalação contém um manifesto somente leitura que armazena impressões digitais e atributos relacionados para arquivos protegidos.

Os exemplos de impressão digital neste tópico usam hashes SHA-1 apenas para fins ilustrativos. A Veriexec oferece suporte aos algoritmos de hash SHA-1, SHA-256, SHA-384 e SHA-512. A versão e a plataforma do Junos OS determinam qual algoritmo de hash a Veriexec usa para verificação.

O manifesto identifica cada arquivo protegido e armazena sua impressão digital esperada e atributos associados. O manifesto contém entradas como as seguintes:

Incompatibilidade de impressão digital e mensagens de log

Quando a impressão digital calculada de um arquivo não corresponde à impressão digital armazenada no manifesto, a Veriexec gera uma mensagem de log.

A mensagem de log está no seguinte formato:

Se um arquivo tiver sido modificado e a impressão digital resultante for diferente da do manifesto, você verá uma mensagem de log semelhante à seguinte:

Uma incompatibilidade de impressão digital indica que o conteúdo do arquivo não corresponde à impressão digital confiável armazenada no manifesto. Essa incompatibilidade pode ocorrer devido a corrupção de arquivos, problemas de armazenamento ou modificação não autorizada.

Arquivos críticos que falham na verificação não são confiáveis. Entre em contato com a JTAC para obter orientação.

Benefícios do Veriexec

  • Sistemas seguros — proteja os roteadores, switches e firewalls da Juniper Networks contra violações de segurança.

  • Impedir o acesso não autorizado — Impeça que os agentes de ameaças obtenham acesso persistente e não autorizado ou causem falha no sistema.

  • Impedir a execução de malware— Bloqueie modificações não autorizadas e malware através da prevenção da execução binária não assinada.

  • Suporte a código autorizado — adicione código assinado e autorizado ao Junos OS com aplicação da Veriexec usando o SDK da JET. Para obter mais informações sobre a solução SDK, consulte o Guia do desenvolvedor do Juniper Extension Toolkit.

Verificar o status de aplicação da Veriexec

Em plataformas suportadas, o Junos OS oferece uma versão opcional com a aplicação Veriexec desabilitada. Para obter detalhes sobre esse recurso e seus casos de uso, consulte Automação aprimorada do Junos.

Para verificar se o Veriexec é aplicado, execute os seguintes comandos do shell CLI do Junos OS:

  1. Inicie o shell.

  2. Use o sysctl security.mac.veriexec.state comando.

    Se Veriexec for imposto, a saída será security.mac.veriexec.state: loaded active enforce. Se Veriexec não for imposto, a saída será security.mac.veriexec.state: loaded active.

Validar aplicação de arquivos Veriexec

Para verificar se a aplicação Veriexec está ativa, copie um arquivo autorizado para um local desprotegido fora do escopo do manifesto (por exemplo, /usr/bin/id) para um novo local, conforme mostrado abaixo. Veriexec impede que o arquivo copiado seja executado porque o manifesto contém uma entrada válida para /usr/bin/id , mas não para . /tmp/id Embora a cópia não altere o conteúdo do arquivo, a Veriexec valida o arquivo em relação à entrada do manifesto, incluindo seu caminho e metadados associados. Como resultado, a Veriexec bloqueia o arquivo copiado porque ele não corresponde a nenhuma entrada de manifesto protegida.

  1. Inicie o shell.

  2. Altere os diretórios e copie um arquivo autorizado, por exemplo, /usr/bin/id, para um novo local.

Resultados

Se Veriexec for imposto, o sistema gerará um erro de autenticação. Se Veriexec não for imposto, o arquivo será executado normalmente:

Saída gerada quando Veriexec não é imposto, mostrando que o arquivo copiado é executado com êxito:

Saída gerada quando Veriexec não é imposto, mostrando que o arquivo foi copiado

Instale o Veriexec Loader

O carregador compatível com Verieexec (veloader) é usado em plataformas Junos baseadas em BSDX a partir do Junos OS Release 19.2. O carregador valida as imagens do Junos OS antes que elas sejam confiáveis para inicialização. O carregador Veriexec valida a imagem do Junos OS que você instala de um servidor TFTP (Trivial File Transfer Protocol) ou de um dispositivo de armazenamento USB.

  • Para instalar uma imagem do Junos OS de um servidor TFTP, use o seguinte comando:

  • Para instalar uma imagem do Junos OS de um dispositivo de armazenamento USB, use o seguinte comando:

O carregador compatível com Verieexec valida a imagem do Junos OS.

O carregador inicializa apenas imagens do Junos OS que contêm impressões digitais e não inicializa imagens que não contêm impressões digitais ou um kernel válido. Você pode usar a nextboot função para verificar o dispositivo de inicialização atual.

Bootupgrade é uma ferramenta disponível no pacote Junos OS para oferecer suporte à atualização do firmware do BIOS. Você pode usar o bootupgrade comando shell para atualizar, verificar o U-Boot, carregar manualmente e instalar o carregador compatível com Veriexec. O bootupgrade -c loader comando imprime a cadeia de caracteres de versão do carregador atual.

Antes de instalar o carregador compatível com Veriexec, o sistema verifica se ambas as partições dual-root contêm impressões digitais do Junos OS.

Instale o carregador compatível com Verieexec a partir do shell Junos OS CLI:

  1. Inicie o shell.

  2. Use o bootupgrade -l /boot/veloader comando para instalar o carregador compatível com Veriexec.

  3. Você pode ver diferentes cenários aqui:

    • Use request system software add /var/tmp/xxx.tgz no-copy no-validate o comando para instalar o Junos OS com impressões digitais. A no-validate opção não desabilita a verificação de assinatura de pacote e o sistema continua a rejeitar pacotes inválidos.

    • Se o carregador compatível com Veriexec não oferecer suporte a uma imagem do Junos OS de destino de uma versão anterior, você poderá fazer o downgrade do carregador para uma versão compatível com essa versão. Use o request system software add /var/tmp/xxx.tgz no-copy no-validate comando para fazer downgrade automaticamente para uma versão anterior do carregador.
    • Use o request system software add /var/tmp/xxx comando para verificar se o pacote do Junos OS é compatível com o carregador Veriexec.

      Neste exemplo, o sistema encerra a instalação porque o carregador Veriexec não oferece suporte a versões do Junos OS anteriores à 20.3R1.