{"stig":{"title":"Fortinet FortiGate Firewall NDM Security Technical Implementation Guide","version":"1","release":"5"},"checks":[{"vulnId":"V-234162","ruleId":"SV-234162r960777_rule","severity":"medium","ruleTitle":"The FortiGate device must automatically audit account creation.","description":"Upon gaining access to a network device, an attacker will often first attempt to create a persistent method of reestablishing access. One way to accomplish this is to create a new account. Notification of account creation helps to mitigate this risk. Auditing account creation provides the necessary reconciliation that account management procedures are being followed. Without this audit trail, personnel without the proper authorization may gain access to critical network nodes.","checkContent":"If the System category of Event Logging is enabled, then account creation is audited. To check that System and Event Logging are enabled, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll down to Log Settings.\n4. Verify Event Logging is set to \"All\" (for most verbose logging) or \"Customize\", and includes at least the System activity event.\n\nIf Event Logging is not set to \"All\" or \"Customize\" with System enabled, then account creation will not be audited, and this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\nThe output should be: \n     set event enable\n     set system enable\n\nIf event and system parameters are set to disable, the account creation is not audited, and this is a finding.","fixText":"This fix can be performed on the FortiGate GUI or on the CLI. \nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll down to Log Settings.\n4. For Event Logging options, click \"All\" (for most verbose logging) or \"Customize\", and include at least the System activity event.\n5. Click Apply.\n\nor\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     #    set endpoint enable\n     #    set user enable\n     # end","ccis":["CCI-000018"]},{"vulnId":"V-234163","ruleId":"SV-234163r960780_rule","severity":"medium","ruleTitle":"The FortiGate device must automatically audit account modification.","description":"Since the accounts in the network device are privileged or system-level accounts, account management is vital to the security of the network device. Account management by a designated authority ensures access to the network device is being controlled in a secure manner by granting access to only authorized personnel with the appropriate and necessary privileges. Auditing account modification, along with an automatic notification to appropriate individuals, will provide the necessary reconciliation that account management procedures are being followed. If modifications to management accounts are not audited, reconciliation of account management procedures cannot be tracked.","checkContent":"If the System category of Event Logging is enabled, then account modification is audited. To check that Event and System Logging are enabled, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll down to Log Settings.\n4. Verify Event Logging is set to \"All\" (for most verbose logging) or \"Customize\", and include at least the System activity event.\n\nIf Event Logging is not set to \"All\" or \"Customize\" with System enabled, then account modification is not audited, and this is a finding.\n\nor\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # show full-configuration log eventfilter | grep -i 'event\\|system\\|user'\nThe output should be:   \n     set event enable\n     set system enable\n     set user enable\n\nIf event, system, and user parameters are set to disable, then account modification is not audited, and this is a finding.","fixText":"This fix can be performed on the FortiGate GUI or on the CLI. \nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll down to Log Settings.\n4. For Event Logging options, click \"All\" (for most verbose logging, or \"Customize\" and include at least the System activity event.\n5. Click Apply.\n\nor\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     #    set user enable\n     # end","ccis":["CCI-001403"]},{"vulnId":"V-234164","ruleId":"SV-234164r960786_rule","severity":"medium","ruleTitle":"The FortiGate device must automatically audit account removal actions.","description":"Account management, as a whole, ensures access to the network device is being controlled in a secure manner by granting access to only authorized personnel. Auditing account removal actions will support account management procedures. When device management accounts are terminated, user or service accessibility may be affected. Auditing also ensures authorized active accounts remain enabled and available for use when required.","checkContent":"If the System category of Event Logging is enabled, then account removal is audited. To check that System and Event Logging is configured, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll down to Log Settings.\n4. Verify Event Logging is set to \"All\" (for most verbose logging) or \"Customize\" and include at least the System activity event.\n\nIf the Event Logging is not set to \"All\" or \"Customize\" with System enabled, then account removal is not audited, and this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\nThe output should be:   \n     set event enable\n     set system enable\n\nIf event and system parameters are set to disable, then account removal is not audited, and this is a finding.","fixText":"This fix can be performed on the FortiGate GUI or on the CLI. \nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll down to Log Settings.\n4. For Event Logging options, click \"All\" (for most verbose logging) or \"Customize\" and include at least System activity event.\n5. Click Apply.\n\nor\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     #    set endpoint enable\n     #    set user enable\n     # end","ccis":["CCI-001405"]},{"vulnId":"V-234165","ruleId":"SV-234165r1051115_rule","severity":"medium","ruleTitle":"The FortiGate device must have only one local account to be used as the account of last resort in the event the authentication server is unavailable.","description":"Authentication for administrative (privilege-level) access to the device is required at all times. An account can be created on the device's local database for use when the authentication server is down or connectivity between the device and the authentication server is not operable. This account is referred to as the \"account of last resort\" since it is intended to be used as a last resort and when immediate administrative access is absolutely necessary.\n\nThe account of last resort logon credentials must be stored in a sealed envelope and kept in a safe. The safe must be periodically audited to verify the envelope remains sealed. The signature of the auditor and the date of the audit must be added to the envelope as a record. Administrators must secure the credentials and disable the root account (if possible) when not needed for system administration functions.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Verify the admin account is the only account configured as Type Local.\n\nIf more than one local user account exists, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Review list of administrators and determine if any besides admin have Type listed as Local\n4. For any with type Local, click Administrator, and then click Edit to change to remote authentication, or Delete to remove the administrator\n5. To change the administrator to remote authentication, in Type select \"Match a user on a remote server group\".\n6. In Remote User Group, select the appropriate configured remote user group.\n7. Click OK.\n8. Repeat for all administrators, besides admin that have local authentication listed.\n9. Click OK.","ccis":["CCI-001358","CCI-002111"]},{"vulnId":"V-234166","ruleId":"SV-234166r1137875_rule","severity":"medium","ruleTitle":"The FortiGate device must allow full access to only those individuals or roles designated by the ISSM.","description":"A mechanism to detect and prevent unauthorized communication flow must be configured or provided as part of the system design. If management information flow is not enforced based on approved authorizations, the network device may become compromised. Information flow control regulates where management information is allowed to travel within a network device. The flow of all management information must be monitored and controlled so it does not introduce any unacceptable risk to the network device or data. \n\nApplication-specific examples of enforcement occur in systems that employ rule sets or establish configuration settings that restrict information system services or message-filtering capability based on message content (e.g., implementing key word searches or using document characteristics).\n\nApplications providing information flow control must be able to enforce approved authorizations for controlling the flow of management information within the system in accordance with applicable policy.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Identify the administrator who is authorized to access System Settings and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify that the permission to System is set to Read/Write.\n\nThen,\n1. Click System.\n2. Click Administrators.\n3. Click other administrators and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify that the permission to System is set to Read or None.\n\nIf any low-privileged administrator not designated by the ISSM has Read/Write access to System, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nFirst, set a single admin profile with full System access.\n1. Click System.\n2. Click Admin Profiles.\n3. Click +Create New (Admin Profile).\n4. Assign a meaningful name to the Profile.\n5. Set System Access Permissions to Read/Write.\n6. Click OK to save this Profile.\n\nThen, \n1. Click System.\n2. Click Administrators.\n3. Click +Create New (Administrator).\n4. Configure Administrator settings with unique Username, Type, and Password.\n5. While assigning the Administrator Profile, use the Admin profile configured above with full access to System settings.\n6. Go to Restrict login to trusted hosts.\n7. Add appropriate IP address in the field Trusted Host 1.\n8. Click OK to save.\n\nNote: Do not assign this admin profile to any users other than designated administrators that are allowed full access to System Settings.\n\nTo limit the System access to existing low-privilege administrators:\n\n1. Click System.\n2. Click Administrators.\n3. Identify the admin role that has unauthorized access to System settings.\n4. Select the admin role and hover over the profile assigned to the role.\n4. Click Edit.\n5. On System access permission, click None.\n6. Go to Restrict login to trusted hosts.\n7. Add appropriate IP address in the field Trusted Host 1.\n8. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege separation requirements for the organization.","ccis":["CCI-001368"]},{"vulnId":"V-234167","ruleId":"SV-234167r961362_rule","severity":"medium","ruleTitle":"The FortiGate device must audit the execution of privileged functions.","description":"Misuse of privileged functions, either intentionally or unintentionally by authorized users, or by unauthorized external entities that have compromised information system accounts, is a serious and ongoing concern and can have significant adverse impacts on organizations. Auditing the use of privileged functions is one way to detect such misuse and identify the risk from insider threats and the advanced persistent threat.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\n\nThe output should be:   \n          set event enable\n          set system enable\n\nIf the event and system parameters are set to disable, this is a finding.","fixText":"This fix can be performed on the FortiGate GUI or on the CLI. \nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     # end","ccis":["CCI-002234"]},{"vulnId":"V-234168","ruleId":"SV-234168r960840_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce the limit of three consecutive invalid logon attempts, after which time it must lock out the user account from accessing the device for 15 minutes.","description":"By limiting the number of failed login attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-forcing, is reduced.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Confirm the output from the following command:\n     # show full-configuration system global | grep -i admin-lockout\nThe output should be:          \n          set admin-lockout-duration 900\n          set admin-lockout-threshold 3\n\nIf the admin-lockout-duration is not set to 900 and admin-lockout-threshold is not set to 3, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n     # config system global\n     # set admin-lockout-duration 900\n     # set admin-lockout-threshold 3\n     # end","ccis":["CCI-000044"]},{"vulnId":"V-234169","ruleId":"SV-234169r960843_rule","severity":"medium","ruleTitle":"The FortiGate device must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the device.","description":"Display of the DoD-approved use notification before granting access to the network device ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nSystem use notifications are required only for access via logon interfaces with human users.","checkContent":"Access the FortiGate GUI login page.\n\nVerify DoD-approved banner is displayed on the login landing page.\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n-At any time, the USG may inspect and seize data stored on this IS.\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nIf the correct DoD required banner text is not displayed, this is a finding.\n\nand\n\nOpen a CLI console via SSH and connect to the FortiGate device:\n\nVerify the FortiGate CLI displays the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via SSH.\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\nThe USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\nAt any time, the USG may inspect and seize data stored on this IS.\nCommunications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\nThis IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\nNotwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nIf the DoD-approved banner is not displayed before granting access, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n     # config system global\n     # set pre-login-banner enable\n     # end\n     # config system replacemsg admin pre_admin-disclaimer-text \n     # set buffer \"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\n          By using this IS (which includes any device attached to this IS), you consent to the following conditions:\n          The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n          At any time, the USG may inspect and seize data stored on this IS.\n          Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n          This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n          Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n         #end","ccis":["CCI-000048"]},{"vulnId":"V-234170","ruleId":"SV-234170r960846_rule","severity":"medium","ruleTitle":"The FortiGate device must retain the Standard Mandatory DoD Notice and Consent Banner on the screen until the administrator acknowledges the usage conditions and takes explicit actions to log on for further access.","description":"The banner must be acknowledged by the administrator prior to the device allowing the administrator access to the network device. This ensures the administrator has seen the message and accepted the conditions for access. If the consent banner is not acknowledged by the administrator, DoD will not be in compliance with system use notifications required by law. \n\nTo establish acceptance of the network administration policy, a click-through banner at management session logon is required. The device must prevent further activity until the administrator executes a positive action to manifest agreement.\n\nIn the case of CLI access using a terminal client, entering the username and password when the banner is presented is considered an explicit action of acknowledgement. Entering the username, viewing the banner, then entering the password is also acceptable.","checkContent":"1. Attempt to access the FortiGate device using HTTPS URL.\n2. Verify Standard Mandatory DoD Notice and Consent Banner is displayed and retained on the screen.\n3. Verify a user has to explicitly ACCEPT the banner before to log on for further access.\n\nIf Standard Mandatory DoD Notice and Consent Banner is not retained, and a user is not forced to ACCEPT the banner to log on for further access, this is a finding.\n\nAnd, \n\n1. Attempt to login to the FortiGate via SSH:\n2. Enter username.\n3. Verify the Standard Mandatory DoD Notice and Consent Banner before prompting to enter a password.\n\nIf Standard Mandatory DoD Notice and Consent Banner is not retained before entering the password to log on for further access, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system global\n     #    set pre-login-banner enable\n     # end\n     #    config system replacemsg admin pre_admin-disclaimer-text \n     #    set buffer \"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\n          By using this IS (which includes any device attached to this IS), you consent to the following conditions:\n          The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n          At any time, the USG may inspect and seize data stored on this IS.\n          Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n          This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n          Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n         # end","ccis":["CCI-000050"]},{"vulnId":"V-234171","ruleId":"SV-234171r960864_rule","severity":"medium","ruleTitle":"The FortiGate device must log all user activity.","description":"This requirement supports non-repudiation of actions taken by an administrator and is required to maintain the integrity of the configuration management process. All configuration changes to the network device are logged, and administrators authenticate with two-factor authentication before gaining administrative access. Together, these processes will ensure the administrators can be held accountable for the configuration changes they implement.\n\nTo meet this requirement, the network device must log administrator access and activity.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege:\nTo verify that logging is enabled:\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll down to Log Settings and ensure that Event Logging is set to \"All\" or \"Customize\" with System activity events checked.\n\nIf Event Logging is not set to ALL or Customize with System activity event checked, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n1. Click Log and Report.\n2. Click Log Settings.\n3. Scroll to Log Settings.\n4. For Event Logging, select ALL or Customize.\n5. If Customize is selected, ensure to configure, at least, System activity event.\n6. Click Apply.","ccis":["CCI-000166"]},{"vulnId":"V-234172","ruleId":"SV-234172r961800_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records when successful/unsuccessful attempts to modify administrator privileges occur.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the network device (e.g., module or policy filter).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\n\nThe output should be:   \n          set event enable\n          set system enable\n\nIf the event and system parameters are set to disable, this is a finding.","fixText":"When Event Logging is enabled, the device will audit attempts to modify administrator privileges. To enable event logging, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     #    end","ccis":["CCI-000172"]},{"vulnId":"V-234173","ruleId":"SV-234173r961812_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records when successful/unsuccessful attempts to delete administrator privileges occur.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the network device (e.g., module or policy filter).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\n\nThe output should be:   \n          set event enable\n          set system enable\n\nIf the event and system parameters are set to disable, this is a finding.","fixText":"When Event Logging is enabled, the device will audit attempts to delete administrator privileges. To enable event logging, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     # end","ccis":["CCI-000172"]},{"vulnId":"V-234174","ruleId":"SV-234174r961824_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records when successful/unsuccessful logon attempts occur.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the network device (e.g., module or policy filter).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\n\nThe output should be:   \n          set event enable\n          set system enable\n\nIf the event and system parameters are set to disable, this is a finding.","fixText":"When Event Logging is enabled, the device will audit successful/unsuccessful logon attempts. To enable event logging, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     #    end","ccis":["CCI-000172"]},{"vulnId":"V-234175","ruleId":"SV-234175r961827_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records for privileged activities or other system-level access.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the network device (e.g., module or policy filter).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\n\nThe output should be:   \n          set event enable\n          set system enable\n\nIf the event and system parameters are set to disable, this is a finding.","fixText":"When Event Logging is enabled, the device will audit privileged activities or other system-level access. To enable event logging, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     # end","ccis":["CCI-000172"]},{"vulnId":"V-234176","ruleId":"SV-234176r961830_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records showing starting and ending time for administrator access to the system.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. \n\nAudit records can be generated from various components within the network device (e.g., module or policy filter).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\n\nThe output should be:   \n          set event enable\n          set system enable\n\nIf the event and system parameters are set to disable, this is a finding.","fixText":"When Event Logging is enabled the device will audit starting and ending time for administrator access to the system. To enable event logging, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     # end","ccis":["CCI-000172"]},{"vulnId":"V-234177","ruleId":"SV-234177r961833_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records when concurrent logons from different workstations occur.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the network device (e.g., module or policy filter).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log eventfilter | grep -i 'event\\|system'\n\nThe output should be:   \n          set event enable\n          set system enable\n\nIf the event and system parameters are set to disable, this is a finding.","fixText":"When Event Logging is enabled, the device will audit concurrent logons from different workstations. To enable event logging, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config log eventfilter\n     #    set event enable\n     #    set system enable\n     # end","ccis":["CCI-000172"]},{"vulnId":"V-234178","ruleId":"SV-234178r960906_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records containing information that establishes the identity of any individual or process associated with the event.","description":"Without information that establishes the identity of the subjects (i.e., administrators or processes acting on behalf of administrators) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.\n\nEvent identifiers (if authenticated or otherwise known) include, but are not limited to, user database tables, primary key values, user names, or process identifiers.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n     # show full-configuration log setting | grep -i anonymize\nThe output should be:         \n          set user-anonymize disable\n\nIf the log setting user-anonymize is set to enable, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n     # config log setting\n     # set user-anonymize disable\n     # end","ccis":["CCI-001487"]},{"vulnId":"V-234179","ruleId":"SV-234179r960909_rule","severity":"medium","ruleTitle":"The FortiGate device must generate audit records containing the full-text recording of privileged commands.","description":"Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. \n\nOrganizations consider limiting the additional audit information to only that information explicitly needed for specific audit requirements. The additional information required is dependent on the type of information (i.e., sensitivity of the data and the environment within which it resides). At a minimum, the organization must audit full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     #  show full-configuration system global | grep -i cli-audit\nThe output should be:   \n          set cli-audit-log enable\n\nIf cli-audit-log is set to disable, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n   # config system global\n   #      set cli-audit-log enable\n   # end","ccis":["CCI-000135"]},{"vulnId":"V-234180","ruleId":"SV-234180r961392_rule","severity":"medium","ruleTitle":"The FortiGate device must allocate audit record storage capacity in accordance with organization-defined audit record storage requirements.","description":"To ensure network devices have a sufficient storage capacity in which to write the audit logs, they need to be able to allocate audit record storage capacity. The task of allocating audit record storage capacity is usually performed during initial device setup if it is modifiable.\n\nThe value for the organization-defined audit record storage requirement will depend on the amount of storage available on the network device, the anticipated volume of logs, the frequency of transfer from the network device to centralized log servers, and other factors.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log disk setting | grep -i max-log-file-size\n\nThe output should be: \n          set max-log-file-size {INTEGER}\n\nIf max-log-file-size for local disk storage is not set to the organization-defined audit record storage, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config log disk setting\n     #    set max-log-file-size {INTEGER 1 - 100 MB}\n     #    set diskfull overwrite\n     # end","ccis":["CCI-001849"]},{"vulnId":"V-234181","ruleId":"SV-234181r961860_rule","severity":"medium","ruleTitle":"The FortiGate device must off-load audit records on to a different system or media than the system being audited.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOffloading is a common process in information systems with limited audit storage capacity.","checkContent":"Verify remote logging is configured.\n\nVia the GUI:\n\nLogin via the FortiGate GUI with super-admin privileges. \n\n- Navigate to Log and Report.\n- Navigate to Log Settings.\n- Verify the Remote and Archiving settings.\n\nor\n\nVia the CLI:\n\nOpen a CLI console via SSH or from the \"CLI Console\" button in the GUI.\n\nRun the following commands to verify which logging settings are enabled:\n\n# show full-configuration log fortianalyzer setting | grep -i 'status\\|server'\n# show full-configuration log fortianalyzer2 setting | grep -i 'status\\|server'\n# show full-configuration log fortianalyzer3 setting | grep -i 'status\\|server'\n# show full-configuration log syslogd setting | grep -i 'status\\|server'\n# show full-configuration log syslogd2 setting | grep -i 'status\\|server'\n# show full-configuration log syslogd3 setting | grep -i 'status\\|server'\n# show full-configuration log syslogd4 setting | grep -i 'status\\|server'\n- The output should indicate enabled and an IP address.\n\nIf the FortiGate is not logging to a fortianalyzer or syslog server, this is a finding.","fixText":"Login via the GUI with super-admin privileges.\n\n1. Click Log and Report.\n2. Click Log Settings.\n\nTo add a FortiAnalyzer:\n- In the Remote Logging and Archiving, enable logging to FortiAnalyzer and provide the IP address.\n\nTo add a Syslog server:\n- In the Remote Logging and Archiving, enable Send logs to Syslog and provide the IP address.\n\n3. Apply changes.\n\nor\n\n1. Open a CLI console via SSH or from the \"CLI Console\" button in the GUI.\n\n2. Configure a fortianalyzer or syslog server with the following commands:\n\nFortiAnalyzer:\n# config log fortianalyzer setting\n#    set status enable\n#    set server {IP Address}\n#    set upload-option realtime\n# end\n\nSyslog:\n# config log syslogd setting\n#    set status enable\n#    set server {IP Address}\n#    set mode reliable\n# end","ccis":["CCI-001851"]},{"vulnId":"V-234182","ruleId":"SV-234182r961401_rule","severity":"medium","ruleTitle":"The FortiGate device must generate an immediate real-time alert of all audit failure events requiring real-time alerts.","description":"It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without a real-time alert, security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected.\n\nAlerts provide organizations with urgent messages. Real-time alerts provide these messages immediately (i.e., the time from event detection to alert occurs in seconds or less).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Security Fabric.\n2. Click Automation.\n3. Verify Automation Stitches are configured to send alerts related to audit processing failure.\n4. For each Automation Stitch, verify a valid Action Email has been configured.\n\nIf Automation Stitches are not defined to trigger an immediate real-time alert of all audit processing failures, this is a finding.\n\nNote: Relevant events for an Automation Stitch are below:\n\nDisk Full\nDisk Log access failed\nDisk log directory deleted\nDisk log file deleted \nDisk log full over first warning\nDisk logs failed to back up\nDisk logs failed to back up to USB\nDisk partitioning or formatting Error\nDisk unavailable\nFortiAnalyzer connection down\nFortiAnalyzer connection failed\nFortiAnalyzer is not configured for Security Fabric service\nFortiAnalyzer log access failed\nLog disk failure imminent\nLog disk full\nLog disk unavailable\nMemory log access failed\nMemory log full over final warning level\nMemory log full over first warning level\nMemory log full over second warning level\nMemory logs failed to back up","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Security Fabric.\n2. Click Automation.\n3. Click +Create New (Automation Stitch).\n4. Assign a meaningful name.\n5. For Trigger, select FortiOS Event Log.\n6. For Event field, Click + (and choose a specific event type).\n7. For Action, select Email, specify recipients, and Email subject.\n8. Click OK.\n\nNote: The following are all relevant Event Log entries. For most complete coverage, configure an Automation Stitch for each of the Event Log entries below:\n\nDisk Full\nDisk Log access failed\nDisk log directory deleted\nDisk log file deleted \nDisk log full over first warning\nDisk logs failed to back up\nDisk logs failed to back up to USB\nDisk partitioning or formatting Error\nDisk unavailable\nFortiAnalyzer connection down\nFortiAnalyzer connection failed\nFortiAnalyzer is not configured for Security Fabric service\nFortiAnalyzer log access failed\nLog disk failure imminent\nLog disk full\nLog disk unavailable\nMemory log access failed\nMemory log full over final warning level\nMemory log full over first warning level\nMemory log full over second warning level\nMemory logs failed to back up","ccis":["CCI-001858"]},{"vulnId":"V-234183","ruleId":"SV-234183r987682_rule","severity":"medium","ruleTitle":"The FortiGate device must synchronize internal information system clocks using redundant authoritative time sources.","description":"The loss of connectivity to a particular authoritative time source will result in the loss of time synchronization (free-run mode) and increasingly inaccurate time stamps on audit events and other functions.\n\nMultiple time sources provide redundancy by including a secondary source. Time synchronization is usually a hierarchy; clients synchronize time to a local source while that source synchronizes its time to a more accurate source. The network device must utilize an authoritative time server and/or be configured to use redundant authoritative time sources. This requirement is related to the comparison done in CCI-001891.\n\nDoD-approved solutions consist of a combination of a primary and secondary time source using a combination or multiple instances of the following: a time server designated for the appropriate DoD network (NIPRNet/SIPRNet); United States Naval Observatory (USNO) time servers; and/or the Global Positioning System (GPS). The secondary time source must be located in a different geographic region than the primary time source.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration system ntp | grep server\n\nThe output should be:\n       set server {IP address of NTP server 1}\n       set server {IP address of NTP server 2}\n\nIf the internal information system clocks are not configured to synchronize with the primary and secondary time sources, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command: \n\n     # config system ntp\n     #    set ntpsync enable\n     #    set type custom\n     #    set syncinterval {INTEGER}\nTo add NTP server 1:\n     # config ntpserver\n     #    edit {ID}\n     #    set server {IP ADDRESS}\n     #    set authentication enable\n     #    set key {PASSWORD}\n     #    set key-id {INTEGER}\n     #    next\nTo add NTP server 2:\n     # config ntpserver\n     #    edit {ID}\n     #    set server {IP ADDRESS}\n     #    set authentication enable\n     #    set key {PASSWORD}\n     #    set key-id {INTEGER}\n     #    next\n     # end","ccis":["CCI-000366","CCI-001893"]},{"vulnId":"V-234184","ruleId":"SV-234184r961443_rule","severity":"medium","ruleTitle":"The FortiGate device must record time stamps for audit records that can be mapped to Coordinated Universal Time (UTC) or Greenwich Mean Time (GMT).","description":"If time stamps are not consistently applied and there is no common time reference, it is difficult to perform forensic analysis.\n\nTime stamps generated by the application include date and time. Time is commonly expressed in Coordinated Universal Time (UTC), a modern continuation of Greenwich Mean Time (GMT), or local time with an offset from UTC.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Log and Report.\n2. Click Events.\n3. On the Events page, double-click on an event for detail.\n4. Verify in the log details that the mapped time zone reflects GMT.\n\nIf the time zone is not mapped to GMT, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Go to Settings.\n3. On Time Zone, select the time zone in which the FortiGate device is located.\n4. Click Apply.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # config system global\n     #    set timezone {TIMEZONE INDEX}\n     #    end","ccis":["CCI-001890"]},{"vulnId":"V-234185","ruleId":"SV-234185r960936_rule","severity":"medium","ruleTitle":"The FortiGate device must protect audit information from unauthorized deletion.","description":"Audit information includes all information (e.g., audit records, audit settings, and audit reports) needed to successfully audit information system activity.\n\nIf audit data were to become compromised, then forensic analysis and discovery of the true source of potentially malicious system activity is impossible to achieve.\n\nTo ensure the veracity of audit data, the network device must protect audit information from unauthorized deletion. This requirement can be achieved through multiple methods, which will depend upon system architecture and design. Some commonly employed methods include: ensuring log files receive the proper file system permissions utilizing file system protections, restricting access, and backing up log data to ensure log data is retained.\n\nNetwork devices providing a user interface to audit data will leverage user permissions and roles identifying the user accessing the data, and the corresponding rights the user enjoys, to make access decisions regarding the deletion of audit data.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Click on each administrator who is not authorized to access Log and Report Settings and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify that the permission to Log and Report is set to None or Read.\n\nIf any low-privileged administrator has Read/Write access to Log and Report, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nTo limit the Log and Report access to existing low-privileged administrators:\n\n1. Click System.\n2. Click Administrators.\n3. Identify the admin role that has unauthorized access to Log and Report settings.\n4. Select the admin role and hover over the profile assigned to the role.\n5. Click Edit.\n6. On Log and Report access permission, click None or Read.\n7. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege separation requirements for the organization.","ccis":["CCI-000164"]},{"vulnId":"V-234186","ruleId":"SV-234186r960939_rule","severity":"medium","ruleTitle":"The FortiGate device must protect audit tools from unauthorized access.","description":"Protecting audit data also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit data.\n\nNetwork devices providing tools to interface with audit data will leverage user permissions and roles, identifying the user accessing the tools and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Click each administrator who is not authorized to access Log and Report Settings and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify the permission to Log and Report is set to None.\n\nIf any low-privileged administrator has Read/Write or Read access to Log and Report settings, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nTo limit the Log and Report access to existing low-privileged administrators:\n\n1. Click System.\n2. Click Administrators.\n3. Identify any administrator that is not authorized to access Log and Report settings.\n4. Select the admin role and hover over the profile assigned to the role.\n5. Click Edit.\n6. On Log and Report access permission, click None.\n7. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege-separation requirements for the organization.","ccis":["CCI-001493"]},{"vulnId":"V-234187","ruleId":"SV-234187r960942_rule","severity":"medium","ruleTitle":"The FortiGate device must protect audit tools from unauthorized modification.","description":"Protecting audit data also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit data.\n\nNetwork devices providing tools to interface with audit data will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Click on each administrator who is not authorized to access Log and Report settings and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify that the permission to Log and Report is set to None or Read.\n\nIf any low-privileged administrator has Read/Write access to Log and Report, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nTo limit the Log and Report access to existing low-privileged administrators:\n\n1. Click System.\n2. Click Administrators.\n3. Identify the admin role that is not authorized access to Log and Report settings.\n4. Select the admin role and hover over the profile assigned to the role.\n5. Click Edit.\n6. On Log and Report access permission, click None or Read.\n7. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege separation requirements for the organization.","ccis":["CCI-001494"]},{"vulnId":"V-234188","ruleId":"SV-234188r984110_rule","severity":"medium","ruleTitle":"The FortiGate device must prohibit installation of software without explicit privileged status.","description":"Allowing anyone to install software, without explicit privileges, creates the risk that untested or potentially malicious software will be installed on the system. This requirement applies to code changes and upgrades for all network devices.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Identify the administrator that is not authorized to access System Settings and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify that the permission to System is set to Read or None.\n\nIf any unauthorized administrator has Read/Write access to System, this is a finding.","fixText":"To limit the System access to existing low-privileged administrators, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Identify the admin role that has unauthorized access to System settings.\n4. Select the admin role and hover over the profile assigned to the role.\n5. Click Edit.\n6. On System access permission, click None or Read only.\n7. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege separation requirements for the organization.","ccis":["CCI-001812"]},{"vulnId":"V-234189","ruleId":"SV-234189r961461_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce access restrictions associated with changes to device configuration.","description":"Failure to provide logical access restrictions associated with changes to device configuration may have significant effects on the overall security of the system.\n\nWhen dealing with access restrictions pertaining to change control, it should be noted that any changes to the hardware, software, and/or firmware components of the device can potentially have significant effects on the overall security of the device.\n\nAccordingly, only qualified and authorized individuals should be allowed to obtain access to device components for the purposes of initiating changes, including upgrades and modifications.\n\nLogical access restrictions include, for example, controls that restrict access to workflow automation, media libraries, abstract layers (e.g., changes implemented into third-party interfaces rather than directly into information systems), and change windows (e.g., changes occur only during specified times, making unauthorized changes easy to discover).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Identify the administrator that is not authorized to access System Settings and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify the permission to System is set to Read or None.\n\nIf any unauthorized administrators have Read/Write access to System, this is a finding.","fixText":"To limit the System access to existing low-privileged administrators, log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Identify the admin role that has unauthorized access to System settings.\n4. Select the admin role and hover over the profile assigned to the role.\n5. Click Edit.\n6. On System access permission, click None or Read only.\n7. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege-separation requirements for the organization.","ccis":["CCI-001813"]},{"vulnId":"V-234190","ruleId":"SV-234190r960960_rule","severity":"medium","ruleTitle":"The FortiGate device must limit privileges to change the software resident within software libraries.","description":"Changes to any software components of the network device can have significant effects on the overall security of the network. Therefore, only qualified and authorized individuals should be allowed administrative access to the network device for implementing any changes or upgrades. If the network device were to enable non-authorized users to make changes to software libraries, those changes could be implemented without undergoing testing, validation, and approval.","checkContent":"Log in to the FortiGate GUI with an Administrator that does not have System setting privileges.\n\n1. Click System.\n2. Attempt to click Firmware; this option will not be available.\n\nIf the FortiGate device does not limit privileges to change the software resident within software libraries, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nTo remove System access permission from an existing low-privileged administrator:\n\n1. Click System.\n2. Click Administrators.\n3. Identify the administrator role that is unauthorized to update software.\n4. Select the administrator role and hover over the profile assigned to the role.\n5. Click Edit.\n6. For System access, click None.\n7. Click OK to save.","ccis":["CCI-001499"]},{"vulnId":"V-234191","ruleId":"SV-234191r961863_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce access restrictions associated with changes to the system components.","description":"Changes to the hardware or software components of the network device can have significant effects on the overall security of the network. Therefore, only qualified and authorized individuals should be allowed administrative access to the network device for implementing any changes or upgrades. This requirement applies to updates of the application files, configuration, ACLs, and policy filters.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Identify the administrator who is authorized to access System Settings and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify that the permission to System is set to Read/Write.\n\nIf the authorized administrator does not have Read/Write access to System, this is a finding.\n\nThen, \n1. Click System.\n2. Click Administrators.\n3. Click other administrators and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify that the permission to System is set to Read or None.\n\nIf any low-privileged administrator has Read/Write access to System, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nSet one admin profile with full System access.\n\n1. Click System.\n2. Click Admin Profiles.\n3. Click +Create New (Admin Profile).\n4. Assign a meaningful name to the Profile.\n5. Set System Access Permissions to Read/Write.\n6. Click OK to save this Profile.\n\nThen, \n1. Click System.\n2. Click Administrators.\n3. Click on +Create New (Administrator).\n4. Configure Administrator settings with unique Username, Type, and Password.\n5. While assigning the Administrator Profile, use the Admin profile configured above with limited access to System settings.\n6. Go to Restrict login to trusted hosts.\n7. Add appropriate IP address in the field Trusted Host 1.\n8. Click OK to save.\n \nNote: Do not assign this admin profile to any users other than designated administrator that can have full access to System Settings.\n\nTo limit the System access to existing low-privilege administrators: \n\n1. Click System.\n2. Click Administrators.\n3. Identify the admin role that has unauthorized access to System settings.\n4. Select the admin role and hover over the profile assigned to the role.\n5. Click Edit.\n6. On System access permission, click None or Read only.\n7. Go to Restrict login to trusted hosts.\n8. Add appropriate IP address in the field Trusted Host 1.\n9. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege separation requirements for the organization.","ccis":["CCI-000345","CCI-000366"]},{"vulnId":"V-234192","ruleId":"SV-234192r1137887_rule","severity":"medium","ruleTitle":"The FortiGate device must use LDAP for authentication.","description":"Centralized management of authentication settings increases the security of remote and nonlocal access methods. This control is particularly important protection against the insider threat. With robust centralized management, audit records for administrator account access to the organization's network devices can be more readily analyzed for trends and anomalies. The alternative method of defining administrator accounts on each device exposes the device configuration to remote access authentication attacks and system administrators with multiple authenticators for each network device.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Verify all users except admin are assigned to a remote LDAP user group.\n\nIf all administrators except admin are not configured to use remote LDAP authentication, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nConfigure the LDAP server connection.\n\n1. Go to User and Device.\n2. Go to LDAP Servers and select +Create New.\n3. Enter the server Name, Server IP address, or Name.\n4. Enter the Common Name Identifier and Distinguished Name.\n5. Set the Bind Type to Regular and enter the LDAP bind Username and Password.\n6. Ensure the Secure Connection button is toggled to enable.\n7. In Protocol, select LDAPS. Select certificate.\n8. Click OK.\n\nAdd the LDAP server to a user group.\n\n1. Go to User and Device.\n2. Under User Groups, select +Create New.\n3. Enter a Name for the group.\n4. In the Remote groups section, select +Add.\n5. Select the Remote Server from the dropdown list.\n6. Click OK.\n\nThen, configure the administrator account.\n\n1. Click System.\n2. Click Administrators.\n3. Click +Create New and choose Administrator.\n4. Specify the Username.\n5. Set Type to Match a user on a remote server group.\n6. In Remote User Group, select the user group that was created.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Configure the LDAP server in the CLI:\n     # config user ldap\n     #    edit {ldap_server_name}\n     #    set server {server_ip}\n     #    set cnid {cn} \n     #    set dn {dc=XYZ,dc=fortinet,dc=COM} \n     #    set type regular \n     #    set username {cn=Administrator,dc=XYA, dc=COM} \n     #    set password {bind password}\n     #    set secure ldaps\n     #    set ca-cert {CA certificate name}\n     #   next \n     # end\n\n3. Create a user group in the CLI:\n# config user group\n#    edit {Group_name}\n#      set member {ldap_server_name}\n#    next\n# end\n\n4. Create an administrator in the CLI:\n     # config system admin\n     #    edit {admin_name}\n     #    set remote-auth enable\n     #    set accprofile {profile name}\n     #    set remote-group ldap\n     # end","ccis":["CCI-000366","CCI-000370"]},{"vulnId":"V-234193","ruleId":"SV-234193r961863_rule","severity":"high","ruleTitle":"The FortiGate device must be running an operating system release that is currently supported by the vendor.","description":"Network devices running an unsupported operating system lack current security fixes required to mitigate the risks associated with recent vulnerabilities.","checkContent":"Log in to the Fortinet Support Portal and review the Product Life Cycle Software \"End of Support Date\". \n\nLog in to the FortiGate with Super-Admin privilege in the GUI and review the Dashboard >> Status >> System Information widget for Firmware version. \n\nIf the firmware listed in the FortiGate is not supported based on the Product Life Cycle page, this is a finding.","fixText":"Go to the Fortinet Upgrade Path Tool and select the platform that is being upgraded, the current FortiOS version, and the desired FortiOS version, and then click \"Go\". \n\nLog in to the Fortinet Support Portal and go to Download >> Firmware Images and download the listed firmware versions from the Upgrade Path Tool. \n\nLog in to the FortiGate GUI with Super-Admin privilege and go to System >> Firmware. Upload the target firmware file under \"Upload Firmware >> Browse\" and then click \"Backup config and upgrade”. \n\nRepeat as necessary as defined by the Upgrade Path Tool.","ccis":["CCI-000366"]},{"vulnId":"V-234194","ruleId":"SV-234194r961863_rule","severity":"medium","ruleTitle":"The FortiGate device must generate log records for a locally developed list of auditable events.","description":"Auditing and logging are key components of any security architecture. Logging the actions of specific events provides a means to investigate an attack; to recognize resource utilization or capacity thresholds; or to identify an improperly configured network device. If auditing is not comprehensive, it will not be useful for intrusion monitoring, security investigations, and forensic analysis.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration log setting\n\nCompare the output to the locally developed list to ensure enabled events match the local list.\n         \n3. Run the following command:\n     # show full-configuration log eventfilter\n\nCompare the output to the locally developed list to ensure enabled events match the local list.\n        \nIf the FortiGate device does not generate log records for a locally developed list of auditable events, this is a finding.","fixText":"Obtain local audit list and enable event logging to match requirements within the list.\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command and set to enable any events that match a requirement in the local policy:\n     # config log setting\n     #    set resolve-ip {enable | disable}\n     #    set resolve-port {enable | disable}\n     #    set log-user-in-upper {enable | disable}\n     #    set fwpolicy-implicit-log {enable | disable}\n     #    set fwpolicy6-implicit-log {enable | disable}\n     #    set log-invalid-packet {enable | disable}\n     #    set local-in-allow {enable | disable}\n     #    set local-in-deny-unicast {enable | disable}\n     #    set local-in-deny-broadcast {enable | disable}\n     #    set local-out {enable | disable}\n     #    set daemon-log {enable | disable}\n     #    set neighbor-event {enable | disable}\n     #    set brief-traffic-format {enable | disable}\n     #    set user-anonymize {enable | disable}\n     #    set expolicy-implicit-log {enable | disable}\n     #    set log-policy-comment {enable | disable}\n     #    set log-policy-name {enable | disable}\n     #    end\n     # config log eventfilter\n     #    set event {enable | disable}\n     #    set system {enable | disable}\n     #    set vpn {enable | disable}\n     #    set user {enable | disable}\n     #    set router {enable | disable}\n     #    set wireless-activity {enable | disable}\n     #    set wan-opt {enable | disable}\n     #    set endpoint {enable | disable}\n     #    set ha {enable | disable}\n     #    set compliance-check {enable | disable}\n     #    set security-rating {enable | disable}\n     #    set fortiextender {enable | disable}\n     #    set connector {enable | disable}\n     #    end","ccis":["CCI-000169","CCI-000366"]},{"vulnId":"V-234195","ruleId":"SV-234195r961863_rule","severity":"medium","ruleTitle":"The FortiGate device must conduct backups of system-level information contained in the information system when changes occur.","description":"System-level information includes default and customized settings and security attributes, including ACLs that relate to the network device configuration, as well as software required for the execution and operation of the device. Information system backup is a critical step in ensuring system integrity and availability. If the system fails and there is no backup of the system-level information, a denial of service condition is possible for all who utilize this critical network component.\n\nThis control requires the network device to support the organizational central backup process for system-level information associated with the network device. This function may be provided by the network device itself; however, the preferred best practice is a centralized backup rather than each network device performing discrete backups.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click the admin menu available on the upper right-hand corner of the screen.\n2. Click Configuration.\n3. Click Revisions.\n4. Verify a list of saved backed-up configurations are available.\n\nIf saved backups of system configuration do not exist, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n# config system global\n#   set revision-backup-on-logout enable\n# end\n3. Integrate FortiGate with FortiManager or the organization’s central backup server using SSH to pull saved backups. \n\nNote: All backups performed by super admin contain global setting and settings for any VDOMs.","ccis":["CCI-000366","CCI-000537"]},{"vulnId":"V-234196","ruleId":"SV-234196r961863_rule","severity":"medium","ruleTitle":"The FortiGate device must support organizational requirements to conduct backups of information system documentation, including security-related documentation, when changes occur or weekly, whichever is sooner.","description":"Information system backup is a critical step in maintaining data assurance and availability. Information system and security-related documentation contains information pertaining to system configuration and security settings. If this information was not backed up, and a system failure occurred, the security settings would be difficult to reconfigure quickly and accurately. Maintaining a backup of information system and security-related documentation provides for a quicker recovery time when system outages occur.\n\nThis control requires the network device to support the organizational central backup process for user account information associated with the network device. This function may be provided by the network device itself; however, the preferred best practice is a centralized backup rather than each network device performing discrete backups.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click the admin menu available on the upper right-hand corner of the screen.\n2. Click Configuration.\n3. Click Revisions.\n4. Verify at least one saved backed-up occurred within the last week.\n\nIf a backup of system configuration was not performed within the last week, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n# config system global\n#   set revision-backup-on-logout enable\n# end\n3. Integrate FortiGate with FortiManager or the organization’s central backup server using SSH to pull saved backups.","ccis":["CCI-000366","CCI-000539"]},{"vulnId":"V-234197","ruleId":"SV-234197r961545_rule","severity":"medium","ruleTitle":"FortiGate devices performing maintenance functions must restrict use of these functions to authorized personnel only.","description":"There are security-related issues arising from software brought into the network device specifically for diagnostic and repair actions (e.g., a software packet sniffer installed on a device to troubleshoot system traffic, or a vendor installing or running a diagnostic application to troubleshoot an issue with a vendor-supported device). If maintenance tools are used by unauthorized personnel, they may accidentally or intentionally damage or compromise the system.\n\nThis requirement addresses security-related issues associated with maintenance tools used specifically for diagnostic and repair actions on organizational network devices. Maintenance tools can include hardware, software, and firmware items. Maintenance tools are potential vehicles for transporting malicious code, either intentionally or unintentionally, into a facility and subsequently into organizational information systems. Maintenance tools can include, for example, hardware/software diagnostic test equipment and hardware/software packet sniffers. This requirement does not cover hardware/software components that may support information system maintenance, yet are a part of the system (e.g., the software implementing \"ping,\" \"ls,\" \"ipconfig,\" or the hardware and software implementing the monitoring port of an Ethernet switch).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege:\n\n1. Click System.\n2. Click Administrators.\n3. Identify the administrator designated to perform maintenance functions and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify the permission to System is set to Read/Write or Custom with Maintenance set to Read/Write.\n\nIf an authorized administrator does not have Read/Write access to System Maintenance Settings, this is a finding.\n\nThen,\n1. Click System.\n2. Click Administrators.\n3. Click all other low-privileged administrators and hover over the profile assigned to the role.\n4. Click Edit.\n5. Verify the permission to System Maintenance is customized set to Read or None.\n\nIf any low-privileged administrator has Read/Write access to System Settings, this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command for all low privileged admin user:\n     # show system admin  {ADMIN NAME}  | grep -i accprofile\nThe output should be:  \n           set accprofile {PROFILE NAME}\n\nUse the profile name from the output result of above command. \n     # show system accprofile {PROFILE NAME} | grep -i sysgrp\nThe output should be:  \n          set sysgrp read\nor\n         set sysgrp none\n          \nIf any low privileged admin user has sysgrp parameter set to value Read/Write, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\nFirst, set one admin profile with access to System Maintenance.\n1. Click System.\n2. Click Admin Profiles.\n3. Click +Create New (Admin Profile).\n4. Assign a meaningful name to the Profile.\n5. Set System Access Permissions to Read/Write or Custom with Maintenance set to Read/Write.\n6. Click OK to save this Profile.\n\nThen, \n1. Click System.\n2. Click Administrators.\n3. Click +Create New (Administrator).\n4. Configure Administrator settings with unique Username, Type, and Password.\n5. Assign the Administrator Profile that was configured above.\n6. Click OK to save.\n\nNote: Do not assign this admin profile to any other users other than the authorized administrator.\n\nTo limit the System access to existing low-privilege administrators: \n\n1. Click System.\n2. Click Administrators.\n3. Identify the admin role that has unauthorized access to System settings.\n4. Select the admin role and hover over the profile assigned to the role.\n5. Click Edit.\n6. On System access permission, click Read or None.\n7. Click OK to save.\n\nRepeat this process to define all the Administrators needed to meet privilege separation requirements for the organization.\n\nor \n\n1.  Open a CLI console, via SSH or available from the GUI\n2. First edit the admin profile by running the following command:\n\n     # config system accprofile \n     #    edit {PROFILE NAME}\n     #    set sysgrp read or none\n     #    next\n     #    end\nThen, assign this admin profile to the authorized administrator account. \n     # config system admin  \n     #    edit {ADMIN NAME}\n     #    set accprofile  {PROFILE NAME}\n     #    next\n     # end\nNote: Do not assign this admin profile to any other users other than the authorized administrator.","ccis":["CCI-000366","CCI-002883"]},{"vulnId":"V-234198","ruleId":"SV-234198r961863_rule","severity":"medium","ruleTitle":"The FortiGate device must use DoD-approved Certificate Authorities (CAs) for public key certificates.","description":"For user certificates, each organization obtains certificates from an approved, shared service provider, as required by OMB policy. For federal agencies operating a legacy public key infrastructure cross-certified with the Federal Bridge Certification Authority at medium assurance or higher, this CA will suffice.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Certificates.\n3. Verify CAs are approved providers.\n\nIf the public key certificates are not from an approved service provider, this is a finding.","fixText":"1. Obtain CA certificate from a DoD-approved provider.\n2. Log in to the FortiGate GUI with Super-Admin privilege.\n3. Click System.\n4. Click Certificates.\n5. Click Import in the toolbar.\n6. Click CA Certificate.\n7. On the Import CA Certificate page, select Type File.\n8. Locate the certificate file and upload the certificate file.\n9. Click OK to import the certificate.","ccis":["CCI-000366","CCI-001159"]},{"vulnId":"V-234199","ruleId":"SV-234199r1043177_rule","severity":"high","ruleTitle":"The FortiGate device must prohibit the use of all unnecessary and/or non-secure functions, ports, protocols, and/or services.","description":"To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable unused or unnecessary physical and logical ports/protocols on information systems.\n\nNetwork devices are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., email and web services); however, doing so increases risk over limiting the services provided by any one component. \n\nTo support the requirements and principles of least functionality, the network device must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved. Some network devices have capabilities enabled by default; if these capabilities are not necessary, they must be disabled. If a particular capability is used, then it must be documented and approved.","checkContent":"Log in to FortiGate GUI with Super-Admin privileges.\n\n1. Click Policy and Objects.\n2. Click Services, and then review services, functions, and ports that are allowed by the firewall.\n3. Next, open a CLI console, via SSH or available from the GUI.\n4. Run the following commands:\n# show firewall policy\n# show firewall policy6\n\nReview policies to ensure that no restricted services, ports, protocols or functions are allowed. FortiGate is configured to deny by default, so if a service, port, protocol, or function is not specifically allowed, it will be denied. \n\nIf restricted functions, ports, protocols, and/or services are allowed by the firewall, this is a finding.\n\nor \n\nLog in to the FortiGate GUI with Super-Admin privilege.\n1. Open a CLI console over SSH or available from the GUI.\n2. Run the following \n# show full-configuration system interface\n3. Review configuration for unnecessary services.\n\nIf unnecessary services are configured, this is a finding.\n\nReview the PPSM CAL and determine which functions, ports, protocols, and/or services must be disabled or restricted.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n1. Click Policy and Objects.\n2. Click IPv4 or IPv6 Policy.\n3. Click +Create New.\n4. Name the policy, and then select Incoming and Outgoing Interfaces.\n5. Create policies with authorized sources and destinations.\n6. Set action to DENY.\n7. Ensure Enable this policy is toggled to right.\n8. Click OK.\n9. Ensure a policy is created for each interface and that every PPSM CAL and VA mitigation is covered.\n\nTraffic is denied by default and policies must be configured to allow traffic that meets PPSM CAL and VA guidelines.\n\nor \n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following \n  # config system interface\n      # edit {INTERFACE-NAME}\n         # set {DHCP-RELAY-SERVICE | PPTP-CLIENT | ARPFORWARD | BROADCAST-FORWARD | L2FORWARD | ICMP-REDIRECT | VLANFORWARD | STPFORWARD  | LLDP-TRANSMISSION} disable\n      # end\nCreate a new line for each service in {} that needs to be removed.","ccis":["CCI-000382"]},{"vulnId":"V-234200","ruleId":"SV-234200r960993_rule","severity":"medium","ruleTitle":"The FortiGate device must implement replay-resistant authentication mechanisms for network access to privileged accounts.","description":"A replay attack may enable an unauthorized user to gain access to the application. Authentication sessions between the authenticator and the application validating the user credentials must not be vulnerable to a replay attack.\n\nAn authentication process resists replay attacks if it is impractical to achieve a successful authentication by recording and replaying a previous authentication message.\n\nTechniques used to address this include protocols using nonces (e.g., numbers generated for a specific one-time use) or challenges (e.g., TLS, WS_Security). Additional techniques include time-synchronous or challenge-response one-time authenticators.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration system global | grep -i 'tls\\|ssh-v'\nThe output should be:  \n           # set admin-https-ssl-versions tlsv1-2 tlsv1-3\n           # set admin-ssh-v1 disable\n           # set ssl-min-proto-version TLSv1-2          \n      #end\n\nIf admin-https-ssl-versions is not set to tlsv1-2 tlsv1-3 or admin-ssh-v1 is enable, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system global\n          # set admin-https-ssl-versions tlsv1-2 tlsv1-3\n          # set admin-ssh-v1 disable\n     # end","ccis":["CCI-001941"]},{"vulnId":"V-234201","ruleId":"SV-234201r961506_rule","severity":"medium","ruleTitle":"The FortiGate device must authenticate SNMP messages using a FIPS-validated Keyed-Hash Message Authentication Code (HMAC).","description":"Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. Bidirectional authentication provides stronger safeguards to validate the identity of other devices for connections that are of greater risk.\n\nA local connection is any connection with a device communicating without the use of a network. A network connection is any connection with a device that communicates through a network (e.g., local area or wide area network, internet). A remote connection is any connection with a device communicating through an external network (e.g., internet).\n\nBecause of the challenges of applying this requirement on a large scale, organizations are encouraged to only apply the requirement to those limited number (and type) of devices that truly need to support this capability.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click SNMP.\n3. Verify the SNMPv3 settings are configured and enabled.\n4. Select each SNMPv3 user and click Edit.\n5. On Security Level, verify the SNMPv3 user is configured to use SHA256 as the Authentication Algorithm.\n\nIf the FortiGate device is not configured to authenticate SNMP messages using a FIPS-validated HMAC, this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n\n     # show full-configuration system snmp user | grep -i 'security-level\\ |auth-proto'\n\nFor each SNMPv3 user, the output should be similar to:\n\n          set security-level auth\n          set auth-proto sha256\n\nIf the security-level parameter is not set to auth or auth-priv, and the auth-proto is not set to SHA, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click SNMP.\n3. Select each SNMPv3 user.\n4. Click Edit.\n5. On Security Level, click Authentication.\n6. Select SHA256 for the Authentication Algorithm.\n7. Change the Password if required.\n8. Click OK.\n9. Click Apply.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system snmp user\n     #    edit {NAME}\n     #    set status enable\n     #    set security-level auth\n     #    set auth-proto sha256\n     #    set auth-pwd {PASSWORD}\n     #    next\n     # end","ccis":["CCI-001967"]},{"vulnId":"V-234202","ruleId":"SV-234202r961506_rule","severity":"medium","ruleTitle":"The FortiGate device must authenticate Network Time Protocol (NTP) sources using authentication that is cryptographically based.","description":"If NTP is not authenticated, an attacker can introduce a rogue NTP server. This rogue server can then be used to send incorrect time information to network devices, which will make log timestamps inaccurate and affect scheduled actions. NTP authentication is used to prevent this tampering by authenticating the time source.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command: \n     # diagnose sys ntp status\n\nThe output should be similar to:\n          ipv4 server(URL of NTP server) 123.123.123.123 -- reachable(0xbf) S:1 T:242 selected\n          server-version=4, stratum=2\n          reference time is e213a5fb.2250b45e -- UTC Wed Mar 11 18:01:31 2020\n          clock offset is 0.000801 sec, root delay is 0.000381 sec\n          root dispersion is 0.053268 sec, peer dispersion is 287 msec\n\nIf the output does not return server-version is equal to 4, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command: \n\n     # config system ntp\n     #    set ntpsync enable\n     #    set type custom\n     #    set syncinterval {INTEGER}\n     # config ntpserver\n     #    edit {ID}\n     #    set server {IP ADDRESS}\n     #    set authentication enable\n     #    set key {PASSWORD}\n     #    set key-id {INTEGER}\n     #    next\n     # end","ccis":["CCI-001967"]},{"vulnId":"V-234203","ruleId":"SV-234203r984092_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce a minimum 15-character password length.","description":"Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password.\n\nThe shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. Use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. Verify Password scope is enabled for Admin.\n5. Verify the Minimum length is set to 15.\n\nIf the Password scope is OFF and the Minimum length is not set to 15, this is a finding.\n\nor \n\nLog in to the FortiGate GUI with Super-Admin privilege:\n\n1. Open a CLI console, via SSH or available from the GUI\n2. Run the following command:\n     # show full-configuration system password-policy | grep -i minimum\n          set minimum-length 15\n\nIf the minimum-length parameter is not set to 15, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. On the Password scope option, click Admin.\n5. Enter the Minimum length value of 15.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system password-policy\n           # set status enable\n          # set minimum-length 15\n     # end--+","ccis":["CCI-000205"]},{"vulnId":"V-234204","ruleId":"SV-234204r984095_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce password complexity by requiring that at least one uppercase character be used.","description":"Use of a complex passwords helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determine how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.\n\nMultifactor authentication (MFA) is required for all administrative and user accounts on network devices, except for an account of last resort and (where applicable) a root account. Passwords should only be used when MFA using PKI is not available, and for the account of last resort and root account.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. Verify Password scope is enabled for Admin and Character requirements is toggled to right.\n5. Verify the Uppercase value is set to 1 or greater.\n\nIf the Uppercase parameter is not set to 1 or greater, this is a finding.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n        # show full-configuration system password-policy | grep -i upper-case\n\nIf the min-upper-case-letter parameter is not set to 1 or greater, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. On the Password scope option, click Admin.\n5. Toggle Character requirements to right.\n6. Enter the Uppercase value of 1 or greater.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n    # config system password-policy\n        # set min-upper-case-letter 1 (or greater)\n    # end","ccis":["CCI-000192"]},{"vulnId":"V-234205","ruleId":"SV-234205r984098_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce password complexity by requiring that at least one lowercase character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determine how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.\n\nMultifactor authentication (MFA) is required for all administrative and user accounts on network devices, except for an account of last resort and (where applicable) a root account. Passwords should only be used when MFA using PKI is not available, and for the account of last resort and root account.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. Verify Password scope is enabled for Admin and Character requirements is toggled to right.\n5. Verify the Lowercase value is set to 1 or greater.\n\nIf the Lowercase parameter is not set to 1 or greater, this is a finding.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration system password-policy | grep -i lower-case\n\nIf the min-lower-case-letter parameter is not set to 1 or greater, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. On the Password scope option, click Admin.\n5. Toggle Character requirements to right.\n6. Enter the Lowercase value of 1.\n\nor \n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system password-policy\n           # set min-lower-case-letter 1\n     # end","ccis":["CCI-000193"]},{"vulnId":"V-234206","ruleId":"SV-234206r984099_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce password complexity by requiring at least one numeric character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determine how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.\n\nMultifactor authentication (MFA) is required for all administrative and user accounts on network devices, except for an account of last resort and (where applicable) a root account. Passwords should only be used when MFA using PKI is not available, and for the account of last resort and root account.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. Verify Password scope is enabled for Admin and Character requirements is toggled to right.\n5. Verify the Numbers value is set to 1 or greater.\n\nIf the Numbers parameter is not set to 1 or greater, this is a finding.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration system password-policy | grep -i number\n\nIf the min-number parameter is not set to 1 or greater, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. On the Password scope option, click Admin.\n5. Toggle Character requirements to right.\n6. Enter the Numbers value of 1 or greater.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n    # config system password-policy\n        # set min-number 1 (or greater)\n    # end","ccis":["CCI-000194"]},{"vulnId":"V-234207","ruleId":"SV-234207r984100_rule","severity":"medium","ruleTitle":"The FortiGate device must enforce password complexity by requiring that at least one special character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determine how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.\n\nMultifactor authentication (MFA) is required for all administrative and user accounts on network devices, except for an account of last resort and (where applicable) a root account. Passwords should only be used when MFA using PKI is not available, and for the account of last resort and root account.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. Verify Password scope is enabled for Admin and Character requirements is toggled to right.\n5. Verify the Special value is set to 1 or greater.\n\nIf the Special parameter is not set to 1 or greater, this is a finding.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration system password-policy | grep -i non-alphanumeric\n\nIf the min-non-alphanumeric parameter is not set to 1 greater, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Navigate to Password Policy.\n4. On the Password scope option, click Admin.\n5. Toggle Character requirements to right.\n6. Enter the Special value of 1 or greater.\n\nor\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n     # config system password-policy\n          # set min-non-alphanumeric 1 (or greater)\n     # end","ccis":["CCI-001619"]},{"vulnId":"V-234208","ruleId":"SV-234208r961029_rule","severity":"high","ruleTitle":"The FortiGate device must use LDAPS for the LDAP connection.","description":"Passwords need to be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nNetwork devices can accomplish this by making direct function calls to encryption modules or by leveraging operating system encryption capabilities.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration user ldap | grep -i ldaps\nThe output should be:         \n          set secure ldaps\n\nIf set secure is not set to ldaps, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config user ldap\n           # edit {ldap_server_name}\n           # set server {server_ip}\n           # set cnid {cn} \n           # set dn {dc=XYZ,dc=fortinet,dc=COM} \n           # set type regular \n           # set username {cn=Administrator,dc=XYA, dc=COM} \n           # set password {bind password}\n           # set secure ldaps\n           #    set ca-cert {CA certificate name}\n      # next \n  # end","ccis":["CCI-000197"]},{"vulnId":"V-234209","ruleId":"SV-234209r984088_rule","severity":"medium","ruleTitle":"The FortiGate device must not have any default manufacturer passwords when deployed.","description":"Network devices not protected with strong password schemes provide the opportunity for anyone to crack the password and gain access to the device, which can result in loss of availability, confidentiality, or integrity of network traffic.\n\nMany default vendor passwords are well known or are easily guessed; therefore, not removing them prior to deploying the network device into production provides an opportunity for a malicious user to gain unauthorized access to the device.","checkContent":"Attempt to log in to the FortiGate GUI using the username admin with the default (blank) password.\n\nAttempt to log in to the CLI over SSH with the username admin with the default (blank) password.\n\nIf either of these logins are successful, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following commands:\n     # config system admin\n     # edit admin\n     # set password {password}\n     # end","ccis":["CCI-002041"]},{"vulnId":"V-234210","ruleId":"SV-234210r961050_rule","severity":"high","ruleTitle":"The FortiGate device must use FIPS 140-2 approved algorithms for authentication to a cryptographic module.","description":"Unapproved mechanisms that are used for authentication to the cryptographic module are not validated and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised.\n\nNetwork devices utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules.\n\nFIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. However, authentication algorithms must configure security processes to use only FIPS-approved and NIST-recommended authentication algorithms.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # get system status | grep -i fips\nThe output should be:         \n             FIPS-CC mode: enable\n\nIf FIPS-CC mode parameter is not set to enable, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system fips-cc\n          # set status enable\n     # end","ccis":["CCI-000803"]},{"vulnId":"V-234211","ruleId":"SV-234211r961554_rule","severity":"high","ruleTitle":"The FortiGate devices must use FIPS-validated Keyed-Hash Message Authentication Code (HMAC) to protect the integrity of nonlocal maintenance and diagnostic communications.","description":"Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised.\n\nNonlocal maintenance and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the internet) or an internal network. \n\nCurrently, HMAC is the only FIPS-approved algorithm for generating and verifying message/data authentication codes in accordance with FIPS 198-1. Products that are FIPS 140-2 validated will have an HMAC that meets specification; however, the option must be configured for use as the only message authentication code used for authentication to cryptographic modules.\n\nSeparate requirements for configuring applications and protocols used by each application (e.g., SNMPv3, SSHv2, NTP, HTTPS, and other protocols and applications that require server/client authentication) are required to implement this requirement. Where SSH is used, the SSHv2 protocol suite is required because it includes Layer 7 protocols such as SCP and SFTP, which can be used for secure file transfers.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Network, Interfaces.\n2. Click the interface designated for device management traffic.\n3. On Administrative Access, verify HTTPS and SSH are selected, and HTTP is not.\n\nIf HTTPS and SSH are not selected for administrative access, or HTTP is selected, this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration system interface port{Management Port Integer #} | grep -i allowaccess\n\nThe output should include: \n          set allowaccess ping https ssh\n\nIf the allowaccess parameter does not include https and ssh, this is a finding. If the allowaccess parameter includes http, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Network, Interfaces\n2. Click the interface designated for device management traffic and pick Edit.\n3. On Administrative Access, select HTTPS and SSH. Deselect HTTP.\n4. Click OK.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system interface \n     #    edit port{Management Port Integer #}\n     #    set allowaccess ping https ssh\n     # end\n\nNote: When adding or removing a protocol, the entire list of protocols must be typed again. For example, in an existing access list of HTTPS and SSH, if HTTP needs to be added, use the following CLI command: \n     #   set allowaccess https ssh ping http","ccis":["CCI-002890"]},{"vulnId":"V-234212","ruleId":"SV-234212r961557_rule","severity":"high","ruleTitle":"The FortiGate device must implement cryptographic mechanisms using a FIPS 140-2 approved algorithm to protect the confidentiality of remote maintenance sessions.","description":"This requires the use of secure protocols instead of their unsecured counterparts, such as SSH instead of telnet, SCP instead of FTP, and HTTPS instead of HTTP. If unsecured protocols (lacking cryptographic mechanisms) are used for sessions, the contents of those sessions will be susceptible to eavesdropping, potentially putting sensitive data (including administrator passwords) at risk of compromise and potentially allowing hijacking of maintenance sessions.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Network, Interfaces.\n2. Click the interface designated for device management traffic.\n3. On Administrative Access, verify HTTPS and SSH are selected.\n\nIf HTTPS and SSH are not selected for administrative access, this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command for all low privileged admin user:\n     # show full-configuration system interface port{Management Port Integer #} | grep -i allowaccess\n\nThe output should include: \n          set allowaccess ping https ssh\n\nIf https and ssh are not returned, this is a finding. If http is returned, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Network, Interfaces.\n2. Click the interface designated for device management traffic and pick Edit.\n3. On Administrative Access, select HTTPS and SSH. Deselect HTTP.\n4. Click OK.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command for all low privileged admin users:\n     # config system interface \n     #    edit port{Management Port Integer #}\n     #    set allowaccess ping https ssh\n     # end\n\nNote: When a protocol is added or removed, the entire list of protocols must be typed in again. For example, to add PING to an access list of HTTPS and SSH, use the following CLI command: \n     #   set allowaccess https ssh ping","ccis":["CCI-003123"]},{"vulnId":"V-234213","ruleId":"SV-234213r984105_rule","severity":"medium","ruleTitle":"The FortiGate device must terminate idle sessions after 10 minutes of inactivity.","description":"If a device management session or connection remains open after management is completed, it may be hijacked by an attacker and used to compromise or damage the network device.\n\nNonlocal device management and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the internet) or an internal network. \n\nIn the event the remote node has abnormally terminated or an upstream link from the managed device is down, the management session will be terminated, thereby freeing device resources and eliminating any possibility of an unauthorized user being orphaned to an open idle session of the managed device.","checkContent":"Verify the FortiGate device terminates all network connections when non-local device maintenance is complete.\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Go to Administrative Settings.\n4. Verify Idle Timeout is configured to 10 minutes.\n\nIf the idle-timeout value is not 10 minutes, this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration sys global | grep -i admintimeout\n\nThe output should be:         \n          set admintimeout 10\n\nIf the admintimeout parameter is not set to 10 minutes, this is a finding.","fixText":"To configure the device to terminate all network connections when non-local maintenance is complete:\n\nLog in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Go to Administrative Settings.\n4. Enter the Idle Timeout value of 10.\n5. Click Apply.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system global\n          # set admintimeout 10\n     # end","ccis":["CCI-000879"]},{"vulnId":"V-234214","ruleId":"SV-234214r961068_rule","severity":"high","ruleTitle":"The FortiGate device must terminate idle sessions after 10 minutes of inactivity.","description":"Terminating an idle session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle session will also free up resources committed by the managed network element. \n\nTerminating network connections associated with communications sessions includes, for example, de-allocating associated TCP/IP address/port pairs at the operating system level, or de-allocating networking assignments at the application level if multiple application sessions are using a single, operating system-level network connection. This does not mean that the device terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Go to Administrative Settings.\n4. Verify Idle Timeout is configured to 10 minutes.\n\nIf the idle-timeout value is not 10 minutes, this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration sys global | grep -i admintimeout\n\nThe output should be:         \n          set admintimeout 10\n\nIf the admintimeout parameter is not set to 10 minutes, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Settings.\n3. Go to Administrative Settings.\n4. Enter the Idle Timeout value of 10.\n5. Click Apply.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system global\n          # set admintimeout 10\n     # end","ccis":["CCI-001133"]},{"vulnId":"V-234215","ruleId":"SV-234215r1043181_rule","severity":"medium","ruleTitle":"The FortiGate device must generate unique session identifiers using a FIPS 140-2-approved random number generator.","description":"Sequentially generated session IDs can be easily guessed by an attacker. Employing the concept of randomness in the generation of unique session identifiers helps to protect against brute-force attacks to determine future session identifiers.\n\nUnique session IDs address man-in-the-middle attacks, including session hijacking or insertion of false information into a session. If the attacker is unable to identify or guess the session information related to pending application traffic, they will have more difficulty in hijacking the session or otherwise manipulating valid sessions.\n\nThis requirement is applicable to devices that use a web interface for device management.","checkContent":"Session IDs are generated using the FIPS random generator if the device is in FIPS mode.\n\nTo verify login to the FortiGate GUI with Super-Admin privilege:\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # get system status | grep -i fips\nThe output should be:         \n             FIPS-CC mode: enable\n\nIf FIPS-CC mode parameter is not set to enable, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n      # config system fips-cc\n            # set status enable\n     # end","ccis":["CCI-001188"]},{"vulnId":"V-234216","ruleId":"SV-234216r961128_rule","severity":"high","ruleTitle":"The FortiGate device must only allow authorized administrators to view or change the device configuration, system files, and other files stored either in the device or on removable media (such as a flash drive).","description":"This requirement is intended to address the confidentiality and integrity of system information at rest (e.g., network device rule sets) when it is located on a storage device within the network device or as a component of the network device. This protection is required to prevent unauthorized alteration, corruption, or disclosure of information when not stored directly on the network device.\n\nFiles on the network device or on removable media used by the device must have their permissions set to allow read or write access to those accounts that are specifically authorized to access or change them. Note that different administrative accounts or roles will have varying levels of access.\n\nFile permissions must be set so that only authorized administrators can read or change their contents. Whenever files are written to removable media and the media removed from the device, the media must be handled appropriately for the classification and sensitivity of the data stored on the device.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click System.\n2. Click Administrators.\n3. Click each administrator and hover over the profile that is assigned to the role.\n4. Click Edit.\n5. Verify that the permission on System is set to READ or Read/Write.\n\nIf any unauthorized administrator has Read/Write access to System, this is a finding.\n\nor \n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command for all low privileged admin users:\n\n     # show system admin  {ADMIN NAME}  | grep -i accprofile\nThe output should be:  \n           set accprofile {PROFILE NAME}\n\nUse the profile name from the output result of above command. \n     # show system accprofile {PROFILE NAME} | grep -i sysgrp\nThe output should be:  \n          set sysgrp none\n          \nIf any low privileged admin user has sysgrp parameter set to values other than NONE, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. First edit the admin profile by running the following command:\n\n     # config system accprofile \n           # edit {PROFILE NAME}\n                 # set sysgrp read-write\n          # next\n     # end\nThen, assign appropriate admin profiles to the administrator account. \n     # config system admin  \n          # edit {ADMIN NAME}\n          # set accprofile  {PROFILE NAME}\n          # next\n     # end\n\nThis profile should only be assigned to administrators authorized to change system configurations.","ccis":["CCI-001199"]},{"vulnId":"V-234217","ruleId":"SV-234217r961620_rule","severity":"medium","ruleTitle":"The FortiGate device must protect against known types of denial-of-service (DoS) attacks by employing organization-defined security safeguards.","description":"DoS prohibit a resource from being available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity.\n\nThis requirement addresses the configuration of network devices to mitigate the impact of DoS attacks that have occurred or are ongoing on device availability. For each network device, known and potential DoS attacks must be identified and solutions for each type implemented. A variety of technologies exist to limit or, in some cases, eliminate the effects of DoS attacks (e.g., limiting processes or restricting the number of sessions the device opens at one time). Employing increased capacity and bandwidth, combined with service redundancy, may reduce the susceptibility to some DoS attacks.\n\nThe security safeguards cannot be defined at the DoD-level because they vary according to the capabilities of the individual network devices and the security controls applied on the adjacent networks (for example, firewalls performing packet filtering to block DoS attacks).","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Policy and Objects.\n2. Click on IPv4 DoS Policy or IPv6 DoS Policy.\n3. Identify the port designated for FortiGate device management.\n4. Select the policy and click Edit.\n5. Verify appropriate L3 Anomalies and L4 Anomalies are configured to meet the organization requirement.\n6. Verify the policy is Enabled.\n\nIf appropriate DoS policies are not defined or are disabled, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Click Policy and Objects.\n2. Click IPv4 DoS Policy or IPv6 DoS Policy.\n3. Identify the port designated for FortiGate device management.\n4. Click +Create New.\n5. Define the Incoming Interface, Source Address, Destination Address, and Services.\n6. Configure L3 Anomalies, and L4 Anomalies to meet the organization requirement.\n7. Click OK.","ccis":["CCI-002385"]},{"vulnId":"V-234218","ruleId":"SV-234218r1137890_rule","severity":"high","ruleTitle":"The FortiGate device must be configured to send log data to a central log server for the purpose of forwarding alerts to the administrators and the ISSO.","description":"The aggregation of log data kept on a syslog server can be used to detect attacks and trigger an alert to the appropriate security personnel. The stored log data can be used to detect weaknesses in security that enable the network IA team to find and address these weaknesses before breaches can occur. Reviewing these logs, whether before or after a security breach, is important in showing whether someone is an internal employee or an outside threat.","checkContent":"Verify that FortiGate is configured to send logs to a central log server.  \n\nLog in via the FortiGate GUI with super-admin privileges. \n\n1. Navigate to Log and Report.\n2. Navigate to Log Settings.\n3. Locate the Remote Logging and Archiving section.\n4. Verify FortiGate is configured to log to a FortiAnalyzer or a syslog server.\n\nor\n\nOpen a CLI console via SSH or from the \"CLI Console\" button in the GUI.\n\nRun the following commands and verify that at least one of the settings reflects \"set status enable\" in the output:\n# show full-configuration | grep -A1 'log fortianalyzer'\n# show full-configuration | grep -A1 'log syslogd.* setting'\n\nThe CLI output will indicate \"set status enable\" if configured.\n\nIf the FortiGate is not logging to a central log server, this is a finding.","fixText":"Log in via the GUI with super-admin privileges.\n\n1. Click Log and Report.\n2. Click Log Settings.\n3. Locate the Remote Logging and Archiving section.\n4. Configure FortiGate to log to a FortiAnalyzer or syslog server.\n- Enable logging to FortiAnalyzer and provide the IP address. Additional FortiAnalyzer logging destinations can be configured in the CLI.\n- Enable the \"Send logs to syslog\" toggle and provide the IP address. Additional syslog logging destinations can be configured in the CLI.\n5. Apply changes.\n\nor\n\n1. Open a CLI console via SSH or from the \"CLI Console\" button in the GUI.\n2. Configure a FortiAnalyzer or syslog server with the following commands:\n\nFortiAnalyzer Logging:\nconfig log fortianalyzer setting\n   set status enable\n   set server {IP Address}\n   set upload-option realtime\nend\n\nsyslog Logging:\nconfig log syslogd setting\n   set status enable\n   set server {IP Address}\n   set mode reliable\nend","ccis":["CCI-002605"]},{"vulnId":"V-234219","ruleId":"SV-234219r960735_rule","severity":"medium","ruleTitle":"The FortiGate device must limit the number of logon and user sessions.","description":"Device management includes the ability to control the number of administrators and management sessions that manage a device. Limiting the number of allowed administrators and sessions per administrator based on account type, role, or access type is helpful in limiting risks related to DoS attacks.\n\nThis requirement addresses concurrent sessions for administrative accounts and does not address concurrent sessions by a single administrator via multiple administrative accounts. The maximum number of concurrent sessions should be defined based upon mission needs and the operational environment for each system. At a minimum, limits must be set for SSH, HTTPS, account of last resort, and root account sessions.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege and open a CLI console available from the GUI.\nor\nConnect via SSH.\n\nRun the following command:\nshow full-configuration sys global | grep -i admin\n\nCheck the output of the following lines:\nset admin-concurrent disable\nset admin-login-max <number as defined by the organization>     \n\nIf set admin-concurrent is not set to disable, this is a finding.\nIf set admin-login-max is not set to a number defined by the organization, this is a finding. The default setting is 100.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege and open a CLI console available from the GUI.\nor\nConnect via SSH.\n\nExecute the following commands:\nconfig system global\nset admin-concurrent disable\nset admin-login-max <number defined by the organization>    \nend\n\nWith the implementation of this requirement, the organization can limit each administrator to one active session and limit the total number of concurrent administrator sessions to a value deemed appropriate.","ccis":["CCI-000054"]},{"vulnId":"V-234220","ruleId":"SV-234220r984089_rule","severity":"medium","ruleTitle":"The FortiGate device must only install patches or updates that are validated by the vendor via digital signature or hash.","description":"Changes to any software components can have significant effects on the overall security of the network device. Verifying software components have been digitally signed or hashed ensures that the software has not been tampered with and has been provided by a trusted vendor. \n\nAccordingly, patches, service packs, or application components must be signed with a certificate or verified with an integrity hash provided by the vendor. \n\nVerifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This ensures the software has not been tampered with and has been provided by a trusted vendor.","checkContent":"Verify the process used to apply updates and patches to the system.\n\nIf the system is updated via a FortiGuard or FortiManager server, those solutions meet the requirement and this is NOT a finding.\n\nIf the system is not using a FortiGuard or FortiManager server, and a process is not defined to manually verify the update hash value with the vendor site, this is a finding.","fixText":"Administrators can download software directly from a FortiGuard or FortiManager server. These servers are authenticated using digital certificates that ensure identity and non-repudiation of the source packages. This is a preferred method of applying updates.\n\n The Administrator can also download the software from Fortinet's support website portal. The website includes a file checksum to verify file integrity prior to uploading.\n \nDevelop a process to download the update files from the Fortinet website, and manually compare the download hash to the hash value provided on the vendor site before applying the update files to the system.","ccis":["CCI-001749"]},{"vulnId":"V-234221","ruleId":"SV-234221r1153456_rule","severity":"medium","ruleTitle":"The FortiGate device must require that when a password is changed, the characters are changed in at least eight of the positions within the password.","description":"If the application allows the user to consecutively reuse extensive portions of passwords, this increases the chances of password compromise by increasing the window of opportunity for attempts at guessing and brute-force attacks.\n\nThe number of changed characters refers to the number of changes required with respect to the total number of positions in the current password. In other words, characters may be the same within the two passwords; however, the positions of the like characters must be different.\n\nMultifactor authentication (MFA) is required for all administrative and user accounts on network devices, except for an account of last resort and (where applicable) a root account. Passwords should only be used when MFA using PKI is not available, and for the account of last resort and root account.","checkContent":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # show full-configuration system password-policy | grep -i change\n    The output should be:\n      # set change-8-characters enable\n\nIf the change-8-characters parameter is set to disable, this is a finding.","fixText":"Log in to the FortiGate GUI with Super-Admin privilege.\n\n1. Open a CLI console, via SSH or available from the GUI.\n2. Run the following command:\n     # config system password-policy\n           # set change-8-characters enable\n     # end","ccis":["CCI-000195"]}]}