Enabling FIPS Mode
FIPS mode is not automatically enabled when you install Junos OS on the device.
As Security Administrator, you must explicitly enable FIPS mode on the device by setting the FIPS level to 1 (one), the FIPS 140-3 level at which the devices are certified. A device on which FIPS mode is not enabled has a FIPS level of 0 (zero).
To transition to FIPS mode, passwords must be encrypted with a FIPS-compliant hash algorithm. The encryption format must be SHA-256 or higher. Passwords that do not meet this requirement, such as passwords that are hashed with MD5, must be reconfigured or removed from the configuration before FIPS mode can be enabled.
To enable FIPS mode in Junos OS on the device:
- Enter configuration mode:
root@host> configure Entering configuration mode [edit] root@host#
-
Enable FIPS mode on the device by setting the FIPS level to 1, and verify the
level:
[edit] root@host# set system fips level 1
[edit] root@host#show system fips { level 1; } -
After zeroize, the factory-default configuration enables the DHCP client and
netconf-ssh. Disable the DHCP client and configure a firewall filter to restrict access to
the netconf-ssh service.
To disable DHCP service:
[edit] security-administrator@host:fips# set system processes dhcp-service disable
To configure firewall filter for netconf-ssh service:{master:0} [edit firewall family inet] security-administrator@host:fips# show filter PROTECT-NETCONF { term DENY-NETCONF { from { protocol tcp; destination-port 830; } then { discard; } } term ACCEPT-ALL { then accept; } } - Commit the configuration: Note:
If the device terminal displays error messages about the presence of critical security parameters (CSPs), delete those CSPs, and then commit the configuration.
root@host# commit configuration check succeeds [edit] 'system' reboot is required to transition to FIPS level 1 commit complete -
Reboot the device:
[edit] root@host# run request system reboot Reboot the system ? [yes,no] (no) yes
During the reboot, the device runs Known Answer Tests (KATS). It returns a login prompt:
Note:The new hash algorithm affect only those passwords that are generated after commit.
@ 1556787428 mgd start Creating initial configuration: ... mgd: Running FIPS Self-tests random: HMAC-DRBG with SHA2-512 chosen sysctl_warn_reuse: can't re-use a leaf (kern.random.hmac-drbg.hash)! mgd: Testing kernel KATS: mgd: NIST 800-90 HMAC DRBG Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: SHA-2-384 Known Answer Test: Passed mgd: SHA-2-512 Known Answer Test: Passed mgd: AES128-CMAC Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: Testing MACSec KATS: mgd: AES128-CMAC Known Answer Test: Passed mgd: AES256-CMAC Known Answer Test: Passed mgd: AES-ECB Known Answer Test: Passed mgd: AES-KEYWRAP Known Answer Test: Passed mgd: KBKDF Known Answer Test: Passed mgd: Testing libmd KATS: mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: SHA-2-512 Known Answer Test: Passed mgd: Testing OpenSSL KATS: mgd: FIPS ECDSA Known Answer Test: Passed mgd: FIPS ECDH Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-224 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: HMAC-SHA2-384 Known Answer Test: Passed mgd: HMAC-SHA2-512 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: AES-GCM Known Answer Test: Passed mgd: RSA-ENC Known Answer Test: Passed mgd: RSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: KDF-SSH-SHA256 Known Answer Test: Passed mgd: KDF-TLS12-PRF Known Answer Test: Passed mgd: KDF-TLS13-KDF-EXTRACT Known Answer Test: Passed mgd: KDF-TLS13-KDF-EXPAND Known Answer Test: Passed mgd: KDF-X942 Known Answer Test: Passed mgd: KDF-X963 Known Answer Test: Passed mgd: KAS-ECC-EPHEM-UNIFIED-NOKC Known Answer Test: Passed mgd: KAS-FFC-EPHEM-NOKC Known Answer Test: Passed mgd: Testing QuickSec 7.0 KATS: mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-224 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: HMAC-SHA2-384 Known Answer Test: Passed mgd: HMAC-SHA2-512 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: AES-GCM Known Answer Test: Passed mgd: SSH-RSA-ENC Known Answer Test: Passed mgd: SSH-RSA-SIGN Known Answer Test: Passed mgd: SSH-ECDSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: KDF-IKE-V2 Known Answer Test: Passed mgd: Testing QuickSec KATS: mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-224 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: HMAC-SHA2-384 Known Answer Test: Passed mgd: HMAC-SHA2-512 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: AES-GCM Known Answer Test: Passed mgd: SSH-RSA-ENC Known Answer Test: Passed mgd: SSH-RSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: KDF-IKE-V2 Known Answer Test: Passed mgd: Testing SSH IPsec KATS: mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: SSH-RSA-ENC Known Answer Test: Passed mgd: SSH-RSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: Testing file integrity: mgd: File integrity Known Answer Test: Passed mgd: Testing crypto integrity: mgd: Crypto integrity Known Answer Test: Passed mgd: Expect an exec Authentication error... mgd: /sbin/kats/run-tests: /sbin/kats/cannot-exec: Authentication error mgd: FIPS Self-tests Passed
Log in to the device. The CLI displays a banner that is followed by a prompt that includes “:fips”:
--- JUNOS 24.2R2.18 Kernel 64-bit JNPR-15.0-20240618.78e5114_buil root@host:fips>
-
Reboot the device again to restore the HMAC-DRBG as an active random adapter:
[edit] root@host# run request system reboot Reboot the system ? [yes,no] (no) yes
During the reboot, the device runs Known Answer Tests (KATS) as shown in the step 4. It returns a login prompt:
--- JUNOS 24.2R2.18 Kernel 64-bit JNPR-15.0-20240618.78e5114_buil root@host:fips>
- After the reboot has completed, log in and use the
show version localcommand to verify.user@host:fips> show version local Hostname: host Model: ex4400-24mp Junos: 24.2R2.18 JUNOS OS Kernel 64-bit [20241123.ec94286_builder_bsd15_242] JUNOS early ex config [20250221.075806_builder_junos_242_r2] JUNOS ex runtime [20250221.075806_builder_junos_242_r2] JUNOS ex platform support [20250221.075806_builder_junos_242_r2] JUNOS OS libs compat32 [20241123.ec94286_builder_bsd15_242] JUNOS modules [20250221.075806_builder_junos_242_r2] JUNOS OS libs [20241123.ec94286_builder_bsd15_242] JUNOS ex modules [20250221.075806_builder_junos_242_r2] JUNOS OS 32-bit compatibility [20241123.ec94286_builder_bsd15_242] JUNOS OS runtime [20241123.ec94286_builder_bsd15_242] JUNOS OS EFI boot files [20241123.ec94286_builder_bsd15_242] JUNOS OS time zone information [20241123.ec94286_builder_bsd15_242] JUNOS network stack and utilities [20250221.075806_builder_junos_242_r2] JUNOS libs [20250221.075806_builder_junos_242_r2] JUNOS py extensions [20250221.075806_builder_junos_242_r2] JUNOS py base [20250221.075806_builder_junos_242_r2] JUNOS OS package [20241014.220147_builder_main] JUNOS OS EFI runtime [20241123.ec94286_builder_bsd15_242] JUNOS OS crypto [20241123.ec94286_builder_bsd15_242] JUNOS OS boot files [20241123.ec94286_builder_bsd15_242] JUNOS SDN Software Suite [20250221.075806_builder_junos_242_r2] JUNOS jail runtime [20241123.ec94286_builder_bsd15_242] JUNOS dcp network modules [20250221.075806_builder_junos_242_r2] JUNOS libs compat32 [20250221.075806_builder_junos_242_r2] JUNOS ex libs compat32 [20250221.075806_builder_junos_242_r2] JUNOS OS network modules [20241123.ec94286_builder_bsd15_242] JUNOS daemons [20250221.075806_builder_junos_242_r2] JUNOS runtime [20250221.075806_builder_junos_242_r2] JUNOS Routing aggregated [20250221.075806_builder_junos_242_r2] JUNOS probe utility [20250221.075806_builder_junos_242_r2] JUNOS system counters [20250221.075806_builder_junos_242_r2] JUNOS Openconfig [24.2R2.18] JUNOS L2 RSI Scripts [20250221.075806_builder_junos_242_r2] JUNOS Web Management Platform Package [20250221.075806_builder_junos_242_r2] JUNOS support scripts [20250221.075806_builder_junos_242_r2] JUNOS python routing scripts for consistency check in RIB/FIB/PFE [20250221.075806_builder_junos_242_r2] JUNOS Routing mpls-oam-basic [20250221.075806_builder_junos_242_r2] JUNOS Routing lsys [20250221.075806_builder_junos_242_r2] JUNOS Routing 32-bit Compatible Version [20250221.075806_builder_junos_242_r2] JUNOS lite sysmond [20250221.075806_builder_junos_242_r2] JUNOS EX PFE LOGGING [20250221.075806_builder_junos_242_r2] JUNOS Extension Toolkit [20250221.075806_builder_junos_242_r2] JUNOS Phone-home [20250221.075806_builder_junos_242_r2] JUNOS Packet Forwarding Engine Support (EX44XX) [20250221.075806_builder_junos_242_r2] JUNOS jdocs ex [20250221.075806_builder_junos_242_r2] JUNOS ex Common BIOS [20250221.075806_builder_junos_242_r2] JUNOS dsa [20250221.075806_builder_junos_242_r2] JUNOS FIPS mode utilities [20250221.075806_builder_junos_242_r2] JUNOS na telemetry [24.2R2.18] JUNOS ex Data Plane Crypto Support [20250221.075806_builder_junos_242_r2]
Use “local” keyword for operational commands
in FIPS mode. For example, show version local, and show system uptime local.