Signature et vérification de fichiers Veriexec pour Junos OS
Découvrez la signature et la vérification des fichiers Veriexec, ses avantages et comment l’utiliser.
Verified Exec (également appelé 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 le système d’exploitation NetBSD, veriexec a été adapté pour Junos OS et est 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 valide ne peut pas être exécuté ou lu par des applications qui nécessitent une saisie vérifiée.
Le/bin/sh fichier ne nécessite pas de saisie vérifiée. Vous pouvez utiliser ce fichier pour exécuter des scripts arbitraires. Du point de vue du risque, ces scripts sont les mêmes que les commandes interactives, qui sont 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 sans signature dans le manifeste, l’exécution de ce fichier est 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 les signatures numériques associées du manifeste sont vérifiées 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 vérifiée s’exécuteront. Les fichiers protégés ne peuvent pas être écrits, modifiés ou changés.
Chaque image d’installation contient un manifeste, qui est un fichier 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
Le message du journal est au format suivant :
/kernel:veriexec:fingerprintfordev<deviceid>,file<fileid><calculatedfingerprint>!= <fingerprintinthemanifest>
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 :
/kernel:veriexec:fingerprintfordev100728577,file70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
L’incompatibilité d’empreinte indique que le fichier a été modifié. N’essayez pas d’exécuter un tel fichier, car il pourrait contenir du code corrompu. Contactez le JTAC pour obtenir des conseils.
Avantages de Veriexec
-
Systèmes sécurisés : protégez les routeurs, les commutateurs et les pare-feu de Juniper Networks contre les failles de sécurité.
-
Empêcher les accès non autorisés : empêchez les acteurs malveillants d’obtenir des accès persistants et non autorisés ou de provoquer une défaillance du système.
-
Empêcher l’exécution des programmes malveillants : bloquez les modifications non autorisées et les logiciels malveillants en empêchant l’exécution binaire non signée.
-
Prise en charge du code autorisé : ajoutez du code signé et autorisé à Junos OS avec application veriexec à l’aide du SDK JET. Pour plus d’informations sur la solution de SDK, consultez le Guide du développeur de Juniper Extension Toolkit.
Comment vérifier si Veriexec fonctionne — Option 1
Certaines plates-formes Junos OS offrent une version optionnelle de Junos OS avec l’application veriexec désactivée. Pour plus d’informations, reportez-vous à la section Automatisation améliorée de Junos.
Les administrateurs peuvent vérifier si veriexec est appliqué en exécutant les commandes suivantes à partir du shell CLI Junos OS :
Démarrez l’interpréteur de commandes.
username@hostname> start shell %
Utilisez la
sysctl security.mac.veriexec.statecommande pour Junos OS version 15.1 et ultérieure% 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é (par exemple, /usr/bin/id) vers un nouvel emplacement comme indiqué ci-dessous. Veriexec empêche l’opération, car même si le fichier est identique, une empreinte valide n’existe que pour /usr/bin/id, pas pour /tmp/id. Pour vérifier l’intégrité du fichier, veriexec évalue les propriétés Linux sous-jacentes du fichier. Ces propriétés, plutôt que le fichier lui-même, changent après la copie du fichier vers un autre emplacement.
Démarrez l’interpréteur de commandes.
username@hostname> start shell #
Modifiez les répertoires, puis copiez un fichier autorisé, par 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é, un message d’erreur d’authentification est généré. Si un message d’erreur n’est pas généré, le fichier s’exécute normalement.
Sortie générée lorsque veriexec est appliqué, montrant que le fichier est bloqué :
# /tmp/id /bin/sh: /tmp/id: Authentication error #
Sortie générée lorsque veriexec n’est pas appliqué, montrant que le fichier est copié
# /tmp/id #
Installer Veriexec Loader
Le chargeur veriexec valide l’image Junos OS que vous installez à partir d’un serveur TFTP (Trivial File Transfer Protocol) ou d’un périphérique de stockage USB.
-
Pour installer l’image Junos OS à partir d’un serveur TFTP, utilisez la commande suivante :
loader> install tftp://[host]/package
-
Installez l’image Junos OS à partir d’un périphérique de stockage USB à l’aide de la commande suivante.
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 U-Boot, charger manuellement et installer le chargeur compatible veriexec. La bootupgrade -c loader commande imprime la chaîne de version du chargeur actuel.
Avant d’installer le chargeur compatible Veriexec sur une image Junos OS, l’identification des empreintes digitales de Junos OS est effectuée dans les deux partitions à double racine. Le chargeur compatible veriexec ne peut être installé que lorsque les deux partitions à double racine ont Junos OS avec empreintes digitales.
Installez le chargeur compatible Veriexec à partir de l’interpréteur de commandes CLI de Junos OS :
Démarrez l’interpréteur de commandes.
username@hostname> start shell %
-
Utilisez la
bootupgrade -l /boot/veloadercommande pour installer le chargeur compatible avec 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.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 le chargeur compatible avec Veriexec ne prend pas en charge les images Junos OS cibles des versions précédentes, vous pouvez rétrograder vers une version antérieure du chargeur compatible avec la version. Utilisez la
request system software add /var/tmp/xxx.tgz no-copy no-validatecommande pour rétrograder automatiquement vers une version antérieure du chargeur.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 pour l’installation avec le chargeur 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.
Dans cet exemple, vous voyez que l’installation est terminée car le chargeur veriexec n’est pas pris en charge pour les versions de Junos OS antérieures à 20.3R1.