Assinatura e verificação de arquivos veriexec para o Junos OS
Saiba mais sobre a assinatura e verificação de arquivos da Veriexec, seus benefícios e como usá-lo no firewall da Série SRX.
O Exec verificado (também conhecido como veriexec) é um esquema de assinatura e verificação de arquivos que protege o sistema operacional Junos (OS) contra software e atividade não autorizados que podem comprometer a integridade do seu dispositivo. Originalmente desenvolvido para o NetBSD OS, o veriexec foi adaptado para o Junos OS e habilitado por padrão.
Arquivos autorizados, que são certos arquivos que são enviados com o Junos OS, têm uma impressão digital associada que verifica veriexec para determinar se o arquivo pode ser usado (executado ou até mesmo aberto). Qualquer arquivo que não tenha uma impressão digital válida não pode ser executado ou lido por aplicativos que exijam entrada verificada.
O/bin/sh não requer entrada verificada. Ele pode ser usado para executar scripts arbitrários porque, do ponto de vista de risco, eles são os mesmos que comandos interativos, que já são controlados por autenticação e permissões do usuário. No entanto, se um script de shell verificado contém instruções para executar um script arbitrário, ou seja, um arquivo que não tenha uma assinatura no manifesto, a execução desse arquivo será evitada.
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 apenas se a assinatura digital do manifesto for verificada com sucesso. O kernel pode então verificar se um arquivo corresponde à sua impressão digital. Se o veriexec estiver sendo aplicado, somente serão executados executáveis com uma impressão digital verificada. Os arquivos protegidos não podem ser escritos, modificados ou alterados.
Cada imagem de instalação contém um manifesto. O manifesto é somente leitura. Ele contém entradas como:
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
Se um arquivo tiver sido modificado e a impressão digital resultante difere da do manifesto, você verá uma mensagem de log, como o seguinte exemplo:
/kernel:veriexec:fingerprintfordev100728577,file70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
A mensagem de log está no seguinte formato:
/kernel:veriexec:fingerprintfordev<deviceid>,file<fileid><calculatedfingerprint>!= <fingerprintinthemanifest>
A incompatibilidade da impressão digital indica que o arquivo foi modificado. Não tente executar o arquivo. Poderia conter código corrupto. Entre em contato com a JTAC.
Benefícios da Veriexec
Veja abaixo os principais benefícios da Veriexec:
-
Protege a segurança do sistema: A Veriexec protege roteadores, switches e firewalls da Juniper Networks contra violações de segurança.
-
Impede o acesso não autorizado: Ele impede que os agentes de ameaças obtenham acesso persistente e não autorizado ou causem falhas no sistema.
-
Frustra a execução de malwares: Ao impedir a execução de binários não assinados, ele impede modificações não autorizadas e malwares.
-
Suporte a código autorizado: Os clientes podem adicionar código assinado e autorizado ao Junos OS com a aplicação da Veriexec usando o JET SDK.
-
Consulte o Guia SDK: Para obter mais informações sobre a solução SDK, consulte Desenvolva aplicativos JET no dispositivo no Guia de desenvolvedores do Extension Toolkit da Juniper.
Como verificar se o Veriexec é aplicado em um dispositivo que executa o Junos OS - Opção 1
As subseções a seguir dão procedimentos sobre como verificar se o veriexec é aplicado ou não.
Algumas plataformas do Junos OS oferecem uma versão opcional do Junos OS com aplicação veriexec desativada (conhecida como Junos Enhanced Automation ou Junos Flex). Para obter mais informações sobre o Junos Enhanced Automation, veja a visão geral dos aprimoramentos da automação do Junos em dispositivos que executam o Junos OS com automação aprimorada.
- Use o sysctl security.mac.veriexec.state Command para o Junos OS Release 15.1 e posterior
- Como verificar se o Veriexec funciona — Opção 2
- Resultados
Use o sysctl security.mac.veriexec.state Command para o Junos OS Release 15.1 e posterior
Os administradores podem verificar se o veriexec é aplicado executando os seguintes comandos da shell CLI do Junos OS:
Inicie a casca.
username@hostname> start shell %
Use o
sysctl security.mac.veriexec.state
comando.% sysctl security.mac.veriexec.state security.mac.veriexec.state: loaded active enforce %
Se o veriexec for aplicado, a saída será
security.mac.veriexec.state: loaded active enforce
. Se o veriexec não for aplicado, a saída serásecurity.mac.veriexec.state: loaded active
.
Como verificar se o Veriexec funciona — Opção 2
Você pode confirmar se o veriexec está funcionando copiando um arquivo autorizado (aqui, /usr/bin/id), para um novo local conforme mostrado abaixo. A Veriexec impede a operação porque, embora haja uma impressão digital válida para /usr/bin/id, não há impressão digital para /tmp/id , embora o arquivo seja idêntico. O que está acontecendo é que o veriexec avalia as propriedades subjacentes do Linux do arquivo, que não são idênticas após serem copiadas, e não o próprio arquivo.
Inicie a casca.
username@hostname> start shell #
Altere os diretórios e copie o arquivo de 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 o veriexec estiver sendo aplicado, aparece um erro de autenticação. Se não for, o arquivo será executado normalmente.
Saída quando o veriexec é aplicado (o arquivo é bloqueado):
# /tmp/id /bin/sh: /tmp/id: Authentication error #
Saída quando o veriexec não é aplicado (o arquivo é copiado):
# /tmp/id #
Carregador com capacidade veriexec para dispositivos da Série SRX
O carregador com capacidade veriexec instala uma imagem do Junos OS usando o install
comando de um servidor TFTP ou de um dispositivo de armazenamento USB.
Instale a imagem do Junos OS de um servidor tftp usando o comando de instalação
install tftp://[host]/
.loader> install tftp://[host]/package
Instale a imagem do Junos OS a partir de um dispositivo de armazenamento USB usando o comando de instalação
install file:///
.loader> install file:///package
O carregador com capacidade veriexec valida a imagem do Junos OS. O carregador com capacidade veriexec inicializa apenas uma nova imagem do Junos OS com impressões digitais e não inicializa a imagem existente do Junos OS sem impressões digitais ou kernel. 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 BIOS. Você pode usar o bootupgrade
comando para atualizar, verificar uboot, carregar manualmente e instalar o carregador com capacidade veriexec de tamanho maior. O bootupgrade -c loader
comando imprime a string da versão para o carregador atual.
Antes de instalar o carregador com capacidade veriexec para a imagem do Junos OS, a identificação das impressões digitais do Junos OS é realizada em ambas as partições de raiz dupla. Somente quando ambas as partições de raiz dupla têm o Junos OS com impressões digitais, a instalação de carregadores com capacidade veriexec é permitida.
Instale o carregador com capacidade veriexec da concha CLI do Junos OS:
Inicie a casca.
username@hostname> start shell %
-
Use o
bootupgrade -l /boot/veloader
comando para instalar o carregador com capacidade 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-validate
o comando para instalar o Junos OS com impressões digitais normalmente.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 ...
-
Para versões mais antigas do Junos OS, se o carregador com capacidade veriexec estiver em uso e a imagem do Junos OS alvo para versões anteriores não for suportada pelo carregador com capacidade veriexec, então use o
request system software add /var/tmp/xxx.tgz no-copy no-validate
comando para rebaixar automaticamente para o carregador antigo do carregador veriexec-compatível.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/xxx
comando para verificar se o pacote Junos OS é compatível com a instalação.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.
A instalação é terminada porque o carregador com capacidade veriexec não é suportado para versões do Junos OS antes do 20.3R1.