Signature et vérification de fichiers Veriexec pour Junos OS
En savoir plus sur la signature et la vérification de fichiers Veriexec, leurs avantages et comment les utiliser sur le pare-feu SRX Series.
Verified Exec (également connu sous le nom de veriexec) est un système de signature et de vérification de fichiers qui protège le système d’exploitation Junos contre les logiciels et activités non autorisés susceptibles de compromettre l’intégrité de votre équipement. Développé à l’origine pour l’OS NetBSD, veriexec a été adapté pour Junos OS et activé par défaut.
Les fichiers autorisés, c’est-à-dire certains fichiers fournis avec Junos OS, sont associés à une empreinte digitale que veriexec vérifie pour déterminer si le fichier peut être utilisé (exécuté ou même ouvert). Tout fichier qui n’a pas d’empreinte digitale valide ne peut pas être exécuté ou lu par les applications qui nécessitent une entrée vérifiée.
Le/bin/sh ne nécessite pas d’entrée vérifiée. Il peut être utilisé pour exécuter des scripts arbitraires car, du point de vue des risques, ils sont identiques aux commandes interactives, qui sont déjà contrôlées par l’authentification et les autorisations des utilisateurs. Toutefois, si un script shell vérifié contient des instructions pour exécuter un script arbitraire, c’est-à-dire un fichier qui n’a pas de signature dans le manifeste, l’exécution de ce fichier sera empêchée.
Comment fonctionne Veriexec
Veriexec fournit au noyau un manifeste signé numériquement composé d’un ensemble d’empreintes digitales pour tous les exécutables et autres fichiers qui doivent rester immuables. Le chargeur veriexec ne transmet le contenu du manifeste au noyau que si la signature numérique du manifeste est vérifiée avec succès. Le noyau peut alors vérifier si un fichier correspond à son empreinte. Si veriexec est appliqué, seuls les exécutables avec une empreinte digitale vérifiée s’exécuteront. Il n’est pas possible d’écrire, de modifier ou de modifier les fichiers protégés.
Chaque image d’installation contient un manifeste. Le manifeste est en lecture seule. Il contient des entrées telles que les suivantes :
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
Si un fichier a été modifié et que l’empreinte résultante diffère de celle du manifeste, un message de journal, tel que l’exemple suivant s’affiche :
/kernel:veriexec:fingerprintfordev100728577,file70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
Le message de journal se présente au format suivant :
/kernel:veriexec:fingerprintfordev<deviceid>,file<fileid><calculatedfingerprint>!= <fingerprintinthemanifest>
L’incompatibilité d’empreintes digitales indique que le fichier a été modifié. N’essayez pas d’exécuter le fichier. Il peut contenir du code corrompu. Contactez le JTAC.
Avantages de Veriexec
Retrouvez ci-dessous les principaux avantages de Veriexec :
-
Protège la sécurité du système : Veriexec protège les routeurs, commutateurs et pare-feu Juniper Networks contre les failles de sécurité.
-
Empêche les accès non autorisés : Il empêche les acteurs malveillants d’obtenir un accès persistant et non autorisé ou de provoquer des défaillances du système.
-
Déjoue l’exécution de logiciels malveillants : En empêchant l’exécution de fichiers binaires non signés, il stoppe les modifications non autorisées et les logiciels malveillants.
-
Prend en charge le code autorisé : Les clients peuvent ajouter du code signé et autorisé à Junos OS avec l’application Veriexec à l’aide du SDK JET.
-
Reportez-vous au guide du SDK : Pour plus d’informations sur la solution SDK, consultez la section Développement d’applications JET sur l’appareil dans le Guide du développeur Juniper Extension Toolkit.
Comment vérifier si Veriexec est appliqué sur un périphérique exécutant Junos OS - Option 1
Les sous-sections suivantes donnent des procédures sur la façon de vérifier si veriexec est appliqué ou non.
Certaines plates-formes Junos OS proposent une version facultative de Junos OS dans laquelle l’application veriexec est désactivée (appelée Junos Enhanced Automation ou Junos Flex). Pour plus d’informations sur Junos Enhanced Automation, reportez-vous à la section Présentation des améliorations apportées à Junos Automation sur les périphériques exécutant Junos OS avec Enhanced Automation.
- Utilisez la commande sysctl security.mac.veriexec.state pour Junos OS version 15.1 et ultérieure
- Comment vérifier si Veriexec fonctionne - Option 2
- Résultats
Utilisez la commande sysctl security.mac.veriexec.state pour Junos OS version 15.1 et ultérieure
Les administrateurs peuvent vérifier si veriexec est appliqué en exécutant les commandes suivantes à partir de l’interpréteur de commandes CLI de Junos OS :
Démarrez le shell.
username@hostname> start shell %
Utilisez la
sysctl security.mac.veriexec.statecommande.% sysctl security.mac.veriexec.state security.mac.veriexec.state: loaded active enforce %
Si veriexec est appliqué, la sortie est
security.mac.veriexec.state: loaded active enforce. Si veriexec n’est pas appliqué, la sortie estsecurity.mac.veriexec.state: loaded active.
Comment vérifier si Veriexec fonctionne - Option 2
Vous pouvez confirmer si veriexec fonctionne en copiant un fichier autorisé (ici, /usr/bin/id), vers un nouvel emplacement comme indiqué ci-dessous. Veriexec bloque l’opération. /usr/bin/id a une empreinte valide, mais pas /tmp/id , même si les fichiers sont identiques. Ce qui se passe, c’est que veriexec évalue les propriétés Linux sous-jacentes du fichier, qui ne sont pas identiques après avoir été copiées, plutôt que le fichier lui-même.
Démarrez le shell.
username@hostname> start shell #
Changez de répertoire, puis copiez le fichier d’exemple, /usr/bin/id vers un nouvel emplacement.
# /usr/bin/id uid=928(username) gid=20 groups=20,0(wheel),10(field) # cp /usr/bin/id /tmp
Résultats
Si veriexec est appliqué, une erreur d’authentification s’affiche. Si ce n’est pas le cas, le fichier sera exécuté normalement.
Sortie lorsque veriexec est appliqué. Ici, le fichier est bloqué :
# /tmp/id /bin/sh: /tmp/id: Authentication error #
Sortie lorsque veriexec n’est pas appliqué. Ici, le fichier est copié :
# /tmp/id #
Chargeur compatible Veriexec pour pare-feu SRX Series
Le chargeur compatible veriexec installe une image Junos OS à l’aide de la install commande d’un serveur TFTP ou d’un périphérique de stockage USB.
-
Installez l’image Junos OS à partir d’un serveur tftp à l’aide de la
install tftp://[host]/commande install.loader> install tftp://[host]/package
-
Installez l’image Junos OS à partir d’un périphérique de stockage USB à l’aide de la commande d’installation
install file:///.loader> install file:///package
nextboot fonction pour vérifier le périphérique de démarrage actuel.
username@hostname# nextboot
Platform: srx-sword
eUSB
usb
current bootdev is: eUSB
Bootupgrade est un outil disponible dans le package Junos OS pour prendre en charge la mise à niveau du firmware du BIOS. Vous pouvez utiliser la bootupgrade commande pour mettre à niveau, vérifier uboot, charger manuellement et installer le chargeur compatible veriexec de plus grande taille. La bootupgrade -c loader commande imprime la chaîne de version du chargeur actuel.
Avant d’installer le chargeur compatible veriexec sur l’image Junos OS, une identification des empreintes Junos OS est effectuée dans les deux partitions à double racine. Ce n’est que lorsque les deux partitions à double racine ont Junos OS avec des empreintes digitales que l’installation du chargeur compatible veriexec est autorisée.
Installez le chargeur compatible veriexec à partir du shell CLI de Junos OS :
Démarrez le shell.
username@hostname> start shell %
-
Utilisez la
bootupgrade -l /boot/veloadercommande pour installer le chargeur compatible veriexec.% bootupgrade -l /boot/veloader Checking Loader CRC... veloader size 1251641 OK
Vous pouvez voir différents scénarios ici :
Utilisez
request system software add /var/tmp/xxx.tgz no-copy no-validatela commande pour installer Junos OS avec des empreintes digitales normalement.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 ...-
Pour les versions antérieures de Junos OS, si le chargeur compatible veriexec est en cours d’utilisation et que l’image Junos OS cible pour les versions précédentes n’est pas prise en charge par le chargeur compatible veriexec, utilisez la
request system software add /var/tmp/xxx.tgz no-copy no-validatecommande pour rétrograder automatiquement vers l’ancien chargeur à partir du chargeur compatible veriexec.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 ... -
Utilisez la
request system software add /var/tmp/xxxcommande pour vérifier si le package Junos OS est compatible avec l’installation.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.
L’installation est terminée car le chargeur compatible veriexec n’est pas pris en charge pour les versions de Junos OS antérieures à la version 20.3R1.