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.
O Verified Exec (também conhecido como veriexec) é um esquema de assinatura e verificação de arquivos que protege o Sistema operacional Junos (SO) contra software e atividades não autorizadas que podem comprometer a integridade do seu dispositivo. Originalmente desenvolvido para o sistema operacional NetBSD, o veriexec foi adaptado para o Junos OS e é habilitado por padrão.
Arquivos autorizados, ou seja, certos arquivos que vêm com o Junos OS, têm uma impressão digital associada que a veriexec verifica para determinar se o arquivo pode ser usado (executado ou mesmo aberto). Qualquer arquivo que não tenha uma impressão digital válida não pode ser executado ou acessado por aplicativos que exijam entrada verificada.
O/bin/sh arquivo não requer entrada verificada. Você pode usar esse arquivo para executar scripts arbitrários. Do ponto de vista do risco, esses scripts são iguais aos comandos interativos, que são controlados por meio de autenticação e permissões do usuário. No entanto, se um script de shell verificado contiver instruções para executar um script arbitrário, ou seja, um arquivo sem uma assinatura no manifesto, a execução desse arquivo será impedida.
Como funciona a Veriexec
A Veriexec fornece ao kernel um manifesto assinado digitalmente que consiste em um conjunto de impressões digitais para todos os executáveis e outros arquivos que devem permanecer imutáveis. O carregador veriexec alimenta o conteúdo do manifesto para o kernel somente se as assinaturas digitais associadas ao manifesto forem verificadas com êxito. O kernel pode então verificar se um arquivo corresponde à sua impressão digital. Se veriexec for imposto, somente executáveis com uma impressão digital verificada serão executados. Os arquivos protegidos não podem ser gravados, modificados ou alterados.
Cada imagem de instalação contém um manifesto, que é um arquivo somente leitura. Os exemplos de impressão digital neste tópico usam hashes SHA-1 para ilustração. O algoritmo de hash usado pela Veriexec pode variar dependendo da versão e da plataforma do Junos OS. Ele 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
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, como o exemplo a seguir:
/kernel:veriexec:fingerprint for dev 100728577, file 70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
A incompatibilidade de impressão digital indica que o arquivo foi modificado. Não tente executar esse arquivo, pois ele pode conter código corrompido. 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 veriexec usando o JET SDK. Para obter mais informações sobre a solução SDK, consulte o Guia do desenvolvedor do Juniper Extension Toolkit.
Como verificar se o Veriexec funciona — Opção 1
Algumas plataformas Junos OS oferecem uma versão opcional do Junos OS com a aplicação veriexec desativada. Para obter informações detalhadas, consulte Automação aprimorada do Junos.
Os administradores podem verificar se o veriexec é aplicado executando os seguintes comandos do shell CLI do Junos OS:
-
Inicie o shell.
username@hostname> start shell %
-
Use o comando para o
sysctl security.mac.veriexec.stateJunos OS versão 15.1 e posterior% 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.
Como verificar se o Veriexec funciona — Opção 2
Você pode confirmar se veriexec está funcionando copiando um arquivo autorizado (por exemplo, /usr/bin/id) para um novo local, conforme mostrado abaixo. O Veriexec impede a operação, pois mesmo que o arquivo seja idêntico, existe uma impressão digital válida apenas para /usr/bin/id, não para /tmp/id. Embora o conteúdo do arquivo permaneça inalterado após ser copiado, a veriexec valida o arquivo em relação às informações armazenadas no manifesto, incluindo o caminho do arquivo e os metadados associados. Como resultado, o arquivo copiado não corresponde a uma entrada de manifesto protegida e é bloqueado.
-
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 estiver sendo imposto, uma mensagem de erro de autenticação será gerada. Se uma mensagem de erro não for gerada, o arquivo será executado normalmente.
Saída gerada quando veriexec é imposto, mostrando que o arquivo está bloqueado:
# /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 veriexec valida a imagem do Junos OS que você instala a partir de um servidor TFTP (Trivial File Transfer Protocol) ou de um dispositivo de armazenamento USB.
-
Para instalar a imagem do Junos OS de um servidor TFTP, use este comando:
loader> install tftp://[host]/package
-
Instale a imagem do Junos OS de um dispositivo de armazenamento USB usando o seguinte comando.
loader> install file:///package
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 comando para atualizar, verificar o bootupgrade 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 em uma imagem do Junos OS, a identificação das impressões digitais do Junos OS é realizada em ambas as partições de raiz dupla. O carregador compatível com veriexec pode ser instalado apenas quando ambas as partições dual-root têm o Junos OS com impressões digitais.
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.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 suportar as imagens do Junos OS de destino de versões anteriores, você poderá fazer o downgrade para uma versão anterior do carregador compatível com a 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 V erified 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 Junos OS é compatível com a instalação 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 veloadr support, 20.3 or higher.
Neste exemplo, você vê que a instalação foi encerrada porque o carregador veriexec não é suportado para versões do Junos OS anteriores à 20.3R1.
-