Veriexec Dateisignatur und -überprüfung für Junos OS
Erfahren Sie mehr über die Dateisignatur und -verifizierung von Veriexec, die Vorteile und die Verwendung in der Firewall der SRX-Serie.
Verified Exec (auch bekannt als Veriexec) ist ein Signatur- und Überprüfungsschema, das das Betriebssystem Junos (OS) vor unautorisierter Software und Aktivitäten schützt, die die Integrität Ihres Geräts gefährden könnten. Ursprünglich für das NetBSD OS entwickelt, wurde veriexec für Junos OS angepasst und standardmäßig aktiviert.
Autorisierte Dateien, d. h. bestimmte Dateien, die mit Junos OS ausgeliefert werden, verfügen über einen zugehörigen Fingerabdruck, den Veriexec prüft, um festzustellen, ob die Datei verwendet (ausgeführt oder sogar geöffnet) werden kann. Dateien, die keinen gültigen Fingerabdruck haben, können nicht von Anwendungen ausgeführt oder gelesen werden, die eine verifizierte Eingabe erfordern.
Es/bin/sh ist keine verifizierte Eingabe erforderlich. Es kann zum Ausführen beliebiger Skripte verwendet werden, da sie aus Risikosicht mit interaktiven Befehlen identisch sind, die bereits durch Benutzerauthentifizierung und Berechtigungen gesteuert werden. Wenn ein überprüftes Shellskript jedoch Anweisungen zum Ausführen eines beliebigen Skripts enthält, d. h. einer Datei, die keine Signatur im Manifest hat, wird die Ausführung dieser Datei verhindert.
Funktionsweise von Veriexec
Veriexec stellt dem Kernel ein digital signiertes Manifest zur Verfügung, das aus einer Reihe von Fingerabdrücken für alle ausführbaren Dateien und andere Dateien besteht, die unveränderlich bleiben sollen. Der veriexec loader speist den Inhalt des Manifests nur dann in den Kernel ein, wenn die digitale Signatur des Manifests erfolgreich verifiziert wurde. Der Kernel kann dann überprüfen, ob eine Datei mit seinem Fingerabdruck übereinstimmt. Wenn veriexec erzwungen wird, werden nur ausführbare Dateien mit einem verifizierten Fingerabdruck ausgeführt. Die geschützten Dateien können nicht beschrieben, geändert oder geändert werden.
Jedes Installationsimage enthält ein Manifest. Das Manifest ist schreibgeschützt. Er enthält Einträge wie die folgenden:
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
Wenn eine Datei geändert wurde und sich der resultierende Fingerabdruck von dem im Manifest unterscheidet, wird eine Protokollmeldung angezeigt, die wie im folgenden Beispiel aussieht:
/kernel:veriexec:fingerprintfordev100728577,file70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
Die Protokollmeldung hat das folgende Format:
/kernel:veriexec:fingerprintfordev<deviceid>,file<fileid><calculatedfingerprint>!= <fingerprintinthemanifest>
Der Fingerabdruckkonflikt weist darauf hin, dass die Datei geändert wurde. Versuchen Sie nicht, die Datei auszuführen. Es könnte beschädigten Code enthalten. Wenden Sie sich an JTAC.
Vorteile von Veriexec
Im Folgenden finden Sie die wichtigsten Vorteile von Veriexec:
-
Schützt die Systemsicherheit: Veriexec schützt die Router, Switches und Firewalls von Juniper Networks vor Sicherheitsverletzungen.
-
Verhindert nicht autorisierten Zugriff: Es hindert Bedrohungsakteure daran, sich dauerhaften, unbefugten Zugriff zu verschaffen oder Systemausfälle zu verursachen.
-
Vereitelt die Ausführung von Malware: Durch das Verhindern der Ausführung von nicht signierten Binärdateien werden nicht autorisierte Modifikationen und Malware gestoppt.
-
Unterstützt autorisierten Code: Kunden können Junos OS signierten, autorisierten Code mit Veriexec-Erzwingung mithilfe des JET SDK hinzufügen.
-
Weitere Informationen finden Sie im SDK-Handbuch: Weitere Informationen zur SDK-Lösung finden Sie unter Entwickeln von JET-Anwendungen auf dem Gerät im Entwicklerhandbuch für das Juniper Extension Toolkit.
So überprüfen Sie, ob Veriexec auf einem Gerät mit Junos OS erzwungen wird – Option 1
In den folgenden Unterabschnitten wird beschrieben, wie Sie überprüfen können, ob veriexec erzwungen wird oder nicht.
Einige Junos OS-Plattformen bieten eine optionale Version von Junos OS mit deaktivierter Veriexec-Erzwingung (bezeichnet als Junos Enhanced Automation oder Junos Flex). Weitere Informationen zu Junos Enhanced Automation finden Sie unter Übersicht über die Verbesserungen von Junos Automation auf Geräten, auf denen Junos OS mit Enhanced Automation ausgeführt wird.
- Verwenden Sie den Befehl sysctl security.mac.veriexec.state für Junos OS Version 15.1 und höher
- So überprüfen Sie, ob Veriexec funktioniert - Option 2
- Befund
Verwenden Sie den Befehl sysctl security.mac.veriexec.state für Junos OS Version 15.1 und höher
Administratoren können überprüfen, ob veriexec erzwungen wird, indem sie die folgenden Befehle in der Junos OS CLI-Shell ausführen:
Starten Sie die Shell.
username@hostname> start shell %
Verwenden Sie den
sysctl security.mac.veriexec.stateBefehl.% sysctl security.mac.veriexec.state security.mac.veriexec.state: loaded active enforce %
Wenn veriexec erzwungen wird, lautet
security.mac.veriexec.state: loaded active enforcedie Ausgabe . Wenn veriexec nicht erzwungen wird, istsecurity.mac.veriexec.state: loaded activedie Ausgabe .
So überprüfen Sie, ob Veriexec funktioniert - Option 2
Sie können überprüfen, ob veriexec funktioniert, indem Sie eine autorisierte Datei (hier /usr/bin/id) an einen neuen Speicherort kopieren, wie unten gezeigt. Veriexec blockiert den Vorgang. /usr/bin/id hat einen gültigen Fingerabdruck, /tmp/id jedoch nicht, obwohl die Dateien identisch sind. Was passiert, ist, dass Veriexec die zugrunde liegenden Linux-Eigenschaften der Datei auswertet, die nach dem Kopieren nicht identisch sind, und nicht die Datei selbst.
Starten Sie die Shell.
username@hostname> start shell #
Wechseln Sie das Verzeichnis und kopieren Sie dann die Beispieldatei /usr/bin/id an einen neuen Speicherort.
# /usr/bin/id uid=928(username) gid=20 groups=20,0(wheel),10(field) # cp /usr/bin/id /tmp
Befund
Wenn veriexec erzwungen wird, wird ein Authentifizierungsfehler angezeigt. Ist dies nicht der Fall, wird die Datei wie gewohnt ausgeführt.
Ausgabe, wenn veriexec erzwungen wird. Hier ist die Datei blockiert:
# /tmp/id /bin/sh: /tmp/id: Authentication error #
Ausgabe, wenn veriexec nicht erzwungen wird. Hier wird die Datei kopiert:
# /tmp/id #
Veriexec-fähiger Loader für Firewalls der SRX-Serie
Der veriexec-fähige Loader installiert ein Junos OS-Image mit dem install Befehl von einem TFTP-Server oder einem USB-Speichergerät.
-
Installieren Sie das Junos OS-Image von einem TFTP-Server mit dem
install tftp://[host]/Befehl install.loader> install tftp://[host]/package
-
Installieren Sie das Junos OS-Image mit dem
install file:///Befehl install von einem USB-Speichergerät.loader> install file:///package
nextboot Funktion verwenden, um das aktuelle Boot-Gerät zu überprüfen.
username@hostname# nextboot
Platform: srx-sword
eUSB
usb
current bootdev is: eUSB
Bootupgrade ist ein Tool, das im Junos OS-Paket verfügbar ist und das BIOS-Firmware-Upgrade unterstützt. Sie können den bootupgrade Befehl verwenden, um zu aktualisieren, uboot zu überprüfen, manuell zu laden und den größeren veriexec-fähigen Loader zu installieren. Der bootupgrade -c loader Befehl gibt die Versionszeichenfolge für den aktuellen Ladeserver aus.
Bevor Sie den veriexec-fähigen Loader im Junos OS-Image installieren, wird in beiden Dual-Root-Partitionen eine Junos OS-Fingerabdruckidentifikation durchgeführt. Nur wenn beide Dual-Root-Partitionen über Junos OS mit Fingerabdrücken verfügen, ist die Veriexec-fähige Loader-Installation zulässig.
Installieren Sie den veriexec-fähigen Loader über die Junos OS CLI-Shell:
Starten Sie die Shell.
username@hostname> start shell %
-
Verwenden Sie den
bootupgrade -l /boot/veloaderBefehl, um den veriexec-fähigen Loader zu installieren.% bootupgrade -l /boot/veloader Checking Loader CRC... veloader size 1251641 OK
Hier sehen Sie verschiedene Szenarien:
Verwenden Sie
request system software add /var/tmp/xxx.tgz no-copy no-validateden Befehl, um Junos OS normal mit Fingerabdrücken zu installieren.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 ...-
Wenn bei älteren Junos OS-Versionen das veriexec-fähige Ladeprogramm verwendet wird und das Ziel-Junos OS-Image für frühere Versionen vom veriexec-fähigen Ladeprogramm nicht unterstützt wird, verwenden Sie den
request system software add /var/tmp/xxx.tgz no-copy no-validateBefehl, um automatisch ein Downgrade vom veriexec-fähigen Ladeprogramm auf den alten Ladeprogramm durchzuführen.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 ... -
Verwenden Sie den
request system software add /var/tmp/xxxBefehl, um zu überprüfen, ob das Junos OS-Paket mit der Installation kompatibel ist.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.
Die Installation wird abgebrochen, da das veriexec-fähige Ladeprogramm für Junos OS-Versionen vor 20.3R1 nicht unterstützt wird.