Splunk Enterprise 8.x for Linux Security Technical Implementation Guide
Pick two releases to diff their requirements.
Open a previous version of this STIG.
Digest of Updates ✎ 19
Comparison against the immediately-prior release (V1R1). Rule matching uses the Group Vuln ID. Content-change detection compares the rule’s description, check, and fix text after stripping inline markup — cosmetic-only edits aren’t flagged.
Content changes 19
- V-251657 Medium checkfix Splunk Enterprise idle session timeout must be set to not exceed 15 minutes.
- V-251659 Medium checkfix Splunk Enterprise must enforce the limit of three consecutive invalid logon attempts by a user during a 15-minute time period.
- V-251660 Medium checkfix Splunk Enterprise must automatically lock the account until the locked account is released by an administrator when three unsuccessful login attempts in 15 minutes are exceeded.
- V-251662 Medium checkfix Splunk Enterprise must be configured to protect the log data stored in the indexes from alteration.
- V-251665 Low checkfix The System Administrator (SA) and Information System Security Manager (ISSM) must configure the retention of the log records based on the defined security plan.
- V-251669 Low checkfix Splunk Enterprise must be configured to send an immediate alert to the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when allocated log record storage volume reaches 75 percent of the repository maximum log record storage capacity.
- V-251675 Medium checkfix Splunk Enterprise must use TCP for data transmission.
- V-251677 Medium checkfix Analysis, viewing, and indexing functions, services, and applications used as part of Splunk Enterprise must be configured to comply with DoD-trusted path and access requirements.
- V-251679 High checkfix Splunk Enterprise must use organization-level authentication to uniquely identify and authenticate users.
- V-251680 Medium checkfix Splunk Enterprise must use HTTPS/SSL for access to the user interface.
- V-251681 Low checkfix Splunk Enterprise must be configured to enforce password complexity by requiring that at least one uppercase character be used.
- V-251682 Low checkfix Splunk Enterprise must be configured to enforce password complexity by requiring that at least one lowercase character be used.
- V-251683 Low checkfix Splunk Enterprise must be configured to enforce password complexity by requiring that at least one numeric character be used.
- V-251684 Low checkfix Splunk Enterprise must be configured to enforce a minimum 15-character password length.
- V-251685 Low checkfix Splunk Enterprise must be configured to enforce password complexity by requiring that at least one special character be used.
- V-251687 Low checkfix Splunk Enterprise must be configured to enforce a 60-day maximum password lifetime restriction.
- V-251688 Low checkfix Splunk Enterprise must be configured to prohibit password reuse for a minimum of five generations.
- V-251689 High checkfix Splunk Enterprise must use TLS 1.2 and SHA-2 or higher cryptographic algorithms.
- V-251691 High checkfix Splunk Enterprise must be configured to protect the confidentiality and integrity of transmitted information.
- RMF Control
- IA-11
- Severity
- M
- CCI
- CCI-002038
- Version
- SPLK-CL-000010
- Vuln IDs
-
- V-251657
- Rule IDs
-
- SV-251657r819079_rule
Checks: C-55095r819077_chk
This check is performed on the machine used as a search head, which may be a separate machine in a distributed environment. If the instance being reviewed is not used as a search head, this check in N/A. Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the web.conf file. If the web.conf file does not exist, this is a finding. If the "tools.sessions.timeout" is missing or is configured to 16 or more, this is a finding.
Fix: F-55049r819078_fix
This configuration is performed on the machine used as a search head, which may be a separate machine in a distributed environment. If the web.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify/Add the following lines in the web.conf file: tools.session.timeout = 15
- RMF Control
- AC-2
- Severity
- L
- CCI
- CCI-001683
- Version
- SPLK-CL-000020
- Vuln IDs
-
- V-251658
- Rule IDs
-
- SV-251658r808210_rule
Checks: C-55096r808208_chk
Interview the SA to verify that a report exists to notify the SA and ISSO when account events are received for all devices and hosts within its scope of coverage. Interview the ISSO to confirm receipt of this report. If Splunk Enterprise is not configured to notify the SA and ISSO when account events are received for all devices and hosts within its scope of coverage, this is a finding.
Fix: F-55050r808209_fix
Configure Splunk Enterprise, using the reporting and notification tools, to notify the SA and ISSO when account events are received for all devices and hosts within its scope of coverage.
- RMF Control
- AC-7
- Severity
- M
- CCI
- CCI-000044
- Version
- SPLK-CL-000060
- Vuln IDs
-
- V-251659
- Rule IDs
-
- SV-251659r819082_rule
Checks: C-55097r819080_chk
This check is applicable to the instance with the Search Head role, which may be a different instance in a distributed environment. Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "lockoutAttempts" is missing or is configured to more than 3, this is a finding. If the "lockoutThresholdMins" is missing or is configured to less than 15, this is a finding.
Fix: F-55051r819081_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: lockoutAttempts = 3 lockoutThresholdMins = 15
- RMF Control
- AC-7
- Severity
- M
- CCI
- CCI-002238
- Version
- SPLK-CL-000070
- Vuln IDs
-
- V-251660
- Rule IDs
-
- SV-251660r819085_rule
Checks: C-55098r819083_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the lockoutUsers" is missing or is configured to 0 or False, this is a finding.
Fix: F-55052r819084_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: lockoutUsers = True or 1
- RMF Control
- AC-8
- Severity
- L
- CCI
- CCI-000048
- Version
- SPLK-CL-000080
- Vuln IDs
-
- V-251661
- Rule IDs
-
- SV-251661r808219_rule
Checks: C-55099r808217_chk
This check is performed on the machine used as a search head, which may be a separate machine in a distributed environment. If the instance being reviewed is not used as a search head, this check in N/A. Verify that the Standard Mandatory DoD Notice and Consent Banner appears before being granted access to Splunk Enterprise. If the Standard Mandatory DoD Notice and Consent Banner is not presented, this is a finding.
Fix: F-55053r808218_fix
This configuration is performed on the machine used as a search head, which may be a separate machine in a distributed environment. Configure Splunk Enterprise to display the Mandatory DoD Notice and Consent Banner by modifying the web.conf file. Add/modify the line: "login_content = <String>" The string in the above line will be the text of the DoD consent banner.
- RMF Control
- AU-10
- Severity
- M
- CCI
- CCI-000166
- Version
- SPLK-CL-000090
- Vuln IDs
-
- V-251662
- Rule IDs
-
- SV-251662r835283_rule
Checks: C-55100r835281_chk
This check is performed on the machine used as an indexer, which may be a separate machine in a distributed environment. If the instance being reviewed is not used as an indexer, this check is N/A. Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the indexes.conf file. If the indexes.conf file does not exist, this is a finding. If the "enableDataIntegrityControl" is missing or is configured to 0 or false for each index, this is a finding.
Fix: F-55054r835282_fix
If the indexes.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the indexes.conf file under each index: enableDataIntegrityControl = 1 or True
- RMF Control
- AU-12
- Severity
- L
- CCI
- CCI-000174
- Version
- SPLK-CL-000100
- Vuln IDs
-
- V-251663
- Rule IDs
-
- SV-251663r808225_rule
Checks: C-55101r808223_chk
Examine the site documentation that lists the scope of coverage for the instance being reviewed. Select Settings >> Data Inputs. Verify that data inputs are configured to support the scope of coverage documented for the site. If Splunk enterprise is not configured to aggregate log records from organization-defined devices and hosts within its scope of coverage, this is a finding.
Fix: F-55055r808224_fix
Configure Splunk Enterprise to aggregate log records from organization-defined devices and hosts within its scope of coverage, as defined in the site security plan.
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000174
- Version
- SPLK-CL-000110
- Vuln IDs
-
- V-251664
- Rule IDs
-
- SV-251664r808228_rule
Checks: C-55102r808226_chk
This check is applicable to the instance with the Indexer role or the Forwarder role, which may be a different instance in a distributed environment. Verify the Splunk Enterprise Environment is configured to ingest log records from different hosts. On the forwarders, check if the output.conf file is configured with the details of the indexer is ingesting the log data (e.g., Hostname, port# etc.). On the indexer, check if the input.conf file is configured with the details of the forwarders that are sending the data. If the Splunk Enterprise is not configured to perform analysis of log records from across multiple hosts, this is a finding.
Fix: F-55056r808227_fix
On the forwarders, configure the outputs.conf with the information of the indexer that the data will be sent to for analysis. On the indexer, configure the inputs.conf file with the information of the forwarders that are sending the data for analysis.
- RMF Control
- AU-12
- Severity
- L
- CCI
- CCI-001914
- Version
- SPLK-CL-000120
- Vuln IDs
-
- V-251665
- Rule IDs
-
- SV-251665r819091_rule
Checks: C-55103r819089_chk
This check is applicable to the instance with the Indexer role, which may be a different instance in a distributed environment. Examine the site documentation for the retention time for log data. Examine the following file in the Splunk installation folder: $SPLUNK_HOME/etc/system/local/indexes.conf For each index defined in the scope, the frozenTimePeriodInSecs setting should match the site documentation. If the settings do not match, this is a finding.
Fix: F-55057r819090_fix
Edit the following file in the Splunk installation folder: $SPLUNK_HOME/etc/system/local/indexes.conf Set frozenTimePeriodInSecs to the defined retention period for each index location.
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000169
- Version
- SPLK-CL-000130
- Vuln IDs
-
- V-251666
- Rule IDs
-
- SV-251666r808234_rule
Checks: C-55104r808232_chk
Review the log records sent in Splunk Enterprise and verify that the log records retain the DoD-defined attributes. If the log files do not retain the DoD-defined attributes, this is a finding.
Fix: F-55058r808233_fix
Configure Splunk Enterprise to retain the DoD-defined attributes of the log records sent by the devices and hosts. Use Splunk Enterprise to modify the props.conf file to include the DoD-defined attributes.
- RMF Control
- AU-12
- Severity
- L
- CCI
- CCI-000171
- Version
- SPLK-CL-000140
- Vuln IDs
-
- V-251667
- Rule IDs
-
- SV-251667r808237_rule
Checks: C-55105r808235_chk
This check is applicable to the instance with the Search Head role, which may be a different instance in a distributed environment. Select Settings >> Users. If users have the admin role that are not defined by the ISSM as requiring admin rights, this is a finding. LDAP Groups Check: Select Settings >> Authentication Method >> LDAP Settings >> Map Groups. 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.
Fix: F-55059r808236_fix
Provide the list of individuals assigned by the ISSM to be members of the admin role to the Splunk Enterprise 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.
- RMF Control
- AU-4
- Severity
- M
- CCI
- CCI-001851
- Version
- SPLK-CL-000150
- Vuln IDs
-
- V-251668
- Rule IDs
-
- SV-251668r808240_rule
Checks: C-55106r808238_chk
Verify the Splunk Enterprise Environment is configured to offload log records to an external source. On the forwarder, check that the outputs.conf file is configured with the details of the source that the logs will be sent to (e.g. Hostname, port# etc.). If the Splunk Enterprise is not configured to offload log records to an external source, this is a finding.
Fix: F-55060r808239_fix
This configuration is performed on the machine used as a forwarder, which is always a separate machine regardless of environment. On the forwarders, configure the outputs.conf with the information of the indexer that the data will be sent to for analysis. This configuration is performed on the machine used as the assigned indexer to the forwarder in a distributed environment. On the indexer, configure the inputs.conf file with the information of the forwarders that are sending the data for analysis.
- RMF Control
- AU-5
- Severity
- L
- CCI
- CCI-001855
- Version
- SPLK-CL-000160
- Vuln IDs
-
- V-251669
- Rule IDs
-
- SV-251669r819094_rule
Checks: C-55107r819092_chk
Perform the following checks. If any do not comply, this is a finding. 1. Examine the file in the Splunk installation folder: $SPLUNK_HOME/etc/system/local/server.conf Locate the following setting: [diskUsage] minFreeSpace = xxxx Verify that the value is set to 25 percent of the size of the storage volume. For example, 25 percent of a 100GB drive is 25GB, and the value set would be 25000, as the value is in megabytes. 2. Examine the file in the Splunk installation folder: $SPLUNK_HOME/etc/system/local/health.conf Locate the following setting: [alert_action:email] disabled = 0 action.to = action.cc = Verify that the email addresses of the ISSO and SA are set to receive alerts. This email address can be a group address (example alerts@domain.com) that contain the addresses of the ISSO and SA. 3. In the Splunk console, select Settings >> Health Report Manager >> feature:disk_space. Verify Red setting is 1, and Yellow setting is 2.
Fix: F-55061r819093_fix
Perform the following fixes. 1. Edit the file in the Splunk installation folder: $SPLUNK_HOME/etc/system/local/server.conf Add the following lines: [diskUsage] minFreeSpace = xxxx Set the value to 25 percent of the size of the storage volume. For example, 25 percent of a 100GB drive is 25GB, and the value set would be 25000, as the value is in megabytes. 2. Examine the file in the Splunk installation folder: $SPLUNK_HOME/etc/system/local/health.conf Add the following lines: [alert_action:email] disabled = 0 action.to = action.cc = Set the email addresses of the ISSO and SA to be able to receive alerts. This email address can be a group address (example alerts@domain.com) that contain the addresses of the ISSO and SA. 3. In the Splunk console, select Settings >> Health Report Manager >> feature:disk_space. Set the Red setting to 1, and Yellow setting to 2.
- RMF Control
- AU-5
- Severity
- L
- CCI
- CCI-001858
- Version
- SPLK-CL-000170
- Vuln IDs
-
- V-251670
- Rule IDs
-
- SV-251670r808246_rule
Checks: C-55108r808244_chk
Interview the SA to verify that a report exists to notify the SA and ISSO of any audit failure, such as loss of communication or logs no longer being collected. Interview the ISSO to confirm receipt of this report. If a report does not exist to notify the SA and ISSO of audit failure events, or the ISSO does not confirm receipt of the report, this is a finding.
Fix: F-55062r808245_fix
Configure Splunk Enterprise, using the reporting and notification tools, to create a report with notification to the SA and ISSO of any audit failure events, such as loss of communication or logs no longer being collected.
- RMF Control
- AU-5
- Severity
- L
- CCI
- CCI-001861
- Version
- SPLK-CL-000180
- Vuln IDs
-
- V-251671
- Rule IDs
-
- SV-251671r808249_rule
Checks: C-55109r808247_chk
If the Splunk instance is used for Tier 2 CSSP (formerly CND-SP) or JRSS analysis, this check is N/A. Interview the SA to verify that a report exists to notify the SA and ISSO of any audit failure, such as loss of communication or logs no longer being collected. Interview the ISSO to confirm receipt of this report. If a report does not exist to notify the SA and ISSO of audit failure events, or the ISSO does not confirm receipt of this report, this is a finding.
Fix: F-55063r808248_fix
If the Splunk instance is used for Tier 2 CSSP (formerly CND-SP) or JRSS analysis, this check is N/A. Configure Splunk Enterprise, using the reporting and notification tools, to create a report with notification to the SA and ISSO of any audit failure events, such as loss of communication or logs no longer being collected.
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- SPLK-CL-000190
- Vuln IDs
-
- V-251672
- Rule IDs
-
- SV-251672r808252_rule
Checks: C-55110r808250_chk
This check must be done as the "splunk" user created during installation. Verify owner and group are set to splunk user. ls -ld $SPLUNK_HOME and $SPLUNK_ETC If the owner or group are not set to the splunk user, this is a finding. Check for 700 as permission. stat -c "%a %n" $SPLUNK_HOME and $SPLUNK_ETC If the permissions are not set to 700, this is a finding.
Fix: F-55064r808251_fix
Only the "splunk" and root users should have access to the Splunk Enterprise installation directories. chown splunk user $SPLUNK_HOME and $SPLUNK_ETC chgrp splunk user $SPLUNK_HOME and $SPLUNK_ETC chmod 700 $SPLUNK_HOME and $SPLUNK_ETC
- RMF Control
- AU-9
- Severity
- L
- CCI
- CCI-001348
- Version
- SPLK-CL-000250
- Vuln IDs
-
- V-251673
- Rule IDs
-
- SV-251673r808255_rule
Checks: C-55111r808253_chk
Interview the SA to verify that a process exists to back up the Splunk log data every seven days, using the underlying OS backup tools or another approved backup tool. If a backup plan does not exist for the Splunk log data, this is a finding.
Fix: F-55065r808254_fix
Implement a backup plan for the Splunk log data, following the Splunk documentation on backing up indexed data. Use the underlying OS backup tools, or another approved backup tool.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- SPLK-CL-000260
- Vuln IDs
-
- V-251674
- Rule IDs
-
- SV-251674r808258_rule
Checks: C-55112r808256_chk
Review the log records in Splunk Enterprise and verify that the log records retain the identity of the original source host or device where the event occurred. If the log files do not retain the identity of the original source host or device where the event occurred, this is a finding.
Fix: F-55066r808257_fix
Configure Splunk Enterprise to retain the identity of the original source host or device where the event occurred. Use Splunk Enterprise to modify the props.conf file to include the identity of the original source host or device where the event occurred.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- SPLK-CL-000270
- Vuln IDs
-
- V-251675
- Rule IDs
-
- SV-251675r819097_rule
Checks: C-55113r819095_chk
This check is performed on the machine used as an indexer, which may be a separate machine in a distributed environment. Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the inputs.conf file. If any input is configured to use a UDP port, this is a finding.
Fix: F-55067r819096_fix
This configuration is performed on the machine used as an indexer, which may be a separate machine in a distributed environment. Navigate to $SPLUNK_HOME/etc/system/local/ Modify the inputs.conf file to replace any input that is using a UDP port with a TCP port.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- SPLK-CL-000280
- Vuln IDs
-
- V-251676
- Rule IDs
-
- SV-251676r808264_rule
Checks: C-55114r808262_chk
Interview the SA to verify that a report exists to notify the SA and ISSO, at a minimum, when an attack is detected on multiple devices and hosts within its scope of coverage. Interview the ISSO to confirm receipt of this report. If a report does not exist, or the ISSO does not confirm receipt of this report, this is a finding.
Fix: F-55068r808263_fix
Configure Splunk Enterprise, using the Reporting and Alert tools, to notify the SA and ISSO, at a minimum, when an attack is detected on multiple devices and hosts within its scope of coverage.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- SPLK-CL-000290
- Vuln IDs
-
- V-251677
- Rule IDs
-
- SV-251677r835285_rule
Checks: C-55115r819098_chk
Execute a search query in Splunk using the following: index=_internal source=*metrics.log* group=tcpin_connections | dedup hostname | table _time hostname sourceIp destPort ssl Verify that the report returns ssl = true for every item listed. Navigate to $SPLUNK_HOME/etc/system/local/web.conf and verify the enableSplunkWebSSL is set to 1. If the report returns ssl = false for any item, and/or If enableSplunkWebSSL is not set, this is a finding.
Fix: F-55069r835284_fix
Edit the following files in the installation to configure Splunk to use SSL certificates: This configuration is performed on the machine used as an indexer, which may be a separate machine in a distributed environment. $SPLUNK_HOME/etc/system/local/inputs.conf [splunktcp-ssl:9997] disabled = 0 [SSL] serverCert = <path to the DoD approved certificate in PEM format> sslPassword = <password for the certificate> This configuration is performed on the machine used as a forwarder, which is always a separate machine regardless of environment. $SPLUNK_HOME/etc/system/local/outputs.conf [tcpout:group1] disabled = 0 clientCert = <path to the DoD approved certificate in PEM format> sslPassword = <password for the certificate> This configuration is performed on the machine used as a search head, which may be a separate machine in a distributed environment. Edit the following file in the installation to configure Splunk to use SSL certificates: $SPLUNK_HOME/etc/opt/system/local/web.conf [settings] enableSplunkWebSSL = 1 privKeyPath = <path to the private key generated for the DoD approved certificate> serverCert = <path to the DoD approved certificate in PEM format>
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- SPLK-CL-000300
- Vuln IDs
-
- V-251678
- Rule IDs
-
- SV-251678r808270_rule
Checks: C-55116r808268_chk
If the Splunk Installation is not distributed among multiple servers, this check is N/A. Select Settings >> Monitoring Console. In the Monitoring Console, select Settings >> General Setup. Check the Mode type. If set to Standalone, then this requirement is N/A, as all functions provided are necessary for operation. If Mode is set to Distributed, check that each instance is configured only with the server roles necessary for the implementation. If unused roles are configured, this is a finding.
Fix: F-55070r808269_fix
If the Splunk Installation is not distributed among multiple servers, this fix is N/A. Select Settings >> Monitoring Console. In the Monitoring Console, select Settings >> General Setup. Set the Mode type based on the implementation design. If Mode is set to Distributed, set each instance only with the server roles necessary for the desired functions.
- RMF Control
- IA-2
- Severity
- H
- CCI
- CCI-000764
- Version
- SPLK-CL-000320
- Vuln IDs
-
- V-251679
- Rule IDs
-
- SV-251679r819103_rule
Checks: C-55117r819101_chk
This check is performed on the machine used as a search head or a deployment server, which may be a separate machine in a distributed environment. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. In the authentication.conf file, verify minimum settings similar to the example below. If any minimum settings are not configured, this is a finding. If using LDAP: [authentication] authType = LDAP authSettings = <ldap_strategy> [<ldap_strategy>] host = <LDAP server> port = <LDAP port> sslEnabled = 1 Check the following file in the $SPLUNK_HOME/etc/openldap folder: ldap.conf If the file does not exist, this is a finding. Check for the following lines. If any are missing or do not match the settings below, this is a finding. TLS_REQCERT TLS_CACERT <path to SSL certificate> TLS_PROTOCOL_MIN 3.3 TLS_CIPHER_SUITE ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 If using SAML: [authentication] authType = SAML authSettings = <saml_strategy> [<saml_strategy>] entityId = <saml entity> idpSSOUrl = <saml URL> idpCertPath = <path to certificate> Open the Splunk Web console. Select Settings >> Access Controls >> Users. Verify that no user accounts exist with Authentication system set to Splunk except an account of last resort. They must all be set to LDAP or SAML. If any user accounts have Authentication system set to Splunk, with the exception of one emergency account of last resort, this is a finding.
Fix: F-55071r819102_fix
This configuration is performed on the machine used as a search head or a deployment server, which may be a separate machine in a distributed environment. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. Edit the authentication.conf file. If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Configure minimum settings similar to the example below for using LDAP or SAML. If using LDAP: [authentication] authType = LDAP authSettings = <ldap_strategy> [<ldap_strategy>] host = <LDAP server> port = <LDAP port> sslEnabled = 1 Edit the following file in the $SPLUNK_HOME/etc/openldap folder: ldap.conf Configure the following lines for your certificate. TLS_REQCERT TLS_CACERT <path to SSL certificate> TLS_PROTOCOL_MIN 3.3 TLS_CIPHER_SUITE ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 If using SAML: [authentication] authType = SAML authSettings = <saml_strategy> [<saml_strategy>] entityId = <saml entity> idpSSOUrl = <saml URL> idpCertPath = <path to certificate> After configuring LDAP or SAML, open the Splunk Web console. Select Settings >> Access Controls >> Users. Create appropriate LDAP and SAML users and groups for the environment. Delete any user account with Authentication system set to Splunk, with the exception of one emergency account of last resort. Splunk will prevent the user from deleting an LDAP or SAML account.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-001941
- Version
- SPLK-CL-000330
- Vuln IDs
-
- V-251680
- Rule IDs
-
- SV-251680r819106_rule
Checks: C-55118r819104_chk
This check is performed on the machine used as a search head or a deployment server, which may be a separate machine in a distributed environment. Check the following file in the installation to verify Splunk is set to use SSL and certificates: $SPLUNK_HOME/etc/system/local/web.conf [settings] enableSplunkWebSSL = 1 privKeyPath = <path to the private key generated for the DoD approved certificate> serverCert = <path to the DoD approved certificate in PEM format> If the settings are not configured to use SSL and certificates, this is a finding.
Fix: F-55072r819105_fix
This configuration is performed on the machine used as a search head or a deployment server, which may be a separate machine in a distributed environment. Edit the following file in the installation to configure Splunk to use SSL certificates: $SPLUNK_HOME/etc/system/local/web.conf [settings] enableSplunkWebSSL = 1 privKeyPath = <path to the private key generated for the DoD approved certificate> serverCert = <path to the DoD approved certificate in PEM format>
- RMF Control
- IA-5
- Severity
- L
- CCI
- CCI-000192
- Version
- SPLK-CL-000340
- Vuln IDs
-
- V-251681
- Rule IDs
-
- SV-251681r819109_rule
Checks: C-55119r819107_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "minPasswordUppercase" is missing or is configured to 0, this is a finding.
Fix: F-55073r819108_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: minPasswordUppercase = 1
- RMF Control
- IA-5
- Severity
- L
- CCI
- CCI-000193
- Version
- SPLK-CL-000350
- Vuln IDs
-
- V-251682
- Rule IDs
-
- SV-251682r819112_rule
Checks: C-55120r819110_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "minPasswordLowercase" is missing or is configured to 0, this is a finding.
Fix: F-55074r819111_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: minPasswordLowercase = 1
- RMF Control
- IA-5
- Severity
- L
- CCI
- CCI-000194
- Version
- SPLK-CL-000360
- Vuln IDs
-
- V-251683
- Rule IDs
-
- SV-251683r819115_rule
Checks: C-55121r819113_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "minPasswordDigit" is missing or is configured to 0, this is a finding.
Fix: F-55075r819114_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: minPasswordDigit = 1
- RMF Control
- IA-5
- Severity
- L
- CCI
- CCI-000205
- Version
- SPLK-CL-000370
- Vuln IDs
-
- V-251684
- Rule IDs
-
- SV-251684r819118_rule
Checks: C-55122r819116_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "minPasswordLength" is missing or is configured to 14 or less, this is a finding.
Fix: F-55076r819117_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: minPasswordLength = 15 or more
- RMF Control
- IA-5
- Severity
- L
- CCI
- CCI-001619
- Version
- SPLK-CL-000380
- Vuln IDs
-
- V-251685
- Rule IDs
-
- SV-251685r819121_rule
Checks: C-55123r819119_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "minPasswordSpecial" is missing or is configured to 0, this is a finding.
Fix: F-55077r819120_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: minPasswordSpecial = 1
- RMF Control
- IA-5
- Severity
- H
- CCI
- CCI-000197
- Version
- SPLK-CL-000390
- Vuln IDs
-
- V-251686
- Rule IDs
-
- SV-251686r808294_rule
Checks: C-55124r808292_chk
Run the following command from the server command line: Note: Run this command as the account of last resort, as no other local user accounts should exist. splunk show fips-mode -auth <username>:<password> Verify that the command returns FIPS mode enabled. If the command returns FIPS mode disabled, this is a finding.
Fix: F-55078r808293_fix
FIPS 140-2 mode must be enabled during initial installation. If not enabled, it requires a reinstall or upgrade of the application. Add the following line to the $SPLUNK_HOME/etc/splunk-launch.conf file during the installation process and before the initial start of Splunk Enterprise: SPLUNK_COMMON_CRITERIA=1 SPLUNK_FIPS=1 # Do not generate python byte code PYTHONDONTWRITEBYTECODE=1 This will enable FIPS mode before the initial startup.
- RMF Control
- IA-5
- Severity
- L
- CCI
- CCI-000199
- Version
- SPLK-CL-000400
- Vuln IDs
-
- V-251687
- Rule IDs
-
- SV-251687r819124_rule
Checks: C-55125r819122_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "expirePasswordDays" is missing or is configured to 61 or more, this is a finding.
Fix: F-55079r819123_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: expirePasswordDays = 60
- RMF Control
- IA-5
- Severity
- L
- CCI
- CCI-000200
- Version
- SPLK-CL-000410
- Vuln IDs
-
- V-251688
- Rule IDs
-
- SV-251688r819127_rule
Checks: C-55126r819125_chk
Examine the configuration. Navigate to the $SPLUNK_HOME/etc/system/local/ directory. View the authentication.conf file. If the authentication.conf file does not exist, this is a finding. If the "enablePasswordHistory" is missing or is configured to False, this is a finding. If the "passwordHistoryCount" is missing or is configured to 4 or less, this is a finding.
Fix: F-55080r819126_fix
If the authentication.conf file does not exist, copy the file from $SPLUNK_HOME/etc/system/default to the $SPLUNK_HOME/etc/system/local directory. Modify the following lines in the authentication.conf file under the [splunk_auth]: enablePasswordHistory = True passwordHistoryCount = 5
- RMF Control
- IA-7
- Severity
- H
- CCI
- CCI-000803
- Version
- SPLK-CL-000430
- Vuln IDs
-
- V-251689
- Rule IDs
-
- SV-251689r819130_rule
Checks: C-55127r819128_chk
Examine the configuration. Check the following files in the $SPLUNK_HOME/etc/system/local folder: inputs.conf : Check is applicable to the indexer which may be a separate machine in a distributed environment. Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or it is a finding: sslVersions = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 outputs.conf : Check is applicable to the forwarder which is always a separate machine in the environment. Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or it is a finding: sslVersions = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 server.conf Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or it is a finding: sslVersions = tls1.2 sslVersionsForClient = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 web.conf : Check is applicable to search head or deployment server which may be a separate machine in a distributed environment. Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or it is a finding: sslVersions = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 Check the following file in the /etc/openldap folder: ldap.conf Check for the following lines, they must match the settings below or it is a finding: #TLS_PROTOCOL_MIN: 3.1 for TLSv1.0, 3.2 for TLSv1.1, 3.3 for TLSv1.2. TLS_PROTOCOL_MIN 3.3 TLS_CIPHER_SUITE ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 Note: Splunk Enterprise must operate in FIPS mode to limit the algorithms allowed.
Fix: F-55081r819129_fix
Edit the following files in the $SPLUNK_HOME/etc/system/local folder: inputs.conf : Fix is applicable to the indexer which may be a separate machine in a distributed environment. Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or be removed: sslVersions = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 outputs.conf : Check is applicable to the forwarder which is always a separate machine in the environment. Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or be removed: sslVersions = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 server.conf Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or be removed: sslVersions = tls1.2 sslVersionsForClient = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 web.conf : Check is applicable to search head or deployment server which may be a separate machine in a distributed environment. Check for the following lines, if they do not exist, then the settings are compliant. If they exist, they must match the settings below or be removed: sslVersions = tls1.2 ciphersuite = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 ecdhCurves = prime256v1, secp384r1, secp521r1 Check the following file in the /etc/openldap folder: ldap.conf Check for the following lines, set to match the settings below: #TLS_PROTOCOL_MIN: 3.1 for TLSv1.0, 3.2 for TLSv1.1, 3.3 for TLSv1.2. TLS_PROTOCOL_MIN 3.3 TLS_CIPHER_SUITE ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA- AES128-SHA256:ECDHE-RSA-AES128-SHA256 Note: Splunk Enterprise must operate in FIPS mode to limit the algorithms allowed.
- RMF Control
- SC-23
- Severity
- M
- CCI
- CCI-002470
- Version
- SPLK-CL-000450
- Vuln IDs
-
- V-251690
- Rule IDs
-
- SV-251690r808306_rule
Checks: C-55128r808304_chk
On the host OS of the server, verify the properties of the certificate used by Splunk to ensure that the Issuer is the DoD trusted CA. This can be verified by the command: openssl x509 -text -inform PEM -in <name of cert> If the certificate issuer is not a DoD trusted CA, then this is a finding.
Fix: F-55082r808305_fix
Request a DoD-approved certificate and a copy of the DoD root CA public certificate, and place the files in a location for Splunk use. Configure the certificate files to the PEM format, using the Splunk Enterprise system documentation.
- RMF Control
- SC-8
- Severity
- H
- CCI
- CCI-002418
- Version
- SPLK-CL-000460
- Vuln IDs
-
- V-251691
- Rule IDs
-
- SV-251691r819133_rule
Checks: C-55129r819131_chk
Check the following files in the installation to verify Splunk uses SSL certificates for communication between the indexer and the forwarder: This check is performed on the machine used as an indexer, which may be a separate machine in a distributed environment. $SPLUNK_HOME/etc/system/local/inputs.conf [splunktcp-ssl:9997] disabled = 0 [SSL] serverCert = <path to the DoD approved certificate in PEM format> sslPassword = <password for the certificate> If these settings are misconfigured, this is a finding. This configuration is performed on the machine used as a forwarder, which is always a separate machine regardless of environment. $SPLUNK_HOME/etc/system/local/outputs.conf [tcpout:group1] disabled = 0 clientCert = <path to the DoD approved certificate in PEM format> sslPassword = <password for the certificate> If these settings are misconfigured, this is a finding.
Fix: F-55083r819132_fix
Edit the following files in the installation to configure Splunk to use SSL certificates: This configuration is performed on the machine used as an indexer, which may be a separate machine in a distributed environment. $SPLUNK_HOME/etc/system/local/inputs.conf [splunktcp-ssl:9997] disabled = 0 [SSL] serverCert = <path to the DoD approved certificate in PEM format> sslPassword = <password for the certificate> This configuration is performed on the machine used as a forwarder, which is always a separate machine regardless of environment. $SPLUNK_HOME/etc/system/local/outputs.conf [tcpout:group1] disabled = 0 clientCert = <path to the DoD approved certificate in PEM format> sslPassword = <password for the certificate>
- RMF Control
- IA-2
- Severity
- H
- CCI
- CCI-001953
- Version
- SPLK-CL-000490
- Vuln IDs
-
- V-251692
- Rule IDs
-
- SV-251692r808312_rule
Checks: C-55130r808310_chk
If the instance being checked is in a distributed environment and has the web interface disabled, this check is N/A. Verify that Splunk Enterprise is configured to use the DoD CAC or other PKI credential to log in to the application. If it is not configured to allow the use of the DoD CAC or other PKI credential, this is a finding.
Fix: F-55084r808311_fix
Configure an SSO proxy service using Apache, IIS, F5, SAML, etc., to provide PKI credentials to Splunk Enterprise. Examples for Apache and F5 are provided using the supplemental documentation included in this package to be used in addition to the Splunk documentation.