Select any two versions of this STIG to compare the individual requirements
Select any old version/release of this STIG to view the previous requirements
Verify session timeout is configured. In the UI, navigate to Admin >> SiteStore Management >> Advanced Settings. Click "Configurations". If Idle Auto-Logout Minutes is not set to "10" minutes, this is a finding. If Re-Authenticate User Device (Inactive) is not set to "1h", this is a finding.
Set session timeout configurations. In the UI, navigate to Admin >> SiteStore Management >> Advanced Settings. Click "Configurations". Set Idle Auto-Logout Minutes to "10". Set Re-Authenticate User Device (Inactive) to "1h". Click "Save & Apply".
Review the authentication method being used by the Platform. In the UI, navigate to Admin >> SiteStore Management >> Authentication Providers. If the Platform does not have an Authentication Provider configured, this is a finding.
Configure LDAP. In the UI, navigate to Admin >> SiteStore Management >> Authentication Providers. Next to LDAP/Active Directory, click "ADD PROVIDER". Fill in the configuration in the "Add New LDAP Provider" form. Click "Save".
Verify the Dragos Platform displays the Standard Mandatory DOD Notice and Consent Banner before granting access to the system when login in via SSH. If the banner does not exist or is not formatted in accordance with applicable DOD policy, this is a finding.
Configure the Dragos Platform to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the system: 1. Log in to the SiteStore or Sensor via SSH. 2. Input "config banner pre_login" into the CLI. 3. Input the banner text shown below, pressing "Enter" after each line. Press config appl CTRL-D to save the text or CTRL-C to quit without saving. 4. Apply the banner by executing the following: config apply The banner must be formatted in accordance with applicable DOD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -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. -At any time, the USG may inspect and seize data stored on this IS. -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. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -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." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."
Verify that the Standard Mandatory DOD Notice and Consent Banner appears before being granted access to Dragos Platform UI. If the Standard Mandatory DOD Notice is not presented, this is a finding.
1. Download the following script and put it in the /root directory on the sitestore where the DOD Banner is to be applied (see below). 2. Run the script with the following syntax: python3 DOD_Banner_Config_Utility.py, and go to the sitestore login page to verify the banner is present. 3. Schedule the cron with the following syntax to ensure the change survives reboots: 5 * * * * python3 /root/DOD_Banner_Config_Utility.py --persist-banner DOD_Banner_Config_Utility.py Utility: import os, json, sys, time # Created by bdudley@dragos.com to assist with Dragos STIG implementation # specifically related to DoD Banner for web UI before login os.chdir("/root") # version compatibility check if 'Platform Version: 2.4.' not in os.popen("dragoscmd version").read(): print("This version of the Dragos platform is incompatible with this script.") exit() DOD_BANNER_JS = "alert('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.');" fstream = open('banner.js', 'w') fstream.write(DOD_BANNER_JS) fstream.close() # get the platform-ui container id platformui = os.popen("kubectl get pods | grep platform-ui | grep -v platform-ui-logger | awk '{print $1}'").read().strip() BANNER_DIR = '/usr/share/nginx/html/source/' HTML_DIR = '/usr/share/nginx/html/' if "--restore-defaults" in sys.argv: print("Restoring to default, no banner.") os.system("kubectl -n dragos-sitestore cp ./index.html.bak "+platformui+":"+HTML_DIR+"index.html") print("Done, reload the page to test changes.") exit() # this will check periodically to make sure the banner changes persisted, and re-apply them if not if "--persist-banner" in sys.argv: # check the current settings current_html = os.popen("curl -k https://localhost").read() if "./source/banner.js" in current_html: print("Banner is currently set, taking no action.") exit() else: fstream = open("banner.log", "a") fstream.write("["+time.ctime().replace(" ", "")+"] banner was not set, setting banner now.\n") fstream.close() # put the banner js file in the appropriate directory os.system("kubectl -n dragos-sitestore cp ./banner.js "+platformui+":"+BANNER_DIR+"banner.js") # update the current version of index.html in the pod os.system("kubectl -n dragos-sitestore cp ./index.html.patched "+platformui+":"+HTML_DIR+"index.html") exit() # is the sitestore up and running? if "System is ready." not in os.popen("dragoscmd system k3s status").read(): print("System is not ready, wait until all pods are started before configuring banner.") exit() # is there a backup of the old index.html file if os.path.exists('index.html.bak') == False: print("Creating an index.html backup...") os.system("kubectl -n dragos-sitestore cp "+platformui+":"+HTML_DIR+"index.html ./index.html.bak") print("Done.") # put the banner js file in the appropriate directory os.system("kubectl -n dragos-sitestore cp ./banner.js "+platformui+":"+BANNER_DIR+"banner.js") # perform appropriate patching on the index.html backup fstream = open("index.html.bak", "r") html = fstream.read() fstream.close() original = '<script nonce="**CSP_NONCE**" type="module" crossorigin' replacement = '<script src="./source/banner.js" nonce="**CSP_NONCE**"></script><script nonce="**CSP_NONCE**" type="module" crossorigin' fstream = open("index.html.patched", "w") fstream.write(html.replace(original, replacement)) fstream.close() # update the current version of index.html in the pod os.system("kubectl -n dragos-sitestore cp ./index.html.patched "+platformui+":"+HTML_DIR+"index.html") print("Banner configuration changes complete, reload the login page (or logout) to see the popup. If the formatting for the popup needs to be adjusted, make the changes in the banner block above and re-run this script.") print("\nUse the below format to create a cron that makes the banner persist through reboots:\n\n*/5 * * * * python3 /root/DOD_Banner_Config_Utility.py --persist-banner\n\n")
Verify local user accounts. While logged in to the Dragos Platform with a user account with administrative privileges, navigate to Admin >> User Management >> Users. If any user except the Administrator and Service account is found, this is a finding.
Remove nonessential users. While logged in to the Dragos Platform with a user account with administrative privileges, navigate to Admin >> User Management >> Users. Click the kebab menu next to the user and select "Delete User". Click "DELETE" in the verification window.
Ensure all notification and audit services are functional. Log in to the SiteStore CLI and execute the following command: system k3s status If the message does not return "system is ready", this is a finding. (Note that for approximately 15–20 minutes after system startup or reboot, system will not be ready. Additionally, until the sensor is paired with a SiteStore, one pod on the sensor will not be ready).
If a notification does not appear, install KP-CW-24-001. This knowledge pack will add this and other notifications relevant to the STIG to the Dragos Platform. To add Knowledge Pack: While logged in to the Dragos Platform with a user account with administrative privileges, navigate to Admin >> SiteStore Management >> Knowledge Packs. Locate all "STIG-KP_Plus" Knowledge Pack(s). Click "Deploy" button next to the Knowledge Pack(s). Fill in the form and click "DEPLOY".
Verify third-party server is used to offload audit records. 1. Check for a configured Syslog Server. In the UI, navigate to Admin >> Integrations. Click "LAUNCH" in the Syslog section. If a Syslog Server is not listed or Status is not connected, this is a finding. 2. Check for an export rule. In the UI, navigate to Notification >> RULES Tab. Verify a rule exists and has the following: Action = "Send Syslog (<your syslog server>)" Criteria = "IF Notification Type equals System" If this rule does not exist with the correct Action and Criteria, this is a finding.
Create Syslog server and Rule. 1. Create a Syslog server on a third-party device. The steps may vary depending on the chosen Syslog server software. 2. Create a syslog server output in the Dragos UI. Navigate to Admin >> Integrations. Click "LAUNCH" in the Syslog section. Click "ADD NEW SERVER". Enter third-party server information and click "NEXT". Input Message Template. Click "SAVE". 3. Create a rule. Navigate to Notification >> RULES Tab. Click "NEW RULE". Fill in Name and Processing Order. Select For Rule Criteria: If ANY of the following - "Notification Type" "Equals" "System" Action = Send Syslog (third-party server) Click "SAVE".
If Dragos is running on an appliance, this check is Not Applicable. Check for disk encryption in a VM. Log into the VM and access the VM using remote access method, such as SSH. Use Built-in Tools or Commands: Linux: 1. Open a terminal window. 2. Use the following command to check if any encrypted partitions exist: lsblk -o NAME,FSTYPE,LABEL,UUID,SIZE,MOUNTPOINT,TYPE 3. Check for partitions with the filesystem type "crypto_LUKS" or similar. 4. Use the following command to list encrypted volumes: cryptsetup luksDump /dev/sdX (Replace /dev/sdX with the appropriate device name) If volumes are not encrypted, this is a finding.
If Dragos is running on an appliance, this check is Not Applicable. LUKS (Linux Unified Key Setup): During the installation process, most Linux distributions provide an option to encrypt the disk. Select this option to set up encryption. To encrypt an existing installation, use tools such as cryptsetup to set up encryption manually. Here is a general guide: Execute the following (Replace /dev/sdX with the appropriate device name): sudo cryptsetup luksFormat /dev/sdX sudo cryptsetup open /dev/sdX encrypted_disk sudo mkfs.ext4 /dev/mapper/encrypted_disk sudo mount /dev/mapper/encrypted_disk /mnt
Verify shell environment: Log in to the Dragos Platform CLI. Execute the following command: run shell If the option "run shell" executes successfully and places the terminal session into a shell environment, this is a finding. Note: A shell environment will be noticeable because the terminal line will be in the format "user@dragos:~$" compared to dragoscmd, which would be "dragos>". If shell is properly uninstalled, the return will be "Error: No such command 'shell'."
Uninstall shell environment: Log in to the Dragos Platform CLI. Execute the following command: run ushell Once this is done, users cannot initiate communications outside low threshold (nonuser configurable) ICMP packets. Nonsigned installation packages cannot be added to the Dragos Platform. This command removes the shell from the Platform; it cannot be reinstalled without installing Dragos Platform from baseline images.
Obtain the LDAP group name mapped to the admin role. Request from the LDAP administrator the group membership of this LDAP group, and compare to the list of individuals appointed by the ISSM. If users that are not defined by the ISSM as requiring admin rights are present in the admin role membership, this is a finding.
Provide the list of individuals assigned by the ISSM to be members of the admin role to the Dragos administrator. Provide the list of individuals assigned by the ISSM to be members of the admin role to the LDAP administrator to add to the LDAP group mapped to the admin role. Create user accounts and assign the admin role for users provided in the lists.
Check password configurations. In the UI, navigate to Admin >> SiteStore Management >> Authentication Providers. Click "EDIT" in the Local Authentication section. Verify the following settings: 1. Password Expiration is set to "2 months" or less. 2. Password Reuse Limit is set to "5" or less. 3. Minimum Length is set to "15" or greater. 4. Uppercase and lowercase letters is checked. 5. Special characters is checked. 6. Numeric characters is checked. If any settings are not configured correctly, this is a finding.
Change password configurations. In the UI, navigate to Admin >> SiteStore Management >> Authentication Providers. Click "EDIT" in the Local Authentication section. Change the fields to the following settings: Password Expiration = "2 months" or less Password Reuse Limit = "5" or less Minimum Length = "15" or greater Uppercase and lowercase letters = Checked Special characters = Checked Numeric characters = Checked Click "SAVE".
If using Dragos hardware, this check is Not Applicable. In a virtual environment, check for FIPS-validated encryption: Check the documentation of the virtual environment being used (e.g., virtual machine software or cloud service provider documentation) to find out if it uses FIPS compliance or FIPS-validated encryption support. Check for configuration settings related to encryption algorithms and cryptographic modules in the virtual environment. Some platforms allow users to enable FIPS mode. Perform testing to ensure that only FIPS-approved cryptographic algorithms are being used within the virtual environment. This would involve testing encryption and decryption processes to confirm compliance with FIPS standards. If the virtual environment is not using FIPS-validated encryption or is not using FIPS compliance, this is a finding.
If using Dragos hardware, this check is Not Applicable. Configuring FIPS compliance in a virtual environment involves enabling settings or options that enforce the use of only FIPS-approved cryptographic algorithms and modules. The exact steps may vary depending on the virtualization platform being used (e.g., VMware, Hyper-V, VirtualBox) or the cloud service provider being used (e.g., AWS, Azure). Here is a general guide on how to configure FIPS compliance in a virtual environment: Review Documentation: Start by reviewing the documentation provided by the virtualization platform or cloud service provider. Check for information on FIPS compliance and how to enable it within the environment. Enable FIPS Mode: Many virtualization platforms offer an option to enable FIPS mode. Depending on the platform, this option may be found in the settings or configuration menu. Update Software: Ensure the virtualization software and any guest operating systems are up to date. Some updates may include patches or changes related to FIPS compliance. Configure Security Policies: Check if there are specific security policies or configurations related to FIPS compliance that need to be set within the virtual environment. This could include policies related to encryption, authentication, or other security-related settings. Test Configuration: After enabling FIPS mode and configuring any necessary settings, perform testing to ensure that only FIPS-approved cryptographic algorithms are being used within the virtual environment. Test various cryptographic operations to verify compliance.
While logged in to the Dragos Platform with a user account with administrative privileges, navigate to Admin >> User Management >> Users. Create a new user account (does not require roles or authentication). (Within 15 minutes) 1. Click the "Notifications" button. Verify a notification appears within Dragos Platform notifications page. If a notification does not occur, this is a finding. 2. Observe that the same notification appears in the aggregate server/syslog recipient. (Note: Depending on the software application used, steps to view syslog third-party alerts may vary.) If an alert is not being sent to third-party syslog, this is a finding. 3. Check Rules: Navigate to Notification >> RULES Tab. Verify a rule exists and has the following: Action = "Send Syslog (third-party server)" Criteria = "Detected By Equals Authentication to the Dragos Platform" "Detected By Equals User Account Activity" If a rule does not exist with the correct Action and Criteria, this is a finding. 4. Remove the test user just created.
1. If a notification does not appear, install KP-CW-24-001. This knowledge pack will add this and other notifications relevant to the STIG to the Dragos Platform. Adding Knowledge Pack: While logged in to the Dragos Platform with administrative privileges, navigate to Admin >> SiteStore Management >> Knowledge Packs. Locate all "STIG-KP_Plus" Knowledge Pack(s). Click "Deploy" button next to the Knowledge Pack(s). Fill in the form and click "DEPLOY". 2. If a notification appears but is not received by the aggregate/syslog server, ensure there is a rule to trigger a syslog export in the "Notifications" applet of the Dragos Platform. If not, create one. To create a rule, navigate to Notification >> RULES Tab. Create two Attributes. Click "NEW RULE". Fill in Name and Processing Order. Click "ADD ATTRIBUTE" in the "If ANY of the following" block Type = "Detected By" Select Operation = "Equals" Select Value = "Authentication to the Dragos Platform" Click "ADD ATTRIBUTE" in the "If ANY of the following" block Type = "Detected By" Select Operation = "Equals" Select Value = "User Account Activity" In the "THEN perform the following actions block: Click "ADD ACTION" Action = Send Syslog (third-party server) Click "SAVE".
In the UI, navigate to Admin >> SiteStore Management >> Advanced Settings. Review the System Security Plan (SSP). Verify Deleted Retention Days and Source Data Retention Days is set accordance with organization-defined audit record storage requirements. If not, this is a finding.
In the UI, navigate to Admin >> SiteStore Management >> Advanced Settings. Set "Deleted Retention Days" and "Source Data Retention Days" (length in days) in accordance with organization-defined audit record storage requirements. Click "Save & Apply".
Use the netstat command to display active UDP connections: netstat -n -p UDP If the syslog client is using a UDP connection, this is a finding.
Changing UDP ports to TCP ports and using TCP instead involves modifying the configuration of the application or service that uses UDP for communication. Modify the syslog client configuration to specify TCP instead of UDP. This may involve changing port numbers or selecting TCP as the communication protocol. After making the necessary changes, restart the application or service to apply the new configuration settings. This ensures that the syslog client starts using TCP ports instead of UDP ports.
Verify that Dragos is configured to use the DOD CAC or other PKI credential to log in to the application. Log in to the application. If DOD CAC or other PKI is not configured, this is a finding.
Configure an SSO proxy service using LDAP to provide PKI credentials.
Open a web browser and navigate to the Dragos Platform UI. Locate the security or certificate status indicator at the address bar. Open the certificate information. If the certificate is signed by anyone other than DOD, PKI, or CA, this is a finding.
Change Certificate via GUI. In the UI, navigate to Admin >> SiteStore Management >> Advanced Settings. Click "Change Certificate". Fill in the correct fields and either upload or insert the certificate. Click "Save & Apply".
1. Check Server Configuration. If using Syslog Server: Verify third-party server is used to receive communication-related notifications. Check for a configured Syslog Server. In the UI, navigate to Admin >> Integrations. Click "LAUNCH" in the Syslog section. If using Email Server: Check that the Email Server is configured. In the UI, navigate to Admin >> Integrations. Click "LAUNCH" on the email block. If no server is configured or the status is not "Connected", this is a finding. If no recipient is configured, this is a finding. 2. Check Rules: Navigate to Notification >> RULES Tab. Verify a rule exists and has the following: Action = "Send (<your syslog server or email server>)" Criteria = "Notification Type Equals System" "Notification Type Equals System Failure" If a rule does not exist with the correct Action and Criteria, this is a finding.
1. Configure Servers. If using Syslog Server: Create a Syslog server on a third-party device. The steps may vary depending on the chosen Syslog server software. Refer to 2.3.x Dragos Platform Syslog Integration Guide in the Customer Portal for additional help. Create a syslog server output in the Dragos UI. Navigate to Admin >> Integrations. Click "LAUNCH" in the Syslog section. Click "ADD NEW SERVER". Enter third-party server information and click "NEXT". Input Message Template. Click "SAVE". If using Email Server: In the UI, navigate to Admin >> Integrations. Click "LAUNCH" on the email block. Configure the Email Server and Recipients: Refer to 2.3.x Dragos Platform Email Integration Guide in the Customer Portal for additional help. 2. Creating System Rules: Navigate to Notification >> RULES Tab. Click "NEW RULE". Fill in Name and Processing Order. Create two Attributes. Click "ADD ATTRIBUTE" in the "If ANY of the following" block: Type = "Notification Type" Select Operation = "Equals" Select Value = "System" Click "ADD ATTRIBUTE" in the "If ANY of the following" block: Type = "Notification Type" Select Operation = "Equals" Select Value = "System failure" In the "THEN perform the following actions block: Click "ADD ACTION". Action = "Send (<your syslog server or email server>)" Click "SAVE".
Verify NTP Server. Log in to the Dragos Platform CLI. Execute the following command: config show If an NTP server is configured, the following will be in the output. If the following is not in the output, this is a finding. (Note: "servers" will be the configured server.) "system": { "ntp": { "enabled": true, "servers": [ "pool.ntp.org" ] } }
Configure NTP Server. Log in to the Dragos Platform CLI. Execute the following command: config ntp server add ["SERVER_NAME"]