Select any two versions of this STIG to compare the individual requirements
Select any old version/release of this STIG to view the previous requirements
Note: This requirement is not applicable to file transfer actions such as SCP and SFTP. Review the router configuration to determine if concurrent SSH sessions are limited as show in the example below: system { services { ssh { max-sessions-per-connection 1; connection-limit 2; } } Note: the max-sessions-per-connection must be set to 1 to limit the number of sessions per connection which is limited by the connection-limit. If the router is not configured to limit the number of concurrent sessions, this is a finding.
Configure the router to limit the number of concurrent sessions as shown in the example below: [edit system services] set ssh connection-limit 2 set ssh max-sessions-per-connection 1
Review the router configuration to determine if it audits account creation. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: system { syslog { file LOG_FILE { change-log info; } } } Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } file LOG_FILE { change-log info; } console { any error; } } } If account creation is not audited, this is a finding.
Configure the router to audit the creation of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: [edit system] set syslog file LOG_FILE change-log info Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to determine if it audits account modification. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: system { syslog { file LOG_FILE { change-log info; } } } Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } file LOG_FILE { change-log info; } console { any error; } } } If account modification is not audited, this is a finding.
Configure the router to audit the modification of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: [edit system] set syslog file LOG_FILE change-log info Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to determine if it audits the disabling of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: system { syslog { file LOG_FILE { change-log info; } } } Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } file LOG_FILE { change-log info; } console { any error; } } } If the disabling of accounts is not audited, this is a finding. Note: Accounts can be disabled by changing the assigned class to unauthorized (no permissions).
Configure the router to audit the disabling of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: [edit system] set syslog file LOG_FILE change-log info Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to determine if it audits the deletion of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: system { syslog { file LOG_FILE { change-log info; } } } Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } file LOG_FILE { change-log info; } console { any error; } } } If the deletion of accounts is not audited, this is a finding.
Configure the router to audit the deletion of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: [edit system] set syslog file LOG_FILE change-log info Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to verify that it is compliant with this requirement. Step 1: Verify that an input filter has been configured for the loopback interfaces as shown in the example below. interfaces { … … … } lo0 { unit 0 { family inet { filter { input RESTRICT_MGMT_ACCESS; } address 2.2.2.2/32; } } } } Step 2: Verify that the filter restricts management traffic. The configuration example below restricts management access to specific IP addresses via SSH. filter RESTRICT_MGMT_ACCESS { term ALLOW_SSH { from { source-address { x.x.x.x/24; } protocol tcp; port ssh; } then accept; } term DENY_SSH { from { protocol tcp; port ssh; } then { log; discard; } } } Note: Management and control plane traffic destined to the router is punted to the routing engine. Hence, applying the filter to the loopback ensures that this traffic can be monitored regardless of the ingress physical interface. If the Juniper router is not configured to enforce approved authorizations for controlling the flow of management information within the device based on control policies, this is a finding.
Step 1: Configure the router to restrict management access to specific IP addresses via SSH as shown in the example below. [edit firewall family inet] set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH from source-address x.x.x.x/24 set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH from protocol tcp set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH from port ssh set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH then accept set filter RESTRICT_MGMT_ACCESS term DENY_SSH from protocol tcp set filter RESTRICT_MGMT_ACCESS term DENY_SSH from port ssh set filter RESTRICT_MGMT_ACCESS term DENY_SSH then log set filter RESTRICT_MGMT_ACCESS term DENY_SSH then discard Step 2: Apply the filter to the loopback interface. [edit interfaces lo0 unit 0 family inet] set filter input RESTRICT_MGMT_ACCESS Note: Management and control plane traffic destined to the router is punted to the routing engine. Hence, applying the filter to the loopback ensures that this traffic can be monitored regardless of the ingress physical interface. Step 1: Configure the router to restrict management access to specific IP addresses via SSH as shown in the example below. [edit firewall family inet] set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH from source-address x.x.x.x/24 set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH from protocol tcp set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH from port ssh set filter RESTRICT_MGMT_ACCESS term ALLOW_SSH then accept set filter RESTRICT_MGMT_ACCESS term DENY_SSH from protocol tcp set filter RESTRICT_MGMT_ACCESS term DENY_SSH from port ssh set filter RESTRICT_MGMT_ACCESS term DENY_SSH then log set filter RESTRICT_MGMT_ACCESS term DENY_SSH then discard Step 2: Apply the filter to the loopback interface. [edit interfaces lo0 unit 0 family inet] set filter input RESTRICT_MGMT_ACCESS Note: Management and control plane traffic destined to the router is punted to the routing engine. Hence, applying the filter to the loopback ensures that this traffic can be monitored regardless of the ingress physical interface.
Review the router configuration to verify that it enforces the limit of three consecutive invalid logon attempts after which time it will lockout the user account from accessing the router for 15 minutes as shown in the example below. login { retry-options { tries-before-disconnect 3; lockout-period 15; } If the router is not configured to enforce the limit of three consecutive invalid logon attempts after which time it will lockout the user account from accessing the router for 15 minutes, this is a finding.
Configure the router to enforce the limit of three consecutive invalid logon attempts and lock out the user account from accessing the device for 15 minutes as shown in the example below. [edit system login] set retry-options tries-before-disconnect 3 set retry-options lockout-period 15
Review the router configuration to verify that it is compliant with this requirement as shown in the example below: System { } login { message "You are accessing a U.S. Government (USG) Information System (IS) that is provided\nfor USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the\nfollowing conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes\nincluding, but not limited to, penetration testing, COMSEC monitoring, network\noperations and defense, personnel misconduct (PM), law enforcement (LE), and\ncounterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine\nmonitoring, interception, and search, and may be disclosed or used for any USG-\nauthorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect\nUSG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI\ninvestigative searching or monitoring of the content of privileged communications, or\nwork product, related to personal representation or services by attorneys,\npsychotherapists, or clergy, and their assistants. Such communications and work product\nare private and confidential. See User Agreement for details."; } If the router is not configured to display the Standard Mandatory DoD Notice and Consent Banner before granting access to the device, this is a finding.
Configure the router to display the Standard Mandatory DoD Notice and Consent Banner before granting access as shown in the following example: [edit system login] set message "You are accessing a U.S. Government (USG) Information System (IS) that is provided\nfor USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the\nfollowing conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes\nincluding, but not limited to, penetration testing, COMSEC monitoring, network\noperations and defense, personnel misconduct (PM), law enforcement (LE), and\ncounterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine\nmonitoring, interception, and search, and may be disclosed or used for any USG-\nauthorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect\nUSG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI\ninvestigative searching or monitoring of the content of privileged communications, or\nwork product, related to personal representation or services by attorneys,\npsychotherapists, or clergy, and their assistants. Such communications and work product\nare private and confidential. See User Agreement for details."
Review the router configuration to determine if it logs configuration changes as shown in the following example: system { syslog { file LOG_FILE { change-log info; } } } Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } file LOG_FILE { change-log info; } console { any error; } } } If configuration change activity is not logged, this is a finding.
Configure the router to log configuration changes as shown in the following example: set syslog file LOG_FILE change-log info Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to verify that it is compliant with this requirement. The configuration example below will log all logon attempts. syslog { file LOG_FILE { authorization info; } } Note: The parameter "any" can be in place of "authorization" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } } } If the router is not configured to generate audit records when successful/unsuccessful attempts to logon, this is a finding.
Configure the router to log all logon attempts as shown in the example below. [edit system] set syslog file LOG_FILE authorization info Note: The parameter "any" can be in place of "authorization" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to verify that it is compliant with this requirement. The configuration example below will log all configuration changes. syslog { file LOG_FILE { change-log info; } } Note: The parameter "any" can be in place of "change-log" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } } } If the router is not configured to generate audit records of configuration changes, this is a finding.
Configure the router to log all configuration changes as shown in the example below. [edit system] set syslog file LOG_FILE change-log info Note: The parameter "any" can be in place of "change-log" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to verify that it is compliant with this requirement. The configuration example below allows only users belonging to the AUDITOR class to configure the logging parameters. system { login { class AUDITOR { permissions [configure view-configuration]; allow-configuration "(system syslog)"; } class SR_ENGINEER { permissions all; deny-configuration "(system syslog)"; } } } If the router is not configured to protect audit information from unauthorized modification, this is a finding.
Create a login class that provides the permission to configure logging parameters as well as a classes that do not allow configuration of logging parameters as shown in the example below. [edit system] set login class AUDITOR permissions [configure view-configuration] set login class AUDITOR allow-configuration "(system syslog)" set login class SR_ENGINEER permissions all set login class SR_ENGINEER deny-configuration "(system syslog)"
Review the router configuration to verify that it is compliant with this requirement. The configuration example below depicts a class "JR_ENGINEER" which does not permit users belonging to the class to delete files or make changes to logging parameters. login { class JR_ENGINEER { permissions all; deny-commands "(file delete)"; deny-configuration "(system syslog)"; } } Note: The predefined classes "Operator" and "Read-only" do not have permissions to delete files. If the router is not configured to protect audit information from unauthorized deletion, this is a finding.
Configure one or more classes as shown in the example below whose users will not be permitted to delete files or make changes to logging parameters. [edit system] set login class JR_ENGINEER permissions all set login class JR_ENGINEER deny-configuration "(system syslog)" set login class JR_ENGINEER deny-commands “(file delete)”
Review the router configuration to verify that it is compliant with this requirement. The configuration example below depicts a class JR_ENGINEER that is not permitted to add, change, or delete software installed on the router. login { class JR_ENGINEER { permissions all; deny-commands "request system software"; } Note: The following are the options under request system software: abort - Abort software upgrade add - Add extension or upgrade package delete - Remove extension or upgrade package rollback - Roll back to previous set of packages validate - Verify package compatibility with current configuration If the router is not configured to limit privileges to change the software resident within software libraries, this is a finding.
Configure one or more classes as shown in the example below whose users will not be permitted to add, change, or delete software installed on the router. [edit system] set login class JR_ENGINEER permissions all set login class JR_ENGINEER deny-commands “(request system software)” Note: The predefined classes "operator" and "Read-only" do not have permissions to install or delete software.
Review the services that have been enabled as shown in the following configuration example: services { finger; telnet; xnm-clear-text; netconf { ssh; } } Services such as finger, telnet, and clear text-based JUNOScript connections should never be enabled. Other services such as Netconf, FTP, DHCP, and SSL-based JUNOScript connections should only be enabled if operationally required. If the router is not configured to prohibit the use of all unnecessary and non-secure functions and services, this is a finding.
Disable the following services if enabled as shown in the example below. [edit system services] delete telnet delete finger delete xnm-clear-text
Review the router configuration to verify that a local account for last resort has been configured as shown in the following example: system { authentication-order radius; } login { class ENGINEER { permissions all; deny-commands "(file delete)"; deny-configuration "(system syslog)"; } user Last_Resort { uid 2000; class ENGINEER; authentication { encrypted-password "$1$CYrhql/I$v2ydLnac9EPdA1F/KvROT1"; ## SECRET-DATA } } Note: If there is no response from the authentication server, JUNOS will authenticate using a local account as last resort. It is recommended to not configure password at the end of the authentication order, as JUNOS will attempt to authenticate using a local account upon a rejection from the authentication server if password is in the authentication order. The last resort account is used when the authentication server is down. If the router is not configured with only one local account to be used as the account of last resort in the event the authentication server is unavailable, this is a finding.
Step 1: Configure a class with the necessary privileges to troubleshoot network outage and restore operations as shown in the following example: [edit system] set login class ENGINEER permissions all set login class ENGINEER deny-configuration "(system syslog)" set login class ENGINEER deny-commands “(file delete)” Step 2: Assign the account of last resort to the ENGINEER class. set user LAST_RESORT class ENGINEER authentication plain-text-password New password: xxxxxxxxxxxxx Step 3: Configure the authentication order to use the local account if the authentication server is not reachable as shown in the example below. [edit system] set authentication-order radius Note: If there is no response from the authentication server, JUNOS will authenticate using a local account as last resort. It is recommended to not configure password at the end of the authentication order, as JUNOS will attempt to authenticate using a local account upon a rejection from the authentication server if password is in the authentication order. The last resort account is used when the authentication server is down.
Review the router configuration to verify that SSH is configured to use FIPS-140-2 compliant HMACs as shown in the example below. system { … … … services { ssh { protocol-version v2; macs [hmac-sha2-256 hmac-sha2-512]; } Note: An SSH configuration enables a server and client to authorize the negotiation of only those algorithms that are configured from the allowed list. If a remote party tries to negotiate using an algorithm that is not part of the allowed list, the request is rejected and the session is not established. If the router is not configured to implement replay-resistant authentication mechanisms for network access to privileged accounts, this is a finding.
Configure SSH to use FIPS-140-2 compliant HMACs as shown in the example below. [edit system services] set ssh protocol-version v2 set ssh macs [hmac-sha2-256 hmac-sha2-512] Note: An SSH configuration enables a server and client to authorize the negotiation of only those algorithms that are configured from the allowed list. If a user tries to negotiate using an algorithm that is not part of the allowed list, the request is rejected and the session is not established.
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { … … … login { password { minimum-length 15; } } If the router is not configured to enforce a minimum 15-character password length, this is a finding.
Configure the router to enforce a minimum 15-character password length as shown in the example below. [edit system login] set password minimum-length 15
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { … … … login { password { minimum-upper-cases 1; } } If the router is not configured to enforce password complexity by requiring that at least one uppercase character be used, this is a finding.
Configure the router to enforce password complexity by requiring that at least one uppercase character be used as shown in the example below. [edit system login] set password minimum-upper-cases 1
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { … … … login { password { minimum-lower-cases 1; } } If the router is not configured to enforce password complexity by requiring that at least one lowercase character be used, this is a finding.
Configure the router to enforce password complexity by requiring that at least one lowercase character be used as shown in the example below. [edit system login] set password minimum-lower-cases 1
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { … … … login { password { minimum-numerics 1; } } If the router is not configured to enforce password complexity by requiring that at least one numeric character be used, this is a finding.
Configure the router to enforce password complexity by requiring that at least one numeric character be used as shown in the example below. [edit system login] set password minimum-numerics 1
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { … … … login { password { minimum-punctuations 1; } } If the router is not configured to enforce password complexity by requiring that at least one special character be used, this is a finding.
Configure the router to enforce password complexity by requiring that at least one special character be used as shown in the example below. [edit system login] set password minimum-punctuations 1
Review the router configuration to verify that all login classes have the idle-timeout value to five minutes or less as shown in the following example: system { … … … } login { class ADMIN { idle-timeout 5; permissions admin-control; } } If the router is not configured to terminate all network connections associated with a device management after five minutes of inactivity, this is a finding.
Set the idle timeout value to five minutes or less on all configured login classes as shown in the example below. [edit system login] set class ADMIN idle-timeout 5
Review the router configuration to determine if it audits the enabling of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: system { syslog { file LOG_FILE { change-log info; } } } Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } file LOG_FILE { change-log info; } console { any error; } } } If the enabling of accounts is not audited, this is a finding. Note: Accounts can be disabled by changing the assigned class to unauthorized (no permissions). Hence, accounts can be enabled by changing the assigned class for the user to a class other than unauthorized.
Configure the router to audit the enabling of accounts. This requirement can be met by ensuring that configuration changes are logged as shown in the following example: set syslog file LOG_FILE change-log info Note: The parameter “any” can be in place of “change-log” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info Note: Accounts can be disabled by changing the assigned class to unauthorized (no permissions). Hence, accounts can be enabled by changing the assigned class for the user to a class other than unauthorized.
Review the router configuration to verify that it is compliant with this requirement. The configuration example below will log all commands entered from the command line interface as well as log all configuration changes. syslog { file LOG_FILE { interactive-commands; change-log info } } Note: The parameter "any" can be in place of configuring specific events as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host 10.1.58.2 { any info; } } If the router is not configured to log all commands entered from the command line interface as well as log all configuration changes, this is a finding.
Configure the router to log all commands entered from the command line interface as well as log all configuration changes as shown in the following example: [edit system] set syslog file LOG_FILE interactive-commands set syslog file LOG_FILE change-log info Note: The parameter "any" can be in place of configuring specific events as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host 10.1.58.2 any info
Review the router configuration to verify that it is compliant with this requirement. The configuration example below specifies 12 archive log files and the maximum size of the active log file to be reached prior to archiving. syslog { file LOG_FILE { any info; archive size 1000000 files 12; } } Note: To prevent log files from growing too large, by default the Junos logging utility writes messages to a sequence of files of a defined size. The files in the sequence are referred to as archive files to distinguish them from the active file to which messages are currently being written. The default maximum size depends on the platform type. By default, the logging utility creates up to 10 archive files in this manner. When the maximum number of archive files is reached and when the size of the active file reaches the configured maximum size, the contents of the last archived file are overwritten by the current active file. If the router is not configured to allocate audit record storage capacity in accordance with organization-defined audit record storage requirements, this is a finding.
Configure the number or archive files and the maximum size of the active log file to be reached prior to archiving as shown in the example below. [edit system] set syslog file LOG_FILE any info set syslog file LOG_FILE archive files 12 size 1000000
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { syslog { host x.x.x.x { any critical; } } Note: The parameter "critical" can be replaced with a lesser severity level (i.e., error, warning, notice, info). If the router is not configured to generate an alert for all audit failure events, this is a finding.
Configure the router to send critical to emergency log messages to the syslog server as shown in the example below. set syslog host x.x.x.x any critical Note: The parameter "critical" can replaced with a lesser severity level (i.e., error, warning, notice, info).
Review the router configuration to verify that it is compliant with this requirement as shown in the configuration example below. system { … … … } ntp { server x.x.x.x prefer; server x.x.x.x; } If the router is not configured to synchronize its clock with redundant authoritative time sources, this is a finding.
Configure the router to synchronize its clock with redundant authoritative time sources as shown in the example below. [edit system ntp] set server x.x.x.x set server x.x.x.x prefer
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { time-zone UTC; Note: UTC is the default; hence, the command set time-zone may not be seen in the configuration. This can be verified using the show system uptime command. If the router is not configured record time stamps for log records that can be mapped to UTC or GMT, this is a finding.
[edit system] set time-zone UTC
Review the router configuration to verify that it is compliant with this requirement. The configuration example below depicts a class JR_ENGINEER that is not permitted to add or change software installed on the router. login { class JR_ENGINEER { permissions all; deny-commands "request system software"; } Note: The following are the options under request system software: abort -Abort software upgrade add -Add extension or upgrade package delete -Remove extension or upgrade package rollback -Roll back to previous set of packages validate -Verify package compatibility with current configuration If the router is not configured to prohibit installation of software without explicit privileged status, this is a finding.
Configure one or more classes as shown in the example below whose users will not be permitted to add or change software installed on the router. [edit system] set login class JR_ENGINEER permissions all set login class JR_ENGINEER deny-commands “(request system software)” Note: The predefined classes operator and Read-only do not have permissions to install software.
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. snmp { v3 { usm { local-engine { user R5_NMS { authentication-sha { authentication-key "$8$vOiLX-Vb2oaUwsJDiHmPz3690BcSevM"; ## SECRET-DATA } } } } target-address NMS_HOST { address x.x.x.x; address-mask 255.255.255.0; tag-list NMS; target-parameters TP1; } target-parameters TP1 { parameters { message-processing-model v3; security-model usm; security-level authentication; security-name R5_NMS; } } notify SEND_TRAPS { type trap; tag NMS; } snmp-community index1 { security-name R5_NMS; tag NMS; } } } If the router is not configured to authenticate SNMP messages using a FIPS-validated HMAC, this is a finding.
Configure the router to authenticate SNMP messages as shown in the example below. [edit snmp] set v3 usm local-engine user R5_NMS authentication-sha authentication-password xxxxxxxxxx set v3 target-address NMS_HOST address x.x.x.x edit v3 target-address NMS_HOST [edit snmp v3 target-address NMS_HOST] set address-mask 255.255.255.0 set tag-list NMS set target-parameters TP1 exit [edit snmp] set v3 target-parameters TP1 parameters message-processing-model v3 set v3 target-parameters TP1 parameters security-model usm set v3 target-parameters TP1 parameters security-name R5_NMS set v3 target-parameters TP1 parameters security-level authentication set v3 snmp-community index1 security-name R5_NMS tag NMS set v3 notify SEND_TRAPS type trap tag NMS
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. snmp { v3 { usm { local-engine { user R5_NMS { authentication-sha { authentication-key "$8$vOiLX-Vb2oaUwsJDiHmPz3690BcSevM"; ## SECRET-DATA } privacy-aes128 { privacy-key "$8$3Q4T9CuOBESyK1IrvW87NwYgoDiPfz3nCs24Z"; ## SECRET-DATA } } } } target-address NMS_HOST { address 10.1.58.2; address-mask 255.255.255.0; tag-list NMS; target-parameters TP1; } target-parameters TP1 { parameters { message-processing-model v3; security-model usm; security-level privacy; security-name R5_NMS; } } notify SEND_TRAPS { type trap; tag NMS; } snmp-community index1 { security-name R5_NMS; tag NMS; } } } Note: SNMPv3 security level privacy also authenticates the messages using the configured HMAC. If the router is not configured to encrypt SNMP messages using a FIPS 140-2 approved algorithm, this is a finding.
Configure the router to encrypt SNMP messages using a FIPS 140-2 approved algorithm as shown in the example below. [edit snmp] set v3 usm local-engine user R5_NMS authentication-sha authentication-password xxxxxxxxxx set v3 usm local-engine user R5_NMS privacy-aes128 privacy-password xxxxxxxxxx set v3 target-address NMS_HOST address 10.1.58.2 edit v3 target-address NMS_HOST [edit snmp v3 target-address NMS_HOST] set address-mask 255.255.255.0 set tag-list NMS set target-parameters TP1 exit [edit snmp] set v3 target-parameters TP1 parameters message-processing-model v3 set v3 target-parameters TP1 parameters security-model usm set v3 target-parameters TP1 parameters security-name R5_NMS set v3 target-parameters TP1 parameters security-level privacy set v3 snmp-community index1 security-name R5_NMS tag NMS set v3 notify SEND_TRAPS type trap tag NMS Note: SNMPv3 security level privacy also authenticates the messages using the configured HMAC; hence, the authentication key must also be configured as shown in the example above.
Review the router configuration to verify that it is compliant with this requirement as shown in the configuration example below. system { … … … } ntp { authentication-key 1 type md5 value "$8$LMK7NbHkPTQnVwF/"; ## SECRET-DATA authentication-key 2 type md5 value "$8$I3KceWbwgJUH"; ## SECRET-DATA server x.x.x.x key 1 prefer; ## SECRET-DATA server x.x.x.x key 2; ## SECRET-DATA trusted-key [1 2]; } If the router is not configured to authenticate NTP sources using authentication that is cryptographically based, this is a finding.
Configure the router to authenticate NTP sources using authentication that is cryptographically based as shown in the example below. [edit system ntp] set authentication-key 1 type md5 value xxxxxxxxx set authentication-key 2 type md5 value xxxxxxxxx set server x.x.x.x key 1 prefer set server x.x.x.x key 2 set trusted-key [1 2] Note: SHA1 and SHA2-256 are supported with release 18.2.
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { … … … } services { ssh { protocol-version v2; macs hmac-sha2-256; } } If the router is not configured to use FIPS-validated HMAC to protect the integrity of remote maintenance sessions, this is a finding.
Configure SSH to use FIPS-validated HMAC for remote maintenance sessions as shown in the following example: [edit system services] set ssh protocol-version v2 set ssh macs hmac-sha2-256
Review the router configuration to verify that it is compliant with this requirement. system { … … … } services { ssh { protocol-version v2; ciphers aes128-cbc; } } If the router is not configured to implement cryptographic mechanisms to protect the confidentiality of remote maintenance sessions using a FIPS 140-2 approved algorithm, this is a finding.
Configure the router to implement cryptographic mechanisms to protect the confidentiality of remote maintenance sessions using a FIPS 140-2 approved algorithm as shown in the example below. [edit system services] set ssh ciphers aes128-cbc
Review the router configuration to verify that it is compliant with this requirement. Step 1: Verify that the loopback interfaces has been configured with an input filter. The example below defined a control plane policing (CoPP) filter named CoPP_Policy. interfaces { … … … lo0 { unit 0 { family inet { filter { input CoPP_Policy; } address 5.5.5.5/32; } } } } Step 2: Verify that the filter will protect against DoS attacks. firewall { … … … } filter CoPP_Policy { term CRITICAL { from { protocol [ ospf pim tcp ]; source-port bgp; destination-port bgp; } then policer CRITICAL; } term IMPORTANT { from { source-address { 10.1.1.0/24; } protocol tcp; destination-port [ ssh snmp ntp ]; } then { policer IMPORTANT; discard; } } term NORMAL { from { protocol icmp; icmp-type [ echo-reply echo-request ]; icmp-code [ ttl-eq-zero-during-transit port-unreachable ]; } then policer NORMAL; } term UNDESIRABLE { from { protocol udp; destination-port 1434; } then policer UNDESIRABLE; } term ALL-OTHER { from { address { 0.0.0.0/0; } } then policer ALL-OTHER; } } } Step 3: verify that policers configured will restrict bandwidth based on traffic types as shown in the example below. firewall { … … … } policer CRITICAL { filter-specific; if-exceeding { bandwidth-limit 4m; burst-size-limit 1500; } then discard; } policer IMPORTANT { filter-specific; if-exceeding { bandwidth-limit 512k; burst-size-limit 16k; } then discard; } policer NORMAL { filter-specific; if-exceeding { bandwidth-limit 64k; burst-size-limit 2k; } then discard; } policer UNDESIRABLE { filter-specific; if-exceeding { bandwidth-limit 32k; burst-size-limit 1500; } then discard; } policer ALL-OTHER { filter-specific; if-exceeding { bandwidth-limit 32k; burst-size-limit 1500; } then discard; } If the router is not configured to protect against known types of DoS attacks by employing organization-defined security safeguards, this is a finding.
Configure the router protect against known types of DoS attacks on the route processor. Implementing a CoPP policy as shown in the example below is a best practice method. Step 1: Configure policers for specific traffic types. set firewall policer CRITICAL filter-specific set firewall policer CRITICAL if-exceeding bandwidth-limit 4000000 burst-size-limit 1500 set firewall policer CRITICAL then discard set firewall policer IMPORTANT filter-specific set firewall policer IMPORTANT if-exceeding bandwidth-limit 512000 burst-size-limit 16000 set firewall policer IMPORTANT then discard set firewall policer NORMAL filter-specific set firewall policer NORMAL if-exceeding bandwidth-limit 64000 burst-size-limit 2000 set firewall policer NORMAL then discard set firewall policer UNDESIRABLE filter-specific set firewall policer UNDESIRABLE if-exceeding bandwidth-limit 32000 burst-size-limit 1500 set firewall policer UNDESIRABLE then discard set firewall policer ALL-OTHER filter-specific set firewall policer ALL-OTHER if-exceeding bandwidth-limit 32000 burst-size-limit 1500 set firewall policer ALL-OTHER then discard Step 2: Configure the CoPP filter by applying policers to the appropriate traffic types. set firewall filter CoPP_Policy term CRITICAL from protocol ospf set firewall filter CoPP_Policy term CRITICAL from protocol pim set firewall filter CoPP_Policy term CRITICAL from protocol tcp destination-port bgp set firewall filter CoPP_Policy term CRITICAL from protocol tcp source-port bgp set firewall filter CoPP_Policy term CRITICAL then policer CRITICAL set firewall filter CoPP_Policy term IMPORTANT from source-address 10.1.1.0/24 set firewall filter CoPP_Policy term IMPORTANT from protocol tcp destination-port ssh set firewall filter CoPP_Policy term IMPORTANT from protocol tcp destination-port snmp set firewall filter CoPP_Policy term IMPORTANT from protocol tcp destination-port ntp set firewall filter CoPP_Policy term IMPORTANT then policer IMPORTANT set firewall filter CoPP_Policy term IMPORTANT from protocol tcp destination-port ssh set firewall filter CoPP_Policy term IMPORTANT from protocol tcp destination-port snmp set firewall filter CoPP_Policy term IMPORTANT from protocol tcp destination-port ntp set firewall filter CoPP_Policy term IMPORTANT then discard set firewall filter CoPP_Policy term NORMAL from protocol icmp icmp-code ttl-eq-zero-during-transit set firewall filter CoPP_Policy term NORMAL from protocol icmp icmp-code port-unreachable set firewall filter CoPP_Policy term NORMAL from protocol icmp icmp-type echo-reply set firewall filter CoPP_Policy term NORMAL from protocol icmp icmp-type echo-request set firewall filter CoPP_Policy term NORMAL then policer NORMAL set firewall filter CoPP_Policy term UNDESIRABLE from protocol udp destination-port 1434 set firewall filter CoPP_Policy term UNDESIRABLE then policer UNDESIRABLE set firewall filter CoPP_Policy term ALL-OTHER from address 0.0.0.0/0 set firewall filter CoPP_Policy term ALL-OTHER then policer ALL-OTHER Step 3: Apply the CoPP filter to the loopback interface. set interface lo0 unit 0 family inet filter input CoPP_Policy
Review the router configuration to verify that it is compliant with this requirement as shown in the examples below. syslog { file LOG_FILE { change-log info; } } Note: The parameter "any" can be in place of "authorization info" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host x.x.x.x { any info; } } If the router is not configured to generate log records when administrator privileges are modified, this is a finding.
Configure the router to generate log records when account privileges are modified as shown in the example below. [edit system] set syslog file LOG_FILE change-log info Note: The parameter "any" can be in place of "change-log" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host x.x.x.x any info
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. syslog { file LOG_FILE { change-log info; } } Note: The parameter "any" can be in place of "change-log" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host x.x.x.x { any info; } } If the router is not configured to generate log records when administrator privileges are deleted, this is a finding.
Configure the router to generate log records when administrator privileges are deleted as shown in the example below. [edit system] set syslog file LOG_FILE change-log info Note: The parameter "any" can be in place of "change-log" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host x.x.x.x any info
Review the router configuration to verify that it is compliant with this requirement as shown in the examples below. syslog { file LOG_FILE { authorization info; } } Note: The parameter "any" can be in place of "authorization" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host x.x.x.x { any info; } } If the router is not configured to generate audit records when successful/unsuccessful logon attempts occur, this is a finding.
Configure the router to generate audit records when successful/unsuccessful logon attempts occur as shown in the example below. [edit system] set syslog file LOG_FILE authorization info Note: The parameter "any" can be in place of authorization" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host x.x.x.x any info
Review the router configuration to verify that it is compliant with this requirement as shown in the example configurations below. syslog { file LOG_FILE { change-log info; interactive-commands info; } } Note: The parameter "any" can be in place of "change-log" and “interactive-commands” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host x.x.x.x { any info; } } If the router is not configured to generate log records for privileged activities, this is a finding.
Configure the router to generate log records for privileged activities as shown in the example below. [edit system] set syslog file LOG_FILE change-log info set syslog file LOG_FILE interactive-commands info Note: The parameter "any" can be in place of "change-log" and “interactive-commands” as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host x.x.x.x any info
Review the router configuration to verify that it is compliant with this requirement as shown in the examples below. syslog { file LOG_FILE { authorization info; } } Note: The parameter "any" can be in place of "authorization" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. system { syslog { host x.x.x.x { any info; } } If the router is not configured to generate log records when concurrent logons from different workstations occur, this is a finding.
Configure the router to generate log records when concurrent logons from different workstations occur as shown in the example below. [edit system] set syslog file LOG_FILE authorization info Note: The parameter "any" can be in place of authorization" as this will log everything. Also, a syslog server can be configured in addition to or in lieu of logging to a file as shown in the example below. set syslog host x.x.x.x any info
Review the router configuration to verify that it is compliant with this requirement as shown in the example below. system { syslog { host x.x.x.x { any info; } } If the router is not configured to off-load log records onto a different system than the system being audited, this is a finding.
Configure the router to send log records to a syslog server as shown in the example below. [edit system] set syslog host x.x.x.x any info
Review the router configuration to verify that it is compliant with this requirement. The example below illustrates how selected events can be logged. syslog { file LOG_FILE { authorization info; security info; firewall info; change-log info; } } Note: A syslog server can be configured in lieu of logging to a file as shown in the example below. system { syslog { host x.x.x.x { authorization info; security info; firewall info; change-log info; } } If the router is not configured to generate log records for a locally developed list of auditable events, this is a finding.
Configure the router to generate log records for a locally developed list of auditable events as shown in the example below. [edit system] set syslog file LOG_FILE authorization info set syslog file LOG_FILE security info set syslog file LOG_FILE firewall info set syslog file LOG_FILE change-log info Note: A syslog server can be configured in lieu of logging to a file as shown in the example below. set syslog host x.x.x.x authorization info set syslog host x.x.x.x security info set syslog host x.x.x.x firewall info set syslog host x.x.x.x change-log info
Review the router configuration to verify that the device is configured to use at least two authentication servers as primary source for authentication as shown in the following example: system { authentication-order radius; } radius-server { x.x.x.x secret "$8$xYW-dsq.5zF/wYnC"; ## SECRET-DATA } radius-server { x.x.x.x secret "$8$xYW-dsq.5zF/wYnC"; ## SECRET-DATA } If the router is not configured to use at least two authentication servers for the purpose of authenticating users prior to granting administrative access, this is a finding.
Step 1: Configure the authentication servers as shown in the following example: [edit system] set radius-server x.x.x.x secret xxxxxxxxx set radius-server x.x.x.x secret xxxxxxxxx Step 2: Configure the authentication order to use the authentication servers as primary source for authentication as shown in the following example: set authentication-order radius Note: If there is no response from the authentication server, JUNOS will authenticate using a local account as last resort. It is recommended to not configure the password at the end of the authentication order, as JUNOS will attempt to authenticate using a local account upon a rejection from the authentication server.
Review the router configuration to verify that it is compliant with this requirement. The example configuration below will send the router configuration to an SCP server upon the commit command. system { … … … archival { configuration { transfer-on-commit; archive-sites { "scp://scpuser@1.2.3.4:/configs" password "$9$CMJKpu1LX-bwgBIYo"; ## SECRET-DATA } } } } If the router is not configured to conduct backups of the configuration when changes occur, this is a finding.
Configure the router to send the configuration to an SCP server up a commit command as shown in the example below. set archival configuration transfer-on-commit archive-sites scp://scpuser@1.2.3.4:/configs" password "xxxxxxxx"
Review the router configuration to verify that it is compliant with this requirement. The configuration below is an example of a CA profile defining name of the CA, the location of CRL for revocation check and to refresh the CRL every 24 hours, and the email address to send a certificate request. security { pki { ca-profile DODXX_CA { ca-identity xxxxx.mil; revocation-check { crl { url http://server1.xxxxx.mil/CertEnroll/example.crl; refresh-interval 24; } } administrator { email-address "certadmin@xxxxx.mil"; } } } } If the router is not configured to obtain its public key certificates from an appropriate certificate policy through an approved service provider, this is a finding.
Step 1. Create a trusted profile and email address to send certificate request to. [edit security] set pki ca-profile DODXX_CA ca-identity xxxxx.mil set pki ca-profile DODXX_CA administrator email-address certadmin@xxxxx.mil Step 2. Create a revocation check to specify a method for checking certificate revocation. set pki ca-profile DODXX_CA revocation-check crl url http://server1.example.mil/CertEnroll/example.crl set pki ca-profile DODXX_CA revocation-check crl refresh-interval 24
Verify that the router is configured to send logs to at least two syslog servers. The configuration should look similar to the example below: system { syslog { host x.x.x.x { any info; } host x.x.x.x { any info; } } If the router is not configured to send log data to the syslog servers, this is a finding.
Configure the router to send log data to the syslog servers as shown in the example below. set syslog host x.x.x.x any info set syslog host x.x.x.x any info
Verify that a master password has been configured as by entering the following command: show configuration system master-password The output will appear as follows: password-configured; Note: The master password is hidden from the configuration. If a master password has not been configured, this is a finding.
Configure the master password to be used to generate encrypted keys for shared secrets as shown in the example below. [edit] set system master-password plain-text-password Master password: xxxxxxxxxx Repeat master password: xxxxxxxxxx
Verify that the router is in compliance with this requirement by having the router administrator enter the following command: show version End of support dates for all Junos releases can be found at the URL listed below. https://support.juniper.net/support/eol/software/junos/ If the Juniper router is not running a supported Junos release, this is a finding.
Upgrade the Juniper router to a supported release.