Firma y verificación de archivos Veriexec para Junos OS
Obtenga información sobre la firma y verificación de archivos de Veriexec, los beneficios y cómo usarlos.
Verified Exec (también conocido como veriexec) es un esquema de firma y verificación de archivos que protege al sistema operativo de Junos (OS) contra software y actividad no autorizados que podrían comprometer la integridad de su dispositivo. Desarrollado originalmente para el sistema operativo NetBSD, veriexec se adaptó para Junos OS y está habilitado de forma predeterminada.
Los archivos autorizados, es decir, ciertos archivos que se envían con Junos OS, tienen una huella digital asociada que verifica para determinar si el archivo se puede usar (ejecutar o incluso abrir). Cualquier archivo que carezca de una huella digital válida no puede ser ejecutado o leído por aplicaciones que requieran una entrada verificada.
El/bin/sh archivo no requiere entrada verificada. Puede utilizar este archivo para ejecutar scripts arbitrarios. Desde una perspectiva de riesgo, estos scripts son lo mismo que los comandos interactivos, que se controlan a través de la autenticación y los permisos del usuario. Sin embargo, si un script de shell verificado contiene instrucciones para ejecutar un script arbitrario, es decir, un archivo sin firma en el manifiesto, se impide la ejecución de ese archivo.
Cómo funciona Veriexec
Veriexec proporciona al kernel un manifiesto firmado digitalmente que consiste en un conjunto de huellas dactilares para todos los ejecutables y otros archivos que deben permanecer inmutables. El cargador veriexec alimenta el contenido del manifiesto al kernel solo si las firmas digitales asociadas del manifiesto se verifican con éxito. El kernel puede verificar si un archivo coincide con su huella digital. Si se aplica veriexec, solo se ejecutarán ejecutables con una huella digital verificada. Los archivos protegidos no se pueden escribir, modificar ni cambiar.
Cada imagen de instalación contiene un manifiesto, que es un archivo de solo lectura. Contiene entradas como las siguientes:
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
El mensaje de registro tiene el formato siguiente:
/kernel:veriexec:fingerprintfordev<deviceid>,file<fileid><calculatedfingerprint>!= <fingerprintinthemanifest>
Si se ha modificado un archivo y la huella digital resultante difiere de la del manifiesto, verá un mensaje de registro, como el siguiente ejemplo:
/kernel:veriexec:fingerprintfordev100728577,file70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
La falta de coincidencia de huellas dactilares indica que el archivo se ha modificado. No intentes ejecutar un archivo de este tipo, ya que podría contener código corrupto. Comuníquese con el JTAC para obtener orientación.
Beneficios de Veriexec
-
Sistemas seguros: proteja los enrutadores, conmutadores y firewalls de Juniper Networks de las infracciones de seguridad.
-
Evite el acceso no autorizado: impida que los actores de amenazas obtengan acceso persistente y no autorizado o que causen fallas en el sistema.
-
Evitar la ejecución de malware: bloquee las modificaciones no autorizadas y el malware mediante la prevención de la ejecución de binarios sin firmar.
-
Admitir código autorizado: agregue código autorizado y firmado a Junos OS con cumplimiento veriexec mediante el SDK de JET. Para obtener más información acerca de la solución SDK, consulte la Guía para desarrolladores del kit de herramientas de extensión de Juniper.
Cómo verificar si Veriexec funciona - Opción 1
Algunas plataformas de Junos OS ofrecen una versión opcional de Junos OS con la aplicación de veriexec deshabilitada. Para obtener información detallada, consulte Automatizaciσn mejorada de Junos.
Los administradores pueden comprobar si se aplica veriexec ejecutando los siguientes comandos desde el shell de la CLI de Junos OS:
Inicie la cáscara.
username@hostname> start shell %
Utilice el
sysctl security.mac.veriexec.statecomando para Junos OS versión 15.1 y posteriores% sysctl security.mac.veriexec.state security.mac.veriexec.state: loaded active enforce %
Si se aplica veriexec, el resultado es
security.mac.veriexec.state: loaded active enforce. Si no se aplica veriexec, el resultado essecurity.mac.veriexec.state: loaded active.
Cómo verificar si Veriexec funciona - Opción 2
Puede confirmar si veriexec está funcionando copiando un archivo autorizado (por ejemplo, /usr/bin/id) en una nueva ubicación como se muestra a continuación. Veriexec impide la operación, porque aunque el archivo es idéntico, solo existe una huella digital válida para /usr/bin/id, no para /tmp/id. Para comprobar la integridad del archivo, veriexec evalúa las propiedades Linux subyacentes del archivo. Estas propiedades, en lugar del archivo en sí, cambian después de copiar el archivo en otra ubicación.
Inicie la cáscara.
username@hostname> start shell #
Cambie de directorio y luego copie un archivo autorizado, por ejemplo, /usr/bin/id, a una nueva ubicación.
# /usr/bin/id uid=928(username) gid=20 groups=20,0(wheel),10(field) # cp /usr/bin/id /tmp
Resultados
Si se está aplicando veriexec, se genera un mensaje de error de autenticación. Si no se genera un mensaje de error, el archivo se ejecutará con normalidad.
Salida generada cuando se aplica veriexec, que muestra que el archivo está bloqueado:
# /tmp/id /bin/sh: /tmp/id: Authentication error #
Salida generada cuando no se aplica veriexec, que muestra que el archivo está copiado
# /tmp/id #
Instalar Veriexec Loader
El cargador veriexec valida la imagen de Junos OS que instale desde un servidor del protocolo de transferencia de archivos trivial (TFTP) o un dispositivo de almacenamiento USB.
-
Para instalar la imagen de Junos OS desde un servidor TFTP, utilice este comando:
loader> install tftp://[host]/package
-
Instale la imagen de Junos OS desde un dispositivo de almacenamiento USB mediante el siguiente comando.
loader> install file:///package
nextboot función para comprobar el dispositivo de arranque actual.
username@hostname# nextboot
Platform: srx-sword
eUSB
usb
current bootdev is: eUSB
Bootupgrade es una herramienta disponible en el paquete de Junos OS para admitir la actualización del firmware del BIOS. Puede usar el comando para actualizar, comprobar el bootupgrade U-Boot, cargar manualmente e instalar el cargador compatible con veriexec. El bootupgrade -c loader comando imprime la cadena de versión para el cargador actual.
Antes de instalar el cargador compatible con veriexec en una imagen de Junos OS, la identificación de las huellas digitales de Junos OS se lleva a cabo en ambas particiones de raíz dual. El cargador compatible con veriexec solo se puede instalar cuando ambas particiones de raíz doble tienen Junos OS con huellas digitales.
Instale el cargador compatible con veriexec desde el shell de la CLI de Junos OS:
Inicie la cáscara.
username@hostname> start shell %
-
Utilice el
bootupgrade -l /boot/veloadercomando para instalar el cargador compatible con veriexec.% bootupgrade -l /boot/veloader Checking Loader CRC... veloader size 1251641 OK
Puedes ver diferentes escenarios aquí:
Use
request system software add /var/tmp/xxx.tgz no-copy no-validatecomando para instalar Junos OS con huellas digitales.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 ...- Si el cargador con capacidad de veriexec no es compatible con las imágenes de Junos OS de destino de versiones anteriores, puede cambiar a una versión anterior del cargador compatible con la versión. Use el
request system software add /var/tmp/xxx.tgz no-copy no-validatecomando para cambiar automáticamente a una versión anterior del cargador.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 el
request system software add /var/tmp/xxxcomando para comprobar si el paquete de Junos OS es compatible para la instalación con el cargador 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.
En este ejemplo, verá que la instalación finaliza porque el cargador de veriexec no es compatible con las versiones de Junos OS anteriores a 20.3R1.