EN ESTA PÁGINA
Firma y verificación de archivos Verified Exec (Veriexec) para Junos OS
Obtenga información sobre la firma y verificación de archivos de Veriexec, los beneficios y cómo usarlos.
Para proteger el sistema operativo de Junos (OS) del software no autorizado y de actividades que podrían comprometer la integridad del dispositivo, Verified Exec (Veriexec) proporciona un marco de verificación y firma de archivos que garantiza que solo se ejecute software autorizado y confiable. Junos OS adapta el marco Veriveec, desarrollado originalmente para NetBSD, y lo habilita de forma predeterminada para ayudar a garantizar la integridad del software a través de la verificación de archivos.
Veriexec utiliza una huella digital asociada con cada archivo autorizado de Junos OS para verificar su integridad y determinar si el archivo se puede abrir o ejecutar.
Veriexec ayuda a proteger los componentes críticos del software al verificar su integridad antes de que sean utilizados por el sistema, incluyendo:
- El kernel
- Módulos del kernel
- Archivos ejecutables
- Bibliotecas compartidas
- Paquetes de software
- Otros archivos del sistema protegidos
Cómo funciona Veriexec
Veriexec usa un manifiesto firmado digitalmente que contiene huellas digitales de ejecutables y otros archivos que deben permanecer inmutables.
El proceso de verificación suele seguir estos pasos:
- El cargador de Veriexec verifica las firmas digitales asociadas con el manifiesto.
- Después de una verificación exitosa, el cargador proporciona el contenido del manifiesto al kernel.
- El sistema verifica el kernel durante el inicio.
- El sistema verifica los módulos del kernel cuando se cargan, ya sea durante el inicio o durante la operación del sistema.
- El kernel verifica que los archivos coincidan con sus huellas dactilares esperadas antes de permitir su uso.
Veriexec requiere que el kernel, la imagen del sistema de archivos raíz y los módulos del kernel pasen la verificación antes de que el sistema pueda usarlos.
Si la aplicación de Veriexec está habilitada, solo se pueden ejecutar ejecutables con huellas dactilares verificadas. Además, los archivos protegidos no se pueden escribir, modificar ni cambiar.
Alcance de la verificación
Veriexec verifica la integridad del software en múltiples etapas:
| Componente | Etapa de verificación |
| Núcleo | Durante el inicio del sistema |
| Imagen raíz del sistema de archivos | Durante el inicio del sistema |
| Módulos del kernel | Cuando se carga durante el inicio o el tiempo de ejecución |
| Paquetes de software | Antes de la instalación |
| Archivos protegidos | Durante el tiempo de ejecución antes del uso |
Antes de la instalación, el marco Veriexec verifica que un paquete de software no haya sido alterado y que se pueda confiar en él. La verificación de paquetes y la verificación en tiempo de ejecución utilizan el mismo marco Veriexec y admiten los mismos algoritmos hash.
Consideraciones sobre la ejecución de scripts
-
Veriexec bloquea un script de shell verificado para que no ejecute un script sin firmar que no aparece en el manifiesto.
-
Puede usar el archivo /bin/sh para ejecutar scripts arbitrarios. Desde una perspectiva de seguridad, estos scripts se tratan de manera similar a los comandos interactivos porque la ejecución se controla a través de la autenticación y los permisos del usuario.
Fallas de verificación
Si falta una huella digital o es incorrecta, el cargador o el kernel rechazan el archivo. El impacto depende del tipo de archivo y su función en el sistema.
Cuando la verificación falla:
- El cargador o kernel rechaza el archivo afectado.
- El impacto varía en función de la importancia del archivo.
- De forma predeterminada, el cargador omite los archivos que no superan la verificación.
- Opcionalmente, puede configurar el cargador para detener el proceso de arranque cuando encuentre un hash incorrecto.
Algoritmos de manifiesto y hash
Cada imagen de instalación contiene un manifiesto de solo lectura que almacena las huellas digitales y los atributos relacionados de los archivos protegidos.
Los ejemplos de huellas digitales de este tema utilizan hash SHA-1 solo con fines ilustrativos. Veriexec admite algoritmos hash SHA-1, SHA-256, SHA-384 y SHA-512. La versión y la plataforma de Junos OS determinan qué algoritmo hash utiliza Veriexec para la verificación.
El manifiesto identifica cada archivo protegido y almacena su huella digital esperada y los atributos asociados. El manifiesto 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
Huellas dactilares no coincidentes y mensajes de registro
Cuando la huella digital calculada de un archivo no coincide con la huella digital almacenada en el manifiesto, Veriexec genera un mensaje de registro.
El mensaje de registro tiene el formato siguiente:
/kernel:veriexec:fingerprint for dev <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 similar al siguiente:
/kernel:veriexec:fingerprint for dev 100728577, file 70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
Una no coincidencia de huellas digitales indica que el contenido del archivo no coincide con la huella digital de confianza almacenada en el manifiesto. Esta discrepancia puede producirse debido a daños en los archivos, problemas de almacenamiento o modificaciones no autorizadas.
No se puede confiar en los archivos críticos que no pasan la verificación. 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 firmado y autorizado a Junos OS con la aplicación de Veriexec mediante el uso del 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.
Verifique el estado de cumplimiento de Veriexec
En las plataformas compatibles, Junos OS ofrece una versión opcional con la aplicación de Veriexec deshabilitada. Para obtener más información sobre esta función y sus casos de uso, consulte Automatizaciσn mejorada de Junos.
Para comprobar si se aplica Veriveec, ejecute los siguientes comandos desde el shell de la CLI de Junos OS:
-
Inicie la cáscara.
username@hostname> start shell %
-
Use el
sysctl security.mac.veriexec.statecomando.% sysctl security.mac.veriexec.state security.mac.veriexec.state: loaded active enforce %
Si se aplica Verexec, el resultado es
security.mac.veriexec.state: loaded active enforce. Si no se aplica Verexec, el resultado essecurity.mac.veriexec.state: loaded active.
Valide la aplicación de archivos de Veriexec
Para comprobar que la aplicación de Veriexec está activa, copie un archivo autorizado en una ubicación no protegida fuera del ámbito del manifiesto (por ejemplo, /usr/bin/id) en una nueva ubicación, como se muestra a continuación. Veriexec impide que el archivo copiado se ejecute porque el manifiesto contiene una entrada válida para /usr/bin/id pero no para /tmp/id. Aunque la copia no cambia el contenido del archivo, Veriexec valida el archivo con la entrada del manifiesto, incluida su ruta y los metadatos asociados. Como resultado, Veriexec bloquea el archivo copiado porque no coincide con ninguna entrada de manifiesto protegida.
-
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 aplica Verexec, el sistema genera un error de autenticación. Si no se aplica Veriveec, el archivo se ejecuta normalmente:
Salida generada cuando no se aplica Veriveec, que muestra que el archivo copiado se ejecuta correctamente:
# /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 con capacidad de Veriexec (veloader) se utiliza en plataformas de Junos basadas en BSDX a partir de Junos OS versión 19.2. El cargador valida las imágenes de Junos OS antes de que se confíen en ellas para el arranque. El cargador de 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 una imagen de Junos OS desde un servidor TFTP, utilice el siguiente comando:
loader> install tftp://[host]/package
-
Para instalar una imagen de Junos OS desde un dispositivo de almacenamiento USB, utilice el siguiente comando:
loader> install file:///package
El cargador inicia solo imágenes de Junos OS que contengan huellas digitales y no arranca imágenes que no contengan huellas digitales o un kernel válido. Puede utilizar la 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 de shell para actualizar, verificar 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, el sistema verifica que ambas particiones de raíz doble contengan huellas digitales de Junos OS.
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. Lano-validateopción no deshabilita la verificación de firma de paquetes y el sistema continúa rechazando paquetes no vá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 ... - Si el cargador compatible con Veriexec no admite una imagen de Junos OS de destino de una versión anterior, puede degradar el cargador a una versión que sea compatible con esa 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 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 el
request system software add /var/tmp/xxxcomando para comprobar si el paquete de Junos OS es compatible con el cargador de Veriveec.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.
En este ejemplo, el sistema finaliza la instalación porque el cargador de Veriexec no es compatible con versiones de Junos OS anteriores a la 20.3R1.
-