NESTA PÁGINA
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:
- O carregador Veriexec verifica as assinaturas digitais associadas ao manifesto.
- Após a verificação bem-sucedida, o carregador fornece o conteúdo do manifesto ao kernel.
- O sistema verifica o kernel durante a inicialização.
- 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.
- 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:
etc/rc sha1=478eeda6750c455fbfc18eeb06093e32a341911b uid=0 gid=0 mode=644 etc/rc.verify sha1=15566bb2731abee890fabd0ae8799e02071e006c uid=0 gid=0 mode=644 usr/libexec/veriexec-ext.so.1 sha1=8929292d008d12cd5beb2b9d9537458d4974dd22 uid=0 gid=0 mode=550 no_fips sbin/verify-sig sha1=cd3ffd45f30f1f9441e1d4a366955d8e2c284834 uid=0 gid=0 mode=555 no_ptrace sbin/veriexec sha1=7b40c1eae9658f4a450eb1aa3df74506be701baf uid=0 gid=0 mode=555 no_ptrace jail/usr/bin/php sha1=c444144fef5d65f7bbc376dc3ebb24373f1433a2 uid=0 gid=0 mode=555 indirect no_fips usr/sbin/chassisd sha1=61b82b36da9c6fb7eeb413d809ae2764a8a3cebc uid=0 gid=0 mode=555 trusted
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:
/kernel:veriexec:fingerprint for dev <deviceid>, file <fileid><calculatedfingerprint>!= <fingerprintinthemanifest>
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:
/kernel:veriexec:fingerprint for dev 100728577, file 70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
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:
-
Inicie o shell.
username@hostname> start shell %
-
Use o
sysctl security.mac.veriexec.statecomando.% sysctl security.mac.veriexec.state security.mac.veriexec.state: loaded active enforce %
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.
-
Inicie o shell.
username@hostname> start shell #
-
Altere os diretórios e copie um arquivo autorizado, por exemplo, /usr/bin/id, para um novo local.
# /usr/bin/id uid=928(username) gid=20 groups=20,0(wheel),10(field) # cp /usr/bin/id /tmp
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:
# /tmp/id /bin/sh: /tmp/id: Authentication error #
Saída gerada quando Veriexec não é imposto, mostrando que o arquivo foi copiado
# /tmp/id #
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:
loader> install tftp://[host]/package
-
Para instalar uma imagem do Junos OS de um dispositivo de armazenamento USB, use o seguinte comando:
loader> install file:///package
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.
username@hostname# nextboot
Platform: srx-sword
eUSB
usb
current bootdev is: eUSB
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:
-
Inicie o shell.
username@hostname> start shell %
-
Use o
bootupgrade -l /boot/veloadercomando para instalar o carregador compatível com Veriexec.% bootupgrade -l /boot/veloader Checking Loader CRC... veloader size 1251641 OK
-
Você pode ver diferentes cenários aqui:
-
Use
request system software add /var/tmp/xxx.tgz no-copy no-validateo comando para instalar o Junos OS com impressões digitais. Ano-validateopção não desabilita a verificação de assinatura de pacote e o sistema continua a rejeitar pacotes inválidos.username@hostname> request system software add /var/tmp/junos-srxsme-20.4I-20200810_dev_common.0.0833.tgz no-copy no-validate Formatting alternate root (/dev/ad0s2a)... /dev/ad0s2a: 600.0MB (1228732 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 150.00MB, 9600 blks, 19200 inodes. super-block backups (for fsck -b #) at: 32, 307232, 614432, 921632 Installing package '/altroot/cf/packages/install-tmp/junos-20.4I-20200810_dev_common.0.0833' ... Verified junos-boot-srxsme.tgz signed by PackageDevelopmentECP256_2020 method ECDSA256+SHA256 Verified junos-srxsme-domestic signed by PackageDevelopmentECP256_2020 method ECDSA256+SHA256 Verified manifest signed by PackageDevelopmentECP256_2020 method ECDSA256+SHA256 WARNING: The software that is being installed has limited support. WARNING: Run 'file show /etc/notices/unsupported.txt' for details. JUNOS 20.4I-20200810_dev_common.0.0833 will become active at next reboot WARNING: A reboot is required to load this software correctly WARNING: Use the 'request system reboot' command WARNING: when software installation is complete Saving state for rollback ... - 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-validatecomando para fazer downgrade automaticamente para uma versão anterior do carregador.username@hostname> request system software add /var/tmp/junos-srxsme-19.4R1.3.tgz no-copy no-validate WARNING: Package junos-19.4R1.3 version 19.4R1.3 is not compatible with current loader WARNING: Automatic recovering loader, please wait ... Upgrading Loader... ##################################### Verifying the loader image... OK WARNING: The new boot firmware will take effect when the system is rebooted. WARNING: Loader recover finish. Formatting alternate root (/dev/ad0s1a)... /dev/ad0s1a: 598.5MB (1225692 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 149.62MB, 9576 blks, 19200 inodes. super-block backups (for fsck -b #) at: 32, 306464, 612896, 919328 Installing package '/altroot/cf/packages/install-tmp/junos-19.4R1.3' ... Verified junos-boot-srxsme-19.4R1.3.tgz signed by PackageProductionEc_2019 method ECDSA256+SHA256 Verified junos-srxsme-19.4R1.3-domestic signed by PackageProductionEc_2019 method ECDSA256+SHA256 Verified junos-boot-srxsme-19.4R1.3.tgz signed by PackageProductionEc_2019 method ECDSA256+SHA256 Verified junos-srxsme-19.4R1.3-domestic signed by PackageProductionEc_2019 method ECDSA256+SHA256 JUNOS 19.4R1.3 will become active at next reboot WARNING: A reboot is required to load this software correctly WARNING: Use the 'request system reboot' command WARNING: when software installation is complete Saving state for rollback ... -
Use o
request system software add /var/tmp/xxxcomando para verificar se o pacote do Junos OS é compatível com o carregador Veriexec.username@hostname> request system software add /var/tmp/junos-srxsme-19.4R2.3.tgz WARNING: Package junos-19.4R2.3 version 19.4R2.3 is not compatible with this system. WARNING: Please install a package with veloader support, 20.3 or higher.
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.
-