From 75b035261ff0f8fcec9e243742d1104732d70609 Mon Sep 17 00:00:00 2001 From: Jonathan <jonathan.leon@pandorafms.com> Date: Tue, 17 Oct 2023 12:52:40 +0200 Subject: [PATCH 1/3] #12256 remove id and check duplicate before insert --- pandora_console/extras/mr/65.sql | 57 ++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/pandora_console/extras/mr/65.sql b/pandora_console/extras/mr/65.sql index 290c9a3972..451f4822ae 100644 --- a/pandora_console/extras/mr/65.sql +++ b/pandora_console/extras/mr/65.sql @@ -78,14 +78,6 @@ ALTER TABLE `tmetaconsole_agent` ADD COLUMN `disabled_by_downtime` TINYINT NOT N DELETE FROM tconfig WHERE token = 'refr'; -INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (37,2,'CPU','CPU','','Brand;Clock;Model','',0,2); - -INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (38,2,'RAM','RAM','','Size','',0,2); - -INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (39,2,'NIC','NIC','','NIC;Mac;Speed','',0,2); - -INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (40,2,'Software','Software','','PKGINST;VERSION;NAME','',0,2); - ALTER TABLE `treport_content` ADD COLUMN `period_range` INT NULL DEFAULT 0 AFTER `period`; CREATE TABLE IF NOT EXISTS `tevent_comment` ( @@ -217,9 +209,54 @@ INSERT INTO `tsca` VALUES (26339,'Ensure 'Do not allow  INSERT INTO `tsca` VALUES (28058,'Ensure VSFTP Server is not installed.','FTP (File Transfer Protocol) is a traditional and widely used standard tool for transferring files between a server and clients over a network, especially where no authentication is necessary (permits anonymous users to connect to a server).','Unless there is a need to run the system as a FTP server, it is recommended that the package be removed to reduce the potential attack surface.','','Run the following command to remove vsftpd: # dnf remove vsftpd.','[{\"cis\": [\"2.2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28059,'Ensure TFTP Server is not installed.','Trivial File Transfer Protocol (TFTP) is a simple protocol for exchanging files between two TCP/IP machines. TFTP servers allow connections from a TFTP Client for sending and receiving files.','Unless there is a need to run the system as a TFTP server, it is recommended that the package be removed to reduce the potential attack surface. TFTP does not have built-in encryption, access control or authentication. This makes it very easy for an attacker to exploit TFTP to gain access to files.','TFTP is often used to provide files for network booting such as for PXE based installation of servers.','Run the following command to remove tftp-server: # dnf remove tftp-server.','[{\"cis\": [\"2.2.7\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28060,'Ensure a web server is not installed.','Web servers provide the ability to host web site content.','Unless there is a need to run the system as a web server, it is recommended that the packages be removed to reduce the potential attack surface. Note: Several http servers exist. They should also be audited, and removed, if not required.','','Run the following command to remove httpd and nginx: # dnf remove httpd nginx.','[{\"cis\": [\"2.2.8\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28061,'Ensure IMAP and POP3 server is not installed.','dovecot is an open source IMAP and POP3 server for Linux based systems.','Unless POP3 and/or IMAP servers are to be provided by this system, it is recommended that the package be removed to reduce the potential attack surface. Note: Several IMAP/POP3 servers exist and can use other service names. These should also be audited and the packages removed if not required.','','Run the following command to remove dovecot and cyrus-imapd: # dnf remove dovecot cyrus-imapd.','[{\"cis\": [\"2.2.9\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28062,'Ensure Samba is not installed.','The Samba daemon allows system administrators to configure their Linux systems to share file systems and directories with Windows desktops. Samba will advertise the file systems and directories via the Server Message Block (SMB) protocol. Windows desktop users will be able to mount these directories and file systems as letter drives on their systems.','If there is no need to mount directories and file systems to Windows systems, then this package can be removed to reduce the potential attack surface.','','Run the following command to remove samba: # dnf remove samba.','[{\"cis\": [\"2.2.10\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1005\", \"T1039\", \"T1083\", \"T1135\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28063,'Ensure HTTP Proxy Server is not installed.','Squid is a standard proxy server used in many distributions and environments.','Unless a system is specifically set up to act as a proxy server, it is recommended that the squid package be removed to reduce the potential attack surface. Note: Several HTTP proxy servers exist. These should be checked and removed unless required.','','Run the following command to remove the squid package: # dnf remove squid.','[{\"cis\": [\"2.2.11\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28064,'Ensure net-snmp is not installed.','Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment, computer equipment and devices like UPSs. Net-SNMP is a suite of applications used to implement SNMPv1 (RFC 1157), SNMPv2 (RFCs 1901-1908), and SNMPv3 (RFCs 3411-3418) using both IPv4 and IPv6. Support for SNMPv2 classic (a.k.a. "SNMPv2 historic" - RFCs 1441-1452) was dropped with the 4.0 release of the UCD-snmp package. The Simple Network Management Protocol (SNMP) server is used to listen for SNMP commands from an SNMP management system, execute the commands or collect the information and then send results back to the requesting system.','The SNMP server can communicate using SNMPv1, which transmits data in the clear and does not require authentication to execute commands. SNMPv3 replaces the simple/clear text password sharing used in SNMPv2 with more securely encoded parameters. If the the SNMP service is not required, the net-snmp package should be removed to reduce the attack surface of the system. Note: If SNMP is required: - The server should be configured for SNMP v3 only. User Authentication and Message Encryption should be configured. - If SNMP v2 is absolutely necessary, modify the community strings' values.','','Run the following command to remove net-snmpd: # dnf remove net-snmp.','[{\"cis\": [\"2.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\", \"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28065,'Ensure telnet-server is not installed.','The telnet-server package contains the telnet daemon, which accepts connections from users from other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow a user with access to sniff network traffic the ability to steal credentials. The ssh package provides an encrypted session and stronger security.','','Run the following command to remove the telnet-server package: # dnf remove telnet-server.','[{\"cis\": [\"2.2.13\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\", \"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28066,'Ensure dnsmasq is not installed.','dnsmasq is a lightweight tool that provides DNS caching, DNS forwarding and DHCP (Dynamic Host Configuration Protocol) services.','Unless a system is specifically designated to act as a DNS caching, DNS forwarding and/or DHCP server, it is recommended that the package be removed to reduce the potential attack surface.','','Run the following command to remove dnsmasq: # dnf remove dnsmasq.','[{\"cis\": [\"2.2.14\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28067,'Ensure mail transfer agent is configured for local-only mode.','Mail Transfer Agents (MTA), such as sendmail and Postfix, are used to listen for incoming mail and transfer the messages to the appropriate user or mail server. If the system is not intended to be a mail server, it is recommended that the MTA be configured to only process local mail.','The software for all Mail Transfer Agents is complex and most have a long history of security issues. While it is important to ensure that the system can process local mail messages, it is not necessary to have the MTA's daemon listening on a port unless the server is intended to be a mail server that receives and processes mail from other systems. Note: - This recommendation is designed around the postfix mail server. - Depending on your environment you may have an alternative MTA installed such as sendmail. If this is the case consult the documentation for your installed MTA to configure the recommended state.','','Edit /etc/postfix/main.cf and add the following line to the RECEIVING MAIL section. If the line already exists, change it to look like the line below: inet_interfaces = loopback-only. Run the following command to restart postfix: # systemctl restart postfix.','[{\"cis\": [\"2.2.15\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28068,'Ensure nfs-utils is not installed or the nfs-server service is masked.','The Network File System (NFS) is one of the first and most widely distributed file systems in the UNIX environment. It provides the ability for systems to mount file systems of other servers through the network.','If the system does not require network shares, it is recommended that the nfs-utils package be removed to reduce the attack surface of the system.','Many of the libvirt packages used by Enterprise Linux virtualization are dependent on the nfs-utils package. If the nfs-utils package is required as a dependency, the nfs-server service should be disabled and masked to reduce the attack surface of the system.','Run the following command to remove nfs-utils: # dnf remove nfs-utils OR If the nfs-utils package is required as a dependency, run the following command to stop and mask the nfs-server service: # systemctl --now mask nfs-server.','[{\"cis\": [\"2.2.16\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1005\", \"T1039\", \"T1083\", \"T1135\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28069,'Ensure rpcbind is not installed or the rpcbind services are masked.','The rpcbind utility maps RPC services to the ports on which they listen. RPC processes notify rpcbind when they start, registering the ports they are listening on and the RPC program numbers they expect to serve. The client system then contacts rpcbind on the server with a particular RPC program number. The rpcbind service redirects the client to the proper port number so it can communicate with the requested service. Portmapper is an RPC service, which always listens on tcp and udp 111, and is used to map other RPC services (such as nfs, nlockmgr, quotad, mountd, etc.) to their corresponding port number on the server. When a remote host makes an RPC call to that server, it first consults with portmap to determine where the RPC server is listening.','A small request (~82 bytes via UDP) sent to the Portmapper generates a large response (7x to 28x amplification), which makes it a suitable tool for DDoS attacks. If rpcbind is not required, it is recommended that the rpcbind package be removed to reduce the attack surface of the system.','Many of the libvirt packages used by Enterprise Linux virtualization, and the nfs-utils package used for The Network File System (NFS), are dependent on the rpcbind package. If the rpcbind package is required as a dependency, the services rpcbind.service and rpcbind.socket should be stopped and masked to reduce the attack surface of the system.','Run the following command to remove rpcbind: # dnf remove rpcbind OR If the rpcbind package is required as a dependency, run the following commands to stop and mask the rpcbind.service and rpcbind.socket systemd units: # systemctl --now mask rpcbind.service # systemctl --now mask rpcbind.socket.','[{\"cis\": [\"2.2.17\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1498\", \"T1498.002\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28070,'Ensure rsync-daemon is not installed or the rsyncd service is masked.','The rsyncd service can be used to synchronize files between systems over network links.','Unless required, the rsync-daemon package should be removed to reduce the attack surface area of the system. The rsyncd service presents a security risk as it uses unencrypted protocols for communication. Note: If a required dependency exists for the rsync-daemon package, but the rsyncd service is not required, the service should be masked.','There are packages that are dependent on the rsync package. If the rsync package is removed, these packages will be removed as well. Before removing the rsync-daemon package, review any dependent packages to determine if they are required on the system. If a dependent package is required, mask the rsyncd service and leave the rsync-daemon package installed.','Run the following command to remove the rsync package: # dnf remove rsync-daemon OR Run the following command to mask the rsyncd service: # systemctl --now mask rsyncd.','[{\"cis\": [\"2.2.18\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1105\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\", \"T1570\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28071,'Ensure telnet client is not installed.','The telnet package contains the telnet client, which allows users to start connections to other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow an unauthorized user to steal credentials. The ssh package provides an encrypted session and stronger security and is included in most Linux distributions.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Run the following command to remove the telnet package: # dnf remove telnet.','[{\"cis\": [\"2.3.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(28072,'Ensure LDAP client is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP client, it is recommended that the software be removed to reduce the potential attack surface.','Removing the LDAP client will prevent or inhibit using LDAP for authentication in your environment.','Run the following command to remove the openldap-clients package: # dnf remove openldap-clients.','[{\"cis\": [\"2.3.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28073,'Ensure TFTP client is not installed.','Trivial File Transfer Protocol (TFTP) is a simple protocol for exchanging files between two TCP/IP machines. TFTP servers allow connections from a TFTP Client for sending and receiving files.','TFTP does not have built-in encryption, access control or authentication. This makes it very easy for an attacker to exploit TFTP to gain access to files.','','Run the following command to remove tftp: # dnf remove tftp.','[{\"cis\": [\"2.3.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28074,'Ensure FTP client is not installed.','FTP (File Transfer Protocol) is a traditional and widely used standard tool for transferring files between a server and clients over a network, especially where no authentication is necessary (permits anonymous users to connect to a server).','FTP does not protect the confidentiality of data or authentication credentials. It is recommended SFTP be used if file transfer is required. Unless there is a need to run the system as a FTP server (for example, to allow anonymous downloads), it is recommended that the package be removed to reduce the potential attack surface.','','Run the following command to remove ftp: # dnf remove ftp.','[{\"cis\": [\"2.3.4\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28075,'Ensure nftables is installed.','nftables provides a new in-kernel packet classification framework that is based on a network-specific Virtual Machine (VM) and a new nft userspace command line tool. nftables reuses the existing Netfilter subsystems such as the existing hook infrastructure, the connection tracking system, NAT, userspace queuing and logging subsystem.','nftables is a subsystem of the Linux kernel that can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host.','Changing firewall settings while connected over the network can result in being locked out of the system.','Run the following command to install nftables # dnf install nftables.','[{\"cis\": [\"3.4.1.1\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(28076,'Ensure at least one nftables table exists.','Tables hold chains. Each table only has one address family and only applies to packets of this family. Tables can have one of five families.','Without a table, nftables will not filter network traffic.','Adding or modifying firewall rules can cause loss of connectivity to the system.','Run the following command to create a table in nftables # nft create table inet <table name> Example if FirewallD is not in use on the system: # nft create table inet filter Note: FirewallD uses the table inet firewalld NFTables table that is created when FirewallD is installed.','[{\"cis\": [\"3.4.2.2\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}]'),(28077,'Ensure nftables base chains exist.','Chains are containers for rules. They exist in two kinds, base chains and regular chains. A base chain is an entry point for packets from the networking stack, a regular chain may be used as jump target and is used for better rule organization.','If a base chain doesn't exist with a hook for input, forward, and delete, packets that would flow through those chains will not be touched by nftables.','If configuring over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command to create the base chains: # nft create chain inet <table name> <base chain name> { type filter hook <(input|forward|output)> priority 0 ; } Example: # nft create chain inet filter input { type filter hook input priority 0 ; } # nft create chain inet filter forward { type filter hook forward priority 0 ; } # nft create chain inet filter output { type filter hook output priority 0 ; }.','[{\"cis\": [\"3.4.2.3\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}]'),(28078,'Ensure nftables default deny firewall policy.','Base chain policy is the default verdict that will be applied to packets reaching the end of the chain.','There are two policies: accept (Default) and drop. If the policy is set to accept, the firewall will accept any packet that is not configured to be denied and the packet will continue traversing the network stack. It is easier to explicitly permit acceptable usage than to deny unacceptable usage. Note: Changing firewall settings while connected over the network can result in being locked out of the system.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','If NFTables utility is in use on your system: Run the following command for the base chains with the input, forward, and output hooks to implement a default DROP policy: # nft chain <table family> <table name> <chain name> { policy drop ; } Example: # nft chain inet filter input { policy drop ; } # nft chain inet filter forward { policy drop ; }.','[{\"cis\": [\"3.4.2.7\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}]'),(28079,'Ensure auditd is installed.','auditd is the userspace component to the Linux Auditing System. It's responsible for writing audit records to the disk.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to Install auditd: # dnf install audit.','[{\"cis\": [\"4.1.1.1\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-3\", \"AU-3(1)\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"9.4.5\", \"10.2\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28080,'Ensure auditing for processes that start prior to auditd is enabled.','Configure grub2 so that processes that are capable of being audited can be audited even if they start up prior to auditd startup.','Audit events need to be captured on processes that start up prior to auditd, so that potential malicious activity cannot go undetected.','','Run the following command to update the grub2 configuration with audit=1: # grubby --update-kernel ALL --args 'audit=1'.','[{\"cis\": [\"4.1.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28081,'Ensure audit_backlog_limit is sufficient.','The backlog limit has a default setting of 64.','During boot if audit=1, then the backlog will hold 64 records. If more that 64 records are created during boot, auditd records will be lost and potential malicious activity could go undetected.','','Run the following command to add audit_backlog_limit=<BACKLOG SIZE> to GRUB_CMDLINE_LINUX: # grubby --update-kernel ALL --args 'audit_backlog_limit=<BACKLOG SIZE>' Example: # grubby --update-kernel ALL --args 'audit_backlog_limit=8192'.','[{\"cis\": [\"4.1.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28082,'Ensure auditd service is enabled.','Turn on the auditd daemon to record system events.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to enable auditd: # systemctl --now enable auditd.','[{\"cis\": [\"4.1.1.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28083,'Ensure audit log storage size is configured.','Configure the maximum size of the audit log file. Once the log reaches the maximum size, it will be rotated and a new log file will be started.','It is important that an appropriate size is determined for log files so that they do not impact the system and audit data is not lost.','','Set the following parameter in /etc/audit/auditd.conf in accordance with site policy: max_log_file = <MB>.','[{\"cis\": [\"4.1.2.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"nist_sp_800-53\": [\"AU-8\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(28084,'Ensure audit logs are not automatically deleted.','The max_log_file_action setting determines how to handle the audit log file reaching the max file size. A value of keep_logs will rotate the logs but never delete old logs.','In high security contexts, the benefits of maintaining a long audit history exceed the cost of storing the audit history.','','Set the following parameter in /etc/audit/auditd.conf: max_log_file_action = keep_logs.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"nist_sp_800-53\": [\"AU-8\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28085,'Ensure system is disabled when audit logs are full.','The auditd daemon can be configured to halt the system when the audit logs are full. The admin_space_left_action parameter tells the system what action to take when the system has detected that it is low on disk space. Valid values are ignore, syslog, suspend, single, and halt. - ignore, the audit daemon does nothing - Syslog, the audit daemon will issue a warning to syslog - Suspend, the audit daemon will stop writing records to the disk - single, the audit daemon will put the computer system in single user mode - halt, the audit daemon will shutdown the system.','In high security contexts, the risk of detecting unauthorized access or nonrepudiation exceeds the benefit of the system's availability.','If the admin_space_left_action parameter is set to halt the audit daemon will shutdown the system when the disk partition containing the audit logs becomes full.','Set the following parameters in /etc/audit/auditd.conf: space_left_action = email action_mail_acct = root. set admin_space_left_action to either halt or single in /etc/audit/auditd.conf. Example: admin_space_left_action = halt.','[{\"cis\": [\"4.1.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-8\", \"AU-12\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28086,'Ensure changes to system administration scope (sudoers) is collected.','Monitor scope changes for system administrators. If the system has been properly configured to force system administrators to log in as themselves first and then use the sudo command to execute privileged commands, it is possible to monitor changes in scope. The file /etc/sudoers, or files in /etc/sudoers.d, will be written to when the file(s) or related attributes have changed. The audit records will be tagged with the identifier "scope".','Changes in the /etc/sudoers and /etc/sudoers.d files can indicate that an unauthorized change has been made to the scope of system administrator activity.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor scope changes for system administrators. Example: # printf " -w /etc/sudoers -p wa -k scope -w /etc/sudoers.d -p wa -k scope " >> /etc/audit/rules.d/50-scope.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.1\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(28087,'Ensure the audit configuration is immutable.','Set system audit so that audit rules cannot be modified with auditctl. Setting the flag "-e 2" forces audit to be put in immutable mode. Audit changes can only be made on system reboot. Note: This setting will require the system to be rebooted to update the active auditd configuration settings.','In immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. Users would most likely notice a system reboot and that could alert administrators of an attempt to make unauthorized audit changes.','','Edit or create the file /etc/audit/rules.d/99-finalize.rules and add the line -e 2 at the end of the file: Example: # printf -- "-e 2" >> /etc/audit/rules.d/99-finalize.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.20\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-3\", \"AU-3(1)\", \"MP-2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\", \"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\", \"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28088,'Ensure the running and on disk configuration is the same.','The Audit system have both on disk and running configuration. It is possible for these configuration settings to differ. Note: Due to the limitations of augenrules and auditctl, it is not absolutely guaranteed that loading the rule sets via augenrules --load will result in all rules being loaded or even that the user will be informed if there was a problem loading the rules.','Configuration differences between what is currently running and what is on disk could cause unexpected problems or may give a false impression of compliance requirements.','','If the rules are not aligned across all three () areas, run the following command to merge and load all rules: # augenrules --load Check if reboot is required. if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then echo "Reboot required to load rules"; fi.','[{\"cis\": [\"4.1.3.21\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28089,'Ensure audit tools are 755 or more restrictive.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28090,'Ensure audit tools are owned by root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to change the owner of the audit tools to the root user: # chown root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.9\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28091,'Ensure audit tools belong to group root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules Run the following command to change owner and group of the audit tools to root user and group: # chown root:root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.10\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28092,'Ensure rsyslog is installed.','The rsyslog software is recommended in environments where journald does not meet operation requirements.','The security enhancements of rsyslog such as connection-oriented (i.e. TCP) transmission of logs, the option to log to database formats, and the encryption of log data en route to a central logging server) justify installing and configuring the package.','','Run the following command to install rsyslog: # dnf install rsyslog.','[{\"cis\": [\"4.2.1.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1005\", \"T1070\", \"T1070.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28093,'Ensure rsyslog service is enabled.','Once the rsyslog package is installed, ensure that the service is enabled.','If the rsyslog service is not enabled to start on boot, the system will not capture logging events.','','Run the following command to enable rsyslog: # systemctl --now enable rsyslog.','[{\"cis\": [\"4.2.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1211\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28094,'Ensure journald is configured to send logs to rsyslog.','Data from journald may be stored in volatile memory or persisted locally on the server. Utilities exist to accept remote export of journald logs, however, use of the RSyslog service provides a consistent means of log collection and export.','IF RSyslog is the preferred method for capturing logs, all logs of the system should be sent to it for further processing. Note: This recommendation only applies if rsyslog is the chosen method for client side logging. Do not apply this recommendation if journald is used.','','Edit the /etc/systemd/journald.conf file and add the following line: ForwardToSyslog=yes Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-2\", \"AU-4\", \"AU-12\", \"MP-2\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\", \"T1565\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28095,'Ensure rsyslog default file permissions configured.','Rsyslog will create logfiles that do not already exist on the system. This setting controls what permissions will be applied to these newly created files.','It is important to ensure that log files have the correct permissions to ensure that sensitive data is archived and protected.','The systems global umask could override, but only making the file permissions stricter, what is configured in RSyslog with the FileCreateMode directive. RSyslog also has its own $umask directive that can alter the intended file creation mode. In addition, consideration should be given to how FileCreateMode is used. Thus it is critical to ensure that the intended file creation mode is not overridden with less restrictive settings in /etc/rsyslog.conf, /etc/rsyslog.d/*conf files and that FileCreateMode is set before any file is created.','Edit either /etc/rsyslog.conf or a dedicated .conf file in /etc/rsyslog.d/ and set $FileCreateMode to 0640 or more restrictive: $FileCreateMode 0640 Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.4\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.2\"]}, {\"cis_csc_v7\": [\"5.1\", \"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-2\", \"AU-4\", \"AU-12\", \"MP-2\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\", \"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28096,'Ensure rsyslog is configured to send logs to a remote log host.','RSyslog supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralized log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Edit the /etc/rsyslog.conf and /etc/rsyslog.d/*.conf files and add the following line (where loghost.example.com is the name of your central log host). The target directive may either be a fully qualified domain name or an IP address. *.* action(type="omfwd" target="192.168.2.100" port="514" protocol="tcp" action.resumeRetryCount="100" queue.type="LinkedList" queue.size="1000") Run the following command to reload the rsyslogd configuration: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.6\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28097,'Ensure rsyslog is not configured to receive logs from a remote client.','RSyslog supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Should there be any active log server configuration found in the auditing section, modify those files and remove the specific lines highlighted by the audit. Ensure none of the following entries are present in any of /etc/rsyslog.conf or /etc/rsyslog.d/*.conf. New format: module(load="imtcp") input(type="imtcp" port="514") -OR- Old format: $ModLoad imtcp $InputTCPServerRun - Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.7\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.13.1.3\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28098,'Ensure systemd-journal-remote is installed.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralized log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to install systemd-journal-remote: # dnf install systemd-journal-remote.','[{\"cis\": [\"4.2.2.1.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28099,'Ensure systemd-journal-remote is enabled.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralized log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to enable systemd-journal-remote: # systemctl --now enable systemd-journal-upload.service.','[{\"cis\": [\"4.2.2.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"CM-7\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28100,'Ensure journald is not configured to receive logs from a remote client.','Journald supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts. NOTE: - The same package, systemd-journal-remote, is used for both sending logs to remote hosts and receiving incoming logs. - With regards to receiving logs, there are two services; systemd-journal- remote.socket and systemd-journal-remote.service.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Run the following command to disable systemd-journal-remote.socket: # systemctl --now mask systemd-journal-remote.socket.','[{\"cis\": [\"4.2.2.1.4\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.13.1.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28101,'Ensure journald service is enabled.','Ensure that the systemd-journald service is enabled to allow capturing of logging events.','If the systemd-journald service is not enabled to start on boot, the system will not capture logging events.','','By default the systemd-journald service does not have an [Install] section and thus cannot be enabled / disabled. It is meant to be referenced as Requires or Wants by other unit files. As such, if the status of systemd-journald is not static, investigate why.','[{\"cis\": [\"4.2.2.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28102,'Ensure journald is configured to compress large log files.','The journald system includes the capability of compressing overly large files to avoid filling up the system with logs or making the logs unmanageably large.','Uncompressed large files may unexpectedly fill a filesystem leading to resource unavailability. Compressing logs prior to write can prevent sudden, unexpected filesystem impacts.','','Edit the /etc/systemd/journald.conf file and add the following line: Compress=yes Restart the service: # systemctl restart systemd-journald.service.','[{\"cis\": [\"4.2.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.4\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(28103,'Ensure journald is configured to write logfiles to persistent disk.','Data from journald may be stored in volatile memory or persisted locally on the server. Logs in memory will be lost upon a system reboot. By persisting logs to local disk on the server they are protected from loss due to a reboot.','Writing log data to disk will provide the ability to forensically reconstruct events which may have impacted the operations or security of a system even after a system crash or reboot.','','Edit the /etc/systemd/journald.conf file and add the following line: Storage=persistent Restart the service: # systemctl restart systemd-journald.service.','[{\"cis\": [\"4.2.2.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28104,'Ensure journald is not configured to send logs to rsyslog.','Data from journald should be kept in the confines of the service and not forwarded on to other services.','IF journald is the method for capturing logs, all logs of the system should be handled by journald and not forwarded to other logging mechanisms. Note: This recommendation only applies if journald is the chosen method for client side logging. Do not apply this recommendation if rsyslog is used.','','Edit the /etc/systemd/journald.conf file and ensure that ForwardToSyslog=yes is removed. Restart the service: # systemctl restart systemd-journald.service.','[{\"cis\": [\"4.2.2.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-7\", \"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\", \"T1565\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28105,'Ensure cron daemon is enabled.','The cron daemon is used to execute batch jobs on the system.','While there may not be user jobs that need to be run on the system, the system does have maintenance jobs that may include security monitoring that have to run, and cron is used to execute them.','','Run the following command to enable cron : # systemctl --now enable crond.','[{\"cis\": [\"5.1.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28106,'Ensure permissions on /etc/crontab are configured.','The /etc/crontab file is used by cron to control its own jobs. The commands in this item make sure that root is the user and group owner of the file and that only the owner can access the file.','This file contains information on what system jobs are run by cron. Write access to this file could provide unprivileged users with the ability to elevate their privileges. Read access to this file could provide users with the ability to gain insight on system jobs that run on the system and could provide them a way to gain unauthorized privileged access.','','Run the following commands to set ownership and permissions on /etc/crontab : # chown root:root /etc/crontab # chmod og-rwx /etc/crontab.','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28107,'Ensure permissions on /etc/cron.hourly are configured.','This directory contains system cron jobs that need to run on an hourly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.hourly : # chown root:root /etc/cron.hourly # chmod og-rwx /etc/cron.hourly.','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28108,'Ensure permissions on /etc/cron.daily are configured.','The /etc/cron.daily directory contains system cron jobs that need to run on a daily basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.daily : # chown root:root /etc/cron.daily # chmod og-rwx /etc/cron.daily.','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28109,'Ensure permissions on /etc/cron.weekly are configured.','The /etc/cron.weekly directory contains system cron jobs that need to run on a weekly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.weekly : # chown root:root /etc/cron.weekly # chmod og-rwx /etc/cron.weekly.','[{\"cis\": [\"5.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28110,'Ensure permissions on /etc/cron.monthly are configured.','The /etc/cron.monthly directory contains system cron jobs that need to run on a monthly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.monthly : # chown root:root /etc/cron.monthly # chmod og-rwx /etc/cron.monthly.','[{\"cis\": [\"5.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28111,'Ensure permissions on /etc/cron.d are configured.','The /etc/cron.d directory contains system cron jobs that need to run in a similar manner to the hourly, daily, weekly and monthly jobs from /etc/crontab , but require more granular control as to when they run. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.d : # chown root:root /etc/cron.d # chmod og-rwx /etc/cron.d.','[{\"cis\": [\"5.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28112,'Ensure permissions on /etc/ssh/sshd_config are configured.','The /etc/ssh/sshd_config file contains configuration specifications for sshd. The command below sets the owner and group of the file to root.','The /etc/ssh/sshd_config file needs to be protected from unauthorized changes by non-privileged users.','','Run the following commands to set ownership and permissions on /etc/ssh/sshd_config: # chown root:root /etc/ssh/sshd_config # chmod u-x,go-rwx /etc/ssh/sshd_config.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1098\", \"T1098.004\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28113,'Ensure SSH access is limited.','There are several options available to limit which users and group can access the system via SSH. It is recommended that at least one of the following options be leveraged: - AllowUsers: The AllowUsers variable gives the system administrator the option of allowing specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by only allowing the allowed users to log in from a particular host, the entry can be specified in the form of user@host. - AllowGroups: The AllowGroups variable gives the system administrator the option of allowing specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable. - DenyUsers: The DenyUsers variable gives the system administrator the option of denying specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by specifically denying a user's access from a particular host, the entry can be specified in the form of user@host. - DenyGroups: The DenyGroups variable gives the system administrator the option of denying specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable.','Restricting which users can remotely access the system via SSH will help ensure that only authorized users access the system.','','Edit the /etc/ssh/sshd_config file to set one or more of the parameters as follows: AllowUsers <userlist> OR AllowGroups <grouplist> OR DenyUsers <userlist> OR DenyGroups <grouplist>.','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28114,'Ensure SSH LogLevel is appropriate.','INFO level is the basic level that only records login activity of SSH users. In many situations, such as Incident Response, it is important to determine when a particular user was active on a system. The logout record can eliminate those users who disconnected, which helps narrow the field. VERBOSE level specifies that login and logout activity as well as the key fingerprint for any SSH key used for login will be logged. This information is important for SSH key management, especially in legacy environments.','SSH provides several logging levels with varying amounts of verbosity. DEBUG is specifically not recommended other than strictly for debugging SSH communications since it provides so much data that it is difficult to identify important security information.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LogLevel VERBOSE OR LogLevel INFO.','[{\"cis\": [\"5.2.5\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28115,'Ensure SSH PAM is enabled.','UsePAM Enables the Pluggable Authentication Module interface. If set to 'yes' this will enable PAM authentication using ChallengeResponseAuthentication and PasswordAuthentication in addition to PAM account and session module processing for all authentication types.','When usePAM is set to yes, PAM runs through account and session types properly. This is important if you want to restrict access to services based off of IP, time or other factors of the account. Additionally, you can make sure users inherit certain environment variables on login or disallow access to the server.','If UsePAM is enabled, you will not be able to run sshd(8) as a non-root user.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: UsePAM yes.','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(28116,'Ensure SSH root login is disabled.','The PermitRootLogin parameter specifies if the root user can log in using ssh. The default is no.','Disallowing root logins over SSH requires system admins to authenticate using their own individual account, then escalating to root via sudo or su. This in turn limits opportunity for non-repudiation and provides a clear audit trail in the event of a security incident.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitRootLogin no.','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28117,'Ensure SSH HostbasedAuthentication is disabled.','The HostbasedAuthentication parameter specifies if authentication is allowed through trusted hosts via the user of .rhosts , or /etc/hosts.equiv, along with successful public key client host authentication. This option only applies to SSH Protocol Version 2.','Even though the .rhosts files are ineffective if support is disabled in /etc/pam.conf, disabling the ability to use .rhosts files in SSH provides an additional layer of protection.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: HostbasedAuthentication no.','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28118,'Ensure SSH PermitEmptyPasswords is disabled.','The PermitEmptyPasswords parameter specifies if the SSH server allows login to accounts with empty password strings.','Disallowing remote shell access to accounts that have an empty password reduces the probability of unauthorized access to the system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitEmptyPasswords no.','[{\"cis\": [\"5.2.9\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28119,'Ensure SSH PermitUserEnvironment is disabled.','The PermitUserEnvironment option allows users to present environment options to the ssh daemon.','Permitting users the ability to set environment variables through the SSH daemon could potentially allow users to bypass security controls (e.g. setting an execution path that has ssh executing trojan'd programs).','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitUserEnvironment no.','[{\"cis\": [\"5.2.10\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28120,'Ensure SSH IgnoreRhosts is enabled.','The IgnoreRhosts parameter specifies that .rhosts and .shosts files will not be used in RhostsRSAAuthentication or HostbasedAuthentication.','Setting this parameter forces users to enter a password when authenticating with ssh.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: IgnoreRhosts yes.','[{\"cis\": [\"5.2.11\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28121,'Ensure SSH X11 forwarding is disabled.','The X11Forwarding parameter provides the ability to tunnel X11 traffic through the connection to enable remote graphic connections.','Disable X11 forwarding unless there is an operational requirement to use X11 applications directly. There is a small risk that the remote X11 servers of users who are logged in via SSH with X11 forwarding could be compromised by other users on the X11 server. Note that even if X11 forwarding is disabled, users can always install their own forwarders.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: X11Forwarding no.','[{\"cis\": [\"5.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28122,'Ensure SSH AllowTcpForwarding is disabled.','SSH port forwarding is a mechanism in SSH for tunneling application ports from the client to the server, or servers to clients. It can be used for adding encryption to legacy applications, going through firewalls, and some system administrators and IT professionals use it for opening backdoors into the internal network from their home machines.','Leaving port forwarding enabled can expose the organization to security risks and back-doors. SSH connections are protected with strong encryption. This makes their contents invisible to most deployed network monitoring and traffic filtering solutions. This invisibility carries considerable risk potential if it is used for malicious purposes such as data exfiltration. Cybercriminals or malware could exploit SSH to hide their unauthorized communications, or to exfiltrate stolen data from the target network.','SSH tunnels are widely used in many corporate environments that employ mainframe systems as their application backends. In those environments the applications themselves may have very limited native support for security. By utilizing tunneling, compliance with SOX, HIPAA, PCI-DSS, and other standards can be achieved without having to modify the applications.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: AllowTcpForwarding no.','[{\"cis\": [\"5.2.13\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1048\", \"T1048.002\", \"T1572\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28123,'Ensure system-wide crypto policy is not over-ridden.','System-wide Crypto policy can be over-ridden or opted out of for openSSH.','Over-riding or opting out of the system-wide crypto policy could allow for the use of less secure Ciphers, MACs, KexAlgorithms and GSSAPIKexAlgorithm.','','Run the following commands: # sed -ri "s/^s*(CRYPTO_POLICYs*=.*)$/# 1/" /etc/sysconfig/sshd; # systemctl reload sshd.','[{\"cis\": [\"5.2.14\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"nist_sp_800-53\": [\"SC-8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.10.1.1\"]}]'),(28124,'Ensure SSH warning banner is configured.','The Banner parameter specifies a file whose contents must be sent to the remote user before authentication is permitted. By default, no banner is displayed.','Banners are used to warn connecting users of the particular site's policy regarding connection. Presenting a warning message prior to the normal user login may assist the prosecution of trespassers on the computer system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: Banner /etc/issue.net.','[{\"cis\": [\"5.2.15\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(28125,'Ensure SSH MaxAuthTries is set to 4 or less.','The MaxAuthTries parameter specifies the maximum number of authentication attempts permitted per connection. When the login failure count reaches half the number, error messages will be written to the syslog file detailing the login failure.','Setting the MaxAuthTries parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. While the recommended setting is 4, set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxAuthTries 4.','[{\"cis\": [\"5.2.16\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"16.13\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(28126,'Ensure SSH MaxStartups is configured.','The MaxStartups parameter specifies the maximum number of concurrent unauthenticated connections to the SSH daemon.','To protect a system from denial of service due to a large number of pending authentication connection attempts, use the rate limiting function of MaxStartups to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxStartups 10:30:60.','[{\"cis\": [\"5.2.17\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(28127,'Ensure SSH MaxSessions is set to 10 or less.','The MaxSessions parameter specifies the maximum number of open sessions permitted from a given connection.','To protect a system from denial of service due to a large number of concurrent sessions, use the rate limiting function of MaxSessions to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxSessions 10.','[{\"cis\": [\"5.2.18\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(28128,'Ensure SSH LoginGraceTime is set to one minute or less.','The LoginGraceTime parameter specifies the time allowed for successful authentication to the SSH server. The longer the Grace period is the more open unauthenticated connections can exist. Like other session controls in this session the Grace Period should be limited to appropriate organizational limits to ensure the service is available for needed access.','Setting the LoginGraceTime parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. It will also limit the number of concurrent unauthenticated connections While the recommended setting is 60 seconds (1 Minute), set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LoginGraceTime 60.','[{\"cis\": [\"5.2.19\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(28129,'Ensure SSH Idle Timeout Interval is configured.','NOTE: To clarify, the two settings described below are only meant for idle connections from a protocol perspective and not meant to check if the user is active or not. An idle user does not mean an idle connection. SSH does not, and never had, intentionally the capability to drop idle users. In SSH versions before 8.2p1 there was a bug that caused these values to behave in such a manner that they were abused to disconnect idle users. This bug has been resolved in 8.2p1 and thus may no longer be abused disconnect idle users. The two options ClientAliveInterval and ClientAliveCountMax control the timeout of SSH sessions. Taken directly from man 5 sshd_config: - ClientAliveInterval Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client. - ClientAliveCountMax Sets the number of client alive messages which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session. It is important to note that the use of client alive messages is very different from TCPKeepAlive. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option enabled by TCPKeepAlive is spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become unresponsive. The default value is 3. If ClientAliveInterval is set to 15, and ClientAliveCountMax is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds. Setting a zero ClientAliveCountMax disables connection termination.','In order to prevent resource exhaustion, appropriate values should be set for both ClientAliveInterval and ClientAliveCountMax. Specifically, looking at the source code, ClientAliveCountMax must be greater than zero in order to utilize the ability of SSH to drop idle connections. If connections are allowed to stay open indefinitely, this can potentially be used as a DDOS attack or simple resource exhaustion could occur over unreliable networks. The example set here is a 45 second timeout. Consult your site policy for network timeouts and apply as appropriate.','','Edit the /etc/ssh/sshd_config file to set the parameters according to site policy. Example: ClientAliveInterval 15 ClientAliveCountMax 3.','[{\"cis\": [\"5.2.20\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28130,'Ensure sudo is installed.','sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.','sudo supports a plug-in architecture for security policies and input/output logging. Third parties can develop and distribute their own policy and I/O logging plug-ins to work seamlessly with the sudo front end. The default security policy is sudoers, which is configured via the file /etc/sudoers and any entries in /etc/sudoers.d. The security policy determines what privileges, if any, a user has to run sudo. The policy may require that users authenticate themselves with a password or another authentication mechanism. If authentication is required, sudo will exit if the user's password is not entered within a configurable time limit. This limit is policy-specific.','','Run the following command to install sudo. # dnf install sudo.','[{\"cis\": [\"5.3.1\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28131,'Ensure sudo commands use pty.','sudo can be configured to run only from a pseudo terminal (pseudo-pty).','Attackers can run a malicious program using sudo which would fork a background process that remains even when the main program has finished executing.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers with visudo or a file in /etc/sudoers.d/ with visudo -f <PATH_TO_FILE> and add the following line: Defaults use_pty.','[{\"cis\": [\"5.3.2\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.003\", \"T1548\", \"T1548.003\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\", \"M1038\"]}]'),(28132,'Ensure sudo log file exists.','sudo can use a custom log file.','A sudo log file simplifies auditing of sudo commands.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files. Creation of additional log files can cause disk space exhaustion if not correctly managed. You should configure logrotate to manage the sudo log in accordance with your local policy.','Edit the file /etc/sudoers or a file in /etc/sudoers.d/ with visudo or visudo -f <PATH TO FILE> and add the following line: Defaults logfile="<PATH TO CUSTOM LOG FILE>" Example: Defaults logfile="/var/log/sudo.log".','[{\"cis\": [\"5.3.3\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28133,'Ensure users must provide password for escalation.','The operating system must be configured so that users must provide a password for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','This will prevent automated processes from being able to elevate privileges. To include Ansible and AWS builds.','Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any line with occurrences of NOPASSWD tags in the file.','[{\"cis\": [\"5.3.4\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28134,'Ensure re-authentication for privilege escalation is not disabled globally.','The operating system must be configured so that users must re-authenticate for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','','Configure the operating system to require users to reauthenticate for privilege escalation. Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any occurrences of !authenticate tags in the file(s).','[{\"cis\": [\"5.3.5\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28135,'Ensure sudo authentication timeout is configured correctly.','sudo caches used credentials for a default of 5 minutes. This is for ease of use when there are multiple administrative tasks to perform. The timeout can be modified to suit local security policies.','Setting a timeout value reduces the window of opportunity for unauthorized privileged access to another user.','','If the currently configured timeout is larger than 15 minutes, edit the file listed in the audit section with visudo -f <PATH TO FILE> and modify the entry timestamp_timeout= to 15 minutes or less as per your site policy. The value is in minutes. This particular entry may appear on its own, or on the same line as env_reset. See the following two examples: Defaults env_reset, timestamp_timeout=15 Defaults timestamp_timeout=15 Defaults env_reset.','[{\"cis\": [\"5.3.6\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28136,'Ensure access to the su command is restricted.','The su command allows a user to run a command or shell as another user. The program has been superseded by sudo, which allows for more granular control over privileged access. Normally, the su command can be executed by any user. By uncommenting the pam_wheel.so statement in /etc/pam.d/su, the su command will only allow users in a specific groups to execute su. This group should be empty to reinforce the use of sudo for privileged access.','Restricting the use of su, and using sudo in its place, provides system administrators better control of the escalation of user privileges to execute privileged commands. The sudo utility also provides a better logging and audit mechanism, as it can log each command executed via sudo, whereas su can only record that a user executed the su program.','','Create an empty group that will be specified for use of the su command. The group should be named according to site policy. Example: # groupadd sugroup. Add the following line to the /etc/pam.d/su file, specifying the empty group: auth required pam_wheel.so use_uid group=sugroup.','[{\"cis\": [\"5.3.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28137,'Ensure custom authselect profile is used.','A custom profile can be created by copying and customizing one of the default profiles. The default profiles include: sssd, winbind, or the nis. This profile can then be customized to follow site specific requirements. You can select a profile for the authselect utility for a specific host. The profile will be applied to every user logging into the host.','A custom profile is required to customize many of the pam options. When you deploy a profile, the profile is applied to every user logging into the given host.','','Run the following command to create a custom authselect profile: # authselect create-profile <custom-profile name> <options> Example: # authselect create-profile custom-profile -b sssd --symlink-meta Run the following command to select a custom authselect profile: # authselect select custom/<CUSTOM PROFILE NAME> {with-<OPTIONS>} Example: # authselect select custom/custom-profile with-sudo with-faillock without-nullok.','[{\"cis\": [\"5.4.1\"]}, {\"cis_csc_v8\": [\"16.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"pci_dss_3.2.1\": [\"6.3.2\"]}, {\"pci_dss_4.0\": [\"6.3.1\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}]'),(28138,'Ensure authselect includes with-faillock.','The pam_faillock.so module maintains a list of failed authentication attempts per user during a specified interval and locks the account in case there were more than the configured number of consecutive failed authentications (this is defined by the deny parameter in the faillock configuration). It stores the failure records into per-user files in the tally directory.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','','Run the following commands to include the with-faillock option to the current authselect profile: # authselect enable-feature with-faillock # authselect apply-changes.','[{\"cis\": [\"5.4.2\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}]'),(28139,'Ensure password creation requirements are configured.','The pam_pwquality.so module checks the strength of passwords. It performs checks such as making sure a password is not a dictionary word, it is a certain length, contains a mix of characters (e.g. alphabet, numeric, other) and more. The following are definitions of the pam_pwquality.so options. - try_first_pass - retrieve the password from a previous stacked PAM module. If not available, then prompt the user for a password. - retry=3 - Allow 3 tries before sending back a failure. - minlen=14 - password must be 14 characters or more. Either of the following can be used to enforce complex passwords: - minclass=4 - provide at least four classes of characters for the new password. OR - dcredit=-1 - provide at least one digit. - ucredit=-1 - provide at least one uppercase character. - ocredit=-1 - provide at least one special character. - lcredit=-1 - provide at least one lowercase character. - The settings shown above are one possible policy. Alter these values to conform to your own organization's password policies.','Strong passwords protect systems from being hacked through brute force methods.','','Edit the file /etc/security/pwquality.conf and add or modify the following line for password length to conform to site policy: minlen = 14 Edit the file /etc/security/pwquality.conf and add or modify the following line for password complexity to conform to site policy: minclass = 4 OR dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1. Run the following script to update the system-auth and password-auth files: #!/usr/bin/env bash for fn in system-auth password-auth; do file="/etc/authselect/$(head -1 /etc/authselect/authselect.conf | grep 'custom/')/$fn" if ! grep -Pq -- '^h*passwordh+requisiteh+pam_pwquality.so(h+[^#

]+)?h+.*enforce_for_r oot.*$' "$file"; then sed -ri 's/^s*(passwords+requisites+pam_pwquality.sos+)(.*)$/12 enforce_for_root/' "$file" fi if grep -Pq -- '^h*passwordh+requisiteh+pam_pwquality.so(h+[^#

]+)?h+retry=([4-9]|[1-9][0-9]+).*$' "$file"; then sed -ri '/pwquality/s/retry=S+/retry=3/' "$file" elif ! grep -Pq -- '^h*passwordh+requisiteh+pam_pwquality.so(h+[^#

]+)?h+retry=d+.*$' "$file"; then sed -ri 's/^s*(passwords+requisites+pam_pwquality.sos+)(.*)$/12 retry=3/' "$file" fi done authselect apply-changes.','[{\"cis\": [\"5.5.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1178.001\", \"T1178.002\", \"T1178.003\", \"T1178.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28140,'Ensure lockout for failed password attempts is configured.','Lock out users after n unsuccessful consecutive login attempts. - deny=<n> - Number of attempts before the account is locked. - unlock_time=<n> - Time in seconds before the account is unlocked. Note: The maximum configurable value for unlock_time is 604800.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','Use of unlock_time=0 may allow an attacker to cause denial of service to legitimate users.','Set password lockouts and unlock times to conform to site policy. deny should be greater than 0 and no greater than 5. unlock_time should be 0 (never), or 900 seconds or greater. Edit /etc/security/faillock.conf and update or add the following lines: deny = 5 unlock_time = 900.','[{\"cis\": [\"5.5.2\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"pci_dss_3.2.1\": [\"8.1.3\"]}, {\"pci_dss_4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28141,'Ensure password reuse is limited.','The /etc/security/opasswd file stores the users' old passwords and can be checked to ensure that users are not recycling recent passwords. remember=<5> - Number of old passwords to remember.','Forcing users not to reuse their past 5 passwords make it less likely that an attacker will be able to guess the password. Note: These change only apply to accounts configured on the local system.','','Set remembered password history to conform to site policy. Run the following script to add or modify the pam_pwhistory.so and pam_unix.so lines to include the remember option: #!/usr/bin/env bash { file="/etc/authselect/$(head -1 /etc/authselect/authselect.conf | grep 'custom/')/system-auth" if ! grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_pwhistory.soh+([^#

]+h+)?remember=([5-9]|[1-9][0-9]+).*$' "$file"; then if grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_pwhistory.soh+([^#

]+h+)?remember=d+.*$' "$file"; then sed -ri 's/^s*(passwords+(requisite|required|sufficient)s+pam_pwhistory.sos+([^#

]+s+)?)(remember=S+s*)(s+.*)?$/1 remember=5 5/' $file elif grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_pwhistory.soh+([^#

]+h+)?.*$' "$file"; then sed -ri '/^s*passwords+(requisite|required|sufficient)s+pam_pwhistory.so/ s/$/ remember=5/' $file else sed -ri '/^s*passwords+(requisite|required|sufficient)s+pam_unix.so/i password required pam_pwhistory.so remember=5 use_authtok' $file fi fi if ! grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.soh+([^#

]+h+)?remember=([5-9]|[1-9][0-9]+).*$' "$file"; then if grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.soh+([^#

]+h +)?remember=d+.*$' "$file"; then sed -ri 's/^s*(passwords+(requisite|required|sufficient)s+pam_unix.sos+([^#

] +s+)?)(remember=S+s*)(s+.*)?$/1 remember=5 5/' $file else sed -ri '/^s*passwords+(requisite|required|sufficient)s+pam_unix.so/ s/$/ remember=5/' $file fi fi authselect apply-changes }.','[{\"cis\": [\"5.5.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"nist_sp_800-53\": [\"IA-5(1)\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}]'),(28142,'Ensure password hashing algorithm is SHA-512 or yescrypt.','A cryptographic hash function converts an arbitrary-length input into a fixed length output. Password hashing performs a one-way transformation of a password, turning the password into another string, called the hashed password.','The SHA-512 algorithm provides stronger hashing than other hashing algorithms used for password hashing with Linux, providing additional protection to the system by increasing the level of effort for an attacker to successfully determine passwords. Note: These changes only apply to accounts configured on the local system.','','Set password hashing algorithm to sha512. Edit /etc/libuser.conf and edit of add the following line: crypt_style = sha512 Edit /etc/login.defs and edit or add the following line: ENCRYPT_METHOD SHA512 Run the following script to configure pam_unix.so to use the sha512 hashing algorithm: #!/usr/bin/env bash for fn in system-auth password-auth; do file="/etc/authselect/$(head -1 /etc/authselect/authselect.conf | grep 'custom/')/$fn" if ! grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.so(h+[^#

]+)? h+sha512.*$' "$file"; then if grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.so(h+[^#

]+)? h+(md5|blowfish|bigcrypt|sha256).*$' "$file"; then sed -ri 's/(md5|blowfish|bigcrypt|sha256)/sha512/' "$file" else sed -ri 's/(^s*passwords+(requisite|required|sufficient)s+pam_unix.sos+)(.*)$/1s ha512 3/' $file fi fi done authselect apply-changes Note: This only effects local users and passwords created after updating the files to use sha512. If it is determined that the password algorithm being used is not SHA-512, once it is changed, it is recommended that all user ID's be immediately expired and forced to change their passwords on next login.','[{\"cis\": [\"5.5.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"IA-5(1)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1110\", \"T1110.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(28143,'Ensure password expiration is 365 days or less.','The PASS_MAX_DAYS parameter in /etc/login.defs allows an administrator to force passwords to expire once they reach a defined age. It is recommended that the PASS_MAX_DAYS parameter be set to less than or equal to 365 days.','The window of opportunity for an attacker to leverage compromised credentials or successfully compromise credentials via an online brute force attack is limited by the age of the password. Therefore, reducing the maximum age of a password also reduces an attacker's window of opportunity.','','Set the PASS_MAX_DAYS parameter to conform to site policy in /etc/login.defs : PASS_MAX_DAYS 365 Modify user parameters for all users with a password set to match: chage --maxdays 365 <user>.','[{\"cis\": [\"5.6.1.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1110.004\"]}]'),(28144,'Ensure minimum days between password changes is configured.','The PASS_MIN_DAYS parameter in /etc/login.defs allows an administrator to prevent users from changing their password until a minimum number of days have passed since the last time the user changed their password. It is recommended that PASS_MIN_DAYS parameter be set to 1 or more days.','By restricting the frequency of password changes, an administrator can prevent users from repeatedly changing their password in an attempt to circumvent password reuse controls.','','Set the PASS_MIN_DAYS parameter to 1 in /etc/login.defs: PASS_MIN_DAYS 1 and modify user parameters for all users with a password set to match: chage --mindays 1 <user>.','[{\"cis\": [\"5.6.1.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28145,'Ensure password expiration warning days is 7 or more.','The PASS_WARN_AGE parameter in /etc/login.defs allows an administrator to notify users that their password will expire in a defined number of days. It is recommended that the PASS_WARN_AGE parameter be set to 7 or more days.','Providing an advance warning that a password will be expiring gives users time to think of a secure password. Users caught unaware may choose a simple password or write it down where it may be discovered.','','Set the PASS_WARN_AGE parameter to 7 in /etc/login.defs: PASS_WARN_AGE 7 and modify user parameters for all users with a password set to match: chage --warndays 7 <user>.','[{\"cis\": [\"5.6.1.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28146,'Ensure inactive password lock is 30 days or less.','User accounts that have been inactive for over a given period of time can be automatically disabled. It is recommended that accounts that are inactive for 30 days after password expiration be disabled.','Inactive accounts pose a threat to system security since the users are not logging in to notice failed login attempts or other anomalies.','','Run the following command to set the default password inactivity period to 30 days: useradd -D -f 30 and modify user parameters for all users with a password set to match: chage --inactive 30 <user>.','[{\"cis\": [\"5.6.1.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28147,'Ensure default group for the root account is GID 0.','The usermod command can be used to specify which group the root account belongs to. This affects permissions of files that are created by the root account.','Using GID 0 for the root account helps prevent root -owned files from accidentally becoming accessible to non-privileged users.','','Run the following command to set the root account default group to GID 0 : # usermod -g 0 root.','[{\"cis\": [\"5.6.4\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28148,'Ensure root password is set.','There are a number of methods to access the root account directly. Without a password set any user would be able to gain access and thus control over the entire system.','Access to root should be secured at all times.','If there are any automated processes that relies on access to the root account without authentication, they will fail after remediation.','Set the root password with: # passwd root.','[{\"cis\": [\"5.6.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28149,'Ensure permissions on /etc/passwd are configured.','The /etc/passwd file contains user account information that is used by many system utilities and therefore must be readable for these utilities to operate.','It is critical to ensure that the /etc/passwd file is protected from unauthorized write access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd: # chmod u-x,go-wx /etc/passwd # chown root:root /etc/passwd.','[{\"cis\": [\"6.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28150,'Ensure permissions on /etc/passwd- are configured.','The /etc/passwd- file contains backup user account information.','It is critical to ensure that the /etc/passwd- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd-: # chmod u-x,go-wx /etc/passwd- # chown root:root /etc/passwd-.','[{\"cis\": [\"6.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28151,'Ensure permissions on /etc/group are configured.','The /etc/group file contains a list of all the valid groups defined in the system. The command below allows read/write access for root and read access for everyone else.','The /etc/group file needs to be protected from unauthorized changes by non-privileged users, but needs to be readable as this information is used with many non-privileged programs.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group: # chmod u-x,go-wx /etc/group # chown root:root /etc/group.','[{\"cis\": [\"6.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28152,'Ensure permissions on /etc/group- are configured.','The /etc/group- file contains a backup list of all the valid groups defined in the system.','It is critical to ensure that the /etc/group- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group-: # chmod u-x,go-wx /etc/group- # chown root:root /etc/group-.','[{\"cis\": [\"6.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28153,'Ensure permissions on /etc/shadow are configured.','The /etc/shadow file is used to store the information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert the user accounts.','','Run the following commands to set mode, owner, and group on /etc/shadow: # chown root:root /etc/shadow # chmod 0000 /etc/shadow.','[{\"cis\": [\"6.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28154,'Ensure permissions on /etc/shadow- are configured.','The /etc/shadow- file is used to store backup information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/shadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to set mode, owner, and group on /etc/shadow-: # chown root:root /etc/shadow- # chmod 0000 /etc/shadow-.','[{\"cis\": [\"6.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28155,'Ensure permissions on /etc/gshadow are configured.','The /etc/gshadow file is used to store the information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/gshadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/gshadow file (such as group administrators) could also be useful to subvert the group.','','Run the following commands to set mode, owner, and group on /etc/gshadow: # chown root:root /etc/gshadow # chmod 0000 /etc/gshadow.','[{\"cis\": [\"6.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28156,'Ensure permissions on /etc/gshadow- are configured.','The /etc/gshadow- file is used to store backup information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/gshadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to set mode, owner, and group on /etc/gshadow-: # chown root:root /etc/gshadow- # chmod 0000 /etc/gshadow-.','[{\"cis\": [\"6.1.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28157,'Ensure accounts in /etc/passwd use shadowed passwords.','Local accounts can uses shadowed passwords. With shadowed passwords, the passwords are saved in shadow password file, /etc/shadow, encrypted by a salted one-way hash. Accounts with a shadowed password have an x in the second field in /etc/passwd.','The /etc/passwd file also contains information like user ID's and group ID's that are used by many system programs. Therefore, the /etc/passwd file must remain world readable. In spite of encoding the password with a randomly-generated one-way hash function, an attacker could still break the system if they got access to the /etc/passwd file. This can be mitigated by using shadowed passwords, thus moving the passwords in the /etc/passwd file to /etc/shadow. The /etc/shadow file is set so only root will be able to read and write. This helps mitigate the risk of an attacker gaining access to the encoded passwords with which to perform a dictionary attack. Note: - All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user. - A user account with an empty second field in /etc/passwd allows the account to be logged into by providing only the username.','','Run the following command to set accounts to use shadowed passwords: # sed -e 's/^([a-zA-Z0-9_]*):[^:]*:/1:x:/' -i /etc/passwd Investigate to determine if the account is logged in and what it is being used for, to determine if it needs to be forced off.','[{\"cis\": [\"6.2.1\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28158,'Ensure /etc/shadow password fields are not empty.','An account with an empty password field means that anybody may log in as that user without providing a password.','All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user.','','If any accounts in the /etc/shadow file do not have a password, run the following command to lock the account until it can be determined why it does not have a password: passwd -l <username>. Also, check to see if the account is logged in and investigate what it is being used for to determine if it needs to be forced off.','[{\"cis\": [\"6.2.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28159,'Ensure root is the only UID 0 account.','Any account with UID 0 has superuser privileges on the system.','This access must be limited to only the default root account and only from the system console. Administrative access must be through an unprivileged account using an approved mechanism as noted in Item 5.6 Ensure access to the su command is restricted.','','Remove any users other than root with UID 0 or assign them a new UID if appropriate.','[{\"cis\": [\"6.2.9\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28500,'Ensure /tmp is a separate partition.','The /tmp directory is a world-writable directory used for temporary storage by all users and some applications.','Making /tmp its own file system allows an administrator to set additional mount options such as the noexec option on the mount, making /tmp useless for an attacker to install executable code. It would also prevent an attacker from establishing a hard link to a system setuid program and wait for it to be updated. Once the program was updated, the hard link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw. This can be accomplished by either mounting tmpfs to /tmp, or creating a separate partition for /tmp.','Since the /tmp directory is intended to be world-writable, there is a risk of resource exhaustion if it is not bound to a separate partition. Running out of /tmp space is a problem regardless of what kind of filesystem lies under it, but in a configuration where /tmp is not a separate file system it will essentially have the whole disk available, as the default installation only creates a single / partition. On the other hand, a RAM-based /tmp (as with tmpfs) will almost certainly be much smaller, which can lead to applications filling up the filesystem much more easily. Another alternative is to create a dedicated partition for /tmp from a separate volume or disk. One of the downsides of a disk-based dedicated partition is that it will be slower than tmpfs which is RAM-based. /tmp utilizing tmpfs can be resized using the size={size} parameter in the relevant entry in /etc/fstab.','First ensure that systemd is correctly configured to ensure that /tmp will be mounted at boot time. # systemctl unmask tmp.mount For specific configuration requirements of the /tmp mount for your environment, modify /etc/fstab or tmp.mount. Example of /etc/fstab configured tmpfs file system with specific mount options: tmpfs 0 /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime,size=2G 0 Example of tmp.mount configured tmpfs file system with specific mount options: [Unit] Description=Temporary Directory /tmp ConditionPathIsSymbolicLink=!/tmp DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target After=swap.target [Mount] What=tmpfs Where=/tmp Type=tmpfs.','[{\"cis\": [\"1.1.2.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28501,'Ensure nodev option set on /tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /tmp.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28502,'Ensure noexec option set on /tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /tmp.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28503,'Ensure nosuid option set on /tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /tmp.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28504,'Ensure separate partition exists for /var.','The /var directory is used by daemons and other system services to temporarily store dynamic data. Some directories created by these processes may be world-writable.','The reasoning for mounting /var on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var and cause unintended behavior across the system as the disk is full. See man auditd.conf for details. Fine grained control over the mount Configuring /var as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behaviour. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection from exploitation An example of exploiting /var may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hardlink would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.3.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28505,'Ensure nodev option set on /var partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28506,'Ensure nosuid option set on /var partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28507,'Ensure separate partition exists for /var/tmp.','The /var/tmp directory is a world-writable directory used for temporary storage by all users and some applications. Temporary file residing in /var/tmp is to be preserved between reboots.','The reasoning for mounting /var/tmp on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var/tmp directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/tmp and cause the potential disruption to daemons as the disk is full. Fine grained control over the mount Configuring /var/tmp as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection from exploitation An example of exploiting /var/tmp may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hard-link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/tmp. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.4.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28508,'Ensure noexec option set on /var/tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp 0 <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28509,'Ensure nosuid option set on /var/tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp 0 <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28510,'Ensure nodev option set on /var/tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp 0 <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28511,'Ensure separate partition exists for /var/log.','The /var/log directory is used by system services to store log data.','The reasoning for mounting /var/log on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var/log directory contain the log files that can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. Fine grained control over the mount Configuring /var/log as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection of log data As /var/log contains log files, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log . For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.5.1\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28512,'Ensure nodev option set on /var/log partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28513,'Ensure noexec option set on /var/log partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot run executable binaries from /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28514,'Ensure nosuid option set on /var/log partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot create setuid files in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28515,'Ensure separate partition exists for /var/log/audit.','The auditing daemon, auditd, stores log data in the /var/log/audit directory.','The reasoning for mounting /var/log/audit on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var/log/audit directory contain the audit.log file that can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/log/audit and cause auditd to trigger it's space_left_action as the disk is full. See man auditd.conf for details. Fine grained control over the mount Configuring /var/log/audit as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection of audit data As /var/log/audit contains audit logs, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log/audit. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.6.1\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28516,'Ensure noexec option set on /var/log/audit partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log/audit filesystem is only intended for audit logs, set this option to ensure that users cannot run executable binaries from /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28517,'Ensure nodev option set on /var/log/audit partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log/audit filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28518,'Ensure nosuid option set on /var/log/audit partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log/audit filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28519,'Ensure separate partition exists for /home.','The /home directory is used to support disk storage needs of local users.','The reasoning for mounting /home on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /home directory contains user generated data, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /home and impact all local users. Fine grained control over the mount Configuring /home as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. In the case of /home options such as usrquota/grpquota may be considered to limit the impact that users can have on each other with regards to disk resource exhaustion. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection of user data As /home contains user data, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /home. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.7.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28520,'Ensure nodev option set on /home partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /home filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var.','','IF the /home partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28521,'Ensure nosuid option set on /home partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /home filesystem is only intended for user file storage, set this option to ensure that users cannot create setuid files in /home.','','IF the /home partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28522,'Ensure nodev option set on /dev/shm partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /dev/shm filesystem is not intended to support devices, set this option to ensure that users cannot attempt to create special devices in /dev/shm partitions.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm Additional Information: Some distributions mount /dev/shm through other means and require /dev/shm to be added to /etc/fstab even though it is already being mounted on boot. Others may configure /dev/shm in other locations and may override /etc/fstab configuration. Consult the documentation appropriate for your distribution.','[{\"cis\": [\"1.1.8.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28523,'Ensure noexec option set on /dev/shm partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Setting this option on a file system prevents users from executing programs from shared memory. This deters users from introducing potentially malicious software on the system.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /dev/shm partition. Example: <device> /dev/shm <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /dev/shm with the configured options: # mount -o remount /dev/shm NOTE It is recommended to use tmpfs as the device/filesystem type as /dev/shm is used as shared memory space by applications.','[{\"cis\": [\"1.1.8.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28524,'Ensure nosuid option set on /dev/shm partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Setting this option on a file system prevents users from introducing privileged programs onto the system and allowing non-root users to execute them.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm Additional Information: Some distributions mount /dev/shm through other means and require /dev/shm to be added to /etc/fstab even though it is already being mounted on boot. Others may configure /dev/shm in other locations and may override /etc/fstab configuration. Consult the documentation appropriate for your distribution.','[{\"cis\": [\"1.1.8.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28525,'Disable Automounting.','autofs allows automatic mounting of devices, typically including CD/DVDs and USB drives.','With automounting enabled anyone with physical access could attach a USB drive or disc and have its contents available in system even if they lacked permissions to mount it themselves.','The use of portable hard drives is very common for workstation users. If your organization allows the use of portable storage or media on workstations and physical access controls to workstations is considered adequate there is little value add in turning off automounting.','If there are no other packages that depends on autofs, remove the package with: # apt purge autofs OR if there are dependencies on the autofs package: Run the following commands to mask autofs: # systemctl stop autofs # systemctl mask autofs Additional Information: This control should align with the tolerance of the use of portable drives and optical media in the organization. On a server requiring an admin to manually mount media can be part of defense-in-depth to reduce the risk of unapproved software or information being introduced or proprietary software or information being exfiltrated. If admins commonly use flash drives and Server access has sufficient physical controls, requiring manual mounting may not increase security.','[{\"cis\": [\"1.1.9\"]}, {\"cis_csc_v7\": [\"8.5\"]}, {\"cis_csc_v8\": [\"10.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1203\", \"T1211\", \"T1212\"]}, {\"cmmc_v2.0\": [\"MP.L2-3.8.7\"]}, {\"hipaa\": [\"164.310(d)(1)\"]}]'),(28526,'Ensure AIDE is installed.','AIDE takes a snapshot of filesystem state including modification times, permissions, and file hashes which can then be used to compare against the current state of the filesystem to detect modifications to the system.','By monitoring the filesystem state compromised files can be detected to prevent or limit the exposure of accidental or malicious misconfigurations or modified binaries.','','Install AIDE using the appropriate package manager or manual installation: # apt install aide aide-common Configure AIDE as appropriate for your environment. Consult the AIDE documentation for options. Run the following commands to initialize AIDE: # aideinit # mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db Additional Information: The prelinking feature can interfere with AIDE because it alters binaries to speed up their start up times. Run prelink -ua to restore the binaries to their prelinked state, thus avoiding false positives from AIDE.','[{\"cis\": [\"1.3.1\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"mitre_techniques\": [\"T1036\", \"T1036.002\", \"T1036.003\", \"T1036.004\", \"T1036.005\", \"T1565\", \"T1565.001\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"pci_dss_v3.2.1\": [\"10.2.1\", \"11.5\"]}, {\"pci_dss_v4.0\": [\"10.2.1\", \"10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28527,'Ensure bootloader password is set.','Setting the boot loader password will require that anyone rebooting the system must enter a password before being able to set command line boot parameters.','Requiring a boot password upon execution of the boot loader will prevent an unauthorized user from entering boot parameters or changing the boot partition. This prevents users from weakening security (e.g. turning off AppArmor at boot time).','If password protection is enabled, only the designated superuser can edit a Grub 2 menu item by pressing "e" or access the GRUB 2 command line by pressing "c" If GRUB 2 is set up to boot automatically to a password-protected menu entry the user has no option to back out of the password prompt to select another menu entry. Holding the SHIFT key will not display the menu in this case. The user must enter the correct username and password. If unable, the configuration files will have to be edited via the LiveCD or other means to fix the problem You can add --unrestricted to the menu entries to allow the system to boot without entering a password. Password will still be required to edit menu items. More Information: https://help.ubuntu.com/community/Grub2/Passwords.','Create an encrypted password with grub-mkpasswd-pbkdf2: # grub-mkpasswd-pbkdf2 Enter password: <password> Reenter password: <password> PBKDF2 hash of your password is <encrypted-password> Add the following into a custom /etc/grub.d configuration file: cat <<EOF set superusers="<username>" password_pbkdf2 <username> <encrypted-password> EOF The superuser/user information and password should not be contained in the /etc/grub.d/00_header file as this file could be overwritten in a package update. If there is a requirement to be able to boot/reboot without entering the password, edit /etc/grub.d/10_linux and add --unrestricted to the line CLASS= Example: CLASS="--class gnu-linux --class gnu --class os --unrestricted" Run the following command to update the grub2 configuration: # update-grub Default Value: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings. Replace /boot/grub/grub.cfg with the appropriate grub configuration file for your environment.','[{\"cis\": [\"1.4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"T1542\"]}, {\"mitre_mitigations\": [\"M1046\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \" 8.3.5\", \" 8.3.6\", \" 8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28528,'Ensure permissions on bootloader config are configured.','The grub configuration file contains information on boot settings and passwords for unlocking boot options.','Setting the permissions to read and write for root only prevents non-root users from seeing the boot parameters or changing them. Non-root users who read the boot parameters may be able to identify weaknesses in security upon boot and be able to exploit them.','','Run the following commands to set permissions on your grub configuration: # chown root:root /boot/grub/grub.cfg # chmod u-wx,go-rwx /boot/grub/grub.cfg Additional Information: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings. Replace /boot/grub/grub.cfg with the appropriate grub configuration file for your environment.','[{\"cis\": [\"1.4.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"TA0005\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \" AC.L1-3.1.2\", \" AC.L2-3.1.5\", \" AC.L2-3.1.3\", \" MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \" 164.308(a)(3)(ii)(A)\", \" 164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \" 7.1.1\", \" 7.1.2\", \" 7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \" 7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \" AC-6\"]}, {\"soc_2\": [\"CC5.2\", \" CC6.1\"]}]'),(28529,'Ensure authentication required for single user mode.','Single user mode is used for recovery when the system detects an issue during boot or by manual selection from the bootloader.','Requiring authentication in single user mode prevents an unauthorized user from rebooting the system into single user to gain root privileges without credentials.','','Run the following command and follow the prompts to set a password for the root user: # passwd root.','[{\"cis\": [\"1.4.3\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \" 8.3.5\", \" 8.3.6\", \" 8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28530,'Ensure prelink is not installed.','prelink is a program that modifies ELF shared libraries and ELF dynamically linked binaries in such a way that the time needed for the dynamic linker to perform relocations at startup significantly decreases.','The prelinking feature can interfere with the operation of AIDE, because it changes binaries. Prelinking can also increase the vulnerability of the system if a malicious user is able to compromise a common library such as libc.','','Run the following command to restore binaries to normal: # prelink -ua Uninstall prelink using the appropriate package manager or manual installation: # apt purge prelink.','[{\"cis\": [\"1.5.2\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"mitre_techniques\": [\"T1055\", \"T1055.009\", \"T1065\", \"T1065.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \" 164.312(c)(1)\", \" 164.312(c)(2)\"]}, {\"pci_dss_v3.2.1\": [\"10.2.1\", \" 11.5\"]}, {\"pci_dss_v4.0\": [\"10.2.1\", \" 10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28531,'Ensure Automatic Error Reporting is not enabled.','The Apport Error Reporting Service automatically generates crash reports for debugging.','Apport collects potentially sensitive data, such as core dumps, stack traces, and log files. They can contain passwords, credit card numbers, serial numbers, and other private material.','','Edit /etc/default/apport and add or edit the enabled parameter to equal 0: enabled=0 Run the following commands to stop and disable the apport service # systemctl stop apport.service # systemctl --now disable apport.service -- OR -Run the following command to remove the apport package: # apt purge apport Default Value: enabled=1.','[{\"cis\": [\"1.5.3\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28532,'Ensure core dumps are restricted.','A core dump is the memory of an executable program. It is generally used to determine why a program aborted. It can also be used to glean confidential information from a core file. The system provides the ability to set a soft limit for core dumps, but this can be overridden by the user.','Setting a hard limit on core dumps prevents users from overriding the soft variable. If core dumps are required, consider setting limits for user groups (see limits.conf(5) ). In addition, setting the fs.suid_dumpable variable to 0 will prevent setuid programs from dumping core.','','Add the following line to /etc/security/limits.conf or a /etc/security/limits.d/* file: * hard core 0 Set the following parameter in /etc/sysctl.conf or a /etc/sysctl.d/* file: fs.suid_dumpable = 0 Run the following command to set the active kernel parameter: # sysctl -w fs.suid_dumpable=0 IF systemd-coredump is installed: edit /etc/systemd/coredump.conf and add/modify the following lines: Storage=none ProcessSizeMax=0 Run the command: systemctl daemon-reload','[{\"cis\": [\"1.5.4\"]}, {\"mitre_techniques\": [\"T1005\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28533,'Ensure AppArmor is installed.','AppArmor provides Mandatory Access Controls.','Without a Mandatory Access Control system installed only the default Discretionary Access Control system will be available.','','Install AppArmor. # apt install apparmor.','[{\"cis\": [\"1.6.1.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \" AC.L1-3.1.2\", \" AC.L2-3.1.5\", \" AC.L2-3.1.3\", \" MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \" 164.308(a)(3)(ii)(A)\", \" 164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \" 7.1.1\", \" 7.1.2\", \" 7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \" 7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \" AC-6\"]}, {\"soc_2\": [\"CC5.2\", \" CC6.1\"]}]'),(28534,'Ensure AppArmor is enabled in the bootloader configuration.','Configure AppArmor to be enabled at boot time and verify that it has not been overwritten by the bootloader boot parameters. Note: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings.','AppArmor must be enabled at boot time in your bootloader configuration to ensure that the controls it provides are not overridden.','','Edit /etc/default/grub and add the apparmor=1 and security=apparmor parameters to the GRUB_CMDLINE_LINUX= line GRUB_CMDLINE_LINUX="apparmor=1 security=apparmor" Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"1.6.1.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28535,'Ensure all AppArmor Profiles are in enforce or complain mode.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* OR Run the following command to set all profiles to complain mode: # aa-complain /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28536,'Ensure all AppArmor Profiles are enforcing.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28537,'Ensure message of the day is configured properly.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a " command once they have logged in.','','Edit the /etc/motd file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform OR if the motd is not used, this file can be removed. Run the following command to remove the motd file: # rm /etc/motd','[{\"cis\": [\"1.7.1\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28538,'Ensure local login warning banner is configured properly.','The contents of the /etc/issue file are displayed to users prior to login for local terminals. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version - or the operating system's name.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a " command once they have logged in.','','Edit the /etc/issue file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue.','[{\"cis\": [\"1.7.2\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28539,'Ensure remote login warning banner is configured properly.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a " command once they have logged in.','','Edit the /etc/issue file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue','[{\"cis\": [\"1.7.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28540,'Ensure permissions on /etc/motd are configured.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users.','If the /etc/motd file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/motd : # chown root:root $(readlink -e /etc/motd) # chmod u-x,go-wx $(readlink -e /etc/motd) OR run the following command to remove the /etc/motd file: # rm /etc/motd','[{\"cis\": [\"1.7.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28541,'Ensure permissions on /etc/issue are configured.','The contents of the /etc/issue file are displayed to users prior to login for local terminals.','If the /etc/issue file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue : # chown root:root $(readlink -e /etc/issue) # chmod u-x,go-wx $(readlink -e /etc/issue) Default Value: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root).','[{\"cis\": [\"1.7.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28542,'Ensure permissions on /etc/issue.net are configured.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services.','If the /etc/issue.net file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue.net : # chown root:root $(readlink -e /etc/issue.net) # chmod u-x,go-wx $(readlink -e /etc/issue.net)','[{\"cis\": [\"1.7.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28543,'Ensure GNOME Display Manager is removed.','The GNOME Display Manager (GDM) is a program that manages graphical display servers and handles graphical user logins.','If a Graphical User Interface (GUI) is not required, it should be removed to reduce the attack surface of the system.','Removing the GNOME Display manager will remove the Graphical User Interface (GUI) from the system.','Run the following command to uninstall gdm3: # apt purge gdm3.','[{\"cis\": [\"1.8.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28544,'Ensure XDCMP is not enabled.','X Display Manager Control Protocol (XDMCP) is designed to provide authenticated access to display management services for remote displays.','XDMCP is inherently insecure. XDMCP is not a ciphered protocol. This may allow an attacker to capture keystrokes entered by a user XDMCP is vulnerable to man-in-the-middle attacks. This may allow an attacker to steal the credentials of legitimate users by impersonating the XDMCP server.','','Edit the file /etc/gdm3/custom.conf and remove the line: Enable=true Default Value: false (This is denoted by no Enabled= entry in the file /etc/gdm3/custom.conf in the [xdmcp] section.','[{\"cis\": [\"1.8.10\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1040\", \"T1056\", \"T1056.001\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28545,'Ensure chrony is running as user _chrony.','The chrony package is installed with a dedicated user account _chrony. This account is granted the access required by the chronyd service.','The chronyd service should run with only the required privileges.','','Add or edit the user line to /etc/chrony/chrony.conf or a file ending in .conf in /etc/chrony/conf.d/: user _chrony OR If another time synchronization service is in use on the system, run the following command to remove chrony from the system: # apt purge chrony','[{\"cis\": [\"2.1.2.2\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28546,'Ensure chrony is enabled and running.','chrony is a daemon for synchronizing the system clock across the network.','chrony needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF chrony is in use on the system, run the following commands: Run the following command to unmask chrony.service: # systemctl unmask chrony.service Run the following command to enable and start chrony.service: # systemctl --now enable chrony.service OR If another time synchronization service is in use on the system, run the following command to remove chrony: # apt purge chrony.','[{\"cis\": [\"2.1.2.3\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28547,'Ensure systemd-timesyncd is enabled and running.','systemd-timesyncd is a daemon that has been added for synchronizing the system clock across the network.','systemd-timesyncd needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF systemd-timesyncd is in use on the system, run the following commands: Run the following command to unmask systemd-timesyncd.service: # systemctl unmask systemd-timesyncd.service Run the following command to enable and start systemd-timesyncd.service: # systemctl --now enable systemd-timesyncd.service OR If another time synchronization service is in use on the system, run the following command to stop and mask systemd-timesyncd: # systemctl --now mask systemd-timesyncd.service','[{\"cis\": [\"2.1.3.2\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28548,'Ensure ntp access control is configured.','ntp Access Control Commands: restrict address [mask mask] [ippeerlimit int] [flag ...] The address argument expressed in dotted-quad form is the address of a host or network. Alternatively, the address argument can be a valid host DNS name. The mask argument expressed in dotted-quad form defaults to 255.255.255.255, meaning that the address is treated as the address of an individual host. A default entry (address 0.0.0.0, mask 0.0.0.0) is always included and is always the first entry in the list. Note: the text string default, with no mask option, may be used to indicate the default entry. The ippeerlimit directive limits the number of peer requests for each IP to int, where a value of -1 means "unlimited", the current default. A value of 0 means "none". There would usually be at most 1 peering request per IP, but if the remote peering requests are behind a proxy there could well be more than 1 per IP. In the current implementation, flag always restricts access, i.e., an entry with no flags indicates that free access to the server is to be given. The flags are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags can generally be classed into two categories, those which restrict time service and those which restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified: kod - If this flag is set when an access violation occurs, a kiss-o'-death (KoD) packet is sent. KoD packets are rate limited to no more than one per second. If another KoD packet occurs within one second after the last one, the packet is dropped. limited - Deny service if the packet spacing violates the lower limits specified in the discard command. A history of clients is kept using the monitoring capability of ntpd. Thus, monitoring is always active as long as there is a restriction entry with the limited flag. lowpriotrap - Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps. noepeer - Deny ephemeral peer requests, even if they come from an authenticated source. Note that the ability to use a symmetric key for authentication may be restricted to one or more IPs or subnets via the third field of the ntp.keys file. This restriction is not enabled by default, to maintain backward compatibility. Expect noepeer to become the default in ntp-4.4. nomodify - Deny ntpq and ntpdc queries which attempt to modify the state of the server (i.e., run time reconfiguration). Queries which return information are permitted. noquery - Deny ntpq and ntpdc queries. Time service is not affected. nopeer - Deny unauthenticated packets which would result in mobilizing a new association. This includes broadcast and symmetric active packets when a configured association does not exist. It also includes pool associations, so if you want to use servers from a pool directive and also want to use nopeer by default, you'll want a restrict source ... line as well that does not include the nopeer directive. noserve - Deny all packets except ntpq and ntpdc queries. notrap - Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the ntpq control message protocol which is intended for use by remote event logging programs. notrust - Deny service unless the packet is cryptographically authenticated. ntpport - This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both ntpport and nonntpport may be specified. The ntpport is considered more specific and is sorted later in the list.','If ntp is in use on the system, proper configuration is vital to ensuring time synchronization is accurate.','','Add or edit restrict lines in /etc/ntp.conf to match the following: restrict -4 default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp Default Value: restrict -4 default kod notrap nomodify nopeer noquery limited restrict -6 default kod notrap nomodify nopeer noquery limited.','[{\"cis\": [\"2.1.4.1\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28549,'Ensure ntp is running as user ntp.','The ntp package is installed with a dedicated user account ntp. This account is granted the access required by the ntpd daemon Note: If chrony or systemd-timesyncd are used, ntp should be removed and this section skipped This recommendation only applies if ntp is in use on the system Only one time synchronization method should be in use on the system.','The ntpd daemon should run with only the required privilege.','','Add or edit the following line in /etc/init.d/ntp: RUNASUSER=ntp Run the following command to restart ntp.servocee: # systemctl restart ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp Default Value: user ntp.','[{\"cis\": [\"2.1.4.3\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28550,'Ensure ntp is enabled and running.','ntp is a daemon for synchronizing the system clock across the network.','ntp needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF ntp is in use on the system, run the following commands: Run the following command to unmask ntp.service: # systemctl unmask ntp.service Run the following command to enable and start ntp.service: # systemctl --now enable ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp: # apt purge ntp.','[{\"cis\": [\"2.1.4.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28551,'Ensure X Window System is not installed.','The X Window System provides a Graphical User Interface (GUI) where users can have multiple windows in which to run programs and various add on. The X Windows system is typically used on workstations where users login, but not on servers where users typically do not login.','Unless your organization specifically requires graphical login access via X Windows, remove it to reduce the potential attack surface.','Many Linux systems run applications which require a Java runtime. Some Linux Java packages have a dependency on specific X Windows xorg-x11-fonts. One workaround to avoid this dependency is to use the "headless" Java packages for your specific Java runtime, if provided by your distribution.','Remove the X Windows System packages: apt purge xserver-xorg*','[{\"cis\": [\"2.2.1\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28552,'Ensure Avahi Server is not installed.','Avahi is a free zeroconf implementation, including a system for multicast DNS/DNS-SD service discovery. Avahi allows programs to publish and discover services and hosts running on a local network with no specific configuration. For example, a user can plug a computer into a network and Avahi automatically finds printers to print to, files to look at and people to talk to, as well as network services running on the machine.','Automatic discovery of network services is not normally required for system functionality. It is recommended to remove this package to reduce the potential attack surface.','','Run the following commands to remove avahi-daemon: # systemctl stop avahi-daaemon.service # systemctl stop avahi-daemon.socket # apt purge avahi-daemon.','[{\"cis\": [\"2.2.2\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28553,'Ensure CUPS is not installed.','The Common Unix Print System (CUPS) provides the ability to print to both local and network printers. A system running CUPS can also accept print jobs from remote systems and print them to local printers. It also provides a web based remote administration capability.','If the system does not need to print jobs or accept print jobs from other systems, it is recommended that CUPS be removed to reduce the potential attack surface.','Removing CUPS will prevent printing from the system, a common task for workstation systems.','Run one of the following commands to remove cups : # apt purge cups','[{\"cis\": [\"2.2.3\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28554,'Ensure DHCP Server is not installed.','The Dynamic Host Configuration Protocol (DHCP) is a service that allows machines to be dynamically assigned IP addresses.','Unless a system is specifically set up to act as a DHCP server, it is recommended that this package be removed to reduce the potential attack surface.','','Run the following command to remove isc-dhcp-server: # apt purge isc-dhcp-server.','[{\"cis\": [\"2.2.4\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28555,'Ensure LDAP server is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP server, it is recommended that the software be removed to reduce the potential attack surface.','','Run one of the following commands to remove slapd: # apt purge slapd','[{\"cis\": [\"2.2.5\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28556,'Ensure NFS is not installed.','The Network File System (NFS) is one of the first and most widely distributed file systems in the UNIX environment. It provides the ability for systems to mount file systems of other servers through the network.','If the system does not export NFS shares or act as an NFS client, it is recommended that these services be removed to reduce the remote attack surface.','','Run the following command to remove nfs: # apt purge nfs-kernel-server.','[{\"cis\": [\"2.2.6\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28557,'Ensure DNS Server is not installed.','The Domain Name System (DNS) is a hierarchical naming system that maps names to IP addresses for computers, services and other resources connected to a network.','Unless a system is specifically designated to act as a DNS server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following commands to disable DNS server: # apt purge bind9','[{\"cis\": [\"2.2.7\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28558,'Ensure FTP Server is not installed.','The File Transfer Protocol (FTP) provides networked computers with the ability to transfer files.','FTP does not protect the confidentiality of data or authentication credentials. It is recommended SFTP be used if file transfer is required. Unless there is a need to run the system as a FTP server (for example, to allow anonymous downloads), it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove vsftpd: # apt purge vsftpd Additional Information: Additional FTP servers also exist and should be audited.','[{\"cis\": [\"2.2.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28559,'Ensure HTTP server is not installed.','HTTP or web servers provide the ability to host web site content.','Unless there is a need to run the system as a web server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove apache: # apt purge apache2 Additional Information: Several httpd servers exist and can use other service names. apache2 and nginx are example services that provide an HTTP server. These and other services should also be audited','[{\"cis\": [\"2.2.9\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28560,'Ensure IMAP and POP3 server are not installed.','dovecot-imapd and dovecot-pop3d are an open source IMAP and POP3 server for Linux based systems.','Unless POP3 and/or IMAP servers are to be provided by this system, it is recommended that the package be removed to reduce the potential attack surface.','','Run one of the following commands to remove dovecot-imapd and dovecot-pop3d: # apt purge dovecot-imapd dovecot-pop3d Additional Information: Several IMAP/POP3 servers exist and can use other service names. courier-imap and cyrus-imap are example services that provide a mail server. These and other services should also be audited.','[{\"cis\": [\"2.2.10\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28561,'Ensure Samba is not installed.','The Samba daemon allows system administrators to configure their Linux systems to share file systems and directories with Windows desktops. Samba will advertise the file systems and directories via the Server Message Block (SMB) protocol. Windows desktop users will be able to mount these directories and file systems as letter drives on their systems.','If there is no need to mount directories and file systems to Windows systems, then this service should be deleted to reduce the potential attack surface.','','Run the following command to remove samba: # apt purge samba.','[{\"cis\": [\"2.2.11\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28562,'Ensure HTTP Proxy Server is not installed.','Squid is a standard proxy server used in many distributions and environments.','If there is no need for a proxy server, it is recommended that the squid proxy be deleted to reduce the potential attack surface.','','Run the following command to remove squid: # apt purge squid Additional Information: Several HTTP proxy servers exist. These and other services should be checked.','[{\"cis\": [\"2.2.12\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28563,'Ensure SNMP Server is not installed.','Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment, computer equipment and devices like UPSs. Net-SNMP is a suite of applications used to implement SNMPv1 (RFC 1157), SNMPv2 (RFCs 1901-1908), and SNMPv3 (RFCs 3411-3418) using both IPv4 and IPv6. Support for SNMPv2 classic (a.k.a. "SNMPv2 historic" - RFCs 1441-1452) was dropped with the 4.0 release of the UCD-snmp package. The Simple Network Management Protocol (SNMP) server is used to listen for SNMP commands from an SNMP management system, execute the commands or collect the information and then send results back to the requesting system.','The SNMP server can communicate using SNMPv1, which transmits data in the clear and does not require authentication to execute commands. SNMPv3 replaces the simple/clear text password sharing used in SNMPv2 with more securely encoded parameters. If the the SNMP service is not required, the net-snmp package should be removed to reduce the attack surface of the system. Note: If SNMP is required: The server should be configured for SNMP v3 only. User Authentication and Message Encryption should be configured. If SNMP v2 is absolutely necessary, modify the community strings' values.','','Run the following command to remove snmp: # apt purge snmp.','[{\"cis\": [\"2.2.13\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28564,'Ensure NIS Server is not installed.','The Network Information Service (NIS) (formally known as Yellow Pages) is a clientserver directory service protocol for distributing system configuration files. The NIS server is a collection of programs that allow for the distribution of configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed and other, more secure services be used.','','Run the following command to remove nis: # apt purge nis.','[{\"cis\": [\"2.2.14\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28565,'Ensure mail transfer agent is configured for local-only mode.','Mail Transfer Agents (MTA), such as sendmail and Postfix, are used to listen for incoming mail and transfer the messages to the appropriate user or mail server. If the system is not intended to be a mail server, it is recommended that the MTA be configured to only process local mail.','The software for all Mail Transfer Agents is complex and most have a long history of security issues. While it is important to ensure that the system can process local mail messages, it is not necessary to have the MTA's daemon listening on a port unless the server is intended to be a mail server that receives and processes mail from other systems. Note: - This recommendation is designed around the postfix mail server. - Depending on your environment you may have an alternative MTA installed such as exim4. If this is the case consult the documentation for your installed MTA to configure the recommended state.','','Edit /etc/postfix/main.cf and add the following line to the RECEIVING MAIL section. If the line already exists, change it to look like the line below: inet_interfaces = loopback-only Run the following command to restart postfix: # systemctl restart postfix.','[{\"cis\": [\"2.2.15\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1018\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28566,'Ensure rsync service is either not installed or masked.','The rsync service can be used to synchronize files between systems over network links.','The rsync service presents a security risk as it uses unencrypted protocols for communication. The rsync package should be removed to reduce the attack area of the system.','','Run the following command to remove rsync: # apt purge rsync OR Run the following commands to stop and mask rsync: # systemctl stop rsync # systemctl mask rsync.','[{\"cis\": [\"2.2.16\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1105\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\", \"1570\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28567,'Ensure NIS Client is not installed.','The Network Information Service (NIS), formerly known as Yellow Pages, is a clientserver directory service protocol used to distribute system configuration files. The NIS client was used to bind a machine to an NIS server and receive the distributed configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall nis: # apt purge nis','[{\"cis\": [\"2.3.1\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28568,'Ensure rsh client is not installed.','The rsh-client package contains the client commands for the rsh services.','These legacy clients contain numerous security exposures and have been replaced with the more secure SSH package. Even if the server is removed, it is best to ensure the clients are also removed to prevent users from inadvertently attempting to use these commands and therefore exposing their credentials. Note that removing the rsh package removes the clients for rsh, rcp and rlogin.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall rsh: # apt purge rsh-client','[{\"cis\": [\"2.3.2\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28569,'Ensure talk client is not installed.','The talk software makes it possible for users to send and receive messages across systems through a terminal session. The talk client, which allows initialization of talk sessions, is installed by default.','The software presents a security risk as it uses unencrypted protocols for communication.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall talk: # apt purge talk','[{\"cis\": [\"2.3.3\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28570,'Ensure telnet client is not installed.','The telnet package contains the telnet client, which allows users to start connections to other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow an unauthorized user to steal credentials. The ssh package provides an encrypted session and stronger security and is included in most Linux distributions.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall telnet: # apt purge telnet','[{\"cis\": [\"2.3.4\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28571,'Ensure LDAP client is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP client, it is recommended that the software be removed to reduce the potential attack surface.','Removing the LDAP client will prevent or inhibit using LDAP for authentication in your environment.','Uninstall ldap-utils: # apt purge ldap-utils','[{\"cis\": [\"2.3.5\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28572,'Ensure RPC is not installed.','Remote Procedure Call (RPC) is a method for creating low level client server applications across different system architectures. It requires an RPC compliant client listening on a network port. The supporting package is rpcbind.','If RPC is not required, it is recommended that this services be removed to reduce the remote attack surface.','','Run the following command to remove rpcbind: # apt purge rpcbind','[{\"cis\": [\"2.3.6\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28573,'Ensure ufw is installed.','The Uncomplicated Firewall (ufw) is a frontend for iptables and is particularly well-suited for host-based firewalls. ufw provides a framework for managing netfilter, as well as a command-line interface for manipulating the firewall.','A firewall utility is required to configure the Linux kernel's netfilter framework via the iptables or nftables back-end. The Linux kernel's netfilter framework host-based firewall can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host. Note: Only one firewall utility should be installed and configured. UFW is dependent on the iptables package.','','Run the following command to install Uncomplicated Firewall (UFW): apt install ufw','[{\"cis\": [\"3.5.1.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28574,'Ensure iptables-persistent is not installed with ufw.','The iptables-persistent is a boot-time loader for netfilter rules, iptables plugin.','Running both ufw and the services included in the iptables-persistent package may lead to conflict.','','Run the following command to remove the iptables-persistent package: # apt purge iptables-persistent','[{\"cis\": [\"3.5.1.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28575,'Ensure ufw service is enabled.','UncomplicatedFirewall (ufw) is a frontend for iptables. ufw provides a framework for managing netfilter, as well as a command-line and available graphical user interface for manipulating the firewall. Notes: When running ufw enable or starting ufw via its initscript, ufw will flush its chains. This is required so ufw can maintain a consistent state, but it may drop existing connections (eg ssh). ufw does support adding rules before enabling the firewall. Run the following command before running ufw enable. # ufw allow proto tcp from any to any port 22 The rules will still be flushed, but the ssh port will be open after enabling the firewall. Please note that once ufw is 'enabled', ufw will not flush the chains when adding or removing rules (but will when modifying a rule or changing the default policy) By default, ufw will prompt when enabling the firewall while running under ssh. This can be disabled by using ufw --force enable.','The ufw service must be enabled and running in order for ufw to protect the system.','Changing firewall settings while connected over network can result in being locked out of the system.','Run the following command to unmask the ufw daemon: # systemctl unmask ufw.service Run the following command to enable and start the ufw daemon: # systemctl --now enable ufw.service active Run the following command to enable ufw: # ufw enable','[{\"cis\": [\"3.5.1.3\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28576,'Ensure ufw loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6).','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ufw allow in on lo # ufw allow out on lo # ufw deny in from 127.0.0.0/8 # ufw deny in from ::1','[{\"cis\": [\"3.5.1.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28577,'Ensure ufw default deny firewall policy.','A default deny policy on connections ensures that any unconfigured network usage will be rejected. Note: Any port or protocol without a explicit allow before the default deny will be blocked.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','Any port and protocol not explicitly allowed will be blocked. The following rules should be considered before applying the default deny. ufw allow git ufw allow in http ufw allow out http <- required for apt to connect to repository ufw allow in https ufw allow out https ufw allow out 53 ufw logging on.','Run the following commands to implement a default deny policy: # ufw default deny incoming # ufw default deny outgoing # ufw default deny routed','[{\"cis\": [\"3.5.1.7\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28578,'Ensure nftables is installed.','nftables provides a new in-kernel packet classification framework that is based on a network-specific Virtual Machine (VM) and a new nft userspace command line tool. nftables reuses the existing Netfilter subsystems such as the existing hook infrastructure, the connection tracking system, NAT, userspace queuing and logging subsystem. Notes: nftables is available in Linux kernel 3.13 and newer Only one firewall utility should be installed and configured Changing firewall settings while connected over the network can result in being locked out of the system.','nftables is a subsystem of the Linux kernel that can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host.','','Run the following command to install nftables: # apt install nftables','[{\"cis\": [\"3.5.2.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28579,'Ensure a nftables table exists.','Tables hold chains. Each table only has one address family and only applies to packets of this family. Tables can have one of five families.','nftables doesn't have any default tables. Without a table being build, nftables will not filter network traffic.','Adding rules to a running nftables can cause loss of connectivity to the system.','Run the following command to create a table in nftables # nft create table inet <table name> Example: # nft create table inet filter','[{\"cis\": [\"3.5.2.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28580,'Ensure nftables base chains exist.','Chains are containers for rules. They exist in two kinds, base chains and regular chains. A base chain is an entry point for packets from the networking stack, a regular chain may be used as jump target and is used for better rule organization.','If a base chain doesn't exist with a hook for input, forward, and delete, packets that would flow through those chains will not be touched by nftables.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command to create the base chains: # nft create chain inet <table name> <base chain name> { type filter hook <(input|forward|output)> priority 0 ; } Example: # nft create chain inet filter input { type filter hook input priority 0 ; } # nft create chain inet filter forward { type filter hook forward priority 0 ; } # nft create chain inet filter output { type filter hook output priority 0 ; }','[{\"cis\": [\"3.5.2.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28581,'Ensure nftables default deny firewall policy.','Base chain policy is the default verdict that will be applied to packets reaching the end of the chain.','There are two policies: accept (Default) and drop. If the policy is set to accept, the firewall will accept any packet that is not configured to be denied and the packet will continue transversing the network stack. It is easier to white list acceptable usage than to black list unacceptable usage. Note: Changing firewall settings while connected over network can result in being locked out of the system.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command for the base chains with the input, forward, and output hooks to implement a default DROP policy: # nft chain <table family> <table name> <chain name> { policy drop ; } Example: # nft chain inet filter input { policy drop ; } # nft chain inet filter forward { policy drop ; } # nft chain inet filter output { policy drop ; } Default Value: accept','[{\"cis\": [\"3.5.2.8\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28582,'Ensure nftables service is enabled.','The nftables service allows for the loading of nftables rulesets during boot, or starting on the nftables service.','The nftables service restores the nftables rules from the rules files referenced in the /etc/nftables.conf file during boot or the starting of the nftables service.','','Run the following command to enable the nftables service: # systemctl enable nftables.','[{\"cis\": [\"3.5.2.9\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28583,'Ensure iptables packages are installed.','iptables is a utility program that allows a system administrator to configure the tables provided by the Linux kernel firewall, implemented as different Netfilter modules, and the chains and rules it stores. Different kernel modules and programs are used for different protocols; iptables applies to IPv4, ip6tables to IPv6, arptables to ARP, and ebtables to Ethernet frames.','A method of configuring and maintaining firewall rules is necessary to configure a Host Based Firewall.','','Run the following command to install iptables and iptables-persistent # apt install iptables iptables-persistent','[{\"cis\": [\"3.5.3.1.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28584,'Ensure nftables is not installed with iptables.','nftables is a subsystem of the Linux kernel providing filtering and classification of network packets/datagrams/frames and is the successor to iptables.','Running both iptables and nftables may lead to conflict.','','Run the following command to remove nftables: # apt purge nftables','[{\"cis\": [\"3.5.3.1.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28585,'Ensure ufw is uninstalled or disabled with iptables.','Uncomplicated Firewall (UFW) is a program for managing a netfilter firewall designed to be easy to use. Uses a command-line interface consisting of a small number of simple commands Uses iptables for configuration.','Running iptables.persistent with ufw enabled may lead to conflict and unexpected results.','','Run one of the following commands to either remove ufw or stop and mask ufw Run the following command to remove ufw: # apt purge ufw OR Run the following commands to disable ufw: # ufw disable # systemctl stop ufw # systemctl mask ufw.','[{\"cis\": [\"3.5.3.1.3\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28586,'Ensure iptables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.2.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28587,'Ensure iptables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8). Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # iptables -A INPUT -i lo -j ACCEPT # iptables -A OUTPUT -o lo -j ACCEPT # iptables -A INPUT -s 127.0.0.0/8 -j DROP.','[{\"cis\": [\"3.5.3.2.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28588,'Ensure ip6tables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # ip6tables -P INPUT DROP # ip6tables -P OUTPUT DROP # ip6tables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.3.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28589,'Ensure ip6tables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (::1). Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (::1) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ip6tables -A INPUT -i lo -j ACCEPT # ip6tables -A OUTPUT -o lo -j ACCEPT # ip6tables -A INPUT -s ::1 -j DROP','[{\"cis\": [\"3.5.3.3.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28590,'Ensure auditd is installed.','auditd is the userspace component to the Linux Auditing System. It's responsible for writing audit records to the disk.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to Install auditd # apt install auditd audispd-plugins.','[{\"cis\": [\"4.1.1.1\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28591,'Ensure auditd service is enabled and active.','Turn on the auditd daemon to record system events.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to enable and start auditd: # systemctl --now enable auditd.','[{\"cis\": [\"4.1.1.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28592,'Ensure auditing for processes that start prior to auditd is enabled.','Configure grub2 so that processes that are capable of being audited can be audited even if they start up prior to auditd startup.','Audit events need to be captured on processes that start up prior to auditd , so that potential malicious activity cannot go undetected.','','Edit /etc/default/grub and add audit=1 to GRUB_CMDLINE_LINUX: Example: GRUB_CMDLINE_LINUX="audit=1" Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"4.1.1.3\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28593,'Ensure audit_backlog_limit is sufficient.','In the kernel-level audit subsystem, a socket buffer queue is used to hold audit events. Whenever a new audit event is received, it is logged and prepared to be added to this queue. The kernel boot parameter audit_backlog_limit=N, with N representing the amount of messages, will ensure that a queue cannot grow beyond a certain size. If an audit event is logged which would grow the queue beyond this limit, then a failure occurs and is handled according to the system configuration.','If an audit event is logged which would grow the queue beyond the audit_backlog_limit, then a failure occurs, auditd records will be lost, and potential malicious activity could go undetected.','','Edit /etc/default/grub and add audit_backlog_limit=N to GRUB_CMDLINE_LINUX. The recommended size for N is 8192 or larger. Example: GRUB_CMDLINE_LINUX="audit_backlog_limit=8192" Run the following command to update the grub2 configuration: # update-grub','[{\"cis\": [\"4.1.1.4\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28594,'Ensure audit log storage size is configured.','Configure the maximum size of the audit log file. Once the log reaches the maximum size, it will be rotated and a new log file will be started.','It is important that an appropriate size is determined for log files so that they do not impact the system and audit data is not lost.','','Set the following parameter in /etc/audit/auditd.conf in accordance with site policy: max_log_file = <MB> Default Value: max_log_file = 8 Additional Information: The max_log_file parameter is measured in megabytes. Other methods of log rotation may be appropriate based on site policy. One example is time-based rotation strategies which don't have native support in auditd configurations. Manual audit of custom configurations should be evaluated for effectiveness and completeness.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28595,'Ensure audit logs are not automatically deleted.','The max_log_file_action setting determines how to handle the audit log file reaching the max file size. A value of keep_logs will rotate the logs but never delete old logs.','In high security contexts, the benefits of maintaining a long audit history exceed the cost of storing the audit history.','','Set the following parameter in /etc/audit/auditd.conf: max_log_file_action = keep_logs.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28596,'Ensure system is disabled when audit logs are full.','The auditd daemon can be configured to halt the system when the audit logs are full. The admin_space_left_action parameter tells the system what action to take when the system has detected that it is low on disk space. Valid values are ignore, syslog, suspend, single, and halt. ignore, the audit daemon does nothing Syslog, the audit daemon will issue a warning to syslog Suspend, the audit daemon will stop writing records to the disk single, the audit daemon will put the computer system in single user mode halt, the audit daemon will shutdown the system.','In high security contexts, the risk of detecting unauthorized access or nonrepudiation exceeds the benefit of the system's availability.','If the admin_space_left_action parameter is set to halt the audit daemon will shutdown the system when the disk partition containing the audit logs becomes full.','Set the following parameters in /etc/audit/auditd.conf: space_left_action = email action_mail_acct = root set admin_space_left_action to either halt or single in /etc/audit/auditd.conf. Example: admin_space_left_action = halt.','[{\"cis\": [\"4.1.2.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28597,'Ensure changes to system administration scope (sudoers) is collected.','Monitor scope changes for system administrators. If the system has been properly configured to force system administrators to log in as themselves first and then use the sudo command to execute privileged commands, it is possible to monitor changes in scope. The file /etc/sudoers will be written to when the file or its attributes have changed. The audit records will be tagged with the identifier "scope.". Note: Reloading the auditd config to set active settings requires the auditd service to be restarted, and may require a system reboot.','Changes in the /etc/sudoers and /etc/sudoers.d files can indicate that an unauthorized change has been made to the scope of system administrator activity.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor scope changes for system administrators. Example: # printf " -w /etc/sudoers -p wa -k scope -w /etc/sudoers.d -p wa -k scope " >> /etc/audit/rules.d/50-scope.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.1\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28598,'Ensure actions as another user are always logged.','sudo provides users with temporary elevated privileges to perform operations, either as the superuser or another user.','Creating an audit log of users with temporary elevated privileges and the operation(s) they performed is essential to reporting. Administrators will want to correlate the events written to the audit trail with the records written to sudo's logfile to verify if unauthorized commands have been executed.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor elevated privileges. 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -C euid!=uid -F auid!=unset -S execve -k user_emulation -a always,exit -F arch=b32 -C euid!=uid -F auid!=unset -S execve -k user_emulation " >> /etc/audit/rules.d/50-user_emulation.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64. Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.2\"]}, {\"cis_csc_v7\": [\"4.9\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28599,'Ensure events that modify date and time information are collected.','Capture events where the system date and/or time has been modified. The parameters in this section are set to determine if the; adjtimex - tune kernel clock settimeofday - set time using timeval and timezone structures stime - using seconds since 1/1/1970 clock_settime - allows for the setting of several internal clocks and timers system calls have been executed. Further, ensure to write an audit record to the configured audit log file upon exit, tagging the records with a unique identifier such as "time-change".','Unexpected changes in system date and/or time could be a sign of malicious activity on the system.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify date and time information. 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k timechange -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime -k timechange -w /etc/localtime -p wa -k time-change " >> /etc/audit/rules.d/50-time-change.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64. In addition, add stime to the system call audit. Example: -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime,stime -k time-change Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.4\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28600,'Ensure events that modify the system's network environment are collected.','Record changes to network environment files or system calls. The below parameters monitors the following system calls, and write an audit event on system call exit: sethostname - set the systems host name setdomainname - set the systems domain name The files being monitored are: -/etc/issue and /etc/issue.net - messages displayed pre-login /etc/hosts - file containing host names and associated IP addresses - /etc/networks - symbolic names for networks - /etc/network/ - directory containing network interface scripts and configurations files.','Monitoring sethostname and setdomainname will identify potential unauthorized changes to host and domainname of a system. The changing of these names could potentially break security parameters that are set based on those names. The /etc/hosts file is monitored for changes that can indicate an unauthorized intruder is trying to change machine associations with IP addresses and trick users and processes into connecting to unintended machines. Monitoring /etc/issue and /etc/issue.net is important, as intruders could put disinformation into those files and trick users into providing information to the intruder. Monitoring /etc/network is important as it can show if network interfaces or scripts are being modified in a way that can lead to the machine becoming unavailable or compromised. All audit records should have a relevant tag associated with them.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the system's network environment. 64 Bit systems Example: # printf "-a always,exit -F arch=b64 -S sethostname,setdomainname -k system-locale -a always,exit -F arch=b32 -S sethostname,setdomainname -k system-locale -w /etc/issue -p wa -k system-locale -w /etc/issue.net -p wa -k system-locale -w /etc/hosts -p wa -k system-locale -w /etc/networks -p wa -k system-locale -w /etc/network/ -p wa -k system-locale" >> /etc/audit/rules.d/50-system_local.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28601,'Ensure events that modify user/group information are collected.','Record events affecting the modification of user or group information, including that of passwords and old passwords if in use. /etc/group - system groups /etc/passwd - system users /etc/gshadow - encrypted password for each group /etc/shadow - system user passwords /etc/security/opasswd - storage of old passwords if the relevant PAM module is in use The parameters in this section will watch the files to see if they have been opened for write or have had attribute changes (e.g. permissions) and tag them with the identifier "identity" in the audit log file.','Unexpected changes to these files could be an indication that the system has been compromised and that an unauthorized user is attempting to hide their activities or compromise additional accounts.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify user/group information. Example: # printf " -w /etc/group -p wa -k identity -w /etc/passwd -p wa -k identity -w /etc/gshadow -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/security/opasswd -p wa -k identity " >> /etc/audit/rules.d/50-identity.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi.','[{\"cis\": [\"4.1.3.8\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28602,'Ensure session initiation information is collected.','Monitor session initiation events. The parameters in this section track changes to the files associated with session events. /var/run/utmp - tracks all currently logged in users. /var/log/wtmp - file tracks logins, logouts, shutdown, and reboot events. /var/log/btmp - keeps track of failed login attempts and can be read by entering the command /usr/bin/last -f /var/log/btmp. All audit records will be tagged with the identifier "session.".','Monitoring these files for changes could alert a system administrator to logins occurring at unusual hours, which could indicate intruder activity (i.e. a user logging in at a time when they do not normally log in).','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor session initiation information. Example: # printf " -w /var/run/utmp -p wa -k session -w /var/log/wtmp -p wa -k session -w /var/log/btmp -p wa -k session " >> /etc/audit/rules.d/50-session.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.11\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28603,'Ensure login and logout events are collected.','Monitor login and logout events. The parameters below track changes to files associated with login/logout events. /var/log/lastlog - maintain records of the last time a user successfully logged in. /var/run/faillock - directory maintains records of login failures via the pam_faillock module.','Monitoring login/logout events could provide a system administrator with information associated with brute force attacks against user logins.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor login and logout events. Example: # printf " -w /var/log/lastlog -p wa -k logins -w /var/run/faillock -p wa -k logins " >> /etc/audit/rules.d/50-login.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi. Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.12\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.11\", \"16.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28604,'Ensure events that modify the system's Mandatory Access Controls are collected.','Monitor AppArmor, an implementation of mandatory access controls. The parameters below monitor any write access (potential additional, deletion or modification of files in the directory) or attribute changes to the /etc/apparmor/ and /etc/apparmor.d/ directories. Note: If a different Mandatory Access Control method is used, changes to the corresponding directories should be audited.','Rationale: Changes to files in the /etc/apparmor/ and /etc/apparmor.d/ directories could indicate that an unauthorized user is attempting to modify access controls and change security contexts, leading to a compromise of the system.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the system's Mandatory Access Controls. Example: # printf " -w /etc/apparmor/ -p wa -k MAC-policy -w /etc/apparmor.d/ -p wa -k MAC-policy " >> /etc/audit/rules.d/50-MAC-policy.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi','[{\"cis\": [\"4.1.3.14\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28605,'Ensure the audit configuration is immutable.','Set system audit so that audit rules cannot be modified with auditctl . Setting the flag "-e 2" forces audit to be put in immutable mode. Audit changes can only be made on system reboot. Note: This setting will require the system to be rebooted to update the active auditd configuration settings.','In immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. Users would most likely notice a system reboot and that could alert administrators of an attempt to make unauthorized audit changes.','','Edit or create the file /etc/audit/rules.d/99-finalize.rules and add the line -e 2 at the end of the file: Example: # printf -- "-e 2 " >> /etc/audit/rules.d/99-finalize.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi Additional Information: NIST SP 800-53 Rev. 5: AC-3 AU-3 AU-3(1) MP-2','[{\"cis\": [\"4.1.3.20\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28606,'Ensure only authorized groups are assigned ownership of audit log files.','Audit log files contain information about the system and system activity.','Access to audit records can reveal system and configuration data to attackers, potentially compromising its confidentiality.','','Run the following command to configure the audit log files to be owned by adm group: # find $(dirname $(awk -F"=" '/^s*log_files*=s*/ {print $2}' /etc/audit/auditd.conf | xargs)) -type f ( ! -group adm -a ! -group root ) -exec chgrp adm {} + Run the following command to configure the audit log files to be owned by the adm group: # chgrp adm /var/log/audit/ Run the following command to set the log_group parameter in the audit configuration file to log_group = adm: # sed -ri 's/^s*#?s*log_groups*=s*S+(s*#.*)?.*$/log_group = adm1/' /etc/audit/auditd.conf Run the following command to restart the audit daemon to reload the configuration file: # systemctl restart auditd','[{\"cis\": [\"4.1.4.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28607,'Ensure audit configuration files are 640 or more restrictive.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to remove more permissive mode than 0640 from the audit configuration files: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) -exec chmod u-x,g-wx,o-rwx {} +','[{\"cis\": [\"4.1.4.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28608,'Ensure audit configuration files are owned by root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change ownership to root user: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -user root -exec chown root {} +','[{\"cis\": [\"4.1.4.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28609,'Ensure audit configuration files belong to group root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change group to root: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -group root -exec chgrp root {} +','[{\"cis\": [\"4.1.4.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28610,'Ensure audit tools are 755 or more restrictive.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules','[{\"cis\": [\"4.1.4.8\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28611,'Ensure audit tools are owned by root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to change the owner of the audit tools to the root user: # chown root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules','[{\"cis\": [\"4.1.4.9\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28612,'Ensure audit tools belong to group root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules Run the following command to change owner and group of the audit tools to root user and group: # chown root:root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules','[{\"cis\": [\"4.1.4.10\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28613,'Ensure cryptographic mechanisms are used to protect the integrity of audit tools.','Audit 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.','Protecting the integrity of the tools used for auditing purposes is a critical step toward ensuring the integrity of audit information. Audit information includes all information (e.g., audit records, audit settings, and audit reports) needed to successfully audit information system activity. Attackers may replace the audit tools or inject code into the existing tools with the purpose of providing the capability to hide or erase system activity from the audit logs. Audit tools should be cryptographically signed in order to provide the capability to identify when the audit tools have been modified, manipulated, or replaced. An example is a checksum hash of the file or files.','','Add or update the following selection lines for "/etc/aide/aide.conf" to protect the integrity of the audit tools: # Audit Tools /sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512','[{\"cis\": [\"4.1.4.11\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28614,'Ensure systemd-journal-remote is installed.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralised log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to install systemd-journal-remote: # apt install systemd-journal-remote','[{\"cis\": [\"4.2.1.1.1\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28615,'Ensure journald is not configured to recieve logs from a remote client.','Journald supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts. NOTE: The same package, systemd-journal-remote, is used for both sending logs to remote hosts and receiving incoming logs. With regards to receiving logs, there are two services; systemd-journalremote.socket and systemd-journal-remote.service.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Run the following command to disable systemd-journal-remote.socket: # systemctl --now disable systemd-journal-remote.socket','[{\"cis\": [\"4.2.1.1.4\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28616,'Ensure journald service is enabled.','Ensure that the systemd-journald service is enabled to allow capturing of logging events.','If the systemd-journald service is not enabled to start on boot, the system will not capture logging events.','','By default the systemd-journald service does not have an [Install] section and thus cannot be enabled / disabled. It is meant to be referenced as Requires or Wants by other unit files. As such, if the status of systemd-journald is not static, investigate why.','[{\"cis\": [\"4.2.1.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28617,'Ensure journald is configured to compress large log files.','The journald system includes the capability of compressing overly large files to avoid filling up the system with logs or making the logs unmanageably large.','Uncompressed large files may unexpectedly fill a filesystem leading to resource unavailability. Compressing logs prior to write can prevent sudden, unexpected filesystem impacts.','','Edit the /etc/systemd/journald.conf file and add the following line: Compress=yes Restart the service: # systemctl restart systemd-journald Additional Information: The main configuration file /etc/systemd/journald.conf is read before any of the custom *.conf files. If there are custom configs present, they override the main configuration parameters. It is possible to change the default threshold of 512 bytes per object before compression is used.','[{\"cis\": [\"4.2.1.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.4\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28618,'Ensure journald is configured to write logfiles to persistent disk.','Data from journald may be stored in volatile memory or persisted locally on the server. Logs in memory will be lost upon a system reboot. By persisting logs to local disk on the server they are protected from loss due to a reboot.','Writing log data to disk will provide the ability to forensically reconstruct events which may have impacted the operations or security of a system even after a system crash or reboot.','','Edit the /etc/systemd/journald.conf file and add the following line: Storage=persistent Restart the service: # systemctl restart systemd-journald Additional Information: The main configuration file /etc/systemd/journald.conf is read before any of the custom *.conf files. If there are custom configs present, they override the main configuration parameters.','[{\"cis\": [\"4.2.1.4\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28619,'Ensure journald is not configured to send logs to rsyslog.','Data from journald should be kept in the confines of the service and not forwarded on to other services.','IF journald is the method for capturing logs, all logs of the system should be handled by journald and not forwarded to other logging mechanisms.','','Edit the /etc/systemd/journald.conf file and ensure that ForwardToSyslog=yes is removed. Restart the service: # systemctl restart systemd-journald','[{\"cis\": [\"4.2.1.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}, {\"pci_dss_3.2.1\": [\"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}]'),(28620,'Ensure rsyslog is installed.','The rsyslog software is recommended in environments where journald does not meet operation requirements.','The security enhancements of rsyslog such as connection-oriented (i.e. TCP) transmission of logs, the option to log to database formats, and the encryption of log data en route to a central logging server) justify installing and configuring the package.','','Run the following command to install rsyslog: # apt install rsyslog.','[{\"cis\": [\"4.2.2.1\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1005\", \"T1070\", \"T1070.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28621,'Ensure rsyslog service is enabled.','Once the rsyslog package is installed, ensure that the service is enabled.','If the rsyslog service is not enabled to start on boot, the system will not capture logging events.','','Run the following command to enable rsyslog: # systemctl --now enable rsyslog','[{\"cis\": [\"4.2.2.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28622,'Ensure journald is configured to send logs to rsyslog.','Data from journald may be stored in volatile memory or persisted locally on the server. Utilities exist to accept remote export of journald logs, however, use of the RSyslog service provides a consistent means of log collection and export.','IF RSyslog is the preferred method for capturing logs, all logs of the system should be sent to it for further processing.','','Edit the /etc/systemd/journald.conf file and add the following line: ForwardToSyslog=yes Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"pci_dss_3.2.1\": [\"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}]'),(28623,'Ensure rsyslog default file permissions are configured.','RSyslog will create logfiles that do not already exist on the system. This setting controls what permissions will be applied to these newly created files.','It is important to ensure that log files have the correct permissions to ensure that sensitive data is archived and protected.','The systems global umask could override, but only making the file permissions stricter, what is configured in RSyslog with the FileCreateMode directive. RSyslog also has it's own $umask directive that can alter the intended file creation mode. In addition, consideration should be given to how FileCreateMode is used. Thus it is critical to ensure that the intended file creation mode is not overridden with less restrictive settings in /etc/rsyslog.conf, /etc/rsyslog.d/*conf files and that FileCreateMode is set before any file is created.','Edit either /etc/rsyslog.conf or a dedicated .conf file in /etc/rsyslog.d/ and set $FileCreateMode to 0640 or more restrictive: $FileCreateMode 0640 Restart the service: # systemctl restart rsyslog','[{\"cis\": [\"4.2.2.4\"]}, {\"cis_csc_v7\": [\"5.1\", \"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28624,'Ensure rsyslog is not configured to receive logs from a remote client.','RSyslog supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Should there be any active log server configuration found in the auditing section, modify those file and remove the specific lines highlighted by the audit. Ensure none of the following entries are present in any of /etc/rsyslog.conf or /etc/rsyslog.d/*.conf. Old format $ModLoad imtcp $InputTCPServerRun New format module(load="imtcp") input(type="imtcp" port="514") Restart the service: # systemctl restart rsyslog','[{\"cis\": [\"4.2.2.7\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28625,'Ensure cron daemon is enabled and running.','The cron daemon is used to execute batch jobs on the system. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','While there may not be user jobs that need to be run on the system, the system does have maintenance jobs that may include security monitoring that have to run, and cron is used to execute them.','','Run the following command to enable and start cron: # systemctl --now enable cron','[{\"cis\": [\"5.1.1\"]}, {\"mitre_techniques\": [\"T1562\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28626,'Ensure permissions on /etc/crontab are configured.','The /etc/crontab file is used by cron to control its own jobs. The commands in this item make sure that root is the user and group owner of the file and that only the owner can access the file. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','This file contains information on what system jobs are run by cron. Write access to these files could provide unprivileged users with the ability to elevate their privileges. Read access to these files could provide users with the ability to gain insight on system jobs that run on the system and could provide them a way to gain unauthorized privileged access.','','Run the following commands to set ownership and permissions on /etc/crontab : # chown root:root /etc/crontab # chmod og-rwx /etc/crontab','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28627,'Ensure permissions on /etc/cron.hourly are configured.','This directory contains system cron jobs that need to run on an hourly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.hourly directory: # chown root:root /etc/cron.hourly/ # chmod og-rwx /etc/cron.hourly','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28628,'Ensure permissions on /etc/cron.daily are configured.','The /etc/cron.daily directory contains system cron jobs that need to run on a daily basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.daily directory: # chown root:root /etc/cron.daily/ # chmod og-rwx /etc/cron.daily/','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28629,'Ensure permissions on /etc/cron.weekly are configured.','The /etc/cron.weekly directory contains system cron jobs that need to run on a weekly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.weekly directory: # chown root:root /etc/cron.weekly/ # chmod og-rwx /etc/cron.weekly/','[{\"cis\": [\"5.1.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28630,'Ensure permissions on /etc/cron.monthly are configured.','The /etc/cron.monthly directory contains system cron jobs that need to run on a monthly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.monthly directory: # chown root:root /etc/cron.monthly/ # chmod og-rwx /etc/cron.monthly/','[{\"cis\": [\"5.1.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28631,'Ensure permissions on /etc/cron.d are configured.','The /etc/cron.d directory contains system cron jobs that need to run in a similar manner to the hourly, daily weekly and monthly jobs from /etc/crontab, but require more granular control as to when they run. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.d directory: # chown root:root /etc/cron.d/ # chmod og-rwx /etc/cron.d/','[{\"cis\": [\"5.1.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28632,'Ensure cron is restricted to authorized users.','Configure /etc/cron.allow to allow specific users to use this service. If /etc/cron.allow does not exist, then /etc/cron.deny is checked. Any user not specifically defined in this file is allowed to use cron. By removing the file, only users in /etc/cron.allow are allowed to use cron. Note: - Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy - Even though a given user is not listed in cron.allow, cron jobs can still be run as that user - The cron.allow file only controls administrative access to the crontab command for scheduling and modifying cron jobs.','On many systems, only the system administrator is authorized to schedule cron jobs. Using the cron.allow file to control who can run cron jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/cron.deny: # rm /etc/cron.deny Run the following command to create /etc/cron.allow # touch /etc/cron.allow Run the following commands to set permissions and ownership for /etc/cron.allow: # chmod g-wx,o-rwx /etc/cron.allow # chown root:root /etc/cron.allow.','[{\"cis\": [\"5.1.8\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28633,'Ensure at is restricted to authorized users.','Configure /etc/cron.allow to allow specific users to use this service. If /etc/cron.allow does not exist, then /etc/cron.deny is checked. Any user not specifically defined in this file is allowed to use cron. By removing the file, only users in /etc/cron.allow are allowed to use cron. Note: - Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy. - Even though a given user is not listed in cron.allow, cron jobs can still be run as that user. - The cron.allow file only controls administrative access to the crontab command for scheduling and modifying cron job.','On many systems, only the system administrator is authorized to schedule at jobs. Using the at.allow file to control who can run at jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/at.deny: # rm /etc/at.deny Run the following command to create /etc/at.allow # touch /etc/at.allow Run the following commands to set permissions and ownership for /etc/at.allow: # chmod g-wx,o-rwx /etc/at.allow # chown root:root /etc/at.allow.','[{\"cis\": [\"5.1.9\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28634,'Ensure permissions on /etc/ssh/sshd_config are configured.','The /etc/ssh/sshd_config file contains configuration specifications for sshd. The command below sets the owner and group of the file to root.','The /etc/ssh/sshd_config file needs to be protected from unauthorized changes by non-privileged users.','','Run the following commands to set ownership and permissions on /etc/ssh/sshd_config: # chown root:root /etc/ssh/sshd_config # chmod og-rwx /etc/ssh/sshd_config.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1098\", \"T1098.004\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28635,'Ensure SSH access is limited.','There are several options available to limit which users and group can access the system via SSH. It is recommended that at least one of the following options be leveraged: - AllowUsers: > The AllowUsers variable gives the system administrator the option of allowing specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by only allowing the allowed users to log in from a particular host, the entry can be specified in the form of user@host. - AllowGroups: > The AllowGroups variable gives the system administrator the option of allowing specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable. - DenyUsers: > The DenyUsers variable gives the system administrator the option of denying specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by specifically denying a user's access from a particular host, the entry can be specified in the form of user@host. - DenyGroups: > The DenyGroups variable gives the system administrator the option of denying specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable.','Restricting which users can remotely access the system via SSH will help ensure that only authorized users access the system.','','Edit the /etc/ssh/sshd_config file or a included configuration file to set one or more of the parameter as follows: AllowUsers <userlist> OR AllowGroups <grouplist> OR DenyUsers <userlist> OR DenyGroups <grouplist>','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28636,'Ensure SSH LogLevel is appropriate.','INFO level is the basic level that only records login activity of SSH users. In many situations, such as Incident Response, it is important to determine when a particular user was active on a system. The logout record can eliminate those users who disconnected, which helps narrow the field. VERBOSE level specifies that login and logout activity as well as the key fingerprint for any SSH key used for login will be logged. This information is important for SSH key management, especially in legacy environments.','SSH provides several logging levels with varying amounts of verbosity. DEBUG is specifically not recommended other than strictly for debugging SSH communications since it provides so much data that it is difficult to identify important security information.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LogLevel VERBOSE OR LogLevel INFO','[{\"cis\": [\"5.2.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28637,'Ensure SSH PAM is enabled.','The UsePAM directive enables the Pluggable Authentication Module (PAM) interface. If set to yes this will enable PAM authentication using ChallengeResponseAuthentication and PasswordAuthentication directives in addition to PAM account and session module processing for all authentication types.','When usePAM is set to yes, PAM runs through account and session types properly. This is important if you want to restrict access to services based off of IP, time or other factors of the account. Additionally, you can make sure users inherit certain environment variables on login or disallow access to the server.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: UsePAM yes','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1035\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28638,'Ensure SSH root login is disabled.','The PermitRootLogin parameter specifies if the root user can log in using SSH. The default is prohibit-password.','Disallowing root logins over SSH requires system admins to authenticate using their own individual account, then escalating to root. This limits opportunity for non-repudiation and provides a clear audit trail in the event of a security incident.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitRootLogin no','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28639,'Ensure SSH HostbasedAuthentication is disabled.','The HostbasedAuthentication parameter specifies if authentication is allowed through trusted hosts via the user of .rhosts, or /etc/hosts.equiv, along with successful public key client host authentication.','Even though the .rhosts files are ineffective if support is disabled in /etc/pam.conf, disabling the ability to use .rhosts files in SSH provides an additional layer of protection.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: HostbasedAuthentication no','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28640,'Ensure SSH PermitEmptyPasswords is disabled.','The PermitEmptyPasswords parameter specifies if the SSH server allows login to accounts with empty password strings.','Disallowing remote shell access to accounts that have an empty password reduces the probability of unauthorized access to the system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitEmptyPasswords no','[{\"cis\": [\"5.2.9\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28641,'Ensure SSH PermitUserEnvironment is disabled.','The PermitUserEnvironment option allows users to present environment options to the SSH daemon.','Permitting users the ability to set environment variables through the SSH daemon could potentially allow users to bypass security controls (e.g. setting an execution path that has SSH executing trojan'd programs).','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitUserEnvironment no','[{\"cis\": [\"5.2.10\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28642,'Ensure SSH IgnoreRhosts is enabled.','The IgnoreRhosts parameter specifies that .rhosts and .shosts files will not be used in RhostsRSAAuthentication or HostbasedAuthentication.','Setting this parameter forces users to enter a password when authenticating with SSH.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: IgnoreRhosts yes','[{\"cis\": [\"5.2.11\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28643,'Ensure SSH X11 forwarding is disabled.','The X11Forwarding parameter provides the ability to tunnel X11 traffic through the connection to enable remote graphic connections.','Disable X11 forwarding unless there is an operational requirement to use X11 applications directly. There is a small risk that the remote X11 servers of users who are logged in via SSH with X11 forwarding could be compromised by other users on the X11 server. Note that even if X11 forwarding is disabled, users can always install their own forwarders.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: X11Forwarding no','[{\"cis\": [\"5.2.12\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28644,'Ensure only strong Ciphers are used.','This variable limits the ciphers that SSH can use during communication. Note: - Some organizations may have stricter requirements for approved ciphers. - Ensure that ciphers used are in compliance with site policy. - The only "strong" ciphers currently FIPS 140-2 compliant are: > aes256-ctr > aes192-ctr > aes128-ctr - Supported ciphers in openSSH 8.2: 3des-cbc aes128-cbc aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr aes128-gcm@openssh.com aes256-gcm@openssh.com chacha20-poly1305@openssh.com.','Weak ciphers that are used for authentication to the cryptographic module cannot be relied upon to provide confidentiality or integrity, and system data may be compromised. - The Triple DES ciphers, as used in SSH, have a birthday bound of approximately four billion blocks, which makes it easier for remote attackers to obtain clear text data via a birthday attack against a long-duration encrypted session, aka a "Sweet32" attack. - Error handling in the SSH protocol; Client and Server, when using a block cipher algorithm in Cipher Block Chaining (CBC) mode, makes it easier for remote attackers to recover certain plain text data from an arbitrary block of cipher text in an SSH session via unknown vectors.','','Edit the /etc/ssh/sshd_config file add/modify the Ciphers line to contain a comma separated list of the site approved ciphers. Example: Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128- gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr','[{\"cis\": [\"5.2.13\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}]'),(28645,'Ensure only strong MAC algorithms are used.','This variable limits the types of MAC algorithms that SSH can use during communication. Note: - Some organizations may have stricter requirements for approved MACs. - Ensure that MACs used are in compliance with site policy. - The only "strong" MACs currently FIPS 140-2 approved are: > hmac-sha2-256 > hmac-sha2-512 - The Supported MACs are: hmac-md5 hmac-md5-96 hmac-sha1 hmac-sha1-96 hmac-sha2-256 hmac-sha2-512 umac-64@openssh.com umac-128@openssh.com hmac-md5-etm@openssh.com hmac-md5-96-etm@openssh.com hmac-sha1-etm@openssh.com hmac-sha1-96-etm@openssh.com hmac-sha2-256-etm@openssh.com hmac-sha2-512-etm@openssh.com umac-64-etm@openssh.com umac-128-etm@openssh.com.','MD5 and 96-bit MAC algorithms are considered weak and have been shown to increase exploitability in SSH downgrade attacks. Weak algorithms continue to have a great deal of attention as a weak spot that can be exploited with expanded computing power. An attacker that breaks the algorithm could take advantage of a MiTM position to decrypt the SSH tunnel and capture credentials and information.','','Edit the /etc/ssh/sshd_config file and add/modify the MACs line to contain a comma separated list of the site approved MACs. Example: MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256','[{\"cis\": [\"5.2.14\"]}, {\"cis_csc_v7\": [\"14.4\", \"16.5\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}]'),(28646,'Ensure only strong Key Exchange algorithms are used.','Key exchange is any method in cryptography by which cryptographic keys are exchanged between two parties, allowing use of a cryptographic algorithm. If the sender and receiver wish to exchange encrypted messages, each must be equipped to encrypt messages to be sent and decrypt messages received. Notes: - Kex algorithms have a higher preference the earlier they appear in the list - Some organizations may have stricter requirements for approved Key exchange algorithms - Ensure that Key exchange algorithms used are in compliance with site policy - The only Key Exchange Algorithms currently FIPS 140-2 approved are: > ecdh-sha2-nistp256 > ecdh-sha2-nistp384 > ecdh-sha2-nistp521 > diffie-hellman-group-exchange-sha256 > diffie-hellman-group16-sha512 > diffie-hellman-group18-sha512 > diffie-hellman-group14-sha256 - The Key Exchange algorithms supported by OpenSSH 8.2 are: curve25519-sha256 curve25519-sha256@libssh.org diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group14-sha256 diffie-hellman-group16-sha512 diffie-hellman-group18-sha512 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 sntrup4591761x25519-sha512@tinyssh.org.','Key exchange methods that are considered weak should be removed. A key exchange method may be weak because too few bits are used, or the hashing algorithm is considered too weak. Using weak algorithms could expose connections to man-in-the-middle attacks.','','Edit the /etc/ssh/sshd_config file add/modify the KexAlgorithms line to contain a comma separated list of the site approved key exchange algorithms Example: KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256','[{\"cis\": [\"5.2.15\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}]'),(28647,'Ensure SSH AllowTcpForwarding is disabled.','SSH port forwarding is a mechanism in SSH for tunneling application ports from the client to the server, or servers to clients. It can be used for adding encryption to legacy applications, going through firewalls, and some system administrators and IT professionals use it for opening backdoors into the internal network from their home machines.','Leaving port forwarding enabled can expose the organization to security risks and backdoors. SSH connections are protected with strong encryption. This makes their contents invisible to most deployed network monitoring and traffic filtering solutions. This invisibility carries considerable risk potential if it is used for malicious purposes such as data exfiltration. Cybercriminals or malware could exploit SSH to hide their unauthorized communications, or to exfiltrate stolen data from the target network.','SSH tunnels are widely used in many corporate environments. In some environments the applications themselves may have very limited native support for security. By utilizing tunneling, compliance with SOX, HIPAA, PCI-DSS, and other standards can be achieved without having to modify the applications.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: AllowTcpForwarding no','[{\"cis\": [\"5.2.16\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1048\", \"T1048.002\", \"T1572\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28648,'Ensure SSH warning banner is configured.','The Banner parameter specifies a file whose contents must be sent to the remote user before authentication is permitted. By default, no banner is displayed.','Banners are used to warn connecting users of the particular site's policy regarding connection. Presenting a warning message prior to the normal user login may assist the prosecution of trespassers on the computer system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: Banner /etc/issue.net','[{\"cis\": [\"5.2.17\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1035\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28649,'Ensure SSH MaxAuthTries is set to 4 or less.','The MaxAuthTries parameter specifies the maximum number of authentication attempts permitted per connection. When the login failure count reaches half the number, error messages will be written to the syslog file detailing the login failure.','Setting the MaxAuthTries parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. While the recommended setting is 4, set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxAuthTries 4','[{\"cis\": [\"5.2.18\"]}, {\"cis_csc_v7\": [\"16.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28650,'Ensure SSH MaxStartups is configured.','The MaxStartups parameter specifies the maximum number of concurrent unauthenticated connections to the SSH daemon.','To protect a system from denial of service due to a large number of pending authentication connection attempts, use the rate limiting function of MaxStartups to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxStartups 10:30:60','[{\"cis\": [\"5.2.19\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28651,'Ensure SSH MaxSessions is set to 10 or less.','The MaxSessions parameter specifies the maximum number of open sessions permitted from a given connection.','To protect a system from denial of service due to a large number of concurrent sessions, use the rate limiting function of MaxSessions to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxSessions 10','[{\"cis\": [\"5.2.20\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(28652,'Ensure SSH LoginGraceTime is set to one minute or less.','The LoginGraceTime parameter specifies the time allowed for successful authentication to the SSH server. The longer the Grace period is the more open unauthenticated connections can exist. Like other session controls in this session the Grace Period should be limited to appropriate organizational limits to ensure the service is available for needed access.','Setting the LoginGraceTime parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. It will also limit the number of concurrent unauthenticated connections. While the recommended setting is 60 seconds (1 Minute), set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LoginGraceTime 60','[{\"cis\": [\"5.2.21\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\", \"T1110.004\", \"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28653,'Ensure SSH Idle Timeout Interval is configured.','NOTE: To clarify, the two settings described below is only meant for idle connections from a protocol perspective and not meant to check if the user is active or not. An idle user does not mean an idle connection. SSH does not and never had, intentionally, the capability to drop idle users. In SSH versions before 8.2p1 there was a bug that caused these values to behave in such a manner that they where abused to disconnect idle users. This bug has been resolved in 8.2p1 and thus it can no longer be abused disconnect idle users. The two options ClientAliveInterval and ClientAliveCountMax control the timeout of SSH sessions. Taken directly from man 5 sshd_config: - ClientAliveInterval Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client. - ClientAliveCountMax Sets the number of client alive messages which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session. It is important to note that the use of client alive messages is very different from TCPKeepAlive. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option enabled by TCPKeepAlive is spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become unresponsive. The default value is 3. If ClientAliveInterval is set to 15, and ClientAliveCountMax is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds. Setting a zero ClientAliveCountMax disables connection termination.','In order to prevent resource exhaustion, appropriate values should be set for both ClientAliveInterval and ClientAliveCountMax. Specifically, looking at the source code, ClientAliveCountMax must be greater than zero in order to utilize the ability of SSH to drop idle connections. If connections are allowed to stay open indefinately, this can potentially be used as a DDOS attack or simple resource exhaustion could occur over unreliable networks. The example set here is a 45 second timeout. Consult your site policy for network timeouts and apply as appropriate.','','Edit the /etc/ssh/sshd_config file to set the parameters according to site policy. Example: ClientAliveInterval 15 ClientAliveCountMax 3','[{\"cis\": [\"5.2.22\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28654,'Ensure sudo is installed.','sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.','sudo supports a plug-in architecture for security policies and input/output logging. Third parties can develop and distribute their own policy and I/O logging plug-ins to work seamlessly with the sudo front end. The default security policy is sudoers, which is configured via the file /etc/sudoers and any entries in /etc/sudoers.d. The security policy determines what privileges, if any, a user has to run sudo. The policy may require that users authenticate themselves with a password or another authentication mechanism. If authentication is required, sudo will exit if the user's password is not entered within a configurable time limit. This limit is policy-specific.','','First determine is LDAP functionality is required. If so, then install sudo-ldap, else install  sudo. Example: # apt install sudo','[{\"cis\": [\"5.3.1\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28655,'Ensure sudo commands use pty.','sudo can be configured to run only from a pseudo terminal (pseudo-pty).','Attackers can run a malicious program using sudo which would fork a background process that remains even when the main program has finished executing.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers with visudo or a file in /etc/sudoers.d/ with visudo -f <PATH TO FILE> and add the following line: Defaults use_pty','[{\"cis\": [\"5.3.2\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28656,'Ensure sudo log file exists.','sudo can use a custom log file.','A sudo log file simplifies auditing of sudo commands.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers or a file in /etc/sudoers.d/ with visudo or visudo -f <PATH TO FILE> and add the following line: Example: Defaults logfile='/var/log/sudo.log'','[{\"cis\": [\"5.3.3\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28657,'Ensure users must provide password for privilege escalation.','The operating system must be configured so that users must provide a password for privilege escalation.','Without (re-)authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user (re-)authenticate.','This will prevent automated processes from being able to elevate privileges.','Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any line with occurrences of NOPASSWD tags in the file.','[{\"cis\": [\"5.3.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28658,'Ensure re-authentication for privilege escalation is not disabled globally.','The operating system must be configured so that users must re-authenticate for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','','Configure the operating system to require users to reauthenticate for privilege escalation. Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any occurrences of !authenticate tags in the file(s).','[{\"cis\": [\"5.3.5\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28659,'Ensure sudo authentication timeout is configured correctly.','sudo caches used credentials for a default of 15 minutes. This is for ease of use when there are multiple administrative tasks to perform. The timeout can be modified to suit local security policies. This default is distribution specific. See audit section for further information.','Setting a timeout value reduces the window of opportunity for unauthorized privileged access to another user.','','If the currently configured timeout is larger than 15 minutes, edit the file listed in the audit section with visudo -f <PATH TO FILE> and modify the entry timestamp_timeout= to 15 minutes or less as per your site policy. The value is in minutes. This particular entry may appear on its own, or on the same line as env_reset. See the following two examples:  Defaults env_reset, timestamp_timeout=15 Defaults timestamp_timeout=15 Defaults env_reset','[{\"cis\": [\"5.3.6\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28660,'Ensure access to the su command is restricted.','The su command allows a user to run a command or shell as another user. The program has been superseded by sudo, which allows for more granular control over privileged access. Normally, the su command can be executed by any user. By uncommenting the pam_wheel.so statement in /etc/pam.d/su, the su command will only allow users in a specific groups to execute su. This group should be empty to reinforce the use of sudo for privileged access.','Restricting the use of su , and using sudo in its place, provides system administrators better control of the escalation of user privileges to execute privileged commands. The sudo utility also provides a better logging and audit mechanism, as it can log each command executed via sudo , whereas su can only record that a user executed the su program.','','Create an empty group that will be specified for use of the su command. The group should be named according to site policy. Example: # groupadd sugroup Add the following line to the /etc/pam.d/su file, specifying the empty group: auth required pam_wheel.so use_uid group=sugroup','[{\"cis\": [\"5.3.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28661,'Ensure password creation requirements are configured.','The pam_pwquality.so module checks the strength of passwords. It performs checks such as making sure a password is not a dictionary word, it is a certain length, contains a mix of characters (e.g. alphabet, numeric, other) and more. The following options are set in the /etc/security/pwquality.conf file: - Password Length: > minlen = 14 - password must be 14 characters or more - Password complexity: > minclass = 4 - The minimum number of required classes of characters for the new password (digits, uppercase, lowercase, others) OR > dcredit = -1 - provide at least one digit > ucredit = -1 - provide at least one uppercase character > ocredit = -1 - provide at least one special character > lcredit = -1 - provide at least one lowercase character.','Strong passwords protect systems from being hacked through brute force methods.','','The following setting is a recommend example policy. Alter these values to conform to your own organization's password policies. Run the following command to install the pam_pwquality module: # apt install libpam-pwquality Edit the file /etc/security/pwquality.conf and add or modify the following line for password length to conform to site policy: minlen = 14 Edit the file /etc/security/pwquality.conf and add or modify the following line for password complexity to conform to site policy: Option 1: minclass = 4 Option 2: dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1','[{\"cis\": [\"5.4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28662,'Ensure lockout for failed password attempts is configured.','Lock out users after n unsuccessful consecutive login attempts. The first sets of changes are made to the common PAM configuration files. The second set of changes are applied to the program specific PAM configuration file. The second set of changes must be applied to each program that will lock out users. Check the documentation for each secondary program for instructions on how to configure them to work with PAM. All configuration of faillock is located in /etc/security/faillock.conf and well commented. - deny - Deny access if the number of consecutive authentication failures for this user during the recent interval exceeds n tries. - fail_interval - The length of the interval, in seconds, during which the consecutive authentication failures must happen for the user account to be locked out - unlock_time - The access will be re-enabled after n seconds after the lock out. The value 0 has the same meaning as value never - the access will not be re-enabled without resetting the faillock entries by the faillock command. Set the lockout number and unlock time in accordance with local site policy.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','It is critical to test and validate any PAM changes before deploying. Any misconfiguration could cause the system to be inaccessible.','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Common auth Edit /etc/pam.d/common-auth and ensure that faillock is configured. Note: It is critical to understand each line and the relevant arguments for successful implementation. The order of these entries is very specific. The pam_faillock.so lines surround the pam_unix.so line. The comment "Added to enable faillock" is shown to highlight the additional lines and their order in the file. # here are the per-package modules (the "Primary" block) auth required pam_faillock.so preauth # Added to enable faillock auth [success=1 default=ignore] pam_unix.so nullok auth [default=die] pam_faillock.so authfail # Added to enable faillock auth sufficient pam_faillock.so authsucc # Added to enable faillock # here's the fallback if no module succeeds auth requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_cap.so # end of pam-auth-update config Common account Edit /etc/pam.d/common-account and ensure that the following stanza is at the end of the file. account required pam_faillock.so Fail lock configuration Edit /etc/security/faillock.conf and configure it per your site policy. Example: deny = 4 fail_interval = 900 unlock time = 600','[{\"cis\": [\"5.4.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"pci_dss_3.2.1\": [\"8.1.3\"]}, {\"pci_dss_4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}]'),(28663,'Ensure password reuse is limited.','The /etc/security/opasswd file stores the users' old passwords and can be checked to ensure that users are not recycling recent passwords.','Forcing users not to reuse their past 5 passwords make it less likely that an attacker will be able to guess the password.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Edit the /etc/pam.d/common-password file to include the remember option and conform to site policy as shown: password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt remember=5','[{\"cis\": [\"5.4.3\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28664,'Ensure password hashing algorithm is up to date with the latest standards.','The commands below change password encryption to yescrypt. All existing accounts will need to perform a password change to upgrade the stored hashes to the new algorithm.','The yescrypt algorithm provides much stronger hashing than previous available algorithms, thus providing additional protection to the system by increasing the level of effort for an attacker to successfully determine passwords. Note: these change only apply to accounts configured on the local system.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. PAM: Edit the /etc/pam.d/common-password file and ensure that no hashing algorithm option for pam_unix.so is set: password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass remember=5. Login definitions: Edit /etc/login.defs and ensure that ENCRYPT_METHOD is set to yescrypt.','[{\"cis\": [\"5.4.4\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1110\", \"T1110.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28665,'Ensure minimum days between password changes is configured.','The PASS_MIN_DAYS parameter in /etc/login.defs allows an administrator to prevent users from changing their password until a minimum number of days have passed since the last time the user changed their password. It is recommended that PASS_MIN_DAYS parameter be set to 1 or more days.','By restricting the frequency of password changes, an administrator can prevent users from repeatedly changing their password in an attempt to circumvent password reuse controls.','','Set the PASS_MIN_DAYS parameter to 1 in /etc/login.defs : PASS_MIN_DAYS 1 Modify user parameters for all users with a password set to match: # chage --mindays 1 <user>','[{\"cis\": [\"5.5.1.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28666,'Ensure password expiration is 365 days or less.','The PASS_MAX_DAYS parameter in /etc/login.defs allows an administrator to force passwords to expire once they reach a defined age.','The window of opportunity for an attacker to leverage compromised credentials or successfully compromise credentials via an online brute force attack is limited by the age of the password. Therefore, reducing the maximum age of a password also reduces an attacker's window of opportunity. It is recommended that the PASS_MAX_DAYS parameter does not exceed 365 days and is greater than the value of PASS_MIN_DAYS.','','Set the PASS_MAX_DAYS parameter to conform to site policy in /etc/login.defs : PASS_MAX_DAYS 365 Modify user parameters for all users with a password set to match: # chage --maxdays 365 <user>','[{\"cis\": [\"5.5.1.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1110.004\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28667,'Ensure password expiration warning days is 7 or more.','The PASS_WARN_AGE parameter in /etc/login.defs allows an administrator to notify users that their password will expire in a defined number of days. It is recommended that the PASS_WARN_AGE parameter be set to 7 or more days.','Providing an advance warning that a password will be expiring gives users time to think of a secure password. Users caught unaware may choose a simple password or write it down where it may be discovered.','','Set the PASS_WARN_AGE parameter to 7 in /etc/login.defs : PASS_WARN_AGE 7 Modify user parameters for all users with a password set to match: # chage --warndays 7 <user>','[{\"cis\": [\"5.5.1.3\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28668,'Ensure inactive password lock is 30 days or less.','User accounts that have been inactive for over a given period of time can be automatically disabled. It is recommended that accounts that are inactive for 30 days after password expiration be disabled.','Inactive accounts pose a threat to system security since the users are not logging in to notice failed login attempts or other anomalies.','','Run the following command to set the default password inactivity period to 30 days: # useradd -D -f 30 Modify user parameters for all users with a password set to match: # chage --inactive 30 <user>','[{\"cis\": [\"5.5.1.4\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28669,'Ensure default group for the root account is GID 0.','The usermod command can be used to specify which group the root user belongs to. This affects permissions of files that are created by the root user.','Using GID 0 for the root account helps prevent root -owned files from accidentally becoming accessible to non-privileged users.','','Run the following command to set the root user default group to GID 0 : # usermod -g 0 root','[{\"cis\": [\"5.5.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28670,'Ensure permissions on /etc/passwd are configured.','The /etc/passwd file contains user account information that is used by many system utilities and therefore must be readable for these utilities to operate.','It is critical to ensure that the /etc/passwd file is protected from unauthorized write access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following command to set permissions on /etc/passwd: # chown root:root /etc/passwd # chmod u-x,go-wx /etc/passwd','[{\"cis\": [\"6.1.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28671,'Ensure permissions on /etc/passwd- are configured.','The /etc/passwd- file contains backup user account information.','It is critical to ensure that the /etc/passwd- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following command to set permissions on /etc/passwd- : # chown root:root /etc/passwd- # chmod u-x,go-wx /etc/passwd-','[{\"cis\": [\"6.1.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28672,'Ensure permissions on /etc/group are configured.','The /etc/group file contains a list of all the valid groups defined in the system. The command below allows read/write access for root and read access for everyone else.','The /etc/group file needs to be protected from unauthorized changes by non-privileged users, but needs to be readable as this information is used with many non-privileged programs.','','Run the following command to set permissions on /etc/group : # chown root:root /etc/group # chmod u-x,go-wx /etc/group','[{\"cis\": [\"6.1.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28673,'Ensure permissions on /etc/group- are configured.','The /etc/group- file contains a backup list of all the valid groups defined in the system.','It is critical to ensure that the /etc/group- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following command to set permissions on /etc/group- : # chown root:root /etc/group- # chmod u-x,go-wx /etc/group-','[{\"cis\": [\"6.1.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28674,'Ensure permissions on /etc/shadow are configured.','The /etc/shadow file is used to store the information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert the user accounts.','','Run one of the following commands to set ownership of /etc/shadow to root and group to either root or shadow: # chown root:root /etc/shadow # chown root:shadow /etc/shadow Run the following command to remove excess permissions form /etc/shadow: # chmod u-x,g-wx,o-rwx /etc/shadow','[{\"cis\": [\"6.1.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28675,'Ensure permissions on /etc/shadow- are configured.','The /etc/shadow- file is used to store backup information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/shadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/shadow- to root and group to either root or shadow: # chown root:root /etc/shadow- # chown root:shadow /etc/shadow Run the following command to remove excess permissions form /etc/shadow-: # chmod u-x,g-wx,o-rwx /etc/shadow-','[{\"cis\": [\"6.1.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28676,'Ensure permissions on /etc/gshadow are configured.','The /etc/gshadow file is used to store the information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/gshadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/gshadow file (such as group administrators) could also be useful to subvert the group.','','Run one of the following commands to set ownership of /etc/gshadow to root and group to either root or shadow: # chown root:root /etc/gshadow # chown root:shadow /etc/gshadow Run the following command to remove excess permissions form /etc/gshadow: # chmod u-x,g-wx,o-rwx /etc/gshadow','[{\"cis\": [\"6.1.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28677,'Ensure permissions on /etc/gshadow- are configured.','The /etc/gshadow- file is used to store backup information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/gshadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/gshadow- to root and group to either root or shadow: # chown root:root /etc/gshadow- # chown root:shadow /etc/gshadowRun the following command to remove excess permissions form /etc/gshadow-: # chmod u-x,g-wx,o-rwx /etc/gshadow-','[{\"cis\": [\"6.1.8\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28678,'Ensure accounts in /etc/passwd use shadowed passwords.','Local accounts can uses shadowed passwords. With shadowed passwords, The passwords are saved in shadow password file, /etc/shadow, encrypted by a salted oneway hash. Accounts with a shadowed password have an x in the second field in /etc/passwd.','The /etc/passwd file also contains information like user ID's and group ID's that are used by many system programs. Therefore, the /etc/passwd file must remain world readable. In spite of encoding the password with a randomly-generated one-way hash function, an attacker could still break the system if they got access to the /etc/passwd file. This can be mitigated by using shadowed passwords, thus moving the passwords in the /etc/passwd file to /etc/shadow. The /etc/shadow file is set so only root will be able to read and write. This helps mitigate the risk of an attacker gaining access to the encoded passwords with which to perform a dictionary attack. Note: All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user. A user account with an empty second field in /etc/passwd allows the account to be logged into by providing only the username.','','Run the following command to set accounts to use shadowed passwords: # sed -e 's/^([a-zA-Z0-9_]*):[^:]*:/1:x:/' -i /etc/passwd Investigate to determine if the account is logged in and what it is being used for, to determine if it needs to be forced off.','[{\"cis\": [\"6.2.1\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28679,'Ensure /etc/shadow password fields are not empty.','An account with an empty password field means that anybody may log in as that user without providing a password.','All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user.','','If any accounts in the /etc/shadow file do not have a password, run the following command to lock the account until it can be determined why it does not have a password: # passwd -l <username> Also, check to see if the account is logged in and investigate what it is being used for to determine if it needs to be forced off.','[{\"cis\": [\"6.2.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28680,'Ensure shadow group is empty.','The shadow group allows system programs which require access the ability to read the /etc/shadow file. No users should be assigned to the shadow group.','Any users assigned to the shadow group would be granted read access to the /etc/shadow file. If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed passwords to break them. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert additional user accounts.','','Run the following command to remove all users from the shadow group # sed -ri 's/(^shadow:[^:]*:[^:]*:)([^:]+$)/1/' /etc/group Change the primary group of any users with shadow as their primary group. # usermod -g <primary group> <user>','[{\"cis\": [\"6.2.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28681,'Ensure root is the only UID 0 account.','Any account with UID 0 has superuser privileges on the system.','This access must be limited to only the default root account and only from the system console. Administrative access must be through an unprivileged account using an approved mechanism as noted in Item 5.6 Ensure access to the su command is restricted.','','Remove any users other than root with UID 0 or assign them a new UID if appropriate.','[{\"cis\": [\"6.2.10\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29000,'Ensure All Apple-provided Software Is Current.','Software vendors release security patches and software updates for their products when security vulnerabilities are discovered. There is no simple way to complete this action without a network connection to an Apple software repository. Please ensure appropriate access for this control. This check is only for what Apple provides through software update.','It is important that these updates be applied in a timely manner to prevent unauthorized persons from exploiting the identified vulnerabilities.','','1. In Terminal, run the following command to verify what packages need to be installed: sudo softwareupdate -l. 2.1. In Terminal, run the following command to install all the packages that need to be updated: sudo software -i -a -R. 2.2. In Terminal, run the following for any packages that show up in step 1: sudo softwareupdate -i packagename'','[{\"cis\": [\"1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29001,'Ensure Auto Update Is Enabled.','Auto Update verifies that your system has the newest security patches and software updates. If "Automatically check for updates" is not selected background updates for new malware definition files from Apple for XProtect and Gatekeeper will not occur.','It is important that a system has the newest updates applied so as to prevent unauthorized persons from exploiting identified vulnerabilities.','','Open a terminal session and enter the following command to enable the auto update feature: sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true','[{\"cis\": [\"1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29002,'Ensure Download New Updates When Available is Enabled.','In the GUI both "Install macOS updates" and "Install app updates from the App Store" are dependent on whether "Download new updates when available" is selected.','It is important that a system has the newest updates downloaded so that they can be applied.','','Open a terminal session and enter the following command to enable the auto update feature: sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool true','[{\"cis\": [\"1.3\"]}, {\"cis_level\": [\"1\"]}]'),(29003,'Ensure Installation of App Update Is Enabled.','Ensure that application updates are installed after they are available from Apple. These updates do not require reboots or admin privileges for end users.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','','Open a terminal session and enter the following command to enable the auto update feature: sudo defaults write /Library/Preferences/com.apple.commerce AutoUpdate -bool TRUE','[{\"cis\": [\"1.4\"]}, {\"cis_level\": [\"1\"]}]'),(29004,'Ensure System Data Files and Security Updates Are Downloaded Automatically Is Enabled.','Ensure that system and security updates are installed after they are available from Apple. This setting enables definition updates for XProtect and Gatekeeper. With this setting in place new malware and adware that Apple has added to the list of malware or untrusted software will not execute. These updates do not require reboots or end user admin rights.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','','Open a terminal session and enter the following command to enable install system data files and security updates: sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate ConfigDataInstall -bool true && sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CriticalUpdateInstall -bool true','[{\"cis\": [\"1.5\"]}, {\"cis_level\": [\"1\"]}]'),(29005,'Ensure Install of macOS Updates Is Enabled.','Ensure that macOS updates are installed after they are available from Apple. This setting enables macOS updates to be automatically installed. Some environments will want to approve and test updates before they are delivered. It is best practice to test first where updates can and have caused disruptions to operations. Automatic updates should be turned off where changes are tightly controlled and there are mature testing and approval processes. Automatic updates should not be turned off so the admin can call the users first to let them know it's ok to install. A dependable, repeatable process involving a patch agent or remote management tool should be in place before auto-updates are turned off.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','','Run the following command to to enable automatic checking and installing of macOS updates: sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates -bool TRUE','[{\"cis\": [\"1.6\"]}, {\"cis_level\": [\"1\"]}]'),(29006,'Ensure Bluetooth Is Disabled If No Devices Are Paired.','Bluetooth devices use a wireless communications system that replaces the cables used by other peripherals to connect to a system. It is by design a peer-to-peer network technology and typically lacks centralized administration and security enforcement infrastructure.','Bluetooth is particularly susceptible to a diverse set of security vulnerabilities involving identity detection, location tracking, denial of service, unintended control and access of data and voice channels, and unauthorized device control and data access.','','Open a terminal session and enter the following command to disable bluetooth: sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0 && sudo killall -HUP bluetoothd','[{\"cis\": [\"2.1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29007,'Ensure Show Bluetooth Status in Menu Bar Is Enabled.','By showing the Bluetooth status in the menu bar, a small Bluetooth icon is placed in the menu bar. This icon quickly shows the status of Bluetooth, and can allow the user to quickly turn Bluetooth on or off.','Enabling "Show Bluetooth status in menu bar" is a security awareness method that helps understand the current state of Bluetooth, including whether it is enabled, discoverable, what paired devices exist, and what paired devices are currently active.','','For each user, run the following command to enable Bluetooth status in the menu bar: sudo -u <username> defaults -currentHost write com.apple.controlcenter.plist Bluetooth -int 18','[{\"cis\": [\"2.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29008,'Ensure "Set time and date automatically" Is Enabled','Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features.','','Run the following commands: sudo systemsetup -setnetworktimeserver <timeserver> sudo systemsetup -setusingnetworktime on. Run the following commands if you have not set, or need to set, a new time zone: sudo /usr/sbin/systemsetup -listtimezones sudo /usr/sbin/systemsetup -settimezone <selected time zone>','[{\"cis\": [\"2.2.1\"]}, {\"cis_level\": [\"1\"]}]'),(29009,'Ensure time set is within appropriate limits.','Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. Ensure that time on the computer is within acceptable limits. Truly accurate time is measured within milliseconds. For this audit, a drift under four and a half minutes passes the control check. Since Kerberos is one of the important features of macOS integration into Directory systems the guidance here is to warn you before there could be an impact to operations. From the perspective of accurate time, this check is not strict, so it may be too great for your organization. Your organization can adjust to a smaller offset value as needed. Note: ntpdate has been deprecated with 10.14. sntp replaces that command. NOTE: set the correct network time server in the rules.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features. Audit check is for more than 4 minutes and 30 seconds ahead or behind.','','Run the following commands to ensure your time is set within an appropriate limit: sudo systemsetup -getnetworktimeserver -> Get the time server name and then run: sudo touch /var/db/ntp-kod && sudo chown root:wheel /var/db/ntp-kod && sudo sntp -sS <YOUR-TIME-SERVER> ','[{\"cis\": [\"2.2.2\"]}, {\"cis_level\": [\"1\"]}]'),(29010,'Ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled.','A locking screensaver is one of the standard security controls to limit access to a computer and the current user's session when the computer is temporarily unused or unattended. In macOS the screensaver starts after a value selected in a drop down menu, 10 minutes and 20 minutes are both options and either is acceptable. Any value can be selected through the command line or script but a number that is not reflected in the GUI can be problematic. 20 minutes is the default for new accounts.','Setting an inactivity interval for the screensaver prevents unauthorized persons from viewing a system left unattended for an extensive period of time.','','Run the following command to verify that the idle time of the screen saver to 20 minutes or less (≤1200):  $ sudo -u <username> /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int <value ≤1200>. If there are multiple users out of compliance with the prescribed setting, run this command for each user to set their idle time:  $ sudo -u <username> /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int <value ≤1200>. Note: Issues arise if the command line is used to make the setting something other than what is available in the GUI Menu. Choose either 1 (60), 2 (120), 5 (300), 10 (600), or 20 (120) minutes to avoid any issues. Profile Method: 1. Create or edit a configuration profile with the PayLoadType of com.apple.screensaver.user 2. Add the key idleTime 3. Set the key to <integer><≤1200></integer> ','[{\"cis\": [\"2.3.1\"]}, {\"cis_level\": [\"1\"]}]'),(29011,'Ensure Screen Saver Corners Are Secure.','Hot Corners can be configured to disable the screen saver by moving the mouse cursor to a corner of the screen.','Setting a hot corner to disable the screen saver poses a potential security risk since an unauthorized person could use this to bypass the login screen and gain access to the system.','','Run the following command to turn off Disable Screen Saver for a Hot Corner: sudo -u <username> defaults write com.apple.dock <corner that is set to '6'> -int 0 ','[{\"cis\": [\"2.3.2\"]}, {\"cis_level\": [\"2\"]}]'),(29012,'Ensure Remote Apple Events Is Disabled.','Apple Events is a technology that allows one program to communicate with other programs. Remote Apple Events allows a program on one computer to communicate with a program on a different computer.','Disabling Remote Apple Events mitigates the risk of an unauthorized program gaining access to the system.','','Run the following command in Terminal: sudo systemsetup -setremoteappleevents off','[{\"cis\": [\"2.4.1\"]}, {\"cis_level\": [\"1\"]}]'),(29013,'Ensure Internet Sharing Is Disabled','Internet Sharing uses the open source natd process to share an internet connection with other computers and devices on a local network. This allows the Mac to function as a router and share the connection to other, possibly unauthorized, devices.','Disabling Internet Sharing reduces the remote attack surface of the system.','','Run the following command to turn off Internet Sharing: sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict Enabled -int 0','[{\"cis\": [\"2.4.2\"]}, {\"cis_level\": [\"1\"]}]'),(29014,'Ensure Screen Sharing Is Disabled.','Screen Sharing allows a computer to connect to another computer on a network and display the computer’s screen. While sharing the computer’s screen, the user can control what happens on that computer, such as opening documents or applications, opening, moving, or closing windows, and even shutting down the computer.','Disabling Screen Sharing mitigates the risk of remote connections being made without the user of the console knowing that they are sharing the computer.','','Run the following command to turn off Screen Sharing: sudo launchctl disable system/com.apple.screensharing','[{\"cis\": [\"2.4.3\"]}, {\"cis_level\": [\"1\"]}]'),(29015,'Ensure Printer Sharing Is Disabled.','By enabling Printer Sharing the computer is set up as a print server to accept print jobs from other computers. Dedicated print servers or direct IP printing should be used instead.','Disabling Printer Sharing mitigates the risk of attackers attempting to exploit the print server to gain access to the system.','','Run the following command in Terminal: sudo cupsctl --no-share-printers','[{\"cis\": [\"2.4.4\"]}, {\"cis_level\": [\"1\"]}]'),(29016,'Ensure Remote Login Is Disabled.','Remote Login allows an interactive terminal connection to a computer.','Disabling Remote Login mitigates the risk of an unauthorized person gaining access to the system via Secure Shell (SSH). While SSH is an industry standard to connect to posix servers, the scope of the benchmark is for Apple macOS clients, not servers. macOS does have an IP based firewall available (pf, ipfw has been deprecated) that is not enabled or configured. There are more details and links in section 7.5. macOS no longer has TCP Wrappers support built-in and does not have strong Brute-Force password guessing mitigations, or frequent patching of openssh by Apple. Most macOS computers are mobile workstations, managing IP based firewall rules on mobile devices can be very resource intensive. All of these factors can be parts of running a hardened SSH server.','','Run the following command in Terminal: sudo systemsetup -setremotelogin off','[{\"cis\": [\"2.4.5\"]}, {\"cis_level\": [\"1\"]}]'),(29017,'Ensure DVD or CD Sharing Is Disabled.','DVD or CD Sharing allows users to remotely access the system's optical drive. While Apple does not ship Macs with built-in optical drives any longer, external optical drives are still recognized when they are connected. In testing the sharing of an external optical drive persists when a drive is reconnected.','Disabling DVD or CD Sharing minimizes the risk of an attacker using the optical drive as a vector for attack and exposure of sensitive data.','','Run the following command to disable DVD or CD sharing: sudo launchctl disable system/com.apple.ODSAgent ','[{\"cis\": [\"2.4.6\"]}, {\"cis_level\": [\"1\"]}]'),(29018,'Ensure Bluetooth Sharing Is Disabled.','Bluetooth Sharing allows files to be exchanged with Bluetooth enabled devices.','Disabling Bluetooth Sharing minimizes the risk of an attacker using Bluetooth to remotely attack the system.','','Run the following command to disable Bluetooth Sharing is disabled: sudo -u <username> /usr/bin/defaults -currentHost write com.apple.Bluetooth PrefKeyServicesEnabled -bool false','[{\"cis\": [\"2.4.7\"]}, {\"cis_level\": [\"1\"]}]'),(29019,'Ensure File Sharing Is Disabled.','Server Message Block (SMB), Common Internet File System (CIFS) When Windows (or possibly Linux) computers need to access file shared on a Mac, SMB/CIFS file sharing is commonly used. Apple warns that SMB sharing stores passwords is a less secure fashion than AFP sharing and anyone with system access can gain access to the password for that account. When sharing with SMB, each user that will access the Mac must have SMB enabled.','By disabling file sharing, the remote attack surface and risk of unauthorized access to files stored on the system is reduced.','','Run the following command to disable SMB file sharing: sudo launchctl disable system/com.apple.smbd ','[{\"cis\": [\"2.4.8\"]}, {\"cis_level\": [\"1\"]}]'),(29020,'Ensure Remote Management Is Disabled.','Remote Management is the client portion of Apple Remote Desktop (ARD). Remote Management can be used by remote administrators to view the current screen, install software, report on, and generally manage client Macs. The screen sharing options in Remote Management are identical to those in the Screen Sharing section. In fact, only one of the two can be configured. If Remote Management is used, refer to the Screen Sharing section above on issues regard screen sharing. Remote Management should only be enabled when a Directory is in place to manage the accounts with access. Computers will be available on port 5900 on a macOS System and could accept connections from untrusted hosts depending on the configuration, definitely a concern for mobile systems.','Remote Management should only be enabled on trusted networks with strong user controls present in a Directory system. Mobile devices without strict controls are vulnerable to exploit and monitoring.','','Run the following command to disable Remote Management: sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop','[{\"cis\": [\"2.4.9\"]}, {\"cis_level\": [\"1\"]}]'),(29021,'Ensure Content Caching Is Disabled.','Starting with 10.13 (macOS High Sierra) Apple introduced a service to make it easier to deploy data from Apple, including software updates, where there are bandwidth constraints to the Internet and fewer constraints and greater bandwidth on the local subnet. This capability can be very valuable for organizations that have throttled and possibly metered Internet connections. In heterogeneous enterprise networks with multiple subnets the effectiveness of this capability would be determined on how many Macs were on each subnet at the time new large updates were made available upstream. This capability requires the use of mac OS clients as P2P nodes for updated Apple content. Unless there is a business requirement to manage operational Internet connectivity bandwidth user endpoints should not store content and act as a cluster to provision data.','The main use case for Mac computers is as mobile user endpoints. P2P sharing services should not be enabled on laptops that are using untrusted networks. Content Caching can allow a computer to be a server for local nodes on an untrusted network. While there are certainly logical controls that could be used to mitigate risk they add to the management complexity, since the value of the service is in specific use cases organizations with the use case described above can accept risk as necessary.','','Run the following command to disable Content Caching:: sudo AssetCacheManagerUtil deactivate','[{\"cis\": [\"2.4.10\"]}, {\"cis_level\": [\"2\"]}]'),(29022,'Ensure AirDrop Is Disabled.','AirDrop is Apple's built-in on demand ad hoc file exchange system that is compatible with both macOS and iOS. It uses Bluetooth LE for discovery that limits connectivity to Mac or iOS users that are in close proximity. Depending on the setting it allows everyone or only Contacts to share files when they are nearby to each other. In many ways this technology is far superior to the alternatives. The file transfer is done over a TLS encrypted session, does not require any open ports that are required for file sharing, does not leave file copies on email servers or within cloud storage, and allows for the service to be mitigated so that only people already trusted and added to contacts can interact with you. While there are positives to AirDrop, there are privacy concerns that could expose personal information. For that reason, AirDrop should be disabled, and should only be enabled when needed and disabled afterwards.','AirDrop can allow malicious files to be downloaded from unknown sources. Contacts Only limits may expose personal information to devices in the same area.','','Run the following commands to disable AirDrop: sudo -u <username> defaults write com.apple.NetworkBrowser DisableAirDrop -bool true','[{\"cis\": [\"2.4.11\"]}, {\"cis_level\": [\"1\"]}]'),(29023,'Ensure Media Sharing Is Disabled.','Starting with macOS 10.15 Apple has provided a control to allow a user to share Apple downloaded content on all Apple devices that are signed in with the same Apple ID. This allows a user to share downloaded Movies, Music or TV shows with other controlled macOS, iOS and iPadOS devices as well as photos with Apple TVs. With this capability guest users can also use media downloaded on the computer. The recommended best practice is not to use the computer as a server but to utilize Apple's cloud storage to download and use content stored there if content stored with Apple is used on multiple devices.','Disabling Media Sharing reduces the remote attack surface of the system.','','Run the following command to disable Media Sharing: sudo -u <username> defaults write com.apple.amp.mediasharingd home-sharing-enabled -int 0','[{\"cis\": [\"2.4.12\"]}, {\"cis_level\": [\"2\"]}]'),(29024,'Ensure FileVault Is Enabled.','FileVault secures a system's data by automatically encrypting its boot volume and requiring a password or recovery key to access it. FileVault may also be enabled using command line using the fdesetup command. To use this functionality, consult the Der Flounder blog for more details (see references).','Encrypting sensitive data minimizes the likelihood of unauthorized users gaining access to it.','','Perform the following to enable FileVault: 1. Open System Preferences 2. Select Security & Privacy 3. Select FileVault 4. Select Turn on FileVault','[{\"cis\": [\"2.5.1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29025,'Ensure Gatekeeper is Enabled.','Gatekeeper is Apple's application allowlisting control that restricts downloaded applications from launching. It functions as a control to limit applications from unverified sources from running without authorization.','Disallowing unsigned software will reduce the risk of unauthorized or malicious applications from running on the system.','','Run the following command to enable Gatekeeper to allow applications from App Store and identified developers: sudo /usr/sbin/spctl --master-enable','[{\"cis\": [\"2.5.2.1\"]}, {\"cis_level\": [\"1\"]}]'),(29026,'Ensure Firewall Is Enabled.','A firewall is a piece of software that blocks unwanted incoming connections to a system. Apple has posted general documentation about the application firewall.','A firewall minimizes the threat of unauthorized users from gaining access to your system while connected to a network or the Internet.','','Run the following command to enable the firewall: sudo /usr/bin/defaults write /Library/Preferences/com.apple.alf globalstate -int <value> For the <value>, use either 1, specific services, or 2, essential services only.','[{\"cis\": [\"2.5.2.2\"]}, {\"cis_level\": [\"1\"]}]'),(29027,'Ensure Firewall Stealth Mode Is Enabled.','While in Stealth mode the computer will not respond to unsolicited probes, dropping that traffic.','Stealth mode on the firewall minimizes the threat of system discovery tools while connected to a network or the Internet.','','Run the following command to enable stealth mode: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on','[{\"cis\": [\"2.5.2.3\"]}, {\"cis_level\": [\"1\"]}]'),(29028,'Ensure Location Services Is Enabled.','macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. With the operating system verifying the location, users do not need to change the time or the time zone. The computer will change them based on the user's location. They do not need to specify their location for weather or travel times and even get alerts on travel times to meetings and appointment where location information is supplied. Location Services simplify some processes, for the purpose of asset management and time and log management, with mobile computers. There are some use cases where it is important that the computer not be able to report its exact location. While the general use case is to enable Location Services, it should not be allowed if the physical location of the computer and the user should not be public knowledge.','Location Services are helpful in most use cases and can simplify log and time management where computers change time zones.','','Run the following command to enable Location Services: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locationd.plist','[{\"cis\": [\"2.5.3\"]}, {\"cis_level\": [\"2\"]}]'),(29029,'Ensure Sending Diagnostic and Usage Data to Apple Is Disabled.','Apple provides a mechanism to send diagnostic and analytics data back to Apple to help them improve the platform. Information sent to Apple may contain internal organizational information that should be controlled and not available for processing by Apple. Turn off all Analytics and Improvements sharing. Share Mac Analytics (Share with App Developers dependent on Mac Analytic sharing) - Includes diagnostics, usage and location data. Share iCloud Analytics - Includes iCloud data and usage information.','Organizations should have knowledge of what is shared with the vendor and the setting automatically forwards information to Apple.','','Perform the following to disable diagnostic data being sent to Apple: sudo /usr/bin/defaults write /Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist AutoSubmit -bool false, sudo /bin/chmod 644 /Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist, sudo /usr/sbin/chgrp admin /Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist','[{\"cis\": [\"2.5.5\"]}, {\"cis_level\": [\"2\"]}]'),(29030,'Ensure Backup Up Automatically is Enabled.','Backup solutions are only effective if the backups run on a regular basis. The time to check for backups is before the hard drive fails or the computer goes missing. In order to simplify the user experience so that backups are more likely to occur Time Machine should be on and set to Back Up Automatically whenever the target volume is available. Operational staff should ensure that backups complete on a regular basis and the backups are tested to ensure that file restoration from backup is possible when needed. Backup dates are available even when the target volume is not available in the Time Machine plist. SnapshotDates = ( "2012-08-20 12:10:22 +0000", "2013-02-03 23:43:22 +0000", "2014-02-19 21:37:21 +0000", "2015-02-22 13:07:25 +0000", "2016-08-20 14:07:14 +0000" When the backup volume is connected to the computer more extensive information is available through tmutil. See man tmutil','Backups should automatically run whenever the backup drive is available.','','Run the following command to enable automatic backups if Time Machine is enabled: sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true','[{\"cis\": [\"2.7.1\"]}, {\"cis_level\": [\"2\"]}]'),(29031,'Ensure Wake for Network Access Is Disabled.','This feature allows the computer to take action when the user is not present and the computer is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. This macOS feature is meant to allow the computer to resume activity as needed regardless of physical security controls. This feature allows other users to be able to access your computer’s shared resources, such as shared printers or iTunes playlists, even when your computer is in sleep mode. In a closed network when only authorized devices could wake a computer it could be valuable to wake computers in order to do management push activity. Where mobile workstations and agents exist the device will more likely check in to receive updates when already awake. Mobile devices should not be listening for signals on any unmanaged network or where untrusted devices exist that could send wake signals.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access.','','Perform the following disable Wake for network access or Power Nap: Run the following command to disable Wake for network access: sudo pmset -a womp 0 ','[{\"cis\": [\"2.8\"]}, {\"cis_level\": [\"1\"]}]'),(29032,'Ensure Power Nap Is Disabled.','This feature allows the computer to take action when the user is not present and the computer is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. This macOS feature is meant to allow the computer to resume activity as needed regardless of physical security controls. Power Nap allows the system to stay in low power mode, especially while on battery power and periodically connect to previously named networks with stored credentials for user applications to phone home and get updates. This capability requires FileVault to remain unlocked and the use of previously joined networks to be risk accepted based on the SSID without user input. This control has been updated to check the status on both battery and AC Power. The presence of an electrical outlet does not completely correlate with logical and physical security of the device or available networks.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. The use of Power Nap adds to the risk of compromised physical and logical security. The user should be able to decrypt FileVault and have the applications download what is required when the computer is actively used. The control to prevent computer sleep has been retired for this version of the Benchmark. Forcing the computer to stay on and use energy in case a management push is needed is contrary to most current management processes. Only keep computers unslept if after hours pushes are required on closed LANs.','','Perform the following disable Wake for network access or Power Nap: sudo pmset -a powernap 0','[{\"cis\": [\"2.9\"]}, {\"cis_level\": [\"1\"]}]'),(29033,'Ensure Secure Keyboard Entry terminal.app is Enabled.','Secure Keyboard Entry prevents other applications on the system and/or network from detecting and recording what is typed into Terminal.','Enabling Secure Keyboard Entry minimizes the risk of a key logger from detecting what is entered in Terminal.','','Perform the following to enable secure keyboard entries in Terminal: sudo -u <username> /usr/bin/defaults write -app Terminal SecureKeyboardEntry -bool true','[{\"cis\": [\"2.10\"]}, {\"cis_level\": [\"1\"]}]'),(29034,'Ensure EFI Version Is Valid and Checked Regularly.','In order to mitigate firmware attacks Apple has created an automated Firmware check to ensure that the EFI version running is a known good version from Apple. There is also an automated process to check it every seven days.','If the Firmware of a computer has been compromised the Operating System that the Firmware loads cannot be trusted either.','','If EFI does not pass the integrity check you may send a report to Apple. Backing up files and clean installing a known good Operating System and Firmware is recommended.','[{\"cis\": [\"2.11\"]}, {\"cis_level\": [\"1\"]}]'),(29035,'Ensure Security Auditing Is Enabled.','macOS's audit facility, auditd, receives notifications from the kernel when certain system calls, such as open, fork, and exit, are made. These notifications are captured and written to an audit log.','Logs generated by auditd may be useful when investigating a security incident as they may help reveal the vulnerable application and the actions taken by a malicious actor.','','Run the following command to load auditd: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist','[{\"cis\": [\"3.1\"]}, {\"cis_level\": [\"1\"]}]'),(29036,'Ensure install.log Is Retained for 365 or More Days and No Maximum Size.','macOS writes information pertaining to system-related events to the file /var/log/install.log and has a configurable retention policy for this file. The default logging setting limits the file size of the logs and the maximum size for all logs. The default allows for an errant application to fill the log files and does not enforce sufficient log retention. The Benchmark recommends a value based on standard use cases. The value should align with local requirements within the organization. The default value has an "all_max" file limitation, no reference to a minimum retention and a less precise rotation argument. The all_max flag control will remove old log entries based only on the size of the log files. Log size can vary widely depending on how verbose installing applications are in their log entries. The decision here is to ensure that logs go back a year and depending on the applications a size restriction could compromise the ability to store a full year. While this Benchmark is not scoring for a rotation flag the default rotation is sequential rather than using a timestamp. Auditors may prefer timestamps in order to simply review specific dates where event information is desired. Please review the File Rotation section in the man page for more information. man asl.conf - The maximum file size limitation string should be removed "all_max=" - An organization appropriate retention should be added "ttl=" - The rotation should be set with timestamps "rotate=utc" or "rotate=local"','Archiving and retaining install.log for at least a year is beneficial in the event of an incident as it will allow the user to view the various changes to the system along with the date and time they occurred.','','Perform the following to ensure that install logs are retained for at least 365 days: Edit the /etc/asl/com.apple.install file and add or modify the ttl value to 365 or greater on the file line. Also, remove the all_max= setting and value from the file line.','[{\"cis\": [\"3.3\"]}, {\"cis_level\": [\"1\"]}]'),(29037,'Ensure Access to Audit Records Is Controlled.','The audit system on macOS writes important operational and security information that can be both useful for an attacker and a place for an attacker to attempt to obfuscate unwanted changes that were recorded. As part of defense-in-depth the /etc/security/audit_control configuration and the files in /var/audit should be owned only by root with group wheel with read-only rights and no other access allowed. macOS ACLs should not be used for these files.','Audit records should never be changed except by the system daemon posting events. Records may be viewed or extracts manipulated, but the authoritative files should be protected from unauthorized changes.','','Run the following to commands to set the audit records to the root user and wheel group: sudo chown -R root:wheel /etc/security/audit_control, sudo chmod -R o-rw /etc/security/audit_control, sudo chown -R root:wheel /var/audit/, sudo chmod -R o-rw /var/audit/ Note: It is recommended to do a thorough verification process on why the audit logs have been changed before following the remediation steps. If the system has different access controls on the audit logs, and the changes cannot be traced, a new install may be prudent. Check for signs of file tampering as well as unapproved OS changes.','[{\"cis\": [\"3.5\"]}, {\"cis_level\": [\"1\"]}]'),(29038,'Ensure Firewall Logging Is Enabled and Configured.','The socketfilter firewall is what is used when the firewall is turned on in the Security Preference Pane. In order to appropriately monitor what access is allowed and denied logging must be enabled. The logging level must be set to "detailed" to be useful in monitoring connection attempts that the firewall detects. Throttled login is not sufficient for examine firewall connection attempts.','In order to troubleshoot the successes and failures of a firewall, detailed logging should be enabled.','','Run the following command to enable logging of the firewall: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on.  sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingopt detail.','[{\"cis\": [\"3.6\"]}, {\"cis_level\": [\"1\"]}]'),(29039,'Ensure Bonjour Advertising Services Is Disabled.','Bonjour is an auto-discovery mechanism for TCP/IP devices which enumerate devices and services within a local subnet. DNS on macOS is integrated with Bonjour and should not be turned off, but the Bonjour advertising service can be disabled.','Bonjour can simplify device discovery from an internal rogue or compromised host. An attacker could use Bonjour's multicast DNS feature to discover a vulnerable or poorly- configured service or additional information to aid a targeted attack. Implementing this control disables the continuous broadcasting of "I'm here!" messages. Typical end-user endpoints should not have to advertise services to other computers. This setting does not stop the computer from sending out service discovery messages when looking for services on an internal subnet, if the computer is looking for a printer or server and using service discovery. To block all Bonjour traffic except to approved devices the pf or other firewall would be needed.','','Run the following command to disable Bonjour Advertising services: sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true','[{\"cis\": [\"4.1\"]}, {\"cis_level\": [\"2\"]}]'),(29040,'Ensure HTTP Server Is Disabled.','macOS used to have a graphical front-end to the embedded Apache web server in the Operating System. Personal web sharing could be enabled to allow someone on another computer to download files or information from the user's computer. Personal web sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. Apache however is still part of the Operating System and can be easily turned on to share files and provide remote connectivity to an end-user computer. Web sharing should only be done through hardened web servers and appropriate cloud services.','Web serving should not be done from a user desktop. Dedicated webservers or appropriate cloud storage should be used. Open ports make it easier to exploit the computer.','','Run the following command to disable the http server services: sudo launchctl disable system/org.apache.httpd','[{\"cis\": [\"4.4\"]}, {\"cis_level\": [\"1\"]}]'),(29041,'Ensure NFS Server Is Disabled.','macOS can act as an NFS fileserver. NFS sharing could be enabled to allow someone on another computer to mount shares and gain access to information from the user's computer. File sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. NFSD is still part of the Operating System and can be easily turned on to export shares and provide remote connectivity to an end-user computer.','File serving should not be done from a user desktop. Dedicated servers should be used. Open ports make it easier to exploit the computer.','','Run the following command to disable the nfsd fileserver services: sudo launchctl disable system/com.apple.nfsd. Remove the exported Directory listing:  sudo rm /etc/exports','[{\"cis\": [\"4.5\"]}, {\"cis_level\": [\"1\"]}]'),(29042,'Ensure System Integrity Protection Status (SIPS) Is Enabled.','System Integrity Protection is a security feature introduced in OS X 10.11 El Capitan. System Integrity Protection restricts access to System domain locations and restricts runtime attachment to system processes. Any attempt to inspect or attach to a system process will fail. Kernel Extensions are now restricted to /Library/Extensions and are required to be signed with a Developer ID.','Running without System Integrity Protection on a production system runs the risk of the modification of system binaries or code injection of system processes that would otherwise be protected by SIP.','','Perform the following to enable System Integrity Protection: 1. Reboot into the Recovery Partition (reboot and hold down Command (⌘) + R) 2. Select Utilities 3. Select Terminal 4. Run the following command: sudo /usr/bin/csrutil enable Successfully enabled System Integrity Protection. Please restart the machine for the changes to take effect. 5. Reboot the computer','[{\"cis\": [\"5.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29043,'Ensure Apple Mobile File Integrity Is Enabled.','Apple Mobile File Integrity was first released in macOS 10.12, the daemon and service block attempts to run unsigned code. AMFI uses lanchd, code signatures, certificates, entitlements, and provisioning profiles to create a filtered entitlement dictionary for an app. AMFI is the macOS kernel module that enforces code-signing and library validation.','Apple Mobile File Integrity (AMFI) validates that application code is validated.','','Run the following command to enable the Apple Mobile File Integrity service: sudo /usr/sbin/nvram boot-args=""','[{\"cis\": [\"5.1.3\"]}, {\"cis_level\": [\"1\"]}]'),(29044,'Ensure Library Validation Is Enabled.','Library Validation is a security feature introduced in macOS 10.10 Yosemite. Library Validation protects processes from loading arbitrary libraries. This stops root from loading arbitrary libraries into any process (depending on SIP status),and keeps root from becoming more powerful. Security is strengthened, because some user processes can no longer be fooled to run additional code without root's explicit request, which may grant access to daemons that depend on Library Validation for secure validation of code identity.','Running without Library Validation on a production system runs the risk of the modification of system binaries or code injection of system processes that would otherwise be protected by Library Validation.','','Run the following command to set library validation: sudo /usr/bin/defaults write /Library/Preferences/com.apple.security.libraryvalidation.plist DisableLibraryValidation -bool false','[{\"cis\": [\"5.1.4\"]}, {\"cis_level\": [\"1\"]}]'),(29045,'Ensure Sealed System Volume (SSV) Is Enabled.','Sealed System Volume is a security feature introduced in macOS 11.0 Big Sur. During system installation, a SHA-256 cryptographic hash is calculated for all immutable system files and stored in a Merkle tree which itself is hashed as the Seal. Both are stored in the metadata of the snapshot created of the System volume. The seal is verified by the boot loader at startup. macOS will not boot if system files have been tampered with. If validation fails, the user will be instructed to reinstall the operating system. During read operations for files located in the Sealed System Volume, a hash is calculated and compared to the value stored in the Merkle tree.','Running without Sealed System Volume on a production system could run the risk of Apple software, that integrates directly with macOS, being modified.','','Perform the following to enable System Integrity Protection: 1. Reboot into the Recovery Partition (reboot and hold down Command (⌘) + R) 2. Select an administrator's account and enter that account's password 3. Select Utilities 4. Select Terminal 5. Run the following command: sudo /usr/bin/csrutil enable authenticated-root 6. Reboot the computer.','[{\"cis\": [\"5.1.5\"]}, {\"cis_level\": [\"1\"]}]'),(29046,'Ensure Appropriate Permissions Are Enabled for System Wide Applications.','Applications in the System Applications Directory (/Applications) should be world executable since that is their reason to be on the system. They should not be world-writable and allow any process or user to alter them for other processes or users to then execute modified versions.','Unauthorized modifications of applications could lead to the execution of malicious code.','','Run the following command to change the permissions for each application that does not meet the requirements: sudo chmod -R o-w /Applications/<applicationname>','[{\"cis\": [\"5.1.6\"]}, {\"cis_level\": [\"1\"]}]'),(29047,'Ensure No World Writable Files Exist in the System Folder.','Software sometimes insists on being installed in the /System/Volumes/Data/SystemDirectory and have inappropriate world-writable permissions.','Folders in /System/Volumes/Data/System should not be world-writable. The audit check excludes the "Drop Box" folder that is part of Apple's default user template.','','Run the following command to set permissions so that folders are not world writable in the /System folder: sudo chmod -R o-w /Path/<baddirectory>','[{\"cis\": [\"5.1.7\"]}, {\"cis_level\": [\"1\"]}]'),(29048,'Ensure No World Writable Files Exist in the Library Folder.','Software sometimes insists on being installed in the /Library Directory and have inappropriate world-writable permissions.','Folders in /System/Volumes/Data/Library should not be world-writable. The audit check excludes the /System/Volumes/Data/Library/Caches and /System/Volumes/Data/Library/Preferences/Audio/Data folders where the sticky bit is set.','','Run the following command to set permissions so that folders are not world writable in the /System/Volumes/Data/Library folder: sudo /bin/chmod -R o-w /System/Volumes/Data/Library/<baddirectory>','[{\"cis\": [\"5.1.8\"]}, {\"cis_level\": [\"2\"]}]'),(29049,'Ensure the Sudo Timeout Period Is Set to Zero.','The sudo command allows the user to run programs as the root user. Working as the root user allows the user an extremely high level of configurability within the system. This control along with the control to use a separate timestamp for each tty limits the window where an unauthorized user, process or attacker could utilize legitimate credentials that are valid for longer than required.','The sudo command stays logged in as the root user for five minutes before timing out and re-requesting a password. This five-minute window should be eliminated since it leaves the system extremely vulnerable. This is especially true if an exploit were to gain access to the system, since they would be able to make changes as a root user.','','Run the following command to edit the sudo settings: sudo visudo. Add the line 'Defaults timestamp_timeout=0' in the Override built-in defaults section. ','[{\"cis\": [\"5.3\"]}, {\"cis_level\": [\"1\"]}]'),(29050,'Ensure a Separate Timestamp Is Enabled for Each User/tty Combo.','Using tty tickets ensures that a user must enter the sudo password in each Terminal session. With sudo versions 1.8 and higher, introduced in 10.12, the default value is to have tty tickets for each interface so that root access is limited to a specific terminal. The default configuration can be overwritten or not configured correctly on earlier versions of macOS.','In combination with removing the sudo timeout grace period, a further mitigation should be in place to reduce the possibility of a background process using elevated rights when a user elevates to root in an explicit context or tty. Additional mitigation should be in place to reduce the risk of privilege escalation of background processes.','','Edit the /etc/sudoers file with visudo and remove !tty_tickets from any Defaults line. If there is a Default line of timestamp_type= with a value other than tty, change the value to tty If there is a file in the /etc/sudoers.d/ folder that contains Defaults !tty_tickets, edit the file and remove !tty_tickets from any Defaults line. If there is a file /etc/sudoers.d/ folder that contains a Default line of timestamp_type= with a value other than tty, change the value to tty.','[{\"cis\": [\"5.4\"]}, {\"cis_level\": [\"1\"]}]'),(29051,'Ensure the "root" Account Is Disabled','The root account is a superuser account that has access privileges to perform any actions and read/write to any file on the computer. With some Linux distros the system administrator may commonly use the root account to perform administrative functions.','Enabling and using the root account puts the system at risk since any successful exploit or mistake while the root account is in use could have unlimited access privileges within the system. Using the sudo command allows users to perform functions as a root user while limiting and password protecting the access privileges. By default the root account is not enabled on a macOS computer. An administrator can escalate privileges using the sudo command (use -s or -i to get a root shell).','','Run the following command to disable the root user: sudo /usr/sbin/dsenableroot -d','[{\"cis\": [\"5.6\"]}, {\"cis_level\": [\"1\"]}]'),(29052,'Ensure Automatic Login Is Disabled.','The automatic login feature saves a user's system access credentials and bypasses the login screen. Instead, the system automatically loads to the user's desktop screen.','Disabling automatic login decreases the likelihood of an unauthorized person gaining access to a system.','','Run the following command to disable automatic login: sudo defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser','[{\"cis\": [\"5.7\"]}, {\"cis_level\": [\"1\"]}]'),(29053,'Require an administrator password to access system-wide preferences.','System Preferences controls system and user settings on a macOS Computer. System Preferences allows the user to tailor their experience on the computer as well as allowing the System Administrator to configure global security settings. Some of the settings should only be altered by the person responsible for the computer.','By requiring a password to unlock system-wide System Preferences the risk is mitigated of a user changing configurations that affect the entire system and requires an admin user to re-authenticate to make changes.','','The authorizationdb settings cannot be written to directly, so the plist must be exported out to temporary file. Changes can be made to the temporary plist, then imported back into the authorizationdb settings. Run the following commands to enable that an administrator password is required to access system-wide preferences: $ sudo security authorizationdb read system.preferences > /tmp/system.preferences.plist $ sudo defaults write /tmp/system.preferences.plist shared -bool false $ sudo security authorizationdb write system.preferences < /tmp/system.preferences.plist','[{\"cis\": [\"5.10\"]}, {\"cis_level\": [\"1\"]}]'),(29054,'Ensure an administrator account cannot login to another user's active and locked session.','macOS has a privilege that can be granted to any user that will allow that user to unlock active user's sessions.','Disabling the admins and/or user's ability to log into another user's active and locked session prevents unauthorized persons from viewing potentially sensitive and/or personal information.','','Run the following command to disable a user logging into another user's active and/or locked session: sudo security authorizationdb write system.login.screensaver use-login-window-ui','[{\"cis\": [\"5.11\"]}, {\"cis_level\": [\"1\"]}]'),(29055,'Ensure a Custom Message for the Login Screen Is Enabled.','An access warning informs the user that the system is reserved for authorized use only, and that the use of the system may be monitored.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','','Run the following command to enable a custom login screen message: sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "<custom.message>"','[{\"cis\": [\"5.12\"]}, {\"cis_level\": [\"1\"]}]'),(29056,'Ensure a Login Window Banner Exists.','A Login window banner warning informs the user that the system is reserved for authorized use only. It enforces an acknowledgment by the user that they have been informed of the use policy in the banner if required. The system recognizes either the .txt and the .rtf formats.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','','Edit (or create) a PolicyBanner.txt or PolicyBanner.rtf file, in the /Library/Security/ folder, to include the required login window banner text.','[{\"cis\": [\"5.13\"]}, {\"cis_level\": [\"2\"]}]'),(29057,'Ensure Fast User Switching Is Disabled.','Fast user switching allows a person to quickly log in to the computer with a different account. While only a minimal security risk, when a second user is logged in, that user might be able to see what processes the first user is using, or possibly gain other information about the first user. In a large directory environment where it is difficult to limit log in access many valid users can login to other user's assigned computers.','Fast user switching allows multiple users to run applications simultaneously at console. There can be information disclosed about processes running under a different user. Without a specific configuration to save data and log out users can have unsaved data running in a background session that is not obvious.','','Run the following command to turn fast user switching off: sudo /usr/bin/defaults write /Library/Preferences/.GlobalPreferences MultipleSessionEnabled -bool false','[{\"cis\": [\"5.15\"]}, {\"cis_level\": [\"2\"]}]'),(29058,'Ensure Login Window Displays as Name and Password Is Enabled.','The login window prompts a user for his/her credentials, verifies their authorization level and then allows or denies the user access to the system.','Prompting the user to enter both their username and password makes it twice as hard for unauthorized users to gain access to the system since they must discover two attributes.','','Run the following command to enable the login window to display name and password: sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true','[{\"cis\": [\"6.1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29059,'Ensure Show Password Hints Is Disabled.','Password hints are user-created text displayed when an incorrect password is used for an account.','Password hints make it easier for unauthorized persons to gain access to systems by providing information to anyone that the user provided to assist in remembering the password. This info could include the password itself or other information that might be readily discerned with basic knowledge of the end user.','','Run the following command to disable password hints: sudo defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0','[{\"cis\": [\"6.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29060,'Ensure Guest Account Is Disabled.','The guest account allows users access to the system without having to create an account or password. Guest users are unable to make setting changes cannot remotely login to the system. All files, caches, and passwords created by the guest user are deleted upon logging out.','Disabling the guest account mitigates the risk of an untrusted user doing basic reconnaissance and possibly using privilege escalation attacks to take control of the system.','','Run the following command to disable the guest account: sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false','[{\"cis\": [\"6.1.3\"]}, {\"cis_level\": [\"1\"]}]'),(29061,'Ensure Guest Access to Shared Folders Is Disabled.','Allowing guests to connect to shared folders enables users to access selected shared folders and their contents from different computers on a network.','Not allowing guests to connect to shared folders mitigates the risk of an untrusted user doing basic reconnaissance and possibly use privilege escalation attacks to take control of the system.','','Run the following commands to verify that shared folders are not accessible to guest users: sudo /usr/bin/defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server AllowGuestAccess -bool false','[{\"cis\": [\"6.1.4\"]}, {\"cis_level\": [\"1\"]}]'),(29062,'Ensure the Guest Home Folder Does Not Exist.','In the previous two controls the guest account login has been disabled and sharing to guests has been disabled as well. There is no need for the legacy Guest home folder to remain in the file system. When normal user accounts are removed you have the option to archive it, leave it in place or delete. In the case of the guest folder the folder remains in place without a GUI option to remove it. If at some point in the future a Guest account is needed it will be re-created. The presence of the Guest home folder can cause automated audits to fail when looking for compliant settings within all User folders as well. Rather than ignoring the folder's continued existence, it is best removed.','The Guest home folders are unneeded after the Guest account is disabled and could be used inappropriately.','','Run the following command to remove the Guest user home folder: sudo /bin/rm -R /Users/Guest','[{\"cis\": [\"6.1.5\"]}, {\"cis_level\": [\"1\"]}]'),(29063,'Ensure Show All Filename Extensions Setting is Enabled.','A filename extension is a suffix added to a base filename that indicates the base filename's file format.','Visible filename extensions allow the user to identify the file type and the application it is associated with which leads to quick identification of misrepresented malicious files.','','Run the following command to enable displaying of file extensions: sudo -u <username> /usr/bin/defaults write /Users/<username>/Library/Preferences/.GlobalPreferences.plist AppleShowAllExtensions -bool true','[{\"cis\": [\"6.2\"]}, {\"cis_level\": [\"1\"]}]'),(29064,'Ensure Automatic Opening of Safe Files in Safari Is Disabled.','Safari will automatically run or execute what it considers safe files. This can include installers and other files that execute on the operating system. Safari bases file safety by using a list of filetypes maintained by Apple. The list of files include text, image, video and archive formats that would be run in the context of the OS rather than the browser.','Hackers have taken advantage of this setting via drive-by attacks. These attacks occur when a user visits a legitimate website that has been corrupted. The user unknowingly downloads a malicious file either by closing an infected pop-up or hovering over a malicious banner. An attacker can create a malicious file that will fall within Safari's safe file list that will download and execute without user input.','','Run the following command to disable safe files from not opening in Safari: sudo -u <username> /usr/bin/defaults write /Users/<username>/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari AutoOpenSafeDownloads -bool false','[{\"cis\": [\"6.3\"]}, {\"cis_level\": [\"1\"]}]'),(29500,'Ensure /tmp is a separate partition.','The /tmp directory is a world-writable directory used for temporary storage by all users and some applications.','Making /tmp its own file system allows an administrator to set additional mount options such as the noexec option on the mount, making /tmp useless for an attacker to install executable code. It would also prevent an attacker from establishing a hard link to a system setuid program and wait for it to be updated. Once the program was updated, the hard link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw. This can be accomplished by either mounting tmpfs to /tmp, or creating a separate partition for /tmp.','Since the /tmp directory is intended to be world-writable, there is a risk of resource exhaustion if it is not bound to a separate partition. Running out of /tmp space is a problem regardless of what kind of filesystem lies under it, but in a configuration where /tmp is not a separate file system it will essentially have the whole disk available, as the default installation only creates a single / partition. On the other hand, a RAM-based /tmp (as with tmpfs) will almost certainly be much smaller, which can lead to applications filling up the filesystem much more easily. Another alternative is to create a dedicated partition for /tmp from a separate volume or disk. One of the downsides of a disk-based dedicated partition is that it will be slower than tmpfs which is RAM-based. /tmp utilizing tmpfs can be resized using the size={size} parameter in the relevant entry in /etc/fstab.','First ensure that systemd is correctly configured to ensure that /tmp will be mounted at boot time. # systemctl unmask tmp.mount. For specific configuration requirements of the /tmp mount for your environment, modify /etc/fstab or tmp.mount. Example of /etc/fstab configured tmpfs file system with specific mount options: tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime,size=2G 0 0. Example of tmp.mount configured tmpfs file system with specific mount options: [Unit] Description=Temporary Directory /tmp ConditionPathIsSymbolicLink=!/tmp DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target After=swap.target [Mount] What=tmpfs Where=/tmp Type=tmpfs.','[{\"cis\": [\"1.1.2.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29501,'Ensure nodev option set on /tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /tmp.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29502,'Ensure noexec option set on /tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /tmp.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29503,'Ensure nosuid option set on /tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /tmp.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29504,'Ensure separate partition exists for /var.','The /var directory is used by daemons and other system services to temporarily store dynamic data. Some directories created by these processes may be world-writable.','The reasoning for mounting /var on a separate partition is as follow. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var and cause unintended behavior across the system as the disk is full. See man auditd.conf for details. - Fine grained control over the mount: Configuring /var as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behaviour. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection from exploitation: An example of exploiting /var may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hard-link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.3.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0006\"]}]'),(29505,'Ensure nodev option set on /var partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 . Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29506,'Ensure nosuid option set on /var partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 . Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29507,'Ensure separate partition exists for /var/tmp.','The /var/tmp directory is a world-writable directory used for temporary storage by all users and some applications. Temporary files residing in /var/tmp are to be preserved between reboots.','The reasoning for mounting /var/tmp on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var/tmp directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/tmp and cause the potential disruption to daemons as the disk is full. - Fine grained control over the mount: Configuring /var/tmp as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection from exploitation: An example of exploiting /var/tmp may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hard-link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/tmp. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.4.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29508,'Ensure noexec option set on /var/tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29509,'Ensure nosuid option set on /var/tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29510,'Ensure nodev option set on /var/tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29511,'Ensure separate partition exists for /var/log.','The /var/log directory is used by system services to store log data.','The reasoning for mounting /var/log on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var/log directory contains log files which can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. - Fine grained control over the mount: Configuring /var/log as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection of log data: As /var/log contains log files, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log . For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.5.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29512,'Ensure nodev option set on /var/log partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29513,'Ensure noexec option set on /var/log partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot run executable binaries from /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29514,'Ensure nosuid option set on /var/log partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot create setuid files in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29515,'Ensure separate partition exists for /var/log/audit.','The auditing daemon, auditd, stores log data in the /var/log/audit directory.','The reasoning for mounting /var/log/audit on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var/log/audit directory contains the audit.log file which can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/log/audit and cause auditd to trigger it's space_left_action as the disk is full. See man auditd.conf for details. - Fine grained control over the mount: Configuring /var/log/audit as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection of audit data: As /var/log/audit contains audit logs, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log/audit. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.6.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29516,'Ensure noexec option set on /var/log/audit partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log/audit filesystem is only intended for audit logs, set this option to ensure that users cannot run executable binaries from /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29517,'Ensure nodev option set on /var/log/audit partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log/audit filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29518,'Ensure nosuid option set on /var/log/audit partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log/audit filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29519,'Ensure separate partition exists for /home.','The /home directory is used to support disk storage needs of local users.','The reasoning for mounting /home on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /home directory contains user generated data, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /home and impact all local users. - Fine grained control over the mount: Configuring /home as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. In the case of /home options such as usrquota/grpquota may be considered to limit the impact that users can have on each other with regards to disk resource exhaustion. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection of user data: As /home contains user data, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /home. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.7.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29520,'Ensure nodev option set on /home partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /home filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /home.','','IF the /home partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0. Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29521,'Ensure nosuid option set on /home partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /home filesystem is only intended for user file storage, set this option to ensure that users cannot create setuid files in /home.','','IF the /home partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0. Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29522,'Ensure nodev option set on /dev/shm partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /dev/shm filesystem is not intended to support devices, set this option to ensure that users cannot attempt to create special devices in /dev/shm partitions.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm.','[{\"cis\": [\"1.1.8.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29523,'Ensure noexec option set on /dev/shm partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Setting this option on a file system prevents users from executing programs from shared memory. This deters users from introducing potentially malicious software on the system.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /dev/shm partition. Example: <device> /dev/shm <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /dev/shm with the configured options: # mount -o remount /dev/shm. NOTE It is recommended to use tmpfs as the device/filesystem type as /dev/shm is used as shared memory space by applications.','[{\"cis\": [\"1.1.8.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29524,'Ensure nosuid option set on /dev/shm partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Setting this option on a file system prevents users from introducing privileged programs onto the system and allowing non-root users to execute them.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm.','[{\"cis\": [\"1.1.8.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29525,'Disable Automounting.','autofs allows automatic mounting of devices, typically including CD/DVDs and USB drives.','With automounting enabled anyone with physical access could attach a USB drive or disc and have its contents available in system even if they lacked permissions to mount it themselves.','The use of portable hard drives is very common for workstation users. If your organization allows the use of portable storage or media on workstations and physical access controls to workstations is considered adequate there is little value add in turning off automounting.','If there are no other packages that depends on autofs, remove the package with: # apt purge autofs OR if there are dependencies on the autofs package: Run the following commands to mask autofs: # systemctl stop autofs # systemctl mask autofs.','[{\"cis\": [\"1.1.9\"]}, {\"cis_csc_v8\": [\"10.3\"]}, {\"cis_csc_v7\": [\"8.5\"]}, {\"cmmc_v2.0\": [\"MP.L2-3.8.7\"]}, {\"hipaa\": [\"164.310(d)(1)\"]}, {\"iso_27001-2013\": [\"A.12.2.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1203\", \"T1211\", \"T1212\"]}]'),(29526,'Ensure AIDE is installed.','AIDE takes a snapshot of filesystem state including modification times, permissions, and file hashes which can then be used to compare against the current state of the filesystem to detect modifications to the system.','By monitoring the filesystem state compromised files can be detected to prevent or limit the exposure of accidental or malicious misconfigurations or modified binaries.','','Install AIDE using the appropriate package manager or manual installation: # apt install aide aide-common Configure AIDE as appropriate for your environment. Consult the AIDE documentation for options. Run the following commands to initialize AIDE: # aideinit # mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db.','[{\"cis\": [\"1.3.1\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"pci_dss_3.2.1\": [\"10.2.1\", \"11.5\"]}, {\"pci_dss_4.0\": [\"10.2.1\", \"10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1036\", \"T1036.002\", \"T1036.003\", \"T1036.004\", \"T1036.005\", \"T1565\", \"T1565.001\"]}]'),(29527,'Ensure filesystem integrity is regularly checked.','Periodic checking of the filesystem integrity is needed to detect changes to the filesystem.','Periodic file checking allows the system administrator to determine on a regular basis if critical files have been changed in an unauthorized fashion.','','If cron will be used to schedule and run aide check: Run the following command: # crontab -u root -e Add the following line to the crontab: 0 5 * * * /usr/bin/aide.wrapper --config /etc/aide/aide.conf --check OR If aidecheck.service and aidecheck.timer will be used to schedule and run aide check: Create or edit the file /etc/systemd/system/aidecheck.service and add the following lines: [Unit] Description=Aide Check [Service] Type=simple ExecStart=/usr/bin/aide.wrapper --config /etc/aide/aide.conf --check [Install] WantedBy=multi-user.target. Create or edit the file /etc/systemd/system/aidecheck.timer and add the following lines: [Unit] Description=Aide check every day at 5AM [Timer] OnCalendar=*-*-* 05:00:00 Unit=aidecheck.service [Install] WantedBy=multi-user.target. Run the following commands: # chown root:root /etc/systemd/system/aidecheck.* # chmod 0644 /etc/systemd/system/aidecheck.* # systemctl daemon-reload # systemctl enable aidecheck.service # systemctl --now enable aidecheck.timer.','[{\"cis\": [\"1.3.2\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1036\", \"T1036.002\", \"T1036.003\", \"T1036.004\", \"T1036.005\", \"T1565\", \"T1565.001\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29528,'Ensure bootloader password is set.','Setting the boot loader password will require that anyone rebooting the system must enter a password before being able to set command line boot parameters.','Requiring a boot password upon execution of the boot loader will prevent an unauthorized user from entering boot parameters or changing the boot partition. This prevents users from weakening security (e.g. turning off AppArmor at boot time).','If password protection is enabled, only the designated superuser can edit a Grub 2 menu item by pressing 'e' or access the GRUB 2 command line by pressing 'c' If GRUB 2 is set up to boot automatically to a password-protected menu entry the user has no option to back out of the password prompt to select another menu entry. Holding the SHIFT key will not display the menu in this case. The user must enter the correct username and password. If unable, the configuration files will have to be edited via the LiveCD or other means to fix the problem You can add --unrestricted to the menu entries to allow the system to boot without entering a password. Password will still be required to edit menu items. More Information: https://help.ubuntu.com/community/Grub2/Passwords.','Create an encrypted password with grub-mkpasswd-pbkdf2: # grub-mkpasswd-pbkdf2 Enter password: <password> Reenter password: <password> PBKDF2 hash of your password is <encrypted-password>. Add the following into a custom /etc/grub.d configuration file: cat <<EOF set superusers="<username>" password_pbkdf2 <username> <encrypted-password> EOF. The superuser/user information and password should not be contained in the /etc/grub.d/00_header file as this file could be overwritten in a package update. If there is a requirement to be able to boot/reboot without entering the password, edit /etc/grub.d/10_linux and add --unrestricted to the line CLASS= Example: CLASS="--class gnu-linux --class gnu --class os --unrestricted". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"1.4.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1046\"]}]'),(29529,'Ensure permissions on bootloader config are configured.','The grub configuration file contains information on boot settings and passwords for unlocking boot options.','Setting the permissions to read and write for root only prevents non-root users from seeing the boot parameters or changing them. Non-root users who read the boot parameters may be able to identify weaknesses in security upon boot and be able to exploit them.','','Run the following commands to set permissions on your grub configuration: # chown root:root /boot/grub/grub.cfg # chmod u-wx,go-rwx /boot/grub/grub.cfg.','[{\"cis\": [\"1.4.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"TA0005\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29530,'Ensure authentication required for single user mode.','Single user mode is used for recovery when the system detects an issue during boot or by manual selection from the bootloader.','Requiring authentication in single user mode prevents an unauthorized user from rebooting the system into single user to gain root privileges without credentials.','','Run the following command and follow the prompts to set a password for the root user: # passwd root.','[{\"cis\": [\"1.4.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29531,'Ensure prelink is not installed.','prelink is a program that modifies ELF shared libraries and ELF dynamically linked binaries in such a way that the time needed for the dynamic linker to perform relocations at startup significantly decreases.','The prelinking feature can interfere with the operation of AIDE, because it changes binaries. Prelinking can also increase the vulnerability of the system if a malicious user is able to compromise a common library such as libc.','','Run the following command to restore binaries to normal: # prelink -ua . Uninstall prelink using the appropriate package manager or manual installation: # apt purge prelink.','[{\"cis\": [\"1.5.2\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"pci_dss_3.2.1\": [\"10.2.1\", \"11.5\"]}, {\"pci_dss_4.0\": [\"10.2.1\", \"10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1055\", \"T1055.009\", \"T1065\", \"T1065.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}]'),(29532,'Ensure Automatic Error Reporting is not enabled.','The Apport Error Reporting Service automatically generates crash reports for debugging.','Apport collects potentially sensitive data, such as core dumps, stack traces, and log files. They can contain passwords, credit card numbers, serial numbers, and other private material.','','Edit /etc/default/apport and add or edit the enabled parameter to equal 0: enabled=0 Run the following commands to stop and disable the apport service # systemctl stop apport.service # systemctl --now disable apport.service -- OR -- Run the following command to remove the apport package: # apt purge apport.','[{\"cis\": [\"1.5.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}]'),(29533,'Ensure core dumps are restricted.','A core dump is the memory of an executable program. It is generally used to determine why a program aborted. It can also be used to glean confidential information from a core file. The system provides the ability to set a soft limit for core dumps, but this can be overridden by the user.','Setting a hard limit on core dumps prevents users from overriding the soft variable. If core dumps are required, consider setting limits for user groups (see limits.conf(5) ). In addition, setting the fs.suid_dumpable variable to 0 will prevent setuid programs from dumping core.','','Add the following line to /etc/security/limits.conf or a /etc/security/limits.d/* file: * hard core 0. Set the following parameter in /etc/sysctl.conf or a /etc/sysctl.d/* file: fs.suid_dumpable = 0. Run the following command to set the active kernel parameter: # sysctl -w fs.suid_dumpable=0. IF systemd-coredump is installed: edit /etc/systemd/coredump.conf and add/modify the following lines: Storage=none ProcessSizeMax=0. Run the command: systemctl daemon-reload.','[{\"cis\": [\"1.5.4\"]}, {\"mitre_techniques\": [\"T1005\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29534,'Ensure AppArmor is installed.','AppArmor provides Mandatory Access Controls.','Without a Mandatory Access Control system installed only the default Discretionary Access Control system will be available.','','Install AppArmor. # apt install apparmor apparmor-utils.','[{\"cis\": [\"1.6.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29535,'Ensure AppArmor is enabled in the bootloader configuration.','Configure AppArmor to be enabled at boot time and verify that it has not been overwritten by the bootloader boot parameters. Note: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings.','AppArmor must be enabled at boot time in your bootloader configuration to ensure that the controls it provides are not overridden.','','Edit /etc/default/grub and add the apparmor=1 and security=apparmor parameters to the GRUB_CMDLINE_LINUX= line GRUB_CMDLINE_LINUX="apparmor=1 security=apparmor". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"1.6.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29536,'Ensure all AppArmor Profiles are in enforce or complain mode.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* OR Run the following command to set all profiles to complain mode: # aa-complain /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29537,'Ensure all AppArmor Profiles are enforcing.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29538,'Ensure message of the day is configured properly.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a ." command once they have logged in.','','Edit the /etc/motd file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform OR If the motd is not used, this file can be removed. Run the following command to remove the motd file: # rm /etc/motd.','[{\"cis\": [\"1.7.1\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29539,'Ensure local login warning banner is configured properly.','The contents of the /etc/issue file are displayed to users prior to login for local terminals. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a ." command once they have logged in.','','Edit the /etc/issue file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , or v , or references to the OS platform # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue.','[{\"cis\": [\"1.7.2\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29540,'Ensure remote login warning banner is configured properly.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the "uname -a" command once they have logged in.','','Edit the /etc/issue.net file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , or v or references to the OS platform: # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue.net.','[{\"cis\": [\"1.7.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29541,'Ensure permissions on /etc/motd are configured.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users.','If the /etc/motd file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/motd: # chown root:root $(readlink -e /etc/motd) # chmod u-x,go-wx $(readlink -e /etc/motd) OR run the following command to remove the /etc/motd file: # rm /etc/motd.','[{\"cis\": [\"1.7.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29542,'Ensure permissions on /etc/issue are configured.','The contents of the /etc/issue file are displayed to users prior to login for local terminals.','If the /etc/issue file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue : # chown root:root $(readlink -e /etc/issue) # chmod u-x,go-wx $(readlink -e /etc/issue).','[{\"cis\": [\"1.7.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29543,'Ensure permissions on /etc/issue.net are configured.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services.','If the /etc/issue.net file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue.net : # chown root:root $(readlink -e /etc/issue.net) # chmod u-x,go-wx $(readlink -e /etc/issue.net).','[{\"cis\": [\"1.7.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29544,'Ensure GNOME Display Manager is removed.','The GNOME Display Manager (GDM) is a program that manages graphical display servers and handles graphical user logins.','If a Graphical User Interface (GUI) is not required, it should be removed to reduce the attack surface of the system.','Removing the GNOME Display manager will remove the Graphical User Interface (GUI) from the system.','Run the following command to uninstall gdm3: # apt purge gdm3.','[{\"cis\": [\"1.8.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0002\"]}]'),(29545,'Ensure XDCMP is not enabled.','X Display Manager Control Protocol (XDMCP) is designed to provide authenticated access to display management services for remote displays.','XDMCP is inherently insecure. XDMCP is not a ciphered protocol. This may allow an attacker to capture keystrokes entered by a user XDMCP is vulnerable to man-in-the-middle attacks. This may allow an attacker to steal the credentials of legitimate users by impersonating the XDMCP server.','','Edit the file /etc/gdm3/custom.conf and remove the line: Enable=true.','[{\"cis\": [\"1.8.10\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1040\", \"T1056\", \"T1056.001\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}]'),(29546,'Ensure updates, patches, and additional security software are installed.','Periodically patches are released for included software either due to security flaws or to include additional functionality.','Newer patches may contain security enhancements that would not be available through the latest full update. As a result, it is recommended that the latest software patches be used to take advantage of the latest functionality. As with any software installation, organizations need to determine if a given update meets their requirements and verify the compatibility and supportability of any additional software against the update revision that is selected.','','Run the following command to update all packages following local site policy guidance on applying updates and patches: # apt upgrade OR # apt dist-upgrade.','[{\"cis\": [\"1.9\"]}, {\"cis_csc_v8\": [\"7.3\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"pci_dss_3.2.1\": [\"6.2\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"soc_2\": [\"CC7.1\"]}]'),(29547,'Ensure chrony is running as user _chrony.','The chrony package is installed with a dedicated user account _chrony. This account is granted the access required by the chronyd service.','The chronyd service should run with only the required privileges.','','Add or edit the user line to /etc/chrony/chrony.conf or a file ending in .conf in /etc/chrony/conf.d/: user _chrony OR If another time synchronization service is in use on the system, run the following command to remove chrony from the system: # apt purge chrony.','[{\"cis\": [\"2.1.2.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29548,'Ensure chrony is enabled and running.','chrony is a daemon for synchronizing the system clock across the network.','chrony needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF chrony is in use on the system, run the following commands: Run the following command to unmask chrony.service: # systemctl unmask chrony.service. Run the following command to enable and start chrony.service: # systemctl --now enable chrony.service OR If another time synchronization service is in use on the system, run the following command to remove chrony: # apt purge chrony.','[{\"cis\": [\"2.1.2.3\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29549,'Ensure systemd-timesyncd configured with authorized timeserver.','- NTP= > A space-separated list of NTP server host names or IP addresses. During runtime this list is combined with any per-interface NTP servers acquired from systemd-networkd.service(8). systemd-timesyncd will contact all configured system or per-interface servers in turn, until one responds. When the empty string is assigned, the list of NTP servers is reset, and all prior assignments will have no effect. This setting defaults to an empty list. - FallbackNTP= > A space-separated list of NTP server host names or IP addresses to be used as the fallback NTP servers. Any per-interface NTP servers obtained from systemd-networkd.service(8) take precedence over this setting, as do any servers set via NTP= above. This setting is hence only relevant if no other NTP server information is known. When the empty string is assigned, the list of NTP servers is reset, and all prior assignments will have no effect. If this option is not given, a compiled-in list of NTP servers is used.','Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','Edit or create a file in /etc/systemd/timesyncd.conf.d ending in .conf and add the NTP= and/or FallbackNTP= lines to the [Time] section: Example: [Time] NTP=time.nist.gov # Uses the generic name for NIST's time servers -AND/OR- FallbackNTP=time-a-g.nist.gov time-b-g.nist.gov time-c-g.nist.gov # Space separated list of NIST time servers Note: Servers added to these line(s) should follow local site policy. NIST servers are for example. The timesyncd.conf.d directory may need to be created. Example script: The following example script will create the systemd-timesyncd drop-in configuration snippet: #!/usr/bin/env bash ntp_ts="time.nist.gov" ntp_fb="time-a-g.nist.gov time-b-g.nist.gov time-c-g.nist.gov" disfile="/etc/systemd/timesyncd.conf.d/50-timesyncd.conf" if ! find /etc/systemd -type f -name '*.conf' -exec grep -Ph '^h*NTP=H+' {} +; then [ ! -d /etc/systemd/timesyncd.conf.d ] && mkdir /etc/systemd/timesyncd.conf.d ! grep -Pqs '^h*[Time]' "$disfile" && echo "[Time]" >> "$disfile" echo "NTP=$ntp_ts" >> "$disfile" fi if ! find /etc/systemd -type f -name '*.conf' -exec grep -Ph '^h*FallbackNTP=H+' {} +; then [ ! -d /etc/systemd/timesyncd.conf.d ] && mkdir /etc/systemd/timesyncd.conf.d ! grep -Pqs '^h*[Time]' "$disfile" && echo "[Time]" >> "$disfile" echo "FallbackNTP=$ntp_fb" >> "$disfile" fi Run the following command to reload the systemd-timesyncd configuration: # systemctl try-reload-or-restart systemd-timesyncd OR If another time synchronization service is in use on the system, run the following command to stop and mask systemd-timesyncd: # systemctl --now mask systemd-timesyncd.','[{\"cis\": [\"2.1.3.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29550,'Ensure systemd-timesyncd is enabled and running.','systemd-timesyncd is a daemon that has been added for synchronizing the system clock across the network.','systemd-timesyncd needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF systemd-timesyncd is in use on the system, run the following commands: Run the following command to unmask systemd-timesyncd.service: # systemctl unmask systemd-timesyncd.service. Run the following command to enable and start systemd-timesyncd.service: # systemctl --now enable systemd-timesyncd.service OR If another time synchronization service is in use on the system, run the following command to stop and mask systemd-timesyncd: # systemctl --now mask systemd-timesyncd.service.','[{\"cis\": [\"2.1.3.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29551,'Ensure ntp access control is configured.','ntp Access Control Commands: restrict address [mask mask] [ippeerlimit int] [flag ...]. The address argument expressed in dotted-quad form is the address of a host or network. Alternatively, the address argument can be a valid host DNS name. The mask argument expressed in dotted-quad form defaults to 255.255.255.255, meaning that the address is treated as the address of an individual host. A default entry (address 0.0.0.0, mask 0.0.0.0) is always included and is always the first entry in the list. Note: the text string default, with no mask option, may be used to indicate the default entry. The ippeerlimit directive limits the number of peer requests for each IP to int, where a value of -1 means "unlimited", the current default. A value of 0 means "none". There would usually be at most 1 peering request per IP, but if the remote peering requests are behind a proxy there could well be more than 1 per IP. In the current implementation, flag always restricts access, i.e., an entry with no flags indicates that free access to the server is to be given. The flags are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags can generally be classed into two categories, those which restrict time service and those which restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified: - kod - If this flag is set when an access violation occurs, a kiss-of-death (KoD) packet is sent. KoD packets are rate limited to no more than one per second. If another KoD packet occurs within one second after the last one, the packet is dropped. - limited - Deny service if the packet spacing violates the lower limits specified in the discard command. A history of clients is kept using the monitoring capability of ntpd. Thus, monitoring is always active as long as there is a restriction entry with the limited flag. - lowpriotrap - Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps. - noepeer - Deny ephemeral peer requests, even if they come from an authenticated source. Note that the ability to use a symmetric key for authentication may be restricted to one or more IPs or subnets via the third field of the ntp.keys file. This restriction is not enabled by default, to maintain backward compatibility. Expect noepeer to become the default in ntp-4.4. - nomodify - Deny ntpq and ntpdc queries which attempt to modify the state of the server (i.e., run time reconfiguration). Queries which return information are permitted. - noquery - Deny ntpq and ntpdc queries. Time service is not affected. - nopeer - Deny unauthenticated packets which would result in mobilizing a new association. This includes broadcast and symmetric active packets when a configured association does not exist. It also includes pool associations, so if you want to use servers from a pool directive and also want to use nopeer by default, you'll want a restrict source ... line as well that does not include the nopeer directive. - noserve - Deny all packets except ntpq and ntpdc queries. - notrap - Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the ntpq control message protocol which is intended for use by remote event logging programs. - notrust - Deny service unless the packet is cryptographically authenticated. - ntpport - This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both ntpport and non-ntpport may be specified. The ntpport is considered more specific and is sorted later in the list.','If ntp is in use on the system, proper configuration is vital to ensuring time synchronization is accurate.','','Add or edit restrict lines in /etc/ntp.conf to match the following: restrict -4 default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp.','[{\"cis\": [\"2.1.4.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29552,'Ensure ntp is configured with authorized timeserver.','The various modes are determined by the command keyword and the type of the required IP address. Addresses are classed by type as (s) a remote server or peer (IPv4 class A, B and C), (b) the broadcast address of a local interface, (m) a multicast address (IPv4 class D), or (r) a reference clock address (127.127.x.x). Note: That only those options applicable to each command are listed below. Use of options not listed may not be caught as an error, but may result in some weird and even destructive behavior. If the Basic Socket Interface Extensions for IPv6 (RFC-2553) is detected, support for the IPv6 address family is generated in addition to the default support of the IPv4 address family. In a few cases, including the reslist billboard generated by ntpq or ntpdc, IPv6 addresses are automatically generated. IPv6 addresses can be identified by the presence of colons ":" in the address field. IPv6 addresses can be used almost everywhere where IPv4 addresses can be used, with the exception of reference clock addresses, which are always IPv4. Note: In contexts where a host name is expected, a -4 qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a -6 qualifier forces DNS resolution to the IPv6 namespace. See IPv6 references for the equivalent classes for that address family. - pool - For type s addresses, this command mobilizes a persistent client mode association with a number of remote servers. In this mode the local clock can synchronized to the remote server, but the remote server can never be synchronized to the local clock. - server - For type s and r addresses, this command mobilizes a persistent client mode association with the specified remote server or local radio clock. In this mode the local clock can synchronized to the remote server, but the remote server can never be synchronized to the local clock. This command should not be used for type b or m addresses.','Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','Edit /etc/ntp.conf and add or edit server or pool lines as appropriate according to local site policy: <[server|pool]> <[remote-server|remote-pool]> Examples: pool mode: pool time.nist.gov iburst. server mode: server time-a-g.nist.gov iburst server 132.163.97.3 iburst server time-d-b.nist.gov iburst Run the following command to load the updated time sources into ntp running config: # systemctl restart ntp OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp.','[{\"cis\": [\"2.1.4.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1498\", \"T1498.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29553,'Ensure ntp is running as user ntp.','The ntp package is installed with a dedicated user account ntp. This account is granted the access required by the ntpd daemon. Note: - If chrony or systemd-timesyncd are used, ntp should be removed and this section skipped. - This recommendation only applies if ntp is in use on the system. - Only one time synchronization method should be in use on the system.','The ntpd daemon should run with only the required privilege.','','Add or edit the following line in /etc/init.d/ntp: RUNASUSER=ntp. Run the following command to restart ntp.service: # systemctl restart ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp.','[{\"cis\": [\"2.1.4.3\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29554,'Ensure ntp is enabled and running.','ntp is a daemon for synchronizing the system clock across the network.','ntp needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF ntp is in use on the system, run the following commands: Run the following command to unmask ntp.service: # systemctl unmask ntp.service Run the following command to enable and start ntp.service: # systemctl --now enable ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp: # apt purge ntp.','[{\"cis\": [\"2.1.4.4\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29555,'Ensure X Window System is not installed.','The X Window System provides a Graphical User Interface (GUI) where users can have multiple windows in which to run programs and various add on. The X Windows system is typically used on workstations where users login, but not on servers where users typically do not login.','Unless your organization specifically requires graphical login access via X Windows, remove it to reduce the potential attack surface.','Many Linux systems run applications which require a Java runtime. Some Linux Java packages have a dependency on specific X Windows xorg-x11-fonts. One workaround to avoid this dependency is to use the "headless" Java packages for your specific Java runtime, if provided by your distribution.','Remove the X Windows System packages: apt purge xserver-xorg*.','[{\"cis\": [\"2.2.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29556,'Ensure Avahi Server is not installed.','Avahi is a free zeroconf implementation, including a system for multicast DNS/DNS-SD service discovery. Avahi allows programs to publish and discover services and hosts running on a local network with no specific configuration. For example, a user can plug a computer into a network and Avahi automatically finds printers to print to, files to look at and people to talk to, as well as network services running on the machine.','Automatic discovery of network services is not normally required for system functionality. It is recommended to remove this package to reduce the potential attack surface.','','Run the following commands to remove avahi-daemon: # systemctl stop avahi-daaemon.service # systemctl stop avahi-daemon.socket # apt purge avahi-daemon.','[{\"cis\": [\"2.2.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29557,'Ensure CUPS is not installed.','The Common Unix Print System (CUPS) provides the ability to print to both local and network printers. A system running CUPS can also accept print jobs from remote systems and print them to local printers. It also provides a web based remote administration capability.','If the system does not need to print jobs or accept print jobs from other systems, it is recommended that CUPS be removed to reduce the potential attack surface.','Removing CUPS will prevent printing from the system, a common task for workstation systems.','Run one of the following commands to remove cups: # apt purge cups.','[{\"cis\": [\"2.2.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29558,'Ensure DHCP Server is not installed.','The Dynamic Host Configuration Protocol (DHCP) is a service that allows machines to be dynamically assigned IP addresses.','Unless a system is specifically set up to act as a DHCP server, it is recommended that this package be removed to reduce the potential attack surface.','','Run the following command to remove isc-dhcp-server: # apt purge isc-dhcp-server.','[{\"cis\": [\"2.2.4\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29559,'Ensure LDAP server is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP server, it is recommended that the software be removed to reduce the potential attack surface.','','Run one of the following commands to remove slapd: # apt purge slapd.','[{\"cis\": [\"2.2.5\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29560,'Ensure NFS is not installed.','The Network File System (NFS) is one of the first and most widely distributed file systems in the UNIX environment. It provides the ability for systems to mount file systems of other servers through the network.','If the system does not export NFS shares, it is recommended that the nfs-kernel-server package be removed to reduce the remote attack surface.','','Run the following command to remove nfs: # apt purge nfs-kernel-server.','[{\"cis\": [\"2.2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}]'),(29561,'Ensure DNS Server is not installed.','The Domain Name System (DNS) is a hierarchical naming system that maps names to IP addresses for computers, services and other resources connected to a network.','Unless a system is specifically designated to act as a DNS server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following commands to disable DNS server: # apt purge bind9.','[{\"cis\": [\"2.2.7\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29562,'Ensure FTP Server is not installed.','The File Transfer Protocol (FTP) provides networked computers with the ability to transfer files.','FTP does not protect the confidentiality of data or authentication credentials. It is recommended SFTP be used if file transfer is required. Unless there is a need to run the system as a FTP server (for example, to allow anonymous downloads), it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove vsftpd: # apt purge vsftpd.','[{\"cis\": [\"2.2.8\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29563,'Ensure HTTP server is not installed.','HTTP or web servers provide the ability to host web site content.','Unless there is a need to run the system as a web server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove apache: # apt purge apache2.','[{\"cis\": [\"2.2.9\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29564,'Ensure IMAP and POP3 server are not installed.','dovecot-imapd and dovecot-pop3d are an open source IMAP and POP3 server for Linux based systems.','Unless POP3 and/or IMAP servers are to be provided by this system, it is recommended that the package be removed to reduce the potential attack surface.','','Run one of the following commands to remove dovecot-imapd and dovecot-pop3d: # apt purge dovecot-imapd dovecot-pop3d.','[{\"cis\": [\"2.2.10\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29565,'Ensure Samba is not installed.','The Samba daemon allows system administrators to configure their Linux systems to share file systems and directories with Windows desktops. Samba will advertise the file systems and directories via the Server Message Block (SMB) protocol. Windows desktop users will be able to mount these directories and file systems as letter drives on their systems.','If there is no need to mount directories and file systems to Windows systems, then this service should be deleted to reduce the potential attack surface.','','Run the following command to remove samba: # apt purge samba.','[{\"cis\": [\"2.2.11\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1005\", \"T1039\", \"T1083\", \"T1135\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}]'),(29566,'Ensure HTTP Proxy Server is not installed.','Squid is a standard proxy server used in many distributions and environments.','If there is no need for a proxy server, it is recommended that the squid proxy be deleted to reduce the potential attack surface.','','Run the following command to remove squid: # apt purge squid.','[{\"cis\": [\"2.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29567,'Ensure SNMP Server is not installed.','Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment, computer equipment and devices like UPSs. Net-SNMP is a suite of applications used to implement SNMPv1 (RFC 1157), SNMPv2 (RFCs 1901-1908), and SNMPv3 (RFCs 3411-3418) using both IPv4 and IPv6. Support for SNMPv2 classic (a.k.a. "SNMPv2 historic" - RFCs 1441-1452) was dropped with the 4.0 release of the UCD-snmp package. The Simple Network Management Protocol (SNMP) server is used to listen for SNMP commands from an SNMP management system, execute the commands or collect the information and then send results back to the requesting system.','The SNMP server can communicate using SNMPv1, which transmits data in the clear and does not require authentication to execute commands. SNMPv3 replaces the simple/clear text password sharing used in SNMPv2 with more securely encoded parameters. If the the SNMP service is not required, the net-snmp package should be removed to reduce the attack surface of the system. Note: If SNMP is required: - The server should be configured for SNMP v3 only. User Authentication and Message Encryption should be configured. - If SNMP v2 is absolutely necessary, modify the community strings' values.','','Run the following command to remove snmp: # apt purge snmp.','[{\"cis\": [\"2.2.13\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29568,'Ensure NIS Server is not installed.','The Network Information Service (NIS) (formally known as Yellow Pages) is a client-server directory service protocol for distributing system configuration files. The NIS server is a collection of programs that allow for the distribution of configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed and other, more secure services be used.','','Run the following command to remove nis: # apt purge nis.','[{\"cis\": [\"2.2.14\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29569,'Ensure mail transfer agent is configured for local-only mode.','Mail Transfer Agents (MTA), such as sendmail and Postfix, are used to listen for incoming mail and transfer the messages to the appropriate user or mail server. If the system is not intended to be a mail server, it is recommended that the MTA be configured to only process local mail.','The software for all Mail Transfer Agents is complex and most have a long history of security issues. While it is important to ensure that the system can process local mail messages, it is not necessary to have the MTA's daemon listening on a port unless the server is intended to be a mail server that receives and processes mail from other systems. Note: This recommendation is designed around the postfix mail server. Depending on your environment you may have an alternative MTA installed such as exim4. If this is the case consult the documentation for your installed MTA to configure the recommended state.','','Edit /etc/postfix/main.cf and add the following line to the RECEIVING MAIL section. If the line already exists, change it to look like the line below: inet_interfaces = loopback-only. Run the following command to restart postfix: # systemctl restart postfix.','[{\"cis\": [\"2.2.15\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29570,'Ensure rsync service is either not installed or masked.','The rsync service can be used to synchronize files between systems over network links.','The rsync service presents a security risk as it uses unencrypted protocols for communication. The rsync package should be removed to reduce the attack area of the system.','','Run the following command to remove rsync: # apt purge rsync OR Run the following commands to stop and mask rsync: # systemctl stop rsync # systemctl mask rsync.','[{\"cis\": [\"2.2.16\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1105\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\", \"T1570\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29571,'Ensure NIS Client is not installed.','The Network Information Service (NIS), formerly known as Yellow Pages, is a client-server directory service protocol used to distribute system configuration files. The NIS client was used to bind a machine to an NIS server and receive the distributed configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall nis: # apt purge nis.','[{\"cis\": [\"2.3.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29572,'Ensure rsh client is not installed.','The rsh-client package contains the client commands for the rsh services.','These legacy clients contain numerous security exposures and have been replaced with the more secure SSH package. Even if the server is removed, it is best to ensure the clients are also removed to prevent users from inadvertently attempting to use these commands and therefore exposing their credentials. Note that removing the rsh package removes the clients for rsh, rcp and rlogin.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall rsh: # apt purge rsh-client.','[{\"cis\": [\"2.3.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(29573,'Ensure talk client is not installed.','The talk software makes it possible for users to send and receive messages across systems through a terminal session. The talk client, which allows initialization of talk sessions, is installed by default.','The software presents a security risk as it uses unencrypted protocols for communication.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall talk: # apt purge talk.','[{\"cis\": [\"2.3.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(29574,'Ensure telnet client is not installed.','The telnet package contains the telnet client, which allows users to start connections to other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow an unauthorized user to steal credentials. The ssh package provides an encrypted session and stronger security and is included in most Linux distributions.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall telnet: # apt purge telnet.','[{\"cis\": [\"2.3.4\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(29575,'Ensure LDAP client is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP client, it is recommended that the software be removed to reduce the potential attack surface.','Removing the LDAP client will prevent or inhibit using LDAP for authentication in your environment.','Uninstall ldap-utils: # apt purge ldap-utils.','[{\"cis\": [\"2.3.5\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29576,'Ensure RPC is not installed.','Remote Procedure Call (RPC) is a method for creating low level client server applications across different system architectures. It requires an RPC compliant client listening on a network port. The supporting package is rpcbind.','If RPC is not required, it is recommended that this services be removed to reduce the remote attack surface.','','Run the following command to remove rpcbind: # apt purge rpcbind.','[{\"cis\": [\"2.3.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29577,'Ensure ufw is installed.','The Uncomplicated Firewall (ufw) is a frontend for iptables and is particularly well-suited for host-based firewalls. ufw provides a framework for managing netfilter, as well as a command-line interface for manipulating the firewall.','A firewall utility is required to configure the Linux kernel's netfilter framework via the iptables or nftables back-end. The Linux kernel's netfilter framework host-based firewall can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host. Note: Only one firewall utility should be installed and configured. UFW is dependent on the iptables package.','','Run the following command to install Uncomplicated Firewall (UFW): # apt install ufw.','[{\"cis\": [\"3.5.1.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29578,'Ensure iptables-persistent is not installed with ufw.','The iptables-persistent is a boot-time loader for netfilter rules, iptables plugin.','Running both ufw and the services included in the iptables-persistent package may lead to conflict.','','Run the following command to remove the iptables-persistent package: # apt purge iptables-persistent.','[{\"cis\": [\"3.5.1.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29579,'Ensure ufw service is enabled.','UncomplicatedFirewall (ufw) is a frontend for iptables. ufw provides a framework for managing netfilter, as well as a command-line and available graphical user interface for manipulating the firewall. Notes: - When running ufw enable or starting ufw via its initscript, ufw will flush its chains. This is required so ufw can maintain a consistent state, but it may drop existing connections (eg ssh). ufw does support adding rules before enabling the firewall. - Run the following command before running ufw enable. # ufw allow proto tcp from any to any port 22. - The rules will still be flushed, but the ssh port will be open after enabling the firewall. Please note that once ufw is 'enabled', ufw will not flush the chains when adding or removing rules (but will when modifying a rule or changing the default policy). - By default, ufw will prompt when enabling the firewall while running under ssh. This can be disabled by using ufw --force enable.','The ufw service must be enabled and running in order for ufw to protect the system.','Changing firewall settings while connected over network can result in being locked out of the system.','Run the following command to unmask the ufw daemon: # systemctl unmask ufw.service. Run the following command to enable and start the ufw daemon: # systemctl --now enable ufw.service active Run the following command to enable ufw: # ufw enable.','[{\"cis\": [\"3.5.1.3\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29580,'Ensure ufw loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6).','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ufw allow in on lo # ufw allow out on lo # ufw deny in from 127.0.0.0/8 # ufw deny in from ::1.','[{\"cis\": [\"3.5.1.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29581,'Ensure ufw default deny firewall policy.','A default deny policy on connections ensures that any unconfigured network usage will be rejected. Note: Any port or protocol without a explicit allow before the default deny will be blocked.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','Any port and protocol not explicitly allowed will be blocked. The following rules should be considered before applying the default deny. ufw allow git, ufw allow in http, ufw allow out http <- required for apt to connect to repository, ufw allow in https, ufw allow out https, ufw allow out 53, ufw logging on.','Run the following commands to implement a default deny policy: # ufw default deny incoming # ufw default deny outgoing # ufw default deny routed.','[{\"cis\": [\"3.5.1.7\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29582,'Ensure nftables is installed.','nftables provides a new in-kernel packet classification framework that is based on a network-specific Virtual Machine (VM) and a new nft userspace command line tool. nftables reuses the existing Netfilter subsystems such as the existing hook infrastructure, the connection tracking system, NAT, userspace queuing and logging subsystem. Notes: - nftables is available in Linux kernel 3.13 and newer. - Only one firewall utility should be installed and configured. - Changing firewall settings while connected over the network can result in being locked out of the system.','nftables is a subsystem of the Linux kernel that can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host.','','Run the following command to install nftables: # apt install nftables.','[{\"cis\": [\"3.5.2.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29583,'Ensure ufw is uninstalled or disabled with nftables.','Uncomplicated Firewall (UFW) is a program for managing a netfilter firewall designed to be easy to use.','Running both the nftables service and ufw may lead to conflict and unexpected results.','','Run one of the following commands to either remove ufw or disable ufw. Run the following command to remove ufw: # apt purge ufw. Run the following command to disable ufw: # ufw disable.','[{\"cis\": [\"3.5.2.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29584,'Ensure iptables are flushed with nftables.','nftables is a replacement for iptables, ip6tables, ebtables and arptables.','It is possible to mix iptables and nftables. However, this increases complexity and also the chance to introduce errors. For simplicity flush out all iptables rules, and ensure it is not loaded.','','Run the following commands to flush iptables: For iptables: # iptables -F For ip6tables: # ip6tables -F.','[{\"cis\": [\"3.5.2.3\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29585,'Ensure a nftables table exists.','Tables hold chains. Each table only has one address family and only applies to packets of this family. Tables can have one of five families.','nftables doesn't have any default tables. Without a table being build, nftables will not filter network traffic.','Adding rules to a running nftables can cause loss of connectivity to the system.','Run the following command to create a table in nftables: # nft create table inet <table name> Example: # nft create table inet filter.','[{\"cis\": [\"3.5.2.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29586,'Ensure nftables base chains exist.','Chains are containers for rules. They exist in two kinds, base chains and regular chains. A base chain is an entry point for packets from the networking stack, a regular chain may be used as jump target and is used for better rule organization.','If a base chain doesn't exist with a hook for input, forward, and delete, packets that would flow through those chains will not be touched by nftables.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command to create the base chains: # nft create chain inet <table name> <base chain name> { type filter hook <(input|forward|output)> priority 0 ; }. Example: # nft create chain inet filter input { type filter hook input priority 0 ; } # nft create chain inet filter forward { type filter hook forward priority 0 ; } # nft create chain inet filter output { type filter hook output priority 0 ; }.','[{\"cis\": [\"3.5.2.5\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29587,'Ensure nftables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # nft add rule inet filter input iif lo accept # nft create rule inet filter input ip saddr 127.0.0.0/8 counter drop. IF IPv6 is enabled on the system: Run the following command to implement the IPv6 loopback rule: # nft add rule inet filter input ip6 saddr ::1 counter drop.','[{\"cis\": [\"3.5.2.6\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29588,'Ensure nftables default deny firewall policy.','Base chain policy is the default verdict that will be applied to packets reaching the end of the chain.','There are two policies: accept (Default) and drop. If the policy is set to accept, the firewall will accept any packet that is not configured to be denied and the packet will continue transversing the network stack. It is easier to white list acceptable usage than to black list unacceptable usage. Note: Changing firewall settings while connected over network can result in being locked out of the system.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command for the base chains with the input, forward, and output hooks to implement a default DROP policy: # nft chain <table family> <table name> <chain name> { policy drop ; }. Example: # nft chain inet filter input { policy drop ; } # nft chain inet filter forward { policy drop ; } # nft chain inet filter output { policy drop ; }.','[{\"cis\": [\"3.5.2.8\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29589,'Ensure nftables service is enabled.','The nftables service allows for the loading of nftables rulesets during boot, or starting on the nftables service.','The nftables service restores the nftables rules from the rules files referenced in the /etc/nftables.conf file during boot or the starting of the nftables service.','','Run the following command to enable the nftables service: # systemctl enable nftables.','[{\"cis\": [\"3.5.2.9\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29590,'Ensure iptables packages are installed.','iptables is a utility program that allows a system administrator to configure the tables provided by the Linux kernel firewall, implemented as different Netfilter modules, and the chains and rules it stores. Different kernel modules and programs are used for different protocols; iptables applies to IPv4, ip6tables to IPv6, arptables to ARP, and ebtables to Ethernet frames.','A method of configuring and maintaining firewall rules is necessary to configure a Host Based Firewall.','','Run the following command to install iptables and iptables-persistent # apt install iptables iptables-persistent.','[{\"cis\": [\"3.5.3.1.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29591,'Ensure nftables is not installed with iptables.','nftables is a subsystem of the Linux kernel providing filtering and classification of network packets/datagrams/frames and is the successor to iptables.','Running both iptables and nftables may lead to conflict.','','Run the following command to remove nftables: # apt purge nftables.','[{\"cis\": [\"3.5.3.1.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}]'),(29592,'Ensure ufw is uninstalled or disabled with iptables.','Uncomplicated Firewall (UFW) is a program for managing a netfilter firewall designed to be easy to use. - Uses a command-line interface consisting of a small number of simple commands. - Uses iptables for configuration.','Running iptables.persistent with ufw enabled may lead to conflict and unexpected results.','','Run one of the following commands to either remove ufw or stop and mask ufw Run the following command to remove ufw: # apt purge ufw OR Run the following commands to disable ufw: # ufw disable # systemctl stop ufw # systemctl mask ufw.','[{\"cis\": [\"3.5.3.1.3\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}]'),(29593,'Ensure iptables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Notes: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.2.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29594,'Ensure iptables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8). Notes: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # iptables -A INPUT -i lo -j ACCEPT # iptables -A OUTPUT -o lo -j ACCEPT # iptables -A INPUT -s 127.0.0.0/8 -j DROP.','[{\"cis\": [\"3.5.3.2.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29595,'Ensure ip6tables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Note: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # ip6tables -P INPUT DROP # ip6tables -P OUTPUT DROP # ip6tables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.3.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29596,'Ensure ip6tables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (::1). Note: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (::1) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ip6tables -A INPUT -i lo -j ACCEPT # ip6tables -A OUTPUT -o lo -j ACCEPT # ip6tables -A INPUT -s ::1 -j DROP.','[{\"cis\": [\"3.5.3.3.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29597,'Ensure auditd is installed.','auditd is the userspace component to the Linux Auditing System. It's responsible for writing audit records to the disk.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to Install auditd: # apt install auditd audispd-plugins.','[{\"cis\": [\"4.1.1.1\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29598,'Ensure auditd service is enabled and active.','Turn on the auditd daemon to record system events.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to enable and start auditd: # systemctl --now enable auditd.','[{\"cis\": [\"4.1.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29599,'Ensure auditing for processes that start prior to auditd is enabled.','Configure grub2 so that processes that are capable of being audited can be audited even if they start up prior to auditd startup.','Audit events need to be captured on processes that start up prior to auditd , so that potential malicious activity cannot go undetected.','','Edit /etc/default/grub and add audit=1 to GRUB_CMDLINE_LINUX: Example: GRUB_CMDLINE_LINUX="audit=1". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"4.1.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29600,'Ensure audit_backlog_limit is sufficient.','In the kernel-level audit subsystem, a socket buffer queue is used to hold audit events. Whenever a new audit event is received, it is logged and prepared to be added to this queue. The kernel boot parameter audit_backlog_limit=N, with N representing the amount of messages, will ensure that a queue cannot grow beyond a certain size. If an audit event is logged which would grow the queue beyond this limit, then a failure occurs and is handled according to the system configuration.','If an audit event is logged which would grow the queue beyond the audit_backlog_limit, then a failure occurs, auditd records will be lost, and potential malicious activity could go undetected.','','Edit /etc/default/grub and add audit_backlog_limit=N to GRUB_CMDLINE_LINUX. The recommended size for N is 8192 or larger. Example: GRUB_CMDLINE_LINUX="audit_backlog_limit=8192". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"4.1.1.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29601,'Ensure audit log storage size is configured.','Configure the maximum size of the audit log file. Once the log reaches the maximum size, it will be rotated and a new log file will be started.','It is important that an appropriate size is determined for log files so that they do not impact the system and audit data is not lost.','','Set the following parameter in /etc/audit/auditd.conf in accordance with site policy: max_log_file = <MB>.','[{\"cis\": [\"4.1.2.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(29602,'Ensure audit logs are not automatically deleted.','The max_log_file_action setting determines how to handle the audit log file reaching the max file size. A value of keep_logs will rotate the logs but never delete old logs.','In high security contexts, the benefits of maintaining a long audit history exceed the cost of storing the audit history.','','Set the following parameter in /etc/audit/auditd.conf: max_log_file_action = keep_logs.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(29603,'Ensure system is disabled when audit logs are full.','The auditd daemon can be configured to halt the system when the audit logs are full. The admin_space_left_action parameter tells the system what action to take when the system has detected that it is low on disk space. Valid values are ignore, syslog, suspend, single, and halt. - ignore, the audit daemon does nothing. - Syslog, the audit daemon will issue a warning to syslog. - Suspend, the audit daemon will stop writing records to the disk. - single, the audit daemon will put the computer system in single user mode. - halt, the audit daemon will shutdown the system.','In high security contexts, the risk of detecting unauthorized access or nonrepudiation exceeds the benefit of the system's availability.','If the admin_space_left_action parameter is set to halt the audit daemon will shutdown the system when the disk partition containing the audit logs becomes full.','Set the following parameters in /etc/audit/auditd.conf: space_left_action = email action_mail_acct = root set admin_space_left_action to either halt or single in /etc/audit/auditd.conf. Example: admin_space_left_action = halt.','[{\"cis\": [\"4.1.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29604,'Ensure changes to system administration scope (sudoers) is collected.','Monitor scope changes for system administrators. If the system has been properly configured to force system administrators to log in as themselves first and then use the sudo command to execute privileged commands, it is possible to monitor changes in scope. The file /etc/sudoers, or files in /etc/sudoers.d, will be written to when the file(s) or related attributes have changed. The audit records will be tagged with the identifier "scope".','Changes in the /etc/sudoers and /etc/sudoers.d files can indicate that an unauthorized change has been made to the scope of system administrator activity.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor scope changes for system administrators. Example: # printf " -w /etc/sudoers -p wa -k scope -w /etc/sudoers.d -p wa -k scope " >> /etc/audit/rules.d/50-scope.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
";fi.','[{\"cis\": [\"4.1.3.1\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29605,'Ensure actions as another user are always logged.','sudo provides users with temporary elevated privileges to perform operations, either as the superuser or another user.','Creating an audit log of users with temporary elevated privileges and the operation(s) they performed is essential to reporting. Administrators will want to correlate the events written to the audit trail with the records written to sudo's logfile to verify if unauthorized commands have been executed.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor elevated privileges. - 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -C euid!=uid -F auid!=unset -S execve -k user_emulation -a always,exit -F arch=b32 -C euid!=uid -F auid!=unset -S execve -k user_emulation " >> /etc/audit/rules.d/50-user_emulation.rules - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.2\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.9\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.9.4.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29606,'Ensure events that modify date and time information are collected.','Capture events where the system date and/or time has been modified. The parameters in this section are set to determine if the; - adjtimex: tune kernel clock. - settimeofday: set time using timeval and timezone structures. - stime: using seconds since 1/1/1970. - clock_settime: allows for the setting of several internal clocks and timers system calls have been executed. Further, ensure to write an audit record to the configured audit log file upon exit, tagging the records with a unique identifier such as "time-change".','Unexpected changes in system date and/or time could be a sign of malicious activity on the system.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify date and time information. - 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time-change -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime -k time-change -w /etc/localtime -p wa -k time-change " >> /etc/audit/rules.d/50-time-change.rules - Load audit rules: Merge and load the rules into active configuration: # augenrules --load .Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64. In addition, add stime to the system call audit. Example: -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime,stime -k time-change.','[{\"cis\": [\"4.1.3.4\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29607,'Ensure events that modify the system's network environment are collected.','Record changes to network environment files or system calls. The below parameters monitors the following system calls, and write an audit event on system call exit: - sethostname: set the systems host name. - setdomainname: set the systems domain name. The files being monitored are: > /etc/issue and /etc/issue.net - messages displayed pre-login. > /etc/hosts - file containing host names and associated IP addresses. > /etc/networks - symbolic names for networks. > /etc/network/ - directory containing network interface scripts and configurations files.','Monitoring sethostname and setdomainname will identify potential unauthorized changes to host and domainname of a system. The changing of these names could potentially break security parameters that are set based on those names. The /etc/hosts file is monitored for changes that can indicate an unauthorized intruder is trying to change machine associations with IP addresses and trick users and processes into connecting to unintended machines. Monitoring /etc/issue and /etc/issue.net is important, as intruders could put disinformation into those files and trick users into providing information to the intruder. Monitoring /etc/network is important as it can show if network interfaces or scripts are being modified in a way that can lead to the machine becoming unavailable or compromised. All audit records should have a relevant tag associated with them.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the system's network environment. - 64 Bit systems: Example: # printf " -a always,exit -F arch=b64 -S sethostname,setdomainname -k system-locale -a always,exit -F arch=b32 -S sethostname,setdomainname -k system-locale -w /etc/issue -p wa -k system-locale -w /etc/issue.net -p wa -k system-locale -w /etc/hosts -p wa -k system-locale -w /etc/networks -p wa -k system-locale -w /etc/network/ -p wa -k system-locale " >> /etc/audit/rules.d/50-system_local.rules - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29608,'Ensure unsuccessful file access attempts are collected.','Monitor for unsuccessful attempts to access files. The following parameters are associated with system calls that control files: - creation - creat. - opening - open, openat. - truncation - truncate, ftruncate. An audit log record will only be written if all of the following criteria is met for the user when trying to access a file: - a non-privileged user (auid>=UID_MIN). - is not a Daemon event (auid=4294967295/unset/-1). - if the system call returned EACCES (permission denied) or EPERM (some other permanent error associated with the specific system call).','Failed attempts to open, create or truncate files could be an indication that an individual or process is trying to gain unauthorized access to the system.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor unsuccessful file access attempts. 64 Bit systems Example: #{ UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S creat,open,openat,truncate,ftruncate -F exit=-EACCES -F auid>=${UID_MIN} -F auid!=unset -k access -a always,exit -F arch=b64 -S creat,open,openat,truncate,ftruncate -F exit=-EPERM -F auid>=${UID_MIN} -F auid!=unset -k access -a always,exit -F arch=b32 -S creat,open,openat,truncate,ftruncate -F exit=-EACCES -F auid>=${UID_MIN} -F auid!=unset -k access -a always,exit -F arch=b32 -S creat,open,openat,truncate,ftruncate -F exit=-EPERM -F auid>=${UID_MIN} -F auid!=unset -k access " >> /etc/audit/rules.d/50-access.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi. 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.7\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29609,'Ensure events that modify user/group information are collected.','Record events affecting the modification of user or group information, including that of passwords and old passwords if in use. - /etc/group: system groups. - /etc/passwd: system users. - /etc/gshadow: encrypted password for each group. - /etc/shadow: system user passwords. - /etc/security/opasswd: storage of old passwords if the relevant PAM module is in use. The parameters in this section will watch the files to see if they have been opened for write or have had attribute changes (e.g. permissions) and tag them with the identifier "identity" in the audit log file.','Unexpected changes to these files could be an indication that the system has been compromised and that an unauthorized user is attempting to hide their activities or compromise additional accounts.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify user/group information. Example: # printf " -w /etc/group -p wa -k identity -w /etc/passwd -p wa -k identity -w /etc/gshadow -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/security/opasswd -p wa -k identity " >> /etc/audit/rules.d/50-identity.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.8\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29610,'Ensure discretionary access control permission modification events are collected.','Monitor changes to file permissions, attributes, ownership and group. The parameters in this section track changes for system calls that affect file permissions and attributes. The following commands and system calls effect the permissions, ownership and various attributes of files: chmod, fchmod, fchmodat, chown, fchown, fchownat, lchown, setxattr, lsetxattr, fsetxattr, removexattr, lremovexattr, fremovexattr. In all cases, an audit record will only be written for non-system user ids and will ignore Daemon events. All audit records will be tagged with the identifier "perm_mod".','Monitoring for changes in file attributes could alert a system administrator to activity that could indicate intruder activity or policy violation.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor discretionary access control permission modification events. 64 Bit systems: Example: #{ UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b32 -S chmod,fchmod,fchmodat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b32 -S lchown,fchown,chown,fchownat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b64 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b32 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod " >> /etc/audit/rules.d/50-perm_mod.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi. 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.9\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29611,'Ensure successful file system mounts are collected.','Monitor the use of the mount system call. The mount (and umount ) system call controls the mounting and unmounting of file systems. The parameters below configure the system to create an audit record when the mount system call is used by a non-privileged user.','It is highly unusual for a non privileged user to mount file systems to the system. While tracking mount commands gives the system administrator evidence that external media may have been mounted (based on a review of the source of the mount and confirming it's an external media type), it does not conclusively indicate that data was exported to the media. System administrators who wish to determine if data were exported, would also have to track successful open, creat and truncate system calls requiring write access to a file under the mount point of the external media file system. This could give a fair indication that a write occurred. The only way to truly prove it, would be to track successful writes to the external media. Tracking write system calls could quickly fill up the audit log and is not recommended. Recommendations on configuration options to track data export to media is beyond the scope of this document.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful file system mounts. - 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b32 -S mount -F auid>=$UID_MIN -F auid!=unset -k mounts -a always,exit -F arch=b64 -S mount -F auid>=$UID_MIN -F auid!=unset -k mounts " >> /etc/audit/rules.d/50-mounts.rules || printf "ERROR: Variable 'UID_MIN' is unset.
"} - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.10\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"CM-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0010\"]}, {\"mitre_mitigations\": [\"M1034\"]}]'),(29612,'Ensure session initiation information is collected.','Monitor session initiation events. The parameters in this section track changes to the files associated with session events. - /var/run/utmp: tracks all currently logged in users. - /var/log/wtmp: file tracks logins, logouts, shutdown, and reboot events. - /var/log/btmp: keeps track of failed login attempts and can be read by entering the command /usr/bin/last -f /var/log/btmp. All audit records will be tagged with the identifier "session".','Monitoring these files for changes could alert a system administrator to logins occurring at unusual hours, which could indicate intruder activity (i.e. a user logging in at a time when they do not normally log in).','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor session initiation information. Example: # printf " -w /var/run/utmp -p wa -k session -w /var/log/wtmp -p wa -k session -w /var/log/btmp -p wa -k session " >> /etc/audit/rules.d/50-session.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.11\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.13\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.9.4.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}]'),(29613,'Ensure login and logout events are collected.','Monitor login and logout events. The parameters below track changes to files associated with login/logout events. - /var/log/lastlog: maintain records of the last time a user successfully logged in. - /var/run/faillock: directory maintains records of login failures via the pam_faillock module.','Monitoring login/logout events could provide a system administrator with information associated with brute force attacks against user logins.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor login and logout events. Example: # printf " -w /var/log/lastlog -p wa -k logins -w /var/run/faillock -p wa -k logins " >> /etc/audit/rules.d/50-login.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.12\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.11\", \"16.13\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.9.4.2\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}]'),(29614,'Ensure file deletion events by users are collected.','Monitor the use of system calls associated with the deletion or renaming of files and file attributes. This configuration statement sets up monitoring for: - unlink: remove a file. - unlinkat: remove a file attribute. - rename: rename a file. - renameat: rename a file attribute system calls and tags them with the identifier "delete".','Monitoring these calls from non-privileged users could provide a system administrator with evidence that inappropriate removal of files and file attributes associated with protected files is occurring. While this audit option will look at all events, system administrators will want to look for specific privileged files that are being deleted or altered.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor file deletion events by users. - 64 Bit systems: Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S rename,unlink,unlinkat,renameat -F auid>=${UID_MIN} -F auid!=unset -F key=delete -a always,exit -F arch=b32 -S rename,unlink,unlinkat,renameat -F auid>=${UID_MIN} -F auid!=unset -F key=delete " >> /etc/audit/rules.d/50-delete.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29615,'Ensure events that modify the system's Mandatory Access Controls are collected.','Monitor AppArmor, an implementation of mandatory access controls. The parameters below monitor any write access (potential additional, deletion or modification of files in the directory) or attribute changes to the /etc/apparmor/ and /etc/apparmor.d/ directories. Note: If a different Mandatory Access Control method is used, changes to the corresponding directories should be audited.','Changes to files in the /etc/apparmor/ and /etc/apparmor.d/ directories could indicate that an unauthorized user is attempting to modify access controls and change security contexts, leading to a compromise of the system.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the systems Mandatory Access Controls. Example: # printf " -w /etc/apparmor/ -p wa -k MAC-policy -w /etc/apparmor.d/ -p wa -k MAC-policy " >> /etc/audit/rules.d/50-MAC-policy.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.14\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29616,'Ensure successful and unsuccessful attempts to use the chcon command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the chcon command.','The chcon command is used to change file security context. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the chcon command. - 64 Bit systems: Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k perm_chng " >> /etc/audit/rules.d/50-perm_chng.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } - Load audit rules: Merge and load the rules into active configuration: # augenrules --load .Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.15\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29617,'Ensure successful and unsuccessful attempts to use the setfacl command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the setfacl command.','This utility sets Access Control Lists (ACLs) of files and directories. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the setfacl command. - 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/bin/setfacl -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k perm_chng " >> /etc/audit/rules.d/50-perm_chng.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.16\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29618,'Ensure successful and unsuccessful attempts to use the chacl command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the chacl command. chacl is an IRIX-compatibility command, and is maintained for those users who are familiar with its use from either XFS or IRIX.','chacl changes the ACL(s) for a file or directory. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the chacl command. - 64 Bit systems: Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/bin/chacl -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k perm_chng " >> /etc/audit/rules.d/50-perm_chng.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.17\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29619,'Ensure successful and unsuccessful attempts to use the usermod command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the usermod command.','The usermod command modifies the system account files to reflect the changes that are specified on the command line. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the usermod command. - 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k usermod " >> /etc/audit/rules.d/50-usermod.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.18\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29620,'Ensure kernel module loading unloading and modification is collected.','Monitor the loading and unloading of kernel modules. All the loading / listing / dependency checking of modules is done by kmod via symbolic links. The following system calls control loading and unloading of modules: - init_module - load a module. - finit_module - load a module (used when the overhead of using cryptographically signed modules to determine the authenticity of a module can be avoided). - delete_module - delete a module. - create_module - create a loadable module entry. - query_module - query the kernel for various bits pertaining to modules. Any execution of the loading and unloading module programs and system calls will trigger an audit record with an identifier of modules.','Monitoring the use of all the various ways to manipulate kernel modules could provide system administrators with evidence that an unauthorized change was made to a kernel module, possibly compromising the security of the system.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor kernel module modification. 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S init_module,finit_module,delete_module,create_module,query_module -F auid>=${UID_MIN} -F auid!=unset -k kernel_modules -a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k kernel_modules " >> /etc/audit/rules.d/50-kernel_modules.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.19\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29621,'Ensure the audit configuration is immutable.','Set system audit so that audit rules cannot be modified with auditctl. Setting the flag "-e 2" forces audit to be put in immutable mode. Audit changes can only be made on system reboot. Note: This setting will require the system to be rebooted to update the active auditd configuration settings.','In immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. Users would most likely notice a system reboot and that could alert administrators of an attempt to make unauthorized audit changes.','','Edit or create the file /etc/audit/rules.d/99-finalize.rules and add the line -e 2 at the end of the file: Example: # printf -- "-e 2" >> /etc/audit/rules.d/99-finalize.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.20\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.3\", \"AC.L2-3.1.5\", \"AU.L2-3.3.1\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\", \"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\", \"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-3\", \"AU-3(1)\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29622,'Ensure the running and on disk configuration is the same.','The Audit system have both on disk and running configuration. It is possible for these configuration settings to differ. Note: Due to the limitations of augenrules and auditctl, it is not absolutely guaranteed that loading the rule sets via augenrules --load will result in all rules being loaded or even that the user will be informed if there was a problem loading the rules.','Configuration differences between what is currently running and what is on disk could cause unexpected problems or may give a false impression of compliance requirements.','','If the rules are not aligned across all three () areas, run the following command to merge and load all rules: # augenrules --load Check if reboot is required. if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then echo "Reboot required to load rules"; fi.','[{\"cis\": [\"4.1.3.21\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29623,'Ensure only authorized groups are assigned ownership of audit log files.','Audit log files contain information about the system and system activity.','Access to audit records can reveal system and configuration data to attackers, potentially compromising its confidentiality.','','Run the following command to configure the audit log files to be owned by adm group: # find $(dirname $(awk -F"=" '/^s*log_file/ {print $2}' /etc/audit/auditd.conf | xargs)) -type f ( ! -group adm -a ! -group root ) -exec chgrp adm {} + Run the following command to configure the audit log files to be owned by the adm group: # chgrp adm /var/log/audit/ Run the following command to set the log_group parameter in the audit configuration file to log_group = adm: # sed -ri 's/^s*#?s*log_groups*=s*S+(s*#.*)?.*$/log_group = adm1/' /etc/audit/auditd.conf Run the following command to restart the audit daemon to reload the configuration file: # systemctl restart auditd.','[{\"cis\": [\"4.1.4.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29624,'Ensure audit configuration files are 640 or more restrictive.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to remove more permissive mode than 0640 from the audit configuration files: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) -exec chmod u-x,g-wx,o-rwx {} +.','[{\"cis\": [\"4.1.4.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29625,'Ensure audit configuration files are owned by root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change ownership to root user: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -user root -exec chown root {} +.','[{\"cis\": [\"4.1.4.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29626,'Ensure audit configuration files belong to group root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change group to root: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -group root -exec chgrp root {} +.','[{\"cis\": [\"4.1.4.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29627,'Ensure audit tools are 755 or more restrictive.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29628,'Ensure audit tools are owned by root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to change the owner of the audit tools to the root user: # chown root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.9\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29629,'Ensure audit tools belong to group root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules Run the following command to change owner and group of the audit tools to root user and group: # chown root:root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.10\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29630,'Ensure systemd-journal-remote is installed.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralised log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to install systemd-journal-remote: # apt install systemd-journal-remote.','[{\"cis\": [\"4.2.1.1.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29631,'Ensure systemd-journal-remote is enabled.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralised log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to enable systemd-journal-remote: # systemctl --now enable systemd-journal-upload.service.','[{\"cis\": [\"4.2.1.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29632,'Ensure journald is not configured to recieve logs from a remote client.','Journald supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts. NOTE: - The same package, systemd-journal-remote, is used for both sending logs to remote hosts and receiving incoming logs. - With regards to receiving logs, there are two services; systemd-journal-remote.socket and systemd-journal-remote.service.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Run the following command to disable systemd-journal-remote.socket: # systemctl --now disable systemd-journal-remote.socket.','[{\"cis\": [\"4.2.1.1.4\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29633,'Ensure journald service is enabled.','Ensure that the systemd-journald service is enabled to allow capturing of logging events.','If the systemd-journald service is not enabled to start on boot, the system will not capture logging events.','','By default the systemd-journald service does not have an [Install] section and thus cannot be enabled / disabled. It is meant to be referenced as Requires or Wants by other unit files. As such, if the status of systemd-journald is not static, investigate why.','[{\"cis\": [\"4.2.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29634,'Ensure journald is configured to compress large log files.','The journald system includes the capability of compressing overly large files to avoid filling up the system with logs or making the logs unmanageably large.','Uncompressed large files may unexpectedly fill a filesystem leading to resource unavailability. Compressing logs prior to write can prevent sudden, unexpected filesystem impacts.','','Edit the /etc/systemd/journald.conf file and add the following line: Compress=yes Restart the service: # systemctl restart systemd-journald.','[{\"cis\": [\"4.2.1.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(29635,'Ensure journald is configured to write logfiles to persistent disk.','Data from journald may be stored in volatile memory or persisted locally on the server. Logs in memory will be lost upon a system reboot. By persisting logs to local disk on the server they are protected from loss due to a reboot.','Writing log data to disk will provide the ability to forensically reconstruct events which may have impacted the operations or security of a system even after a system crash or reboot.','','Edit the /etc/systemd/journald.conf file and add the following line: Storage=persistent Restart the service: # systemctl restart systemd-journald.','[{\"cis\": [\"4.2.1.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29636,'Ensure journald is not configured to send logs to rsyslog.','Data from journald should be kept in the confines of the service and not forwarded on to other services.','IF journald is the method for capturing logs, all logs of the system should be handled by journald and not forwarded to other logging mechanisms.','','Edit the /etc/systemd/journald.conf file and ensure that ForwardToSyslog=yes is removed. Restart the service: # systemctl restart systemd-journald.','[{\"cis\": [\"4.2.1.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-7\", \"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29637,'Ensure rsyslog is installed.','The rsyslog software is recommended in environments where journald does not meet operation requirements.','The security enhancements of rsyslog such as connection-oriented (i.e. TCP) transmission of logs, the option to log to database formats, and the encryption of log data en route to a central logging server) justify installing and configuring the package.','','Run the following command to install rsyslog: # apt install rsyslog.','[{\"cis\": [\"4.2.2.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1005\", \"T1070\", \"T1070.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29638,'Ensure rsyslog service is enabled.','Once the rsyslog package is installed, ensure that the service is enabled.','If the rsyslog service is not enabled to start on boot, the system will not capture logging events.','','Run the following command to enable rsyslog: # systemctl --now enable rsyslog.','[{\"cis\": [\"4.2.2.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29639,'Ensure journald is configured to send logs to rsyslog.','Data from journald may be stored in volatile memory or persisted locally on the server. Utilities exist to accept remote export of journald logs, however, use of the RSyslog service provides a consistent means of log collection and export.','IF RSyslog is the preferred method for capturing logs, all logs of the system should be sent to it for further processing.','','Edit the /etc/systemd/journald.conf file and add the following line: ForwardToSyslog=yes Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-7\", \"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29640,'Ensure rsyslog default file permissions are configured.','RSyslog will create logfiles that do not already exist on the system. This setting controls what permissions will be applied to these newly created files.','It is important to ensure that log files have the correct permissions to ensure that sensitive data is archived and protected.','The systems global umask could override, but only making the file permissions stricter, what is configured in RSyslog with the FileCreateMode directive. RSyslog also has it's own $umask directive that can alter the intended file creation mode. In addition, consideration should be given to how FileCreateMode is used. Thus it is critical to ensure that the intended file creation mode is not overridden with less restrictive settings in /etc/rsyslog.conf, /etc/rsyslog.d/*conf files and that FileCreateMode is set before any file is created.','Edit either /etc/rsyslog.conf or a dedicated .conf file in /etc/rsyslog.d/ and set $FileCreateMode to 0640 or more restrictive: $FileCreateMode 0640 Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.4\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.2\"]}, {\"cis_csc_v7\": [\"5.1\", \"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\", \"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\", \"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29641,'Ensure rsyslog is not configured to receive logs from a remote client.','RSyslog supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Should there be any active log server configuration found in the auditing section, modify those file and remove the specific lines highlighted by the audit. Ensure none of the following entries are present in any of /etc/rsyslog.conf or /etc/rsyslog.d/*.conf. Old format $ModLoad imtcp $InputTCPServerRun New format module(load="imtcp") input(type="imtcp" port="514") Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.7\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29642,'Ensure cron daemon is enabled and running.','The cron daemon is used to execute batch jobs on the system. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','While there may not be user jobs that need to be run on the system, the system does have maintenance jobs that may include security monitoring that have to run, and cron is used to execute them.','','Run the following command to enable and start cron: # systemctl --now enable cron.','[{\"cis\": [\"5.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29643,'Ensure permissions on /etc/crontab are configured.','The /etc/crontab file is used by cron to control its own jobs. The commands in this item make sure that root is the user and group owner of the file and that only the owner can access the file. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','This file contains information on what system jobs are run by cron. Write access to these files could provide unprivileged users with the ability to elevate their privileges. Read access to these files could provide users with the ability to gain insight on system jobs that run on the system and could provide them a way to gain unauthorized privileged access.','','Run the following commands to set ownership and permissions on /etc/crontab : # chown root:root /etc/crontab # chmod og-rwx /etc/crontab.','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29644,'Ensure permissions on /etc/cron.hourly are configured.','This directory contains system cron jobs that need to run on an hourly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.hourly directory: # chown root:root /etc/cron.hourly/ # chmod og-rwx /etc/cron.hourly/.','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29645,'Ensure permissions on /etc/cron.daily are configured.','The /etc/cron.daily directory contains system cron jobs that need to run on a daily basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.daily directory: # chown root:root /etc/cron.daily/ # chmod og-rwx /etc/cron.daily/.','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29646,'Ensure permissions on /etc/cron.weekly are configured.','The /etc/cron.weekly directory contains system cron jobs that need to run on a weekly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.weekly directory: # chown root:root /etc/cron.weekly/ # chmod og-rwx /etc/cron.weekly/.','[{\"cis\": [\"5.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29647,'Ensure permissions on /etc/cron.monthly are configured.','The /etc/cron.monthly directory contains system cron jobs that need to run on a monthly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.monthly directory: # chown root:root /etc/cron.monthly/ # chmod og-rwx /etc/cron.monthly/.','[{\"cis\": [\"5.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29648,'Ensure permissions on /etc/cron.d are configured.','The /etc/cron.d directory contains system cron jobs that need to run in a similar manner to the hourly, daily weekly and monthly jobs from /etc/crontab, but require more granular control as to when they run. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.d directory: # chown root:root /etc/cron.d/ # chmod og-rwx /etc/cron.d/.','[{\"cis\": [\"5.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29649,'Ensure cron is restricted to authorized users.','Configure /etc/cron.allow to allow specific users to use this service. If /etc/cron.allow does not exist, then /etc/cron.deny is checked. Any user not specifically defined in this file is allowed to use cron. By removing the file, only users in /etc/cron.allow are allowed to use cron. Notes: - Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy. - Even though a given user is not listed in cron.allow, cron jobs can still be run as that user. - The cron.allow file only controls administrative access to the crontab command for scheduling and modifying cron jobs.','On many systems, only the system administrator is authorized to schedule cron jobs. Using the cron.allow file to control who can run cron jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/cron.deny: # rm /etc/cron.deny Run the following command to create /etc/cron.allow # touch /etc/cron.allow Run the following commands to set permissions and ownership for /etc/cron.allow: # chmod g-wx,o-rwx /etc/cron.allow # chown root:root /etc/cron.allow.','[{\"cis\": [\"5.1.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29650,'Ensure at is restricted to authorized users.','Configure /etc/at.allow to allow specific users to use this service. If /etc/at.allow does not exist, then /etc/at.deny is checked. Any user not specifically defined in this file is allowed to use at. By removing the file, only users in /etc/at.allow are allowed to use at. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, at should be removed, and the alternate method should be secured in accordance with local site policy.','On many systems, only the system administrator is authorized to schedule at jobs. Using the at.allow file to control who can run at jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/at.deny: # rm /etc/at.deny Run the following command to create /etc/at.allow # touch /etc/at.allow Run the following commands to set permissions and ownership for /etc/at.allow: # chmod g-wx,o-rwx /etc/at.allow # chown root:root /etc/at.allow.','[{\"cis\": [\"5.1.9\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29651,'Ensure permissions on /etc/ssh/sshd_config are configured.','The /etc/ssh/sshd_config file contains configuration specifications for sshd. The command below sets the owner and group of the file to root.','The /etc/ssh/sshd_config file needs to be protected from unauthorized changes by non-privileged users.','','Run the following commands to set ownership and permissions on /etc/ssh/sshd_config: # chown root:root /etc/ssh/sshd_config # chmod og-rwx /etc/ssh/sshd_config.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1098\", \"T1098.004\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29652,'Ensure SSH access is limited.','There are several options available to limit which users and group can access the system via SSH. It is recommended that at least one of the following options be leveraged: - AllowUsers: > The AllowUsers variable gives the system administrator the option of allowing specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by only allowing the allowed users to log in from a particular host, the entry can be specified in the form of user@host. - AllowGroups: > The AllowGroups variable gives the system administrator the option of allowing specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable. - DenyUsers: > The DenyUsers variable gives the system administrator the option of denying specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by specifically denying a user's access from a particular host, the entry can be specified in the form of user@host. - DenyGroups: > The DenyGroups variable gives the system administrator the option of denying specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable.','Restricting which users can remotely access the system via SSH will help ensure that only authorized users access the system.','','Edit the /etc/ssh/sshd_config file to set one or more of the parameter as follows: AllowUsers <userlist> OR AllowGroups <grouplist> OR DenyUsers <userlist> OR DenyGroups <grouplist>.','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29653,'Ensure SSH LogLevel is appropriate.','INFO level is the basic level that only records login activity of SSH users. In many situations, such as Incident Response, it is important to determine when a particular user was active on a system. The logout record can eliminate those users who disconnected, which helps narrow the field. VERBOSE level specifies that login and logout activity as well as the key fingerprint for any SSH key used for login will be logged. This information is important for SSH key management, especially in legacy environments.','SSH provides several logging levels with varying amounts of verbosity. DEBUG is specifically not recommended other than strictly for debugging SSH communications since it provides so much data that it is difficult to identify important security information.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LogLevel VERBOSE OR LogLevel INFO.','[{\"cis\": [\"5.2.5\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29654,'Ensure SSH PAM is enabled.','The UsePAM directive enables the Pluggable Authentication Module (PAM) interface. If set to yes this will enable PAM authentication using ChallengeResponseAuthentication and PasswordAuthentication directives in addition to PAM account and session module processing for all authentication types.','When usePAM is set to yes, PAM runs through account and session types properly. This is important if you want to restrict access to services based off of IP, time or other factors of the account. Additionally, you can make sure users inherit certain environment variables on login or disallow access to the server.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: UsePAM yes.','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(29655,'Ensure SSH root login is disabled.','The PermitRootLogin parameter specifies if the root user can log in using SSH. The default is prohibit-password.','Disallowing root logins over SSH requires system admins to authenticate using their own individual account, then escalating to root. This limits opportunity for non-repudiation and provides a clear audit trail in the event of a security incident.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitRootLogin no.','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29656,'Ensure SSH HostbasedAuthentication is disabled.','The HostbasedAuthentication parameter specifies if authentication is allowed through trusted hosts via the user of .rhosts, or /etc/hosts.equiv, along with successful public key client host authentication.','Even though the .rhosts files are ineffective if support is disabled in /etc/pam.conf, disabling the ability to use .rhosts files in SSH provides an additional layer of protection.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: HostbasedAuthentication no.','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29657,'Ensure SSH PermitEmptyPasswords is disabled.','The PermitEmptyPasswords parameter specifies if the SSH server allows login to accounts with empty password strings.','Disallowing remote shell access to accounts that have an empty password reduces the probability of unauthorized access to the system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitEmptyPasswords no.','[{\"cis\": [\"5.2.9\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29658,'Ensure SSH PermitUserEnvironment is disabled.','The PermitUserEnvironment option allows users to present environment options to the SSH daemon.','Permitting users the ability to set environment variables through the SSH daemon could potentially allow users to bypass security controls (e.g. setting an execution path that has SSH executing trojan'd programs).','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitUserEnvironment no.','[{\"cis\": [\"5.2.10\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29659,'Ensure SSH IgnoreRhosts is enabled.','The IgnoreRhosts parameter specifies that .rhosts and .shosts files will not be used in RhostsRSAAuthentication or HostbasedAuthentication.','Setting this parameter forces users to enter a password when authenticating with SSH.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: IgnoreRhosts yes.','[{\"cis\": [\"5.2.11\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29660,'Ensure SSH X11 forwarding is disabled.','The X11Forwarding parameter provides the ability to tunnel X11 traffic through the connection to enable remote graphic connections.','Disable X11 forwarding unless there is an operational requirement to use X11 applications directly. There is a small risk that the remote X11 servers of users who are logged in via SSH with X11 forwarding could be compromised by other users on the X11 server. Note that even if X11 forwarding is disabled, users can always install their own forwarders.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: X11Forwarding no.','[{\"cis\": [\"5.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29661,'Ensure only strong Ciphers are used.','This variable limits the ciphers that SSH can use during communication. Note: - Some organizations may have stricter requirements for approved ciphers. - Ensure that ciphers used are in compliance with site policy. - The only "strong" ciphers currently FIPS 140-2 compliant are: aes256-ctr, aes192-ctr, aes128-ctr. - Supported ciphers in openSSH 8.2: 3des-cbc, aes128-cbc, aes192-cbc, aes256-cbc, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com, chacha20-poly1305@openssh.com.','Weak ciphers that are used for authentication to the cryptographic module cannot be relied upon to provide confidentiality or integrity, and system data may be compromised. - The Triple DES ciphers, as used in SSH, have a birthday bound of approximately four billion blocks, which makes it easier for remote attackers to obtain clear text data via a birthday attack against a long-duration encrypted session, aka a "Sweet32" attack. - Error handling in the SSH protocol; Client and Server, when using a block cipher algorithm in Cipher Block Chaining (CBC) mode, makes it easier for remote attackers to recover certain plain text data from an arbitrary block of cipher text in an SSH session via unknown vectors.','','Edit the /etc/ssh/sshd_config file add/modify the Ciphers line to contain a comma separated list of the site approved ciphers. Example: Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr.','[{\"cis\": [\"5.2.13\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29662,'Ensure only strong MAC algorithms are used.','This variable limits the types of MAC algorithms that SSH can use during communication. Notes: - Some organizations may have stricter requirements for approved MACs. - Ensure that MACs used are in compliance with site policy. - The only "strong" MACs currently FIPS 140-2 approved are: hmac-sha2-256, hmac-sha2-512. - The Supported MACs are: hmac-md5, hmac-md5-96, hmac-sha1, hmac-sha1-96, hmac-sha2-256, hmac-sha2-512, umac-64@openssh.co, umac-128@openssh.com, hmac-md5-etm@openssh.com, hmac-md5-96-etm@openssh.com, hmac-sha1-etm@openssh.com, hmac-sha1-96-etm@openssh.com, hmac-sha2-256-etm@openss.com, hmac-sha2-512-etm@openssh.com, umac-64-etm@openssh.com, umac-128-etm@openssh.com.','MD5 and 96-bit MAC algorithms are considered weak and have been shown to increase exploitability in SSH downgrade attacks. Weak algorithms continue to have a great deal of attention as a weak spot that can be exploited with expanded computing power. An attacker that breaks the algorithm could take advantage of a MiTM position to decrypt the SSH tunnel and capture credentials and information.','','Edit the /etc/ssh/sshd_config file and add/modify the MACs line to contain a comma separated list of the site approved MACs.Example: MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256.','[{\"cis\": [\"5.2.14\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\", \"16.5\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29663,'Ensure only strong Key Exchange algorithms are used.','Key exchange is any method in cryptography by which cryptographic keys are exchanged between two parties, allowing use of a cryptographic algorithm. If the sender and receiver wish to exchange encrypted messages, each must be equipped to encrypt messages to be sent and decrypt messages received. Notes: - Kex algorithms have a higher preference the earlier they appear in the list. - Some organizations may have stricter requirements for approved Key exchange algorithms. - Ensure that Key exchange algorithms used are in compliance with site policy. - The only Key Exchange Algorithms currently FIPS 140-2 approved are: ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256. - The Key Exchange algorithms supported by OpenSSH 8.2 are: curve25519-sha256, curve25519-sha256@libssh.org, diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group14-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group-exchange-sha1, diffie-hellman-group-exchange-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, sntrup4591761x25519-sha512@tinyssh.org.','Key exchange methods that are considered weak should be removed. A key exchange method may be weak because too few bits are used, or the hashing algorithm is considered too weak. Using weak algorithms could expose connections to man-in-the-middle attacks.','','Edit the /etc/ssh/sshd_config file add/modify the KexAlgorithms line to contain a comma separated list of the site approved key exchange algorithms Example: KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256.','[{\"cis\": [\"5.2.15\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29664,'Ensure SSH AllowTcpForwarding is disabled.','SSH port forwarding is a mechanism in SSH for tunneling application ports from the client to the server, or servers to clients. It can be used for adding encryption to legacy applications, going through firewalls, and some system administrators and IT professionals use it for opening backdoors into the internal network from their home machines.','Leaving port forwarding enabled can expose the organization to security risks and backdoors. SSH connections are protected with strong encryption. This makes their contents invisible to most deployed network monitoring and traffic filtering solutions. This invisibility carries considerable risk potential if it is used for malicious purposes such as data exfiltration. Cybercriminals or malware could exploit SSH to hide their unauthorized communications, or to exfiltrate stolen data from the target network.','SSH tunnels are widely used in many corporate environments. In some environments the applications themselves may have very limited native support for security. By utilizing tunneling, compliance with SOX, HIPAA, PCI-DSS, and other standards can be achieved without having to modify the applications.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: AllowTcpForwarding no.','[{\"cis\": [\"5.2.16\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1048\", \"T1048.002\", \"T1572\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29665,'Ensure SSH warning banner is configured.','The Banner parameter specifies a file whose contents must be sent to the remote user before authentication is permitted. By default, no banner is displayed.','Banners are used to warn connecting users of the particular site's policy regarding connection. Presenting a warning message prior to the normal user login may assist the prosecution of trespassers on the computer system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: Banner /etc/issue.net.','[{\"cis\": [\"5.2.17\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(29666,'Ensure SSH MaxAuthTries is set to 4 or less.','The MaxAuthTries parameter specifies the maximum number of authentication attempts permitted per connection. When the login failure count reaches half the number, error messages will be written to the syslog file detailing the login failure.','Setting the MaxAuthTries parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. While the recommended setting is 4, set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxAuthTries 4.','[{\"cis\": [\"5.2.18\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"16.13\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(29667,'Ensure SSH MaxStartups is configured.','The MaxStartups parameter specifies the maximum number of concurrent unauthenticated connections to the SSH daemon.','To protect a system from denial of service due to a large number of pending authentication connection attempts, use the rate limiting function of MaxStartups to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxStartups 10:30:60.','[{\"cis\": [\"5.2.19\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(29668,'Ensure SSH MaxSessions is set to 10 or less.','The MaxSessions parameter specifies the maximum number of open sessions permitted from a given connection.','To protect a system from denial of service due to a large number of concurrent sessions, use the rate limiting function of MaxSessions to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxSessions 10.','[{\"cis\": [\"5.2.20\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(29669,'Ensure SSH LoginGraceTime is set to one minute or less.','The LoginGraceTime parameter specifies the time allowed for successful authentication to the SSH server. The longer the Grace period is the more open unauthenticated connections can exist. Like other session controls in this session the Grace Period should be limited to appropriate organizational limits to ensure the service is available for needed access.','Setting the LoginGraceTime parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. It will also limit the number of concurrent unauthenticated connections. While the recommended setting is 60 seconds (1 Minute), set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LoginGraceTime 60.','[{\"cis\": [\"5.2.21\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\", \"T1110.004\", \"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(29670,'Ensure SSH Idle Timeout Interval is configured.','NOTE: To clarify, the two settings described below is only meant for idle connections from a protocol perspective and not meant to check if the user is active or not. An idle user does not mean an idle connection. SSH does not and never had, intentionally, the capability to drop idle users. In SSH versions before 8.2p1 there was a bug that caused these values to behave in such a manner that they where abused to disconnect idle users. This bug has been resolved in 8.2p1 and thus it can no longer be abused disconnect idle users. The two options ClientAliveInterval and ClientAliveCountMax control the timeout of SSH sessions. Taken directly from man 5 sshd_config: - ClientAliveInterval Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client. - ClientAliveCountMax Sets the number of client alive messages which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session. It is important to note that the use of client alive messages is very different from TCPKeepAlive. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option en-abled by TCPKeepAlive is spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become unresponsive. The default value is 3. If ClientAliveInterval is set to 15, and ClientAliveCountMax is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds. Setting a zero ClientAliveCountMax disables connection termination.','In order to prevent resource exhaustion, appropriate values should be set for both ClientAliveInterval and ClientAliveCountMax. Specifically, looking at the source code, ClientAliveCountMax must be greater than zero in order to utilize the ability of SSH to drop idle connections. If connections are allowed to stay open indefinately, this can potentially be used as a DDOS attack or simple resource exhaustion could occur over unreliable networks. The example set here is a 45 second timeout. Consult your site policy for network timeouts and apply as appropriate.','','Edit the /etc/ssh/sshd_config file to set the parameters according to site policy. Example: ClientAliveInterval 15 ClientAliveCountMax 3.','[{\"cis\": [\"5.2.22\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29671,'Ensure sudo is installed.','sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.','sudo supports a plug-in architecture for security policies and input/output logging. Third parties can develop and distribute their own policy and I/O logging plug-ins to work seamlessly with the sudo front end. The default security policy is sudoers, which is configured via the file /etc/sudoers and any entries in /etc/sudoers.d. The security policy determines what privileges, if any, a user has to run sudo. The policy may require that users authenticate themselves with a password or another authentication mechanism. If authentication is required, sudo will exit if the user's password is not entered within a configurable time limit. This limit is policy-specific.','','First determine is LDAP functionality is required. If so, then install sudo-ldap, else install sudo. Example: # apt install sudo.','[{\"cis\": [\"5.3.1\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}]'),(29672,'Ensure sudo commands use pty.','sudo can be configured to run only from a pseudo terminal (pseudo-pty).','Attackers can run a malicious program using sudo which would fork a background process that remains even when the main program has finished executing.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers with visudo or a file in /etc/sudoers.d/ with visudo -f <PATH TO FILE> and add the following line: Defaults use_pty.','[{\"cis\": [\"5.3.2\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}]'); INSERT INTO `tsca` VALUES (29673,'Ensure sudo log file exists.','sudo can use a custom log file.','A sudo log file simplifies auditing of sudo commands.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers or a file in /etc/sudoers.d/ with visudo or visudo -f <PATH TO FILE> and add the following line: Example: Defaults logfile="/var/log/sudo.log".','[{\"cis\": [\"5.3.3\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}]'),(29674,'Ensure users must provide password for privilege escalation.','The operating system must be configured so that users must provide a password for privilege escalation.','Without (re-)authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user (re-)authenticate.','This will prevent automated processes from being able to elevate privileges.','Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any line with occurrences of NOPASSWD tags in the file.','[{\"cis\": [\"5.3.4\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(29675,'Ensure re-authentication for privilege escalation is not disabled globally.','The operating system must be configured so that users must re-authenticate for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','','Configure the operating system to require users to reauthenticate for privilege escalation. Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any occurrences of !authenticate tags in the file(s).','[{\"cis\": [\"5.3.5\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(29676,'Ensure sudo authentication timeout is configured correctly.','sudo caches used credentials for a default of 15 minutes. This is for ease of use when there are multiple administrative tasks to perform. The timeout can be modified to suit local security policies. This default is distribution specific. See audit section for further information.','Setting a timeout value reduces the window of opportunity for unauthorized privileged access to another user.','','If the currently configured timeout is larger than 15 minutes, edit the file listed in the audit section with visudo -f <PATH TO FILE> and modify the entry timestamp_timeout= to 15 minutes or less as per your site policy. The value is in minutes. This particular entry may appear on it's own, or on the same line as env_reset. See the following two examples: Defaults Defaults Defaults env_reset, timestamp_timeout=15 timestamp_timeout=15 env_reset.','[{\"cis\": [\"5.3.6\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(29677,'Ensure access to the su command is restricted.','The su command allows a user to run a command or shell as another user. The program has been superseded by sudo, which allows for more granular control over privileged access. Normally, the su command can be executed by any user. By uncommenting the pam_wheel.so statement in /etc/pam.d/su, the su command will only allow users in a specific groups to execute su. This group should be empty to reinforce the use of sudo for privileged access.','Restricting the use of su , and using sudo in its place, provides system administrators better control of the escalation of user privileges to execute privileged commands. The sudo utility also provides a better logging and audit mechanism, as it can log each command executed via sudo , whereas su can only record that a user executed the su program.','','Create an empty group that will be specified for use of the su command. The group should be named according to site policy. Example: # groupadd sugroup Add the following line to the /etc/pam.d/su file, specifying the empty group: auth required pam_wheel.so use_uid group=sugroup.','[{\"cis\": [\"5.3.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29678,'Ensure password creation requirements are configured.','The pam_pwquality.so module checks the strength of passwords. It performs checks such as making sure a password is not a dictionary word, it is a certain length, contains a mix of characters (e.g. alphabet, numeric, other) and more. The following options are set in the /etc/security/pwquality.conf file: - Password Length: > minlen = 14 - password must be 14 characters or more. - Password complexity: > minclass = 4 - The minimum number of required classes of characters for the new password (digits, uppercase, lowercase, others) OR > dcredit = -1 - provide at least one digit. > ucredit = -1 - provide at least one uppercase character. > ocredit = -1 - provide at least one special character. > lcredit = -1 - provide at least one lowercase character.','Strong passwords protect systems from being hacked through brute force methods.','','The following setting is a recommend example policy. Alter these values to conform to your own organization's password policies. Run the following command to install the pam_pwquality module: # apt install libpam-pwquality Edit the file /etc/security/pwquality.conf and add or modify the following line for password length to conform to site policy: minlen = 14 .Edit the file /etc/security/pwquality.conf and add or modify the following line for .password complexity to conform to site policy: Option 1 minclass = 4 Option 2 dcredit = -1, ucredit = -1, ocredit = -1, lcredit = -1.','[{\"cis\": [\"5.4.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29679,'Ensure lockout for failed password attempts is configured.','Lock out users after n unsuccessful consecutive login attempts. The first sets of changes are made to the common PAM configuration files. The second set of changes are applied to the program specific PAM configuration file. The second set of changes must be applied to each program that will lock out users. Check the documentation for each secondary program for instructions on how to configure them to work with PAM. All configuration of faillock is located in /etc/security/faillock.conf and well commented. - deny > Deny access if the number of consecutive authentication failures for this user during the recent interval exceeds n tries. - fail_interval > The length of the interval, in seconds, during which the consecutive authentication failures must happen for the user account to be locked out. - unlock_time > The access will be re-enabled after n seconds after the lock out. The value 0 has the same meaning as value never - the access will not be re-enabled without resetting the faillock entries by the faillock command. Set the lockout number and unlock time in accordance with local site policy.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','It is critical to test and validate any PAM changes before deploying. Any misconfiguration could cause the system to be inaccessible.','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Common auth: Edit /etc/pam.d/common-auth and ensure that faillock is configured. Note: It is critical to understand each line and the relevant arguments for successful implementation. The order of these entries is very specific. The pam_faillock.so lines surround the pam_unix.so line. The comment "Added to enable faillock" is shown to highlight the additional lines and their order in the file. # here are the per-package modules (the "Primary" block) auth required pam_faillock.so preauth # Added to enable faillock auth [success=1 default=ignore] pam_unix.so nullok auth [default=die] pam_faillock.so authfail # Added to enable faillock auth sufficient pam_faillock.so authsucc # Added to enable faillock # here's the fallback if no module succeeds auth requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_cap.so # end of pam-auth-update config Common account: Edit /etc/pam.d/common-account and ensure that the following stanza is at the end of the file. > account > required > pam_faillock.so. Fail lock configuration: Edit /etc/security/faillock.conf and configure it per your site policy. Example: deny = 4 > fail_interval = 900 > unlock time = 600.','[{\"cis\": [\"5.4.2\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"pci_dss_3.2.1\": [\"8.1.3\"]}, {\"pci_dss_4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29680,'Ensure password reuse is limited.','The /etc/security/opasswd file stores the users old passwords and can be checked to ensure that users are not recycling recent passwords.','Forcing users not to reuse their past 5 passwords make it less likely that an attacker will be able to guess the password.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Edit the /etc/pam.d/common-password file to include the remember= option of 5 or more. If this line doesn't exist, add the line directly above the line: password [success=1 default=ignore] pam_unix.so obscure yescrypt: Example: password required pam_pwhistory.so use_authtok remember=5.','[{\"cis\": [\"5.4.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}]'),(29681,'Ensure password hashing algorithm is up to date with the latest standards.','The commands below change password encryption to yescrypt. All existing accounts will need to perform a password change to upgrade the stored hashes to the new algorithm.','The yescrypt algorithm provides much stronger hashing than previous available algorithms, thus providing additional protection to the system by increasing the level of effort for an attacker to successfully determine passwords. Note: these change only apply to accounts configured on the local system.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. PAM Edit the /etc/pam.d/common-password file and ensure that no hashing algorithm option for pam_unix.so is set: password [success=1 default=ignore] try_first_pass remember=5 pam_unix.so obscure use_authtok - Login definitions: Edit /etc/login.defs and ensure that ENCRYPT_METHOD is set to yescrypt.','[{\"cis\": [\"5.4.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1110\", \"T1110.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29682,'Ensure minimum days between password changes is configured.','The PASS_MIN_DAYS parameter in /etc/login.defs allows an administrator to prevent users from changing their password until a minimum number of days have passed since the last time the user changed their password. It is recommended that PASS_MIN_DAYS parameter be set to 1 or more days.','By restricting the frequency of password changes, an administrator can prevent users from repeatedly changing their password in an attempt to circumvent password reuse controls.','','Set the PASS_MIN_DAYS parameter to 1 in /etc/login.defs : PASS_MIN_DAYS 1 Modify user parameters for all users with a password set to match: # chage --mindays 1 <user>.','[{\"cis\": [\"5.5.1.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29683,'Ensure password expiration is 365 days or less.','The PASS_MAX_DAYS parameter in /etc/login.defs allows an administrator to force passwords to expire once they reach a defined age.','The window of opportunity for an attacker to leverage compromised credentials or successfully compromise credentials via an online brute force attack is limited by the age of the password. Therefore, reducing the maximum age of a password also reduces an attacker's window of opportunity. It is recommended that the PASS_MAX_DAYS parameter does not exceed 365 days and is greater than the value of PASS_MIN_DAYS.','','Set the PASS_MAX_DAYS parameter to conform to site policy in /etc/login.defs : PASS_MAX_DAYS 365 Modify user parameters for all users with a password set to match: # chage --maxdays 365 <user>.','[{\"cis\": [\"5.5.1.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1110.004\"]}]'),(29684,'Ensure password expiration warning days is 7 or more.','The PASS_WARN_AGE parameter in /etc/login.defs allows an administrator to notify users that their password will expire in a defined number of days. It is recommended that the PASS_WARN_AGE parameter be set to 7 or more days.','Providing an advance warning that a password will be expiring gives users time to think of a secure password. Users caught unaware may choose a simple password or write it down where it may be discovered.','','Set the PASS_WARN_AGE parameter to 7 in /etc/login.defs :PASS_WARN_AGE 7 Modify user parameters for all users with a password set to match: # chage --warndays 7 <user>.','[{\"cis\": [\"5.5.1.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29685,'Ensure inactive password lock is 30 days or less.','User accounts that have been inactive for over a given period of time can be automatically disabled. It is recommended that accounts that are inactive for 30 days after password expiration be disabled.','Inactive accounts pose a threat to system security since the users are not logging in to notice failed login attempts or other anomalies.','','Run the following command to set the default password inactivity period to 30 days: # useradd -D -f 30 Modify user parameters for all users with a password set to match: # chage --inactive 30 <user>.','[{\"cis\": [\"5.5.1.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29686,'Ensure default group for the root account is GID 0.','The usermod command can be used to specify which group the root user belongs to. This affects permissions of files that are created by the root user.','Using GID 0 for the root account helps prevent root -owned files from accidentally becoming accessible to non-privileged users.','','Run the following command to set the root user default group to GID 0 : # usermod -g 0 root.','[{\"cis\": [\"5.5.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29687,'Ensure permissions on /etc/passwd are configured.','The /etc/passwd file contains user account information that is used by many system utilities and therefore must be readable for these utilities to operate.','It is critical to ensure that the /etc/passwd file is protected from unauthorized write access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd: # chmod u-x,go-wx /etc/passwd # chown root:root /etc/passwd.','[{\"cis\": [\"6.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29688,'Ensure permissions on /etc/passwd- are configured.','The /etc/passwd- file contains backup user account information.','It is critical to ensure that the /etc/passwd- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd-: # chmod u-x,go-wx /etc/passwd- # chown root:root /etc/passwd-.','[{\"cis\": [\"6.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29689,'Ensure permissions on /etc/group are configured.','The /etc/group file contains a list of all the valid groups defined in the system. The command below allows read/write access for root and read access for everyone else.','The /etc/group file needs to be protected from unauthorized changes by non-privileged users, but needs to be readable as this information is used with many non-privileged programs.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group: # chmod u-x,go-wx /etc/group # chown root:root /etc/group.','[{\"cis\": [\"6.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29690,'Ensure permissions on /etc/group- are configured.','The /etc/group- file contains a backup list of all the valid groups defined in the system.','It is critical to ensure that the /etc/group- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group-: # chmod u-x,go-wx /etc/group- # chown root:root /etc/group-.','[{\"cis\": [\"6.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29691,'Ensure permissions on /etc/shadow are configured.','The /etc/shadow file is used to store the information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert the user accounts.','','Run one of the following commands to set ownership of /etc/shadow to root and group to either root or shadow: # chown root:shadow /etc/shadow -OR- # chown root:root /etc/shadow Run the following command to remove excess permissions form /etc/shadow: # chmod u-x,g-wx,o-rwx /etc/shadow.','[{\"cis\": [\"6.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29692,'Ensure permissions on /etc/shadow- are configured.','The /etc/shadow- file is used to store backup information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/shadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/shadow- to root and group to either root or shadow: # chown root:shadow /etc/shadow- -OR- # chown root:root /etc/shadow- Run the following command to remove excess permissions form /etc/shadow-: # chmod u-x,g-wx,o-rwx /etc/shadow-.','[{\"cis\": [\"6.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29693,'Ensure permissions on /etc/gshadow are configured.','The /etc/gshadow file is used to store the information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/gshadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/gshadow file (such as group administrators) could also be useful to subvert the group.','','Run one of the following commands to set ownership of /etc/gshadow to root and group to either root or shadow: # chown root:shadow /etc/gshadow -OR- # chown root:root /etc/gshadow Run the following command to remove excess permissions form /etc/gshadow: # chmod u-x,g-wx,o-rwx /etc/gshadow.','[{\"cis\": [\"6.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29694,'Ensure permissions on /etc/gshadow- are configured.','The /etc/gshadow- file is used to store backup information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/gshadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/gshadow- to root and group to either root or shadow: # chown root:shadow /etc/gshadow- -OR- # chown root:root /etc/gshadow- Run the following command to remove excess permissions form /etc/gshadow-: # chmod u-x,g-wx,o-rwx /etc/gshadow-.','[{\"cis\": [\"6.1.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29695,'Ensure accounts in /etc/passwd use shadowed passwords.','Local accounts can uses shadowed passwords. With shadowed passwords, The passwords are saved in shadow password file, /etc/shadow, encrypted by a salted one-way hash. Accounts with a shadowed password have an x in the second field in /etc/passwd.','The /etc/passwd file also contains information like user ID's and group ID's that are used by many system programs. Therefore, the /etc/passwd file must remain world readable. In spite of encoding the password with a randomly-generated one-way hash function, an attacker could still break the system if they got access to the /etc/passwd file. This can be mitigated by using shadowed passwords, thus moving the passwords in the /etc/passwd file to /etc/shadow. The /etc/shadow file is set so only root will be able to read and write. This helps mitigate the risk of an attacker gaining access to the encoded passwords with which to perform a dictionary attack. Note: - All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user. - A user account with an empty second field in /etc/passwd allows the account to be logged into by providing only the username.','','Run the following command to set accounts to use shadowed passwords: # sed -e 's/^([a-zA-Z0-9_]*):[^:]*:/1:x:/' -i /etc/passwd Investigate to determine if the account is logged in and what it is being used for, to determine if it needs to be forced off.','[{\"cis\": [\"6.2.1\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29696,'Ensure /etc/shadow password fields are not empty.','An account with an empty password field means that anybody may log in as that user without providing a password.','All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user.','','If any accounts in the /etc/shadow file do not have a password, run the following command to lock the account until it can be determined why it does not have a password: # passwd -l <username> Also, check to see if the account is logged in and investigate what it is being used for to determine if it needs to be forced off.','[{\"cis\": [\"6.2.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29697,'Ensure root is the only UID 0 account.','Any account with UID 0 has superuser privileges on the system.','This access must be limited to only the default root account and only from the system console. Administrative access must be through an unprivileged account using an approved mechanism as noted in Item 5.6 Ensure access to the su command is restricted.','','Remove any users other than root with UID 0 or assign them a new UID if appropriate.','[{\"cis\": [\"6.2.10\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(30001,'Install and configure HP-UX Secure Shell.','OpenSSH is a popular free distribution of the standards-track SSH protocols which allows secure encrypted network logins and file transfers. HP-UX Secure Shell is HP's pre-compiled and supported version of OpenSSH.','Common login and file transfer services such as telnet, FTP, rsh, rlogin, and rcp use insecure, clear-text protocols that are vulnerable to attack. OpenSSH provides a secure, encrypted replacement for these services. Security is improved by further constraining services in the default configuration.','','Perform the following to install and securely configure Secure Shell (SSH) 1. Download and install HP-UX Secure Shell if not already installed on the system. 2. Perform the following post-installation actions to secure the SSH service: a. Change to the /opt/ssh/etc directory b. Open sshd_config c. Set the Protocol token to 2. If it is absent, add and set it. d. Set the X11Forwarding token to yes. If it is absent, add and set it. e. Set the IgnoreRhosts token to yes. If it is absent, add and set it. f. Set the RhostsAuthentication token to no. If it is absent, add and set it. g. Set the RhostsRSAAuthentication token to no. If it is absent, add and set it. h. Set the PermitRootLogin token to no. If it is absent, add and set it. i. Set the PermitEmptyPasswords token to no. If it is absent, add and set it. j. Set the Banner token to /etc/issue. If it is absent, add and set it. k. Set root as the owner of sshd_config and ssh_config. l. Set sys as the group owner of sshd_config and ssh_config. m. Restrict write access to sshd_config and ssh_config to the file owner. The following script will perform the above procedure: 13 | P a g e cd /opt/ssh/etc cp -p sshd_config sshd_config.tmp awk ' /^Protocol/ /^IgnoreRhosts/ /^RhostsAuthentication/ /^RhostsRSAAuthentication/ { $2 ="no" }; /(^#|^)PermitRootLogin/    { $1 = "PermitRootLogin"; $2 = "no" }; /^PermitEmptyPasswords/    { $2 = "no" }; /^#Banner/                 { $1 = "Banner"; $2 = "/etc/issue" } { print }' sshd_config.tmp > sshd_config { $2 ="2"}; { $2 = "yes" }; { $2 = "no" }; rm -f sshd_config.tmp chown root:sys ssh_config sshd_config chmod go-w ssh_config sshd_config','[{\"cis\": [\"1.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(30002,'Use Bastille to report security configuration state.','Bastille is a security hardening, lockdown tool supplied with HP-UX to assist administrators in securing their systems. Included is an assessment function that covers a wide range of lockdown items including most all items in this Benchmark. Bastille can serve as a reporting and audit tool. Appendix D provides a mapping of Benchmark items to related Bastille configuration items.','An automated, tested, and vendor supported reporting tool such as Bastille is more efficient and less error-prone than most manual or custom scripted methods.','','Run Bastille to create an assessment report as shown: /opt/sec_mgmt/bastille/bin/bastille --assessnobrowser','[{\"cis\": [\"1.1.3\"]}]'),(30003,'Disable Standard Services.','The stock /etc/inetd.conf file shipped with HP-UX contains many services which are rarely used, or which have more secure alternatives. Indeed, after enabling SSH (see item 1.1.2) it may be possible to completely do away with all inetd-based services, since SSH provides both a secure login mechanism and a means of transferring files to and from the system. The steps articulated in the Remediation section will disable all services normally enabled in the HP-UX inetd.conf file. The rest of the actions in this section give the administrator the option of re-enabling certain services—in particular, the services that are disabled in the last two loops in the Action section below.','The stock /etc/inetd.conf file shipped with HP-UX contains services that are rarely used or have more secure alternatives. Removing these from inetd will avoid exposure to possible security vulnerability in those services.','','Perform the following to disable standard inetd-based services: 1. Change to the /etc directory 2. Open inetd.conf 3. Disable the following services by adding a comment character (#) to the beginning of its definition: a. echo b. discard c. daytime d. chargen e. dtspc f. exec g. ntalk h. finger i. uucp j. ident k. auth l. instl_boots m. registrar n. recserv o. rpc.rstatd p. rpc.rusersd q. rpc.rwalld r. rpc.sprayd s. rpc.cmsd t. kcms_server u. printer v. shell w. login h. finger x. telnet y. ftp z. tftp aa. bootps bb. kshell cc. klogin dd. rpc.rquotad ee. rpc.ttdbserver 4. Save inetd.conf. 5. Set root as the owner of inetd.conf. 6. Set sys as the group owner of inetd.conf. 7. Restrict write access to inetd.conf to the file owner. 8. Remove the executable and sticky bit from inetd.conf. 9. Invoke inetd to reread it's config file: inetd -c The following script will perform the above procedure: cd /etc for svc in echo discard daytime chargen dtspc  exec ntalk finger uucp ident auth  instl_boots registrar recserv; do awk "($1 == "$svc") { $1 = "#" $1 }; {print}"  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf done for svc in rpc.rstatd rpc.rusersd rpc.rwalld  rpc.sprayd rpc.cmsd kcms_server; do awk "/\/$svc/ { $1 = "#" $1 }; { print }"  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf done for svc in printer shell login telnet ftp tftp  bootps kshell klogin; do awk "($1 == "$svc") { $1 = "#" $1 }; {print}"  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf done for svc in rpc.rquotad rpc.ttdbserver; do awk "/^$svc\// { $1 = "#" $1 }; { print }"  /etc/inetd.conf > /etc/inetd.conf.new cp inetd.conf.new inetd.conf done chown root:sys inetd.conf chmod go-w,a-xs inetd.conf rm -f /etc/inetd.conf.new inetd -c','[{\"cis\": [\"1.2.1\"]}, {\"cis_level\": [\"1\"]}]'),(30004,'Only enable telnet if absolutely necessary.','Re-enable telnet. Telnet uses an unencrypted network protocol, which means data from the login session (such as passwords and all other data transmitted during the session) can be stolen by eavesdroppers on the network, and also that the session can be hijacked by outsiders to gain access to the remote system. HP-UX Secure Shell (OpenSSH) provides an encrypted alternative to telnet (and other utilities) and should be used instead.','There is a mission-critical reason that requires users to access the system via telnet instead of the more secure SSH protocol.','','Perform the following to re-enable telnet: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the telnet service definition. 3. Add -b /etc/issue to the end of the telnet service definition. This will cause telnet to display the contents of /etc/issue to users attempting to access the system via telnet. 4. Save /etc/inetd.conf. The following script will perform the above procedure: awk '/^#telnet/ { $1 = "telnet" print $0 " -b /etc/issue"; next} { print } ' inetd.conf > /etc/inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.2\"]}]'),(30005,'Only enable FTP if absolutely necessary.','Re-enable ftp. Like telnet, the FTP protocol is unencrypted, which means passwords and other data transmitted during the session can be captured by sniffing the network, and that the FTP session itself can be hijacked by an external attacker. SSH provides two alternative, encrypted file transfer mechanisms, scp and sftp, which should be used instead of FTP. Even if FTP is required because the local system is an anonymous FTP server, consider requiring authenticated users on the system to transfer files via SSH-based protocols. For further information on restricting FTP access to the system, see item 1.6.2 below. Sites may also consider augmenting the 'ftpd -l' below with '-v' (10.x and 11.x) or '-L' (11.x only) for additional logging of FTP transactions, or with '-a' (11.x only) for fine grain FTP access control through the use of a configuration file - see the ftpd(1M) man page on your systems for details.','This machine serves as an (anonymous) FTP server or other mission-critical role where data must be transferred via FTP instead of the more secure alternatives.','','Perform the following to re-enable FTP: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the ftp service definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: awk ' /^#ftp/ { $1 = "ftp"; print $0; next} { print } ' inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.3\"]}]'),(30006,'Only enable rlogin/remsh/rcp if absolutely necessary.','Re-enable rlogin/remsh/rcp. SSH was designed to be a drop-in replacement for these protocols. Given the wide availability of free SSH implementations, there are few cases where these tools cannot be replaced with SSH (again, see item 1.2.1 - Install SSH).','There is a mission-critical reason to use rlogin/remsh/rcp instead of the more secure ssh/scp.','','Perform the following to re-enable rlogin/remsh/rcp: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the shell and login service definitions. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#shell/shell/; s/^#login/login/'  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.4\"]}]'),(30007,'Only enable TFTP if absolutely necessary.','Re-enable TFTP. TFTP is typically used for network booting of diskless workstations, X-terminals, and other similar devices. TFTP is also used during network installs of systems via the HP-UX Ignite facility. Routers and other network devices may copy configuration data to remote systems via TFTP for backup.','This system serves as a boot server or has other mission-critical roles where data must be transferred to and from this system via TFTP.','','Perform the following to re-enable TFTP: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the tftp service definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#tftp/tftp/' inetd.conf >inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new mkdir -p /var/opt/ignite','[{\"cis\": [\"1.2.5\"]}]'),(30008,'Only enable printer service if absolutely necessary.','Re-enable rlpdaemon based printer service. rlpdaemon provides a BSD-compatible print server interface. Even machines that are print servers may wish to leave this service disabled if they do not need to support BSD-style printing.','This machine a print server for your network.','','Perform the following to re-enable the rlpdaemon based printer service: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the printer definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure:  sed 's/^#printer/printer/' inetd.conf >inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.6\"]}]'),(30009,'Only enable rquotad if absolutely necessary.','Re-enable rquotad. rquotad allows NFS clients to enforce disk quotas on file systems that are mounted from the local system. If your site does not use disk quotas, then you may leave the rquotad service disabled.','This system an NFS file server that requires the use of disk quotas.','','Perform the following to re-enable rquotad: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the rquotad definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: awk ' $6 ~ //rpc.rquotad$/ { sub(/^#/, "") } { print } ' inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.7\"]}]'),(30010,'Only enable CDE-related daemons if absolutely necessary.','Re-enable CDE-related daemons. The rpc.ttdbserver service supports HP's CDE windowing environment. This service has a history of security problems. Not only is it vital to keep up to date on vendor patches, but also never enable this service on any system which is not well protected by a complete network security infrastructure (including network and host-based firewalls, packet filters, and intrusion detection infrastructure). Note that since this service uses ONC RPC mechanisms, it is important that the system's RPC portmapper (rpcbind) also be enabled when this service is turned on.','There a mission-critical reason to run a CDE GUI on this system.','','Perform the following to re-enable CDE-related daemons: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the rpc.ttdbserver 3. Save /etc/inetd.conf. The following script will perform the above procedure: awk ' $6 ~ //rpc.ttdbserver$/ { sub(/^#/, "") } { print } ' inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.8\"]}]'),(30011,'Only enable Kerberos-related daemons if absolutely necessary.','Re-enable Kerberos-related daemons. Kerberized rlogin/remsh offers a higher degree of security than traditional rlogin, remsh, or telnet by eliminating many clear-text password exchanges from the network. However it is still not as secure as SSH, which encrypts all traffic. Given the wide availability of free SSH implementations, there are few cases where these tools cannot be replaced with SSH.','The Kerberos security system is in use at this site and there is a mission-critical reason that requires users to access this system via Kerberized rlogin/remsh, rather than the more secure SSH protocol.','','Perform the following to re-enable Kerberos-related daemons: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the klogin definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#kshell/kshell/; s/^#klogin/klogin/'  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.9\"]}]'),(30012,'Only enable BOOTP/DHCP daemon if absolutely necessary.','Re-enable BOOTP/DHCP services. BOOTP/DHCP is a popular protocol for dynamically assigning IP addresses and other network information to systems on the network (rather than having administrators manually manage this information on each host). However, if this system is not a BOOTP/DHCP server for the network, there is no need to be running this service.','This server a BOOTP/DHCP server for the network.','','Perform the following to re-enable BOOTP/DHCP services: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the bootps definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#bootps/bootps/'  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf','[{\"cis\": [\"1.2.10\"]}]'),(30013,'Disable login: prompts on serial ports.','Disable the login: prompt on the system serial devices to make it more difficult for unauthorized users to attach modems, terminals, and other remote access devices to these ports.','If there is not a mission-critical need to provide login capability from any serial ports (such as for a modem) then disabling the login: prompt on the system serial devices reduces the risk of unauthorized access via these ports.','','Perform the following to disable the login: prompt on the system serial devices: 1. Open /etc/inittab. 2. Disable each getty instance associated with a tty device by adding a comment character (#) to the beginning of the line. 3. Save /etc/inittab.* The following script will perform the above procedure: cp -p /etc/inittab /etc/inittab.tmp sed 's/^[^#].*getty.*tty.*$/#&/'  /etc/inittab.tmp  > /etc/inittab rm -f /etc/inittab.tmp - Note that this action may safely be performed even if console access to the system is provided via the serial ports, as the line in the /etc/inittab file that corresponds to the console does not match the supplied pattern (i.e., it doesn't contain the string 'tty'). - Note that when serial port connectivity is needed, /etc/dialups and /etc/d_passwd can be set to require an extra password for serial port access. See the dialups(4) manual page for more information. - Note that by default in HP-UX 11i, only the console has a getty instance running on it.','[{\"cis\": [\"1.3.1\"]}, {\"cis_level\": [\"1\"]}]'),(30014,'Disable NIS/NIS+ related processes, if possible.','Disable NIS/NIS+ related processes. Network Information Service (NIS) is a distributed database providing centralized control of names, addresses, services, and key configuration files throughout a network of servers and clients. NIS was formerly known as Yellow Pages (YP). NIS+ is a replacement for NIS services, and is more scalable, flexible, and secure. It adds a security system with authentication and authorization services to validate users on the network and to determine if they allowed to access or modify the information requested. However, both systems have known security vulnerabilities, and have been an entry point for security attacks.','Eliminate exposure to NIS/NIS+ vulnerabilities by not running related daemons on hosts that are not NIS/NIS+ servers or clients.','','Perform the following to disable the startup of NIS/NIS+ related processes: ch_rc -a -p NIS_MASTER_SERVER=0 -p NIS_SLAVE_SERVER=0  -p NIS_CLIENT=0 -p NISPLUS_SERVER=0  -p NISPLUS_CLIENT=0 /etc/rc.config.d/namesvrs','[{\"cis\": [\"1.3.2\"]}, {\"cis_level\": [\"1\"]}]'),(30015,'Disable printer daemons, if possible.','Disable printer daemons. The Technical Print Service (TPS) is a printer service used in the X-Windows and/or CDE environment. It is recommended that this service be disabled if the hosting system does not participate in print services The administrator may wish to consider converting to the LPRng print system (see http://www.lprng.org/) which was designed with security in mind and is widely portable across many different Unix platforms. Note, however, that LPRng is not supported by Hewlett-Packard.','Disabling unused services, such as TPS, will reduce the remote and local attack surfaces of the hosting system.','','Perform the following to disable printer daemons: 1. Set the LP parameter to zero in the lp system configuration file /etc/rc.config.d/lp 2. Set the XPRINTSERVERS parameter to an empty string in the tps system configuration file /etc/rc.config.d/tps The following script will perform the above procedure:  ch_rc -a -p XPRINTSERVERS="''" /etc/rc.config.d/tps ch_rc -a -p LP=0 /etc/rc.config.d/lp','[{\"cis\": [\"1.3.3\"]}, {\"cis_level\": [\"1\"]}]'),(30016,'Disable the CDE GUI login, if possible.','CDE stands for 'Common Desktop Environment,' and is an environment for logging on to and interacting with your system via an X-windows type GUI interface from the console. Intended for use with workstation or desktop systems, this service is not commonly used with the server-class systems or in large enterprise environments. The X Windows-based CDE GUI services were developed with a different set of security expecations from those expected in many enterprise deployments, and have had a history of security issues. Unless there is a mission-critical need for a CDE GUI login to the system, this service should not be run to further reduce opportunities for security attacks.','The X Windows-based CDE GUI on HP-UX systems has had a history of security issues, and should be disabled if unused.','','Perform the following to disable the GUI login: ch_rc -a -p DESKTOP="" /etc/rc.config.d/desktop','[{\"cis\": [\"1.3.4\"]}, {\"cis_level\": [\"1\"]}]'),(30017,'Disable email server, if possible.','Disable the sendmail daemon to avoid processing incoming email. It is possible to run a Unix system with the Sendmail daemon disabled and still allow users on that system to send email out from that machine. Running Sendmail in 'daemon mode' (with the -bd command-line option) is only required on machines that act as mail servers, receiving and processing email from other hosts on the network. The remediation below will result in a machine that can send email but not receive it. - Note that after disabling the -bd option on the local mail server on systems running Sendmail v8.12 or later (8.13 is currently shipped as part of HP-UX 11iv3), it is also necessary to modify the /etc/mail/submit.cf file. Find the line that reads 'D{MTAHost}localhost' and change localhost to the name of some other local mail server for the organization. This will cause email generated on the local system to be relayed to that mail server for further processing and delivery. - Note that if the system is an email server, the administrator is encouraged to search the Web for additional documentation on Sendmail security issues.','Avoid potential vulnerabilities in the sendmail server if incoming email service is not used.','','Perform the following to disable the sendmail server: 1. Set the SENDMAIL_SERVER parameter to zero in the mailservs system configuration file. 2. Setup a cron job to run sendmail at regular intervals (e.g. every hour) in order to process queued, outgoing mail. The following script will perform the above procedure: ch_rc -a -p SENDMAIL_SERVER=0 /etc/rc.config.d/mailservs cd /var/spool/cron/crontabs crontab -l >root.tmp echo '0 * * * * /usr/lib/sendmail -q' >>root.tmp crontab root.tmp rm -f root.tmp','[{\"cis\": [\"1.3.5\"]}, {\"cis_level\": [\"1\"]}]'),(30018,'Disable SNMP and OpenView Agents, if remote management or monitoring are not needed.','Disable SNMP and OpenView agents if they are not needed. Note: If SNMP is used, it is recommended to change the default SNMP community string by modifying the get-community and set-community parameters in the SNMP configuration file /etc/SnmpAgent.d/snmpd.conf.','If SNMP and OpenView agents are not needed, avoid potential security vulnerabilities in these programs by disabling them.','','Perform the following to disable the SNMP and OpenView Agents: cd /sbin/rc2.d mv -f S570SnmpFddi .NOS570SnmpFddi ch_rc -a -p SNMP_HPUNIX_START=0  /etc/rc.config.d/SnmpHpunix ch_rc -a -p SNMP_MASTER_START=0  /etc/rc.config.d/SnmpMaster ch_rc -a -p SNMP_MIB2_START=0  /etc/rc.config.d/SnmpMib2 ch_rc -a -p SNMP_TRAPDEST_START=0  /etc/rc.config.d/SnmpTrpDst ch_rc -a -p OSPFMIB=0  /etc/rc.config.d/netdaemons ch_rc -a -p OPCAGT=0  /etc/rc.config.d/opcagt','[{\"cis\": [\"1.3.6\"]}, {\"cis_level\": [\"1\"]}]'),(30019,'Disable rarely used standard boot services.','Disable other standard boot services. Setting these variables in the /etc/rc.config.d configuration files will effectively disable a wide variety of infrequently used subsystems. Variables are merely set (rather than renaming or removing startup scripts) so that the local administrator can easily "restore" any of these services if they discover a mission-critical need to have it. Additionally, HP-UX patches tend to supply fresh copies of the startup scripts, so they may get inadvertently re- enabled, whereas setting configuration variables usually survives patch installs. Finally, setting configuration variables is the method recommended and supported by HP. Note that not all of the configuration files listed above will exist on all systems (some are only valid for certain releases, others only exist if certain OEM vendor software is installed). The rest of the actions in this section give the administrator the option of re-enabling certain services - in particular, the services that are disabled in the second block of the remediation section below. Rather than disabling and then re-enabling these services, experienced administrators may wish to simply disable only those services that they know are unnecessary for their systems. Note: that HP-UX 11.31 was the first version to support disablement of the NFS core services. Disablement on earlier versions is possible by moving /sbin/rc2.d/S400nfs.core to /sbin/rc2.d/.NOS400nfs.core, but there is some risk of system instability.','Avoid potential security vulnerabilities in infrequently used subsystems by disabling them.','','Perform the following: ch_rc -a -p START_SNAPLUS=0 -p START_SNANODE=0  -p START_SNAINETD=0 /etc/rc.config.d/snaplus2 ch_rc -a -p MROUTED=0 -p RWHOD=0 -p DDFA=0  -p START_RBOOTD=0 /etc/rc.config.d/netdaemons ch_rc -a -p RARPD=0 -p RDPD=0 /etc/rc.config.d/netconf ch_rc -a -p PTYDAEMON_START=0 /etc/rc.config.d/ptydaemon ch_rc -a -p VTDAEMON_START=0 /etc/rc.config.d/vt ch_rc -a -p NAMED=0 /etc/rc.config.d/namesvrs ch_rc -a -p START_I4LMD=0 /etc/rc.config.d/i4lmd ch_rc -a -p RUN_X_FONT_SERVER=0 /etc/rc.config.d/xfs ch_rc -a -p AUDIO_SERVER=0 /etc/rc.config.d/audio ch_rc -a -p SLSD_DAEMON=0 /etc/rc.config.d/slsd ch_rc -a -p RUN_SAMBA=0 /etc/rc.config.d/samba ch_rc -a -p RUN_CIFSCLIENT=0  /etc/rc.config.d/cifsclient ch_rc -a -p NFS_SERVER=0  -p NFS_CLIENT=0 /etc/rc.config.d/nfsconf ch_rc -a -p HPWS_APACHE_START=0 /etc/rc.config.d/hpws_apacheconf ch_rc -a -p NFS_CORE=0 /etc/rc.config.d/nfsconf','[{\"cis\": [\"1.3.7\"]}, {\"cis_level\": [\"1\"]}]'),(30020,'Only enable Windows-compatibility server processes if absolutely necessary.','Re-enable CIFS Server (Samba) services. HP-UX 11i includes the popular Open Source Samba server (HP-UX CIFS Server) for providing file and print services to Windows-based systems. This allows an HP-UX system to act as a file or print server on a Windows network, and even act as a Domain Controller (authentication server) to older Windows operating systems. However, if this functionality is not required by the site, this service should be disabled.','This machine provides authentication, file sharing, or printer sharing services to systems running Microsoft Windows operating systems.','','Perform the following to re-enable CIFS Server: ch_rc -a -p RUN_SAMBA=1 /etc/rc.config.d/samba','[{\"cis\": [\"1.3.8\"]}]'),(30021,'Only enable Windows-compatibility client processes if absolutely necessary.','Re-enable the HP CIFS Client service.','This system requires access to file systems from remote servers via the Windows (SMB) file services.','','Perform the following: ch_rc -a -p RUN_CIFSCLIENT=1 /etc/rc.config.d/cifsclient','[{\"cis\": [\"1.3.9\"]}]'),(30022,'Only enable NFS server processes if absolutely necessary.','Re-enable the NFS file service. NFS is frequently exploited to gain unauthorized access to files and systems. Clearly there is no need to run the NFS server-related daemons on hosts that are not NFS servers. If the system is an NFS server, the admin should take reasonable precautions when exporting file systems, including restricting NFS access to a specific range of local IP addresses and exporting file systems "read-only" and "nosuid" where appropriate. For more information consult the exportfs(1M) manual page. Much higher levels of security can be achieved by combining NFS with secure RPC or Kerberos, although there is significant administrative overhead involved in this transition. Note that since this service uses ONC RPC mechanisms, it is important that the system's RPC portmapper (rpcbind) also be enabled when this service is turned on. For more information see Item 1.3.12 below. Also, note that some releases of Oracle software for HP-UX require NFS services in order to install properly. Therefore, the NFS server process may need to be started by hand on systems on which Oracle software is to be installed/updated. This can be accomplished by performing the following: 1. Temporarily set NFS_SERVER=1, /etc/rc.config.d/nfsconf 2. Execute:  /sbin/init.d/nfs.core start /sbin/init.d/nfs.server start 3. Install Oracle 4. Stop the NFS services:  /sbin/init.d/nfs.core stop /sbin/init.d/nfs.server stop 5. Disable the NFS services by resetting NFS_SERVER=0, NUM_NFSD=0, and NUM_NFSIOD=0 in /etc/rc.config.d/nfsconf.','This machine is a NFS file server.','','Perform the following: ch_rc -a -p NFS_SERVER=1 /etc/rc.config.d/nfsconf','[{\"cis\": [\"1.3.10\"]}]'),(30023,'Only enable NFS client processes if absolutely necessary.','Re-enable the NFS Client service. Again, unless there is a significant need for this system to acquire data via NFS, administrators should disable NFS-related services. Note that other file transfer schemes (such as rdist via SSH) can often be more secure than NFS for certain applications, although again the use of secure RPC or Kerberos can significantly improve NFS security. Also note that if the machine will be an NFS client, then the rpcbind process must be running (see Item 3.12 below). - Note that since this service uses ONC RPC mechanisms, it is important that the system's RPC portmapper (rpcbind) also be enabled when this service is turned on. For more information see Item 3.12 below.','This system must access file systems from remote servers via NFS.','','Perform the following: ch_rc -a -p NFS_CLIENT=1 /etc/rc.config.d/nfsconf','[{\"cis\": [\"1.3.11\"]}]'),(30024,'Only enable RPC-based services if absolutely necessary.','Re-enable RPC-based services. RPC-based services typically use very weak or non-existent authentication and yet may share very sensitive information. Unless one of the services listed above is required on this machine, it is best to disable RPC-based tools completely. If you are unsure whether or not a particular third-party application requires RPC services, consult with the application vendor. Note that disabling this service by renaming the startup file may not survive the install of RPC-related patches.','RPC-based services are used such as: - This machine is an NFS client or server. - This machine is an NIS (YP) or NIS+ client or server. - This machine runs a GUI or GUI-based administration tool. - The machine runs a third-party software application which is dependent on RPC support (example: FlexLM License managers).','','Perform the following for 11.31 and later: ch_rc -a -p NFS_CORE=1 /etc/rc.config.d/nfsconf For 11.23 and prior:  mv -f /sbin/rc2.d/.NOS400nfs.core  /sbin/rc2.d/400nfs.core','[{\"cis\": [\"1.3.12\"]}]'),(30025,'Only enable Web server if absolutely necessary.','Re-enable the Web server suite. Even if this machine is a Web server, the local site may choose not to use the Web server provided with HP-UX in favor of a locally developed and supported Web environment. If the machine is a Web server, the administrator is encouraged to search the Web for additional documentation on Web server security. A good starting point is http://httpd.apache.org/docs-2.0/misc/security_tips.html. Note that this action only disables the default web server shipped with the system. Other webservers instances may still be running.','There is a mission-critical reason why this system must run a Web server.','','Perform the following: ch_rc -a -p NS_FTRACK=1 /etc/rc.config.d/ns-ftrack ch_rc -a -p APACHE_START=1 /etc/rc.config.d/apacheconf ch_rc -a -p HPWS_APACHE32_START=1 /etc/rc.config.d/hpws_apache32conf ch_rc -a -p HPWS_TOMCAT_START=1 /etc/rc.config.d/hpws_tomcatconf ch_rc -a -p NS_FTRACK=1 /etc/rc.config.d/ns-ftrack ch_rc -a -p HPWS_WEBMIN_START=1 /etc/rc.config.d/hpws_webminconf','[{\"cis\": [\"1.3.13\"]}]'),(30026,'Only enable BIND DNS server if absolutely necessary.','Re-enable the BIND DNS service. The BIND DNS server, or named, maps IP addresses to hostnames across the Internet and supplies these services to other hosts on the local local network. Though it has been widely implemented, BIND has a long history of security flaws, especially in the BIND 8.x release tree generally shipped with HP-UX 11.x systems. Therefore, if you are going to run BIND, you should strongly consider moving to the BIND 9.x release-tree. HP has supported BIND 9 packages available from http://software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=BIND9.2 . Or it is available directly from the Internet Software Consortium (the developers of BIND), whose website is at http://www.isc.org.','There exists a mission-critical reason why this system must run a DNS server.','','Perform the following: 11.23 and prior: ch_rc -a -p NAMED=1 /etc/rc.config.d/namesvrs 11.31 and later: ch_rc -a -p NAMED=1 /etc/rc.config.d/namesvrs_dns','[{\"cis\": [\"1.3.14\"]}]'),(30027,'Enable stack protection.','Enabling stack protection prevents certain classes of buffer overflow attacks and is a significant security enhancement. - Note that HP-UX 11i is much more capable in this and other security areas than older releases; therefore, administrators should strongly consider upgrading from older releases. - Note that this action requires a subsequent reboot to take effect in some versions of HP-UX.','Buffer overflow exploits have been the basis for many of the recent highly publicized compromises and defacements of large numbers of Internet connected systems. Many of the automated tools in use by system crackers exploit well-known buffer overflow problems in vendor-supplied and third-party software. Enabling stack protection prevents certain classes of buffer overflow attacks and is a significant security enhancement.','','For 11i v2 and later: kctune -K executable_stack=0 For 11i v1: /usr/sbin/kmtune -s executable_stack=0 && mk_kernel && kmupdate','[{\"cis\": [\"1.4.1\"]}, {\"cis_level\": [\"1\"]}]'),(30028,'Network parameter modifications.','Modify the network parameter boot configuration file to meet current best practices. Note: HP-UX 11.11 systems require patch PHNE_25644 for ndd to set arp_cleanup_interval from /etc/rc.config.d/nddconf. - Bastille Note: Bastille performs a similar action but does not support the exact same changes.','Network parameter default values should align with current best practices unless there is a specific need to use other values.','','Perform the following to update the default network parameter values: 1. Change to the /etc/rc.config.d directory 2. Open nddconf and review the comment lines on how to use the configuration file 3. Set each of the following network parameters to the recommended value. If a parameter does not have an entry in nddconf then add a new entry to the end of the file while properly incrementing the parameter index. 4. Save nddconf. - If creating this file for the first time: 1. Set root as the owner of nddconf. 2. Set sys as the group owner of nddconf. 3. Restrict write access to nddconf to the file owner. 4. Remove the executable and sticky bit from nddconf. If the existing nddconf file contains no entries, then the following script will perform the above procedure: cd /etc/rc.config.d cat <<EOF > nddconf # Increase size of half-open connection queue TRANSPORT_NAME[0]=tcp NDD_NAME[0]=tcp_syn_rcvd_max NDD_VALUE[0]=4096 # Reduce timeouts on ARP cache TRANSPORT_NAME[1]=arp NDD_NAME[1]=arp_cleanup_interval NDD_VALUE[1]=60000 # Drop source-routed packets TRANSPORT_NAME[2]=ip NDD_NAME[2]=ip_forward_src_routed NDD_VALUE[2]=0 # Don't forward directed broadcasts TRANSPORT_NAME[3]=ip NDD_NAME[3]=ip_forward_directed_broadcasts NDD_VALUE[3]=0 # Don't respond to unicast ICMP timestamp requests TRANSPORT_NAME[4]=ip NDD_NAME[4]=ip_respond_to_timestamp NDD_VALUE[4]=0 # Don't respond to broadcast ICMP tstamp reqs TRANSPORT_NAME[5]=ip NDD_NAME[5]=ip_respond_to_timestamp_broadcast NDD_VALUE[5]=0 # Don't respond to ICMP address mask requests TRANSPORT_NAME[6]=ip NDD_NAME[6]=ip_respond_to_address_mask_broadcast NDD_VALUE[6]=0 # Don‟t respond to broadcast echo requests TRANSPORT_NAME[7]=ip NDD_NAME[7]=ip_respond_to_echo_broadcast NDD_VALUE[7]=0 EOF chown root:sys nddconf chmod go-w,ug-s nddconf','[{\"cis\": [\"1.4.2\"]}, {\"cis_level\": [\"1\"]}]'),(30029,'Use more random TCP sequence numbers.','Generate initial TCP sequence numbers that comply with RFC1948. - Note: In HP-UX 11i v1 and later, an algorithm largely compliant with RFC1948 is already used. However, setting the isn passphrase closes the small remaining gap, and adds entropy to the seed.','Makes remote off-net session hijacking attacks more difficult.','','Perform the following to use more random TCP sequence numbers upon system startup: 1. Create/open the file /sbin/rc2.d/S999tcpisn 2. Add the following line: ndd -set /dev/tcp tcp_isn_passprase=<random string> replacing <random string> with a string of random characters. 3. Save the file. 4. Set root as the owner and bin as the group owner of the file. 5. Restrict write access to the file. 6. Set the execution bit for the file.','[{\"cis\": [\"1.4.3\"]}, {\"cis_level\": [\"1\"]}]'),(30030,'Additional network parameter modifications.','Configure networking to NOT forward TCP/IP packets between multiple networks, even if the machine has multiple network adapters connected to multiple networks.','System is not going to be used as a firewall or gateway to pass network traffic between different networks.','','Perform the following to disable forwarding TCP/IP packets between networks: 1. Change to the /etc/rc.config.d directory 2. Open nddconf and review the comment lines on how to use the configuration file 3. Set each of the following network parameters to the recommended value. If a parameter does not have an entry in nddconf then add a new entry to the end of the file while properly incrementing the parameter index. 4. Save nddconf. If creating this file for the first time: 5. Set root as the owner of nddconf. 6. Set sys as the group owner of nddconf. 7. Restrict write access to nddconf to the file owner. 8. Remove the executable and sticky bit from nddconf. The following script will perform the above procedure properly if used as a follow-on from the script in item 1.4.2: cat <<EOF >> /etc/rc.config.d/nddconf # Don‟t act as a router TRANSPORT_NAME[8]=ip NDD_NAME[8]=ip_forwarding NDD_VALUE[8]=0 TRANSPORT_NAME[9]=ip NDD_NAME[9]=ip_send_redirects NDD_VALUE[9]=0 EOF','[{\"cis\": [\"1.4.4\"]}, {\"cis_level\": [\"1\"]}]'),(30032,'Enable Hidden Passwords.','Enable hidden passwords by converting the system to a Trusted System or to use Shadow Passwords. - Note: do not perform this if the system runs applications that read the encrypted password entries in /etc/passwd directly.','Without hidden passwords, an intruder could use any user's account to obtain hashed passwords and use crack or similar utilities to find easily guessed passwords. Password aging (covered in item 1.8.3) ensures that users change their passwords on a regular basis and helps stop the use of stolen passwords.','','Perform one of the following to convert the system to trusted mode or shadowed mode: A. Use the system management program smh or sam to convert to a trusted system -or- B. Use the command pwconv to convert to shadowed passwords.','[{\"cis\": [\"1.6.1\"]}, {\"cis_level\": [\"1\"]}]'),(30033,'Restrict users who can access to FTP.','Configure FTP to prevent certain users from accessing the system via FTP. The file ftpusers contains a list of users who are not allowed to access the system via FTP. Generally, only normal users should ever access the system via FTP - there should be no reason for 'system' type accounts to be transferring information via this mechanism. Certainly, the root account should never be allowed to transfer files directly via FTP. - Note: more fine-grained FTP access controls can be placed in /etc/ftpd/ftpaccess.','Privileged users such as root and other 'system' type accounts should never be transferring information via such an insecure service as FTP.','','Perform the following to restrict default priviledged users from access to FTP: 1. Add the users root daemon bin sys adm lp uucp nuucp nobody hpdb useradm to the file /etc/ftpd/ftpusers (each user on a single line). 2. Set the file owner and group owner to the user bin. 3. Set the file permissions so that only the file owner has read or write perms and no user has execute permission (600). The following script will create and populate the ftpusers file as described above: for name in root daemon bin sys adm lp  uucp nuucp nobody hpdb useradm do echo $name done >> $ftpusers sort -u $ftpusers > $ftpusers.tmp cp $ftpusers.tmp $ftpusers rm -f $ftpusers.tmp chown bin:bin $ftpusers chmod 600 $ftpusers','[{\"cis\": [\"1.6.2\"]}, {\"cis_level\": [\"1\"]}]'),(30034,'Prevent Syslog from accepting messages from the network.','Prevent syslogd from accepting messages from the network. By default the system logging daemon, syslogd, listens for log messages from other systems on network port 514/udp. Unfortunately, the protocol used to transfer these messages does not include any form of authentication, so a malicious outsider could simply barrage the local system's Syslog port with spurious traffic—either as a denial-of-service attack on the system, or to fill up the local system's logging file systems so that subsequent attacks will not be logged. - Note: Do not perform this action if this machine is a log server, or needs to receive Syslog messages via the network from other systems. - Note: It is considered good practice to setup one or more machines as central 'log servers' to aggregate log traffic from all machines at a site. However, unless a system is set up to be one of these 'log server' systems, it should not be listening on 514/udp for incoming log messages.','Disabling unused network services will reduce the remote attack surfaces of the hosting system.','','Disable the syslog network option by doing the following: 1. Open the syslogd startup configuration file /etc/rc.config.d/syslogd 2. Add the parameter "-N" to the SYSLOGD_OPTS= line if it is not already present 3. Save and close the file. The following script will perform the procedure above: SYSLOGD_OPTS="`sh -c ". /etc/rc.config.d/syslogd ;  echo "$SYSLOGD_OPTS"'`" if [[ "$SYSLOGD_OPTS" = *-N* ]]; then ch_rc -a -p SYSLOGD_OPTS="-N $SYSLOGD_OPTS"  /etc/rc.config.d/syslogd fi','[{\"cis\": [\"1.6.3\"]}, {\"cis_level\": [\"1\"]}]'),(30035,'Disable XDMCP port.','Disable the XDMCP port for remote login services. The standard GUI login provided on most Unix systems can act as a remote login server to other devices (including X terminals and other workstations). Access control is handled via the Xaccess file—by default under HP-UX, this file allows any system on the network to get a remote login screen from the local system. This behavior can be overridden in the /etc/dt/config/Xaccess file.','XDMCP is an unencrypted protocol that may reduce the confidentiality and integrity of data that traverses it.','','Perform the following to disable the XDMCP port: 1. Open the file /etc/dt/config/Xconfig. If it does not exist, copy it from /usr/dt/config/Xconfig. 2. Append the line Dtlogin.requestPort:0 to the file and close. The following script will perform the procedure above: if [ ! -f /etc/dt/config/Xconfig ]; then mkdir -p /etc/dt/config cp -p /usr/dt/config/Xconfig /etc/dt/config fi cd /etc/dt/config awk '/Dtlogin.requestPort:/  { print "Dtlogin.requestPort: 0"; next } { print }' Xconfig > Xconfig.new cp Xconfig.new Xconfig rm -f Xconfig.new','[{\"cis\": [\"1.6.4\"]}, {\"cis_level\": [\"1\"]}]'),(30036,'Set default locking screensaver timeout.','The default timeout is between 10 and 30 minutes of keyboard/mouse inactivity before a password-protected screen saver is invoked by the CDE session manager depending on the OS release and the locale. Uniformly reduce this default timeout value to 10 minutes (this setting can still be overridden by individual users in their own environment.)','Setting the inactivity timer to a low value will reduce the probability of a malicious entity compromising the system via the console.','','Perform the following to set a default screensaver timeout for all environments: 1. For every sys.resources file in each directory in /usr/dt/config/ create a corresponding /etc/dt/config/*/sys.resources file if it does not already exist. 2. Append the following lines to each /etc/dt/config/*/sys.resources dtsession*saverTimeout: 10 dtsession*lockTimeout: 10 The following script will perform the procedure above: for file in /usr/dt/config/*/sys.resources; do dir="$(dirname "$file" | sed 's|^/usr/|/etc/|')" mkdir -p "$dir" echo 'dtsession*saverTimeout: 10' >>"$dir/sys.resources" echo 'dtsession*lockTimeout: 10' >>"$dir/sys.resources" done','[{\"cis\": [\"1.6.5\"]}, {\"cis_level\": [\"1\"]}]'),(30037,'Configure IPFilter to allow only select communication.','HP-UX IPFilter (B9901AA) is a stateful system firewall that controls IP packet flow in or out of a machine. It is installed by default on HP-UX 11iv2 (11.23) and later. On older systems, IPFilter can be obtained from http://www.hp.com/go/ipfilter. The rules below will work in an otherwise-empty ipf.conf file, or, if there are rules already present, it will block all that were not passed earlier in the ruleset. This is less likely to break things, but will allow more traffic through. Alternatively, you can instead take the pass lines below (not using the block rule), and change them into 'block in quick' rules, and place those at the top of the file. This will error on the side of blocking traffic. See ipf(5) for detail. Your ruleset can be tested using ipftest(1). Bastille note: if using to change and monitor the IPFilter firewall, ensure that rules are added to /etc/opt/sec_mgmt/bastille/ipf.customrules, and that Bastille is rerun with the last config file, so they will not be overwritten in a subsequent lockdown.','Restricting incoming network traffic to explicitly allowed hosts will help prevent unauthorized access the system.','','Perform the following to add enable ipfilter and install a default ruleset to block unauthorized incoming connections: 1. Enable ipfilter: ipfilter -e 2. Append the following lines to /etc/opt/ipf/ipf.conf:  block in all pass in from <allowed net>/<mask> pass in from <allowed net>/<mask> replacing each <allowed net>/<mask> with an authorized IP address and mask. 3. Flush the old rules and read in the updated rules: ipf -Fa -f /etc/opt/ipf/ipf.conf The following script can be used to as a template for creating your own script to perform the procedure above: ipfilter -e cat <<EOF >> /etc/opt/ipf/ipf.conf block in all pass in from <allowed net>/<mask> pass in from <allowed net>/<mask> EOF ipf -Fa -f /etc/opt/ipf/ipf.conf','[{\"cis\": [\"1.6.6\"]}, {\"cis_level\": [\"1\"]}]'),(30038,'Restrict at/cron to authorized users.','The cron.allow and at.allow files are a list of users who are allowed to run the crontab and at commands to submit jobs to be run at scheduled intervals. - Note that even though a given user is not listed in cron.allow, cron jobs can still be run as that user. cron.allow only controls administrative access to the crontab command for scheduling and modifying cron jobs.','On many systems, only the system administrator needs the ability to schedule jobs.','','Perform the following to restrict at/cron to root only: 1. Change to the /var/adm/cron directory 2. Archive or delete any existing cron.deny and at.deny files 3. Create or replace the cron.allow and at.allow files with a single line file containing just root 4. Ensure that the files are owned by root and group owned by sys 5. Ensure that no users have write/execute permission to the files, and that only root has read access to the files. The following script will perform the procedures above: cd /var/adm/cron rm -f cron.deny at.deny echo root >cron.allow echo root >at.allow chown root:sys cron.allow at.allow chmod 400 cron.allow at.allow','[{\"cis\": [\"1.6.7\"]}, {\"cis_level\": [\"1\"]}]'),(30039,'Restrict crontab file permissions.','The system crontab files are only accessed by the cron daemon (which runs with superuser privileges) and the crontab command (which is set-UID to root).','Allowing unprivileged users to read or (even worse) modify system crontab files can create the potential for a local user on the system to gain elevated privileges.','','Perform the following so that only root has access to the crontab files: 1. Change to the /var/spool/cron/crontabs directory 2. Change the file owner to root and file group owner to sys 3. Set file permissions so that only root has access to the files. The following script will perform the procedure above: cd /var/spool/cron/crontabs chown root:sys * chmod og-rwx *','[{\"cis\": [\"1.6.8\"]}, {\"cis_level\": [\"1\"]}]'),(30040,'Restrict root logins to system console.','Anonymous root logins should never be allowed except on the system console in emergency situations. At all other times, the administrator should access the system via an unprivileged account and use some authorized mechanism to gain additional privilege, such as the su command, the freely-available sudo package discussed in item SN.6, or the HP Role Based Authorization system also discussed in item SN.6. These mechanisms provide at least a limited audit trail in the event of problems.','Anonymous root logins do not provide an audit trail, nor are subject to additional authorization provisions.','','Perform the following to restrict root logins to the system console only: 1. Replace the file /etc/securetty with a single line file containing console 2. Change the file owner to root and file group owner to sys 3. Set file permissions so that only root has access to the file. The following script will perform the procedure above:  echo console > /etc/securetty chown root:sys /etc/securetty chmod og-rwx /etc/securetty','[{\"cis\": [\"1.6.9\"]}, {\"cis_level\": [\"1\"]}]'),(30041,'Disable nobody access for secure RPC.','The keyserv process stores user keys that are utilized with the ONC secure RPC mechanism. The action below prevents keyserv from using default keys for the "nobody" user, effectively stopping this user from accessing information via secure RPC.','The default 'nobody' user should not be accessing information via secure RPC.','','Perform the following to disable nobody access for secure RPC: 1. Add the '-d' option to the KEYSERV_OPTIONS parameter in the system startup configuration file /etc/rc.config.d/namesvrs The following script will perform the procedure above: KEYSERV_OPTIONS="`sh -c '. /etc/rc.config.d/namesvrs ; echo "$KEYSERV_OPTIONS"'`" ch_rc -a -p KEYSERV_OPTIONS="-d $KEYSERV_OPTIONS "  /etc/rc.config.d/namesvrs','[{\"cis\": [\"1.6.11\"]}, {\"cis_level\": [\"1\"]}]'),(30042,'Enable kernel-level auditing.','If inetd is running, it is a good idea to make use of the 'logging' (-l) feature of the HP-UX inetd that logs information about the source of any network connections seen by the daemon, allowing the administrator (or software) to scan the logs for unusual activity. This is especially powerful when combined with the access control capabilities accessible through inetd‟s /var/adm/inetd.sec configuration file. This information is logged via Syslog and by default HP-UX systemsdeposit this logging information in var/adm/syslog/syslog.log with other system log messages. Should the administrator wish to capture this information in a separate file, simply modify /etc/syslog.conf to log daemon.notice to some other log file destination. IPFilter, which comes with HP-UX, can log inetd and other connections or attempted connections with its 'ipmon' daemon as either a compliment or alternative to inetd logging.','By recording key system events in log files, kernel-level auditing provides a trail to detect and analyze security breaches. Moreover, this data can be used to detect potential security weakness, and also serves as a deterrent against system abuses.','','Use the Systems Management Homepage (SMH) facility to configure and enable the type and level of auditing appropriate for your environment.','[{\"cis\": [\"1.7.1\"]}, {\"cis_level\": [\"1\"]}]'),(30043,'Enable logging from inetd.','If inetd is running, it is a good idea to make use of the "logging" (-l) feature of the HP-UX inetd that logs information about the source of any network connections seen by the daemon, allowing the administrator (or software) to scan the logs for unusual activity. This is especially powerful when combined with the access control capabilities accessible through inetd's /var/adm/inetd.sec configuration file. This information is logged via Syslog and by default HP-UX systems deposit this logging information in var/adm/syslog/syslog.log with other system log messages. Should the administrator wish to capture this information in a separate file, simply modify /etc/syslog.conf to log daemon.notice to some other log file destination. IPFilter, which comes with HP-UX, can log inetd and other connections or attempted connections with its "ipmon" daemon as either a compliment or alternative to inetd logging.','Logging information about the source of inetd network connections assists in the detection and identification of unusual activity that may be associated with security intrusions.','','Perform the following: ch_rc -a -p INETD_ARGS=-l /etc/rc.config.d/netdaemons','[{\"cis\": [\"1.7.2\"]}, {\"cis_level\": [\"1\"]}]'),(30045,'Block system accounts.','Accounts that are not being used by regular users should be locked. Not only should the password field for the account be set to an invalid string, but the shell field in the password file should contain an invalid shell. Access to the uucp and nuucp accounts is only needed when the deprecated Unix to Unix Copy (UUCP) service is in use. The other listed accounts should never require direct access. The actions below locks the passwords to these accounts (on systems converted to Trusted Mode only) and sets the login shell to /bin/false. Note that the above is not an exhaustive list of possible system/application accounts that could be installed on the system. An audit of all users on the system is the only way to be sure that only authorized accounts are in place.','System accounts are not used by regular users, and almost never require direct access; thus, they should be locked to prevent accidental or malicious usage.','','Perform the following to properly lock the following known system users: www sys smbnull iwww owww sshd hpsmh named uucp nuucp adm daemon bin lp nobody noaccess hpdb useradm 1. Lock the account: passwd -l <user> 2. Set the login shell to an invalid program: /usr/sbin/usermod -s /bin/false <user> 3. If a trusted system, set the adminstrator lock: /usr/lbin/modprpw -m alock=YES <user> The following script will perform the procedure above: for user in www sys smbnull iwww owww sshd  hpsmh named uucp nuucp adm daemon bin lp  nobody noaccess hpdb useradm; do passwd -l "$user" /usr/sbin/usermod -s /bin/false "$user" if [[ -f /tcb ]]; then /usr/lbin/modprpw -m alock=YES "$user" fi done','[{\"cis\": [\"1.8.1\"]}, {\"cis_level\": [\"1\"]}]'),(30046,'Verify that there are no accounts with empty password fields.','An account with an empty password field means that anybody may log in as that user without providing a password at all. All accounts should have strong passwords or should be locked by using a password string like "*", "NP", or "*LOCKED*"','User accounts should have passwords, or be locked.','','Perform the following to ensure that no accounts have an empty password field: 1. Identify all user accounts with an empty password field: logins -p 2. Lock each account: passwd -l <user> 3. If a trusted system, set the administrator lock: /usr/lbin/modprpw -m alock=YES <user>','[{\"cis\": [\"1.8.2\"]}, {\"cis_level\": [\"1\"]}]'),(30047,'Set account expiration parameters on active accounts.','The commands below will set all active accounts (except the root account) to force password changes every 90 days (91 days when not running in HP-UX Trusted Mode) and then prevent password changes for seven days (one week) thereafter. Users will begin receiving warnings 30 days (28 days when not running in HP-UX Trusted Mode) before their password expires. Sites also have the option of expiring idle accounts after a certain number of days (see the on-line manual page for the usermod command, particularly the -f option). These are recommended starting values, but sites may choose to make them more restrictive depending on local policies.','It is a good idea to force users to change passwords on a regular basis.','','Perform the following to set password expiration parameters on all active accounts: 1. Identify all user accounts excluding root that are not locked, and for each: 2. Set password expiration parameters for the account (logname) by executing the following: passwd -x 91 -n 7 -w 28 <logname> for trusted systems, perform the following: /usr/lbin/modprpw -m exptm=90,mintm=7,expwarn=30 <logname> 3. Set the default account expiration parameters by appending the following lines to /etc/default/security: a. PASSWORD_MAXDAYS=91 b. PASSWORD_MINDAYS=7 c. PASSWORD_WARNDAYS=28 4. Set the default parameters for trusted systems with: /usr/lbin/modprdef -m exptm=90,mintm=7,expwarn=30 The following script will perform the procedure above. logins -ox  | awk -F: '($8 != "LK" && $1 != "root") { print $1 }'  | while read logname; do passwd -x 91 -n 7 -w 28 "$logname" /usr/lbin/modprpw -m exptm=90,mintm=7,expwarn=30  "$logname" done echo PASSWORD_MAXDAYS=91 >> /etc/default/security echo PASSWORD_MINDAYS=7 >> /etc/default/security echo PASSWORD_WARNDAYS=28 >> /etc/default/security /usr/lbin/modprdef -m exptm=90,mintm=7,expwarn=30','[{\"cis\": [\"1.8.3\"]}, {\"cis_level\": [\"1\"]}]'),(30048,'Set strong password enforcement policies.','The policies set here are designed to force users to make better password choices when changing their passwords. Sites often have differing opinions on the optimal value of the MIN_PASSWORD_LENGTH and PASSWORD_HISTORY_DEPTH parameters. A minimum password length of seven is in line with industry standards, especially the Payment Card Industry (PCI) Security Standard; however, a longer value may be warranted if account locks are not enabled (item 1.6.10). A password history depth of ten combined with passwords that expire four times per year (item 1.8.3) means users will typically not re-use the same password in any given year. Requiring an upper/lowercase and special character password will dramatically increase the password search space and lower the chances for brute-force attack significantly. - Note: these settings are known to exist for HP-UX 11iv2, 0512 and later. The man page for security(5) will indicate if these exist on your particular system. Be sure to consult you local security standards before adopting the values given above.','All users should use strong passwords.','','Perform the following to set strong password enforcement policies: 1. Change the following parameters in the /etc/default/security file to establish default password policies for new users: a. MIN_PASSORD_LENGTH=7 b. PASSWORD_HISTORY_DEPTH=10 c. PASSWORD_MIN_UPPER_CASE_CHARS=1 d. PASSWORD_MIN_DIGIT_CHARS=1 e. PASSWORD_MIN_SPECIAL_CHARS=1 f. PASSWORD_MIN_LOWER_CASE_CHARS=1 2. If using a trusted system, issue the following modprdef commands to disallow null or trivial passwords:  modprdef -m nullpw=NO modprdef -m rstrpw=YES The following script will perform the procedure above: modprdef -m nullpw=NO modprdef -m rstrpw=YES ch_rc -a -p MIN_PASSORD_LENGTH=7 /etc/default/security ch_rc -a -p PASSWORD_HISTORY_DEPTH=10  /etc/default/security ch_rc -a -p PASSWORD_MIN_UPPER_CASE_CHARS=1  /etc/default/security ch_rc -a -p PASSWORD_MIN_DIGIT_CHARS=1  /etc/default/security ch_rc -a -p PASSWORD_MIN_SPECIAL_CHARS=1  /etc/default/security ch_rc -a -p PASSWORD_MIN_LOWER_CASE_CHARS=1  /etc/default/security modprdef -m nullpw=NO modprdef -m rstrpw=YES','[{\"cis\": [\"1.8.4\"]}, {\"cis_level\": [\"1\"]}]'),(30049,'Verify no legacy '+' entries exist in passwd and group files.',''+' entries in various passwd and group files served as markers for systems to insert data from NIS maps at a certain point in a system configuration file. HP-UX does not use these markers, but they may exist in files that have been imported from other platforms. They should be deleted if they exist.','Legacy '+' entries are no longer required on HP-UX systems, and may provide an avenue for attackers to gain privileged access on the system.','','Perform the following to remove any legacy '+' entries in passwd and group files: 1. Display legacy '+' entries: grep '^+:' /etc/passwd /etc/group 2. Remove any entries found from the passwd and group files.','[{\"cis\": [\"1.8.5\"]}, {\"cis_level\": [\"1\"]}]'),(30050,'No '.' or group/world-writable directory in root $PATH.','Remove the current working directory ('.') or other world-writable directories from the root user's execution path. To execute a file in the current directory when „.‟ is not in the $PATH, use the format “./filename”.','Including these paths in the root's executable path allows an attacker to gain superuser access if an administrator operating as root executes a Trojan horse program.','','Remove the following path components if they exist in the root user's $PATH: 1. current working directory ('.') 2. empty directories („::‟) 3. a trailing path seperator at the end of the $PATH (':') 4. any directory with world or group -write permissions set','[{\"cis\": [\"1.8.6\"]}, {\"cis_level\": [\"1\"]}]'),(30051,'Secure user home directories.','Remove group write and world access to all user home directories. While the modifications below are relatively benign, making global modifications to user home directories without alerting your user community can result in unexpected outages and unhappy users.','Group or world-writable user home directories may enable malicious users to steal or modify other users' data or to gain another user's system privileges.','','Perform the following to secure user home directories: 1. Identify all user accounts excluding root that are not locked, and for each of these user home directories: 2. Remove group write permission (g-w) and all other permissions (o-rwx) The following script will perform the procedure above: logins -ox  | awk -F: '($8 == "PS" && $1 != "root") { print $6 }'  | grep /home/  | while read dir do  chmod g-w,o-rwx "$dir" done','[{\"cis\": [\"1.8.7\"]}, {\"cis_level\": [\"1\"]}]'),(30052,'No user dot-files should be group/world writable.','Remove group and world write permissions from user dot-files. While the modifications below are relatively benign, making global modifications to user dot-files without alerting your user community can result in unexpected outages and unhappy users.','Group or world-writable user configuration files may enable malicious users to steal or modify other users' data or to gain another user's system privileges.','','Perform the following: 1. Identify all user accounts excluding root that are not locked, and for each of these user home directories: 2. Remove group/other write permissions (go-w) from any files beginning with '.' The following script performs the procedure above: logins -ox  | awk -F: '($8 == "PS") { print $6 }'  | while read dir do ls -d "$dir/".[!.]* | while read file do  if [ ! -h "$file" -a -f "$file" ] then chmod go-w "$file" fi done done','[{\"cis\": [\"1.8.8\"]}, {\"cis_level\": [\"1\"]}]'),(30053,'Remove user .netrc, .rhosts and .shosts files.','Remove user .netrc, .rhosts, and .shosts files. Note that making global modifications to user security files in their home directories without alerting your user community can result in unexpected outages and unhappy users.','.netrc files may contain unencrypted passwords that may be used to attack other systems, while .rhosts and .shosts files used in conjunction with the BSD-style “r-commands” (rlogin, remsh, rcp) or SSH implement a weak form of authentication based on the network address or host name of the remote computer (which can be spoofed by a potential attacker to exploit the local system).','','Perform the following to remove user .netrc, .rhosts, and .shosts files. 1. Identify all user accounts, and for each existing home directory: 2. Remove .netrc, .rhosts, and .shosts files The following script performs the procedure above: logins -ox | cut -f6 -d: | while read h do for file in "$h/.netrc" "$h/.rhosts" "$h/.shosts" do  if [ -f "$file" ] then  echo "removing $file" rm -f "$file" fi done done','[{\"cis\": [\"1.8.9\"]}, {\"cis_level\": [\"1\"]}]'),(30054,'Set default umask for users.','Set the default umask to 077 so that files created by users will not be readable by any other user on the system. A umask of 027 would make files and directories readable by users in the same Unix group, while a umask of 022 would make files readable by every user on the system. - Bastille Note: sets the default umask, but uses a umask of 027 rather than the 077.','Restricting access to files and directories created by a user from any other user on the system reduces the possibility of an unauthorized account accessing that user's files. The user creating the file has the discretion of making their files and directories readable by others via the chmod command. Users who wish to allow their files and directories to be readable by others by default may choose a different default umask by inserting the umask command into the standard shell configuration files (.profile, .cshrc, etc.) in their home directories.','','Perform the following to set a default umask for users: 1. Change directory to /etc 2. Append the line umask 077 to the following files: a. profile b. csh.login c. d.profile d. d.login 3. Update the UMASK parameter to 077 in the file /etc/default/security The following script performs the procedure above: cd /etc for file in profile csh.login d.profile d.login do echo umask 077 >> "$file" done ch_rc -a -p UMASK=077 /etc/default/security','[{\"cis\": [\"1.8.10\"]}, {\"cis_level\": [\"1\"]}]'),(30055,'Set 'mesg n' as default for all users.','Block the use of write or talk commands to contact the user at their terminal in order to slightly strengthen permissions on the user's tty device. Note that this setting is the default on HP-UX 11i.','Since write and talk are no longer widely used at most sites, the incremental security increase is worth the loss of functionality.','','Perform the following: 1. Change directory to /etc 2. Append the line mesg n to the following files: a. profile b. csh.login c. d.profile d. d.login The following script performs the procedure above:  cd /etc for file in profile csh.login d.profile d.login do  echo mesg n >> "$file" done','[{\"cis\": [\"1.8.11\"]}, {\"cis_level\": [\"1\"]}]'),(30056,'Create warning banners for terminal-session logins.','The contents of the /etc/issue file are displayed prior to the login prompt on the system's console and serial devices, as well as for remote terminal-session logins such as through SSH or Telnet.  /etc/motd is generally displayed after all successful logins, no matter where the user is logging in from, but is thought to be less useful because it only provides notification to the user after the machine has been accessed.','Presenting some sort of statutory warning message prior to the normal user logon may assist the prosecution of trespassers on the computer system. Changing some of these login banners also has the side effect of hiding OS version information and other detailed system information from attackers attempting to target specific attacks at a system.','','Perform the following to create warning banners for terminal-session logins: 1. Compose a default banner text string 2. Append this string to the files  /etc/motd and /etc/motd 3. Change the owner to root and group owner to sys  for the file /etc/motd 4. Change the owner to root and group owner to root for the file /etc/issue 5. Change file permissions to (644) for the files /etc/motd and /etc/issue','[{\"cis\": [\"1.9.1\"]}, {\"cis_level\": [\"1\"]}]'),(30057,'Create warning banners for GUI logins.','The standard graphical login program for HP-UX requires the user to enter their username in one dialog box and their password in a second separate dialog. The commands below set the warning message on both to be the same message, but the site has the option of using different messages on each screen. The Dtlogin*greeting.labelString is the message for the first dialog where the user is prompted for their username, and .perslabelString is the message on the second dialog box. Note that system administrators may wish to consult with their site’s legal council about the specifics of any warning banners.','Presenting some sort of statutory warning message prior to the normal user logon may assist the prosecution of trespassers on the computer system. Changing some of these login banners also has the side effect of hiding OS version information and other detailed system information from attackers attempting to target specific attacks at a system.','','Perform the following to install default warning banners for GUI logins: 1. Create a default banner text string ($banner) 2. For each directory in /usr/dt/config that contains a Xresources file, copy that Xresources file into a corresponding directory in /etc/dt/config (creating the directory if needed) 3. Append the following lines (replacing $banner with the string in step 1) to each /etc/dt/config/*/Xresources file: a. Dtlogin*greeting.labelString: $banner b. Dtlogin*greeting.persLabelString: $banner 4. Change the owner to root and group owner to sys for each Xresource file 5. Change the file permissions to 644 for each Xresource file The following script performs the procedure above: banner="Authorized users only. All activity may  be monitored and reported." for file in /usr/dt/config/*/Xresources; do dir="$(dirname "$file" | sed 's|^/usr/|/etc/|')" mkdir -p "$dir" if [ ! -f "$dir/Xresources" ]; then cp -p "$file" "$dir/Xresources" fi echo "Dtlogin*greeting.labelString: $banner"  >> "$dir/Xresources" echo "Dtlogin*greeting.persLabelString: $banner"  >> "$dir/Xresources" done chown root:sys /etc/dt/config/*/Xresources chmod 644 /etc/dt/config/*/Xresources','[{\"cis\": [\"1.9.2\"]}, {\"cis_level\": [\"1\"]}]'),(30058,'Create warning banners for FTP daemon.','The FTP daemon in HP-UX 11 is based on the popular Washington University FTP daemon (WU-FTPD), which is an Open Source program widely distributed on the Internet. Note that this setting has no effect if the FTP daemon remains de-activated from item 1.2.1.','Presenting some sort of statutory warning message prior to the normal user logon may assist the prosecution of trespassers on the computer system. Changing some of these login banners also has the side effect of hiding OS version information and other detailed system information from attackers attempting to target specific attacks at a system.','','Perform the following to install a default warning banner for the FTP daemon: 1. Ensure that an appropriate warning message exists in the /etc/issue file . 2. Append the line "banner /etc/issue" to the file /etc/ftpd/ftpaccess 3. Change file permissions to 600 for /etc/ftpd/ftpaccess 4. Change owner to root and group owner to sys for both /etc/ftpd and /etc/ftpd/ftpaccess The following script performs the procedure above: if [ -d /etc/ftpd ]; then echo "banner /etc/issue" >>/etc/ftpd/ftpaccess chmod 600 /etc/ftpd/ftpaccess chown root:sys /etc/ftpd /etc/ftpd/ftpaccess fi','[{\"cis\": [\"1.9.3\"]}, {\"cis_level\": [\"1\"]}]'),(30131,'Resolve 'unowned' files and directories.','Evaluate ownership of any files that are not owned by a locally defined user, and consider reassignment to an active user.','Sometimes when administrators delete users from the system they neglect to remove all files owned by those users from the system. A new user who is assigned the deleted user's user ID or group ID may then end up 'owning' these files, and thus have more access on the system than was intended. It is a good idea to locate files that are owned by users or groups not listed in the system configuration files, and make sure to reset the ownership of these files to some active user on the system (in this example, 'bin') as appropriate.','','Perform the following to identify "unowned" files and directories, and consider resetting ownership to a default owner and restricting access permissions: 1. Locate all local files that are owned by users or groups not listed in the system configuration files. find / ( -nouser -o -nogroup ) 2. Consider resetting user and group ownership of these files to a default active user (e.g. bin) chown bin:bin <filename> 3. Consider restricting world-write permissions, and removing any SUID/SGID bits on these files. chmod ug-s,o-w <filename> - Note: there is no reason for an application to require an unowned file, so these changes should be application-safe.','[{\"cis\": [\"1.5.3\"]}, {\"cis_level\": [\"1\"]}]'),(30144,'Turn on additional logging for FTP daemon.','If the FTP daemon is left on, it is recommended that the command logging (-L) and connection logging (-l) flags also be enabled to track FTP activity on the system, allowing the administrator (or software) to scan the logs for unusual activity. This is especially powerful when combined with the access control capabilities accessible through inetd's /var/adm/inetd.sec configuration file. Note that this setting has no effect if the FTP daemon remains de-activated from item 2.1. Also note that enabling command logging on the FTP daemon (HP-UX 11.x only) can cause user passwords to appear in clear-text form in the system logs, if the user accidentally types their password at the username prompt. Information about FTP sessions will be logged to Syslog and by default HP-UX systems deposit this logging information in /var/adm/syslog/syslog.log with other system log messages. Should the administrator wish to capture this information in a separate file, simply modify /etc/syslog.conf to log daemon.notice to some other log file destination.','Logging information about the source of ftp network connections assists in the detection and identification of unusual activity that may be associated with security intrusions.','','Perform the following to enable logging for the FTP daemon: 1. Change directory to /etc. 2. Open the inetd.conf file and locate the ftpd configuration entry line. 3. Add the "-L" and "-l" flags to the ftpd entry if not already present. 4. Save and close file. The following script will perform the procedure above: cd /etc awk '/^ftpd/ && !/-L/ { $NF = $NF " -L" } /^ftpd/ && !/-l/ { $NF = $NF " -l" } { print }' inetd.conf > inetd.conf.tmp cp inetd.conf.tmp inetd.conf rm -f inetd.conf.tmp','[{\"cis\": [\"1.7.3\"]}, {\"cis_level\": [\"1\"]}]'),(31000,'Ensure All Apple-provided Software Is Current.','Software vendors release security patches and software updates for their products when security vulnerabilities are discovered. There is no simple way to complete this action without a network connection to an Apple software repository. Please ensure appropriate access for this control. This check is only for what Apple provides through software update. Software updates should be run at minimum every 30 days. Run the following command to verify when software update was previously run: $ /usr/bin/sudo defaults read /Library/Preferences/com.apple.SoftwareUpdate | grep -e LastFullSuccessfulDate. The response should be in the last 30 days (Example): LastFullSuccessfulDate = "2020-07-30 12:45:25 +0000";.','It is important that these updates be applied in a timely manner to prevent unauthorized persons from exploiting the identified vulnerabilities.','Missing patches can lead to more exploit opportunities.','Graphical Method: Perform the following to install all available software updates: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select Update All Terminal Method: Run the following command to verify what packages need to be installed: $ /usr/bin/sudo /usr/sbin/softwareupdate -l The output will include the following: Software Update found the following new or updated software: Run the following command to install all the packages that need to be updated: $ /usr/bin/sudo /usr/sbin/softwareupdate -i -a -R Or run the following command to install individual packages: $ /usr/bin/sudo /usr/sbin/softwareupdate -i '<package name>' example: $ /usr/bin/sudo /usr/sbin/softwareupdate -l Software Update Tool Finding available software Software Update found the following new or updated software: * iTunesX-12.8.2 iTunes (12.8.2), 273614K [recommended] $ /usr/bin/sudo /usr/sbin/softwareupdate -i 'iTunesX-12.8.2' Software Update Tool Downloaded iTunes Installing iTunes Done with iTunes Done.','[{\"cis\": [\"1.1\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"mitre_techniques\": [\"T1017\", \"T1019\", \"T1031\", \"T1034\", \"T1038\", \"T1044\", \"T1053\", \"T1068\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1078\", \"T1081\", \"T1088\", \"T1100\", \"T1103\", \"T1114\", \"T1137\", \"T1138\", \"T1145\", \"T1161\", \"T1176\", \"T1189\", \"T1190\", \"T1195\", \"T1210\", \"T1211\", \"T1212\", \"T1213\", \"T1214\", \"T1482\", \"T1484\", \"T1495\", \"T1505\", \"T1525\", \"T1527\", \"T1528\", \"T1530\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}]'),(31001,'Ensure Auto Update Is Enabled.','Auto Update verifies that your system has the newest security patches and software updates. If "Automatically check for updates" is not selected, background updates for new malware definition files from Apple for XProtect and Gatekeeper will not occur. http://macops.ca/os-x-admins-your-clients-are-not-getting-background-security-updates/ https://derflounder.wordpress.com/2014/12/17/forcing-xprotect-blacklist-updates-on-mavericks-and-yosemite/.','It is important that a system has the newest updates applied so as to prevent unauthorized persons from exploiting identified vulnerabilities.','Without automatic update, updates may not be made in a timely manner and the system will be exposed to additional risk.','Graphical Method: Perform the steps following to enable the system to automatically check for updates: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Check for updates to enabled 6. Select Done Terminal Method: Run the following command to enable auto update: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticCheckEnabled 3. The key must be set to <true/>.','[{\"cis\": [\"1.2\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31002,'Ensure Download New Updates When Available Is Enabled.','In the GUI, both "Install macOS updates" and "Install app updates from the App Store" are dependent on whether "Download new updates when available" is selected.','It is important that a system has the newest updates downloaded so that they can be applied.','If "Download new updates when available" is not selected, updates may not be made in a timely manner and the system will be exposed to additional risk.','Perform the following to enable the system to automatically check for updates: Graphical Method: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Download new updates when available to enabled 6. Select Done Terminal Method: Run the following command to enable auto update: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticDownload 3. The key must be set to <true/>.','[{\"cis\": [\"1.3\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31003,'Ensure Install of macOS Updates Is Enabled.','Ensure that macOS updates are installed after they are available from Apple. This setting enables macOS updates to be automatically installed. Some environments will want to approve and test updates before they are delivered. It is best practice to test first where updates can and have caused disruptions to operations. Automatic updates should be turned off where changes are tightly controlled and there are mature testing and approval processes. Automatic updates should not be turned off simply to allow the administrator to contact users in order to verify installation. A dependable, repeatable process involving a patch agent or remote management tool should be in place before auto-updates are turned off.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','Unpatched software may be exploited.','Graphical Method: Perform the following steps to enable macOS updates to run automatically: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Install macOS updates to enabled 6. Select Done Terminal Method: Run the following command to to enable automatic checking and installing of macOS updates: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates -bool TRUE Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticallyInstallMacOSUpdates 3. The key must be set to <true/>.','[{\"cis\": [\"1.4\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31004,'Ensure Install Application Updates from the App Store Is Enabled.','Ensure that application updates are installed after they are available from Apple. These updates do not require reboots or administrator privileges for end users.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','Unpatched software may be exploited.','Graphical Method: Perform the following steps to enable App Store updates to install automatically: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Install application updates from the App Store to enabled 6. Select Done Terminal Method: Run the following command to turn on App Store auto updating: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.commerce AutoUpdate -bool TRUE Note: This remediation requires a log out and log in to show in the GUI. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticallyInstallAppUpdates 3. The key must be set to <true/>.','[{\"cis\": [\"1.5\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31005,'Ensure Install Security Responses and System Files Is Enabled.','Ensure that system and security updates are installed after they are available from Apple. This setting enables definition updates for XProtect and Gatekeeper. With this setting in place, new malware and adware that Apple has added to the list of malware or untrusted software will not execute. These updates do not require reboots or end user admin rights.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','Unpatched software may be exploited.','Graphical Method: Perform the following steps to enable system data files and security updates to install automatically: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Install Security Responses and System files to enabled 6. Select Done Terminal Method: Run the following commands to enable automatic checking of system data files and security updates: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate ConfigDataInstall -bool true $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate CriticalUpdateInstall -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is ConfigDataInstall 3. The key must be set to <true/> 4. The key to also include is CriticalUpdateInstall 5. The key must be set to <true/>.','[{\"cis\": [\"1.6\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\", \"7.7\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"CA.L2-3.12.2\", \"RA.L2-3.11.3\", \"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"pci_dss_v4.0\": [\"11.3.1\", \"11.3.2\", \"11.3.2.1\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31006,'Ensure Software Update Deferment Is Less Than or Equal to 30 Days.','Apple provides the capability to manage software updates on Apple devices through mobile device management. Part of those capabilities permit organizations to defer software updates and allow for testing. Many organizations have specialized software and configurations that may be negatively impacted by Apple updates. If software updates are deferred, they should not be deferred for more than 30 days. This control only verifies that deferred software updates are not deferred for more than 30 days.','Apple software updates almost always include security updates. Attackers evaluate updates to create exploit code in order to attack unpatched systems. The longer a system remains unpatched, the greater an exploit possibility exists in which there are publicly reported vulnerabilities.','Some organizations may need more than 30 days to evaluate the impact of software updates.','Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.applicationaccess 2. The key to include is enforcedSoftwareUpdateDelay 3. The key must be set to <integer><1-30></integer>.','[{\"cis\": [\"1.7\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31007,'Ensure Firewall Is Enabled.','A firewall is a piece of software that blocks unwanted incoming connections to a system. Apple has posted general documentation about the application firewall:.','A firewall minimizes the threat of unauthorized users gaining access to your system while connected to a network or the Internet.','The firewall may block legitimate traffic. Applications that are unsigned will require special handling.','Graphical Method: Perform the following steps to turn the firewall on: 1. Open System Settings 2. Select Network 3. Select Firewall 4. Set Firewall to enabled Terminal Method: Run the following command to enable the firewall: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.alf globalstate -int <value> For the <value>, use either 1, specific services, or 2, essential services only. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.security.firewall 2. The key to include is EnableFirewall 3. The key must be set to <true/>.','[{\"cis\": [\"2.2.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.5\", \"13.1\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.4\", \"9.5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L1-3.1.20\", \"AU.L2-3.3.5\", \"AU.L2-3.3.6\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\", \"SI.L2-3.14.3\", \"SI.L2-3.14.7\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"AU-6(1)\", \"AU-7\", \"CM-7(1)\", \"CM-9\", \"IR-4(1)\", \"SA-10\", \"SC-7(5)\", \"SI-4(2)\", \"SI-4(5)\"]}, {\"pci_dss_v3.2.1\": [\"1.1.4\", \"1.4\", \"10.5.3\", \"10.6.1\", \"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"10.7\", \"10.7.1\", \"10.7.2\", \"10.7.3\", \"11.5\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC6.6\", \"CC7.1\", \"CC7.2\", \"CC8.1\"]}]'),(31008,'Ensure Firewall Stealth Mode Is Enabled.','While in Stealth mode, the computer will not respond to unsolicited probes, dropping that traffic.','Stealth mode on the firewall minimizes the threat of system discovery tools while connected to a network or the Internet.','Traditional network discovery tools like ping will not succeed. Other network tools that measure activity and approved applications will work as expected. This control aligns with the primary macOS use case of a laptop that is often connected to untrusted networks where host segregation may be non-existent. In that use case, hiding from the other inmates is likely more than desirable. In use cases where use is only on trusted LANs with static IP addresses, stealth mode may not be desirable.','Graphical Method: Perform the following steps to enable firewall stealth mode: 1. Open System Settings 2. Select Network 3. Select Firewall 4. Select Options... 5. Set Enabled stealth mode to enabled Terminal Method: Run the following command to enable stealth mode: $ /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on Stealth mode enabled Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.security.firewall 2. The key to include is EnableStealthMode 3. The key must be set to <true/> Note: This key must be set in the same configuration profile with EnableFirewall set to <true/>. If it is set in its own configuration profile, it will fail.','[{\"cis\": [\"2.2.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.5\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L1-3.1.20\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\", \"SC-7(5)\"]}, {\"pci_dss_v3.2.1\": [\"1.1.4\", \"1.1.6\", \"1.2.1\", \"1.4\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31009,'Ensure Set Time and Date Automatically Is Enabled.','Correct date and time settings are required for authentication protocols, file creation, modification dates, and log entries. Note: If your organization has internal time servers, enter them here. Enterprise mobile devices may need to use a mix of internal and external time servers. If multiple servers are required, use the Date & Time System Preference with each server separated by a space. Additional Note: The default Apple time server is time.apple.com. Variations include time.euro.apple.com. While it is certainly more efficient to use internal time servers, there is no reason to block access to global Apple time servers or to add a time.apple.com alias to internal DNS records. There are no reports that Apple gathers any information from NTP synchronization, as the computers already phone home to Apple for Apple services including iCloud use and software updates. Best practice is to allow DNS resolution to an authoritative time service for time.apple.com, preferably to connect to Apple servers, but local servers are acceptable as well.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features.','The timed service will periodically synchronize with named time servers and will make the computer time more accurate.','Graphical Method: Perform the following to enable the date and time to be set automatically: 1. Open System Settings 2. Select General 3. Select Date & Time 4. Set Set time and date automatically to enabled Note: By default, the operating system will use time.apple.com as the time server. You can change to any time server that meets your organization's requirements. Terminal Method: Run the following commands to enable the date and time setting automatically: $ /usr/bin/sudo /usr/sbin/systemsetup -setnetworktimeserver <your.time.server> setNetworkTimeServer: <your.time.server> $ /usr/bin/sudo /usr/sbin/systemsetup -setusingnetworktime on setUsingNetworkTime: On example: $ /usr/bin/sudo /usr/sbin/systemsetup -setnetworktimeserver time.apple.com setNetworkTimeServer: time.apple.com $ /usr/bin/sudo /usr/sbin/systemsetup -setusingnetworktime on setUsingNetworkTime: On Run the following commands if you have not set, or need to set, a new time zone: $ /usr/bin/sudo /usr/sbin/systemsetup -listtimezones $ /usr/bin/sudo /usr/sbin/systemsetup -settimezone <selected time zone> example: $ /usr/bin/sudo /usr/sbin/systemsetup -listtimezones Time Zones: Africa/Abidjan Africa/Accra Africa/Addis_Ababa ... $ /usr/bin/sudo /usr/sbin/systemsetup -settimezone America/New_York Set TimeZone: America/New_York.','[{\"cis\": [\"2.3.2.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(31010,'Ensure Time Is Set Within Appropriate Limits.','Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. Ensure that time on the computer is within acceptable limits. Truly accurate time is measured within milliseconds. For this audit, a drift under four and a half minutes passes the control check. Since Kerberos is one of the important features of macOS integration into Directory systems, the guidance here is to warn you before there could be an impact to operations. From the perspective of accurate time, this check is not strict, so it may be too great for your organization. Your organization can adjust to a smaller offset value as needed. If there are consistent drift issues on the OS, some of the most common drift issues should be investigated: - The chosen time server is not reachable based on network firewall rules on the current network - The computer is offline often and the battery drains, and the network is not immediately available - The chosen time server is a special internal or non-public time server that does not provide a reliable time source Note: ntpdate has been deprecated with 10.14. sntp replaces that command.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features. Audit check is for more than 4 minutes and 30 seconds ahead or behind.','Accurate time is required for many computer functions.','Terminal Method: Run the following commands to ensure your time is set within an appropriate limit: $ /usr/bin/sudo /usr/sbin/systemsetup -getnetworktimeserver The output will include Network Time Server: and the name of your time server example: Network Time Server: time.apple.com. $ /usr/bin/sudo /usr/bin/sntp -sS <your.time.server> example: $ /usr/bin/sudo /usr/sbin/systemsetup -getnetworktimeserver Network Time Server: time.apple.com $ /usr/bin/sudo /usr/bin/sntp -sS time.apple.com.','[{\"cis\": [\"2.3.2.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(31011,'Ensure DVD or CD Sharing Is Disabled.','DVD or CD Sharing allows users to remotely access the system's optical drive. While Apple does not ship Macs with built-in optical drives any longer, external optical drives are still recognized when they are connected. In testing, the sharing of an external optical drive persists when a drive is reconnected.','Disabling DVD or CD Sharing minimizes the risk of an attacker using the optical drive as a vector for attack and exposure of sensitive data.','Many Apple devices are now sold without optical drives, however drive sharing may be needed for legacy optical media. The media should be explicitly re-shared as needed rather than using a persistent share. Optical drives should not be used for long-term storage. To store necessary data from an optical drive it should be copied to another form of external storage. Optionally, an image can be made of the optical drive so that it is stored in its original form on another form of external storage.','Graphical Method: Perform the following steps to disable DVD or CD Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set DVD or CD sharing to disabled Terminal Method: Run the following command to disable DVD or CD Sharing: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.ODSAgent Note: If using the Terminal method, the GUI will still show the service checked until after a reboot.','[{\"cis\": [\"2.3.3.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31012,'Ensure Screen Sharing Is Disabled.','Screen Sharing allows a computer to connect to another computer on a network and display the computer's screen. While sharing the computer's screen, the user can control what happens on that computer, such as opening documents or applications, opening, moving, or closing windows, and even shutting down the computer. While mature administration and management does not use graphical connections for standard maintenance, most help desks have capabilities to assist users in performing their work when they have technical issues and need support. Help desks use graphical remote tools to understand what the user sees and assist them so they can get back to work. For MacOS, some of these remote capabilities can use Apple's OS tools. Control is therefore not meant to prohibit the use of a just-in-time graphical view from authorized personnel with authentication controls. Sharing should not be enabled except in narrow windows when help desk support is required.','Disabling Screen Sharing mitigates the risk of remote connections being made without the user of the console knowing that they are sharing the computer.','Help desks may require the periodic use of a graphical connection mechanism to assist users. Any support that relies on native MacOS components will not work unless a scripted solution to enable and disable sharing as neccessary.','Graphical Method: Perform the following steps to disable Screen Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Screen Sharing to disabled Terminal Method: Run the following command to turn off Screen Sharing: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing.','[{\"cis\": [\"2.3.3.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31013,'Ensure File Sharing Is Disabled.','File sharing from a user workstation creates additional risks, such as: - Open ports are created that can be probed and attacked - Passwords are attached to user accounts for access that may be exposed and endanger other parts of the organizational environment, including directory accounts Increased complexity makes security more difficult and may expose additional attack vectors - Apple's File Sharing uses the Server Message Block (SMB) protocol to share to other computers that can mount SMB shares. This includes other macOS computers. Apple warns that SMB sharing stored passwords is less secure, and anyone with system access can gain access to the password for that account. When sharing with SMB, each user accessing the Mac must have SMB enabled. Storing passwords, especially copies of valid directory passwords, decrease security for the directory account and should not be used.','By disabling File Sharing, the remote attack surface and risk of unauthorized access to files stored on the system is reduced.','File Sharing can be used to share documents with other users, but hardened servers should be used rather than user endpoints. Turning on File Sharing increases the visibility and attack surface of a system unnecessarily.','Graphical Method: Perform the following steps to disable File Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set File Sharing to disabled Terminal Method: Run the following command to disable File Sharing: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.smbd.','[{\"cis\": [\"2.3.3.3\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\", \"5.4\"]}, {\"cis_csc_v7\": [\"4.3\", \"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.3\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\", \"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\", \"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\", \"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31014,'Ensure Printer Sharing Is Disabled.','By enabling Printer Sharing, the computer is set up as a print server to accept print jobs from other computers. Dedicated print servers or direct IP printing should be used instead.','Disabling Printer Sharing mitigates the risk of attackers attempting to exploit the print server to gain access to the system.','','Graphical Method: Perform the following steps to disable Printer Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Printer Sharing to disabled Terminal Method: Run the following command to disable Printer Sharing: $ /usr/bin/sudo /usr/sbin/cupsctl --no-share-printers.','[{\"cis\": [\"2.3.3.4\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31015,'Ensure Remote Login Is Disabled.','Remote Login allows an interactive terminal connection to a computer.','Disabling Remote Login mitigates the risk of an unauthorized person gaining access to the system via Secure Shell (SSH). While SSH is an industry standard to connect to posix servers, the scope of the benchmark is for Apple macOS clients, not servers. macOS does have an IP-based firewall available (pf, ipfw has been deprecated) that is not enabled or configured. There are more details and links in the Network sub-section. macOS no longer has TCP Wrappers support built in and does not have strong Brute-Force password guessing mitigations, or frequent patching of openssh by Apple. Since most macOS computers are mobile workstations, managing IP-based firewall rules on mobile devices can be very resource intensive. All of these factors can be parts of running a hardened SSH server.','The SSH server built into macOS should not be enabled on a standard user computer, particularly one that changes locations and IP addresses. A standard user that runs local applications, including email, web browser, and productivity tools, should not use the same device as a server. There are Enterprise management toolsets that do utilize SSH. If they are in use, the computer should be locked down to only respond to known, trusted IP addresses and appropriate administrator service accounts. For macOS computers that are being used for specialized functions, there are several options to harden the SSH server to protect against unauthorized access including brute force attacks. There are some basic criteria that need to be considered: - Do not open an SSH server to the internet without controls in place to mitigate SSH brute force attacks. This is particularly important for systems bound to Directory environments. It is great to have controls in place to protect the system, but if they trigger after the user is already locked out of their account, they are not optimal. If authorization happens after authentication, directory accounts for users that don't even use the system can be locked out. - Do not use SSH key pairs when there is no insight to the security on the client system that will authenticate into the server with a private key. If an attacker gets access to the remote system and can find the key, they may not need a password or a key logger to access the SSH server. - Detailed instructions on hardening an SSH server, if needed, are available in the CIS Linux Benchmarks, but it is beyond the scope of this benchmark.','Perform the following to disable Remote Login: Graphical Method: Perform the following steps to disable Remote Login: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Remote Login to disabled Terminal Method: Run the following command to disable Remote Login: $ /usr/bin/sudo /usr/sbin/systemsetup -setremotelogin off Do you really want to turn remote login off? If you do, you will lose this connection and can only turn it back on locally at the server (yes/no)? Entering yes will disable remote login.','[{\"cis\": [\"2.3.3.5\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31016,'Ensure Remote Management Is Disabled.','Remote Management is the client portion of Apple Remote Desktop (ARD). Remote Management can be used by remote administrators to view the current screen, install software, report on, and generally manage client Macs. The screen sharing options in Remote Management are identical to those in the Screen Sharing section. In fact, only one of the two can be configured. If Remote Management is used, refer to the Screen Sharing section above on issues regard screen sharing. Remote Management should only be enabled when a Directory is in place to manage the accounts with access. Computers will be available on port 5900 on a macOS System and could accept connections from untrusted hosts depending on the configuration, which is a major concern for mobile systems. As with other sharing options, an open port even for authorized management functions can be attacked, and both unauthorized access and Denial-of-Service vulnerabilities could be exploited. If remote management is required, the pf firewall should restrict access only to known, trusted management consoles. Remote management should not be used across the Internet without the use of a VPN tunnel.','Remote Management should only be enabled on trusted networks with strong user controls present in a Directory system. Mobile devices without strict controls are vulnerable to exploit and monitoring.','Many organizations utilize ARD for client management.','Graphical Method: Perform the following steps to disable Remote Management: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Remote Management to disabled Terminal Method: Run the following command to disable Remote Management: $ /usr/bin/sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources /kickstart -deactivate -stop Starting... Removed preference to start ARD after reboot. Done.','[{\"cis\": [\"2.3.3.6\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\", \"5.4\"]}, {\"cis_csc_v7\": [\"4.3\", \"9.2\", \"14.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.3\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.13.1.3\", \"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1133\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1176\", \"T1184\", \"T1190\", \"T1200\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\", \"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\", \"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31017,'Ensure Remote Apple Events Is Disabled.','Apple Events is a technology that allows one program to communicate with other programs. Remote Apple Events allows a program on one computer to communicate with a program on a different computer.','Disabling Remote Apple Events mitigates the risk of an unauthorized program gaining access to the system.','With remote Apple events turned on, an AppleScript program running on another Mac can interact with the local computer.','Graphical Method: Perform the following steps to disable Remote Apple Events: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Remote Apple Events to disabled Terminal Method: Run the following commands to set Remote Apple Events to Off: $ /usr/bin/sudo /usr/sbin/systemsetup -setremoteappleevents off setremoteappleevents: Off.','[{\"cis\": [\"2.3.3.7\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31018,'Ensure Internet Sharing Is Disabled.','Internet Sharing uses the open source natd process to share an internet connection with other computers and devices on a local network. This allows the Mac to function as a router and share the connection to other, possibly unauthorized, devices.','Disabling Internet Sharing reduces the remote attack surface of the system.','Internet Sharing allows the computer to function as a router and other computers to use it for access. This can expose both the computer itself and the networks it is accessing to unacceptable access from unapproved devices.','Graphical Method: Perform the following steps to disable Internet Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Internet Sharing to disabled Terminal Method: Run the following command to turn off Internet Sharing: $ usr/bin/sudo /usr/bin/defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict Enabled -int 0 Note: Using the Terminal Method will not be reflected in the GUI, but will disable the underlying service. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is forceInternetSharingOff 3. The key must be set to <true/>.','[{\"cis\": [\"2.3.3.8\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31019,'Ensure Content Caching Is Disabled.','Starting with 10.13 (macOS High Sierra), Apple introduced a service to make it easier to deploy data from Apple, including software updates, where there are bandwidth constraints to the Internet and fewer constraints or greater bandwidth exist on the local subnet. This capability can be very valuable for organizations that have throttled and possibly metered Internet connections. In heterogeneous enterprise networks with multiple subnets, the effectiveness of this capability would be determined by how many Macs were on each subnet at the time new, large updates were made available upstream. This capability requires the use of mac OS clients as P2P nodes for updated Apple content. Unless there is a business requirement to manage operational Internet connectivity and bandwidth user endpoints should not store content and act as a cluster to provision data. Content types supported by Content Caching in macOS.','The main use case for Mac computers is as mobile user endpoints. P2P sharing services should not be enabled on laptops that are using untrusted networks. Content Caching can allow a computer to be a server for local nodes on an untrusted network. While there are certainly logical controls that could be used to mitigate risk, they add to the management complexity. Since the value of the service is in specific use cases organizations with the use case described above can accept risk as necessary.','This setting will adversely affect bandwidth usage between local subnets and the Internet.','Graphical Method: Perform the following steps to disable Content Caching: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Content Caching to disabled Terminal Method: Run the following command to disable Content Caching: $ /usr/bin/sudo /usr/bin/AssetCacheManagerUtil deactivate The output will include Content caching deactivated Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.applicationaccess 2. The key to include is allowContentCaching 3. The key must be set to <false/>.','[{\"cis\": [\"2.3.3.9\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1015\", \"T1051\", \"T1076\", \"T1133\", \"T1200\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(31020,'Ensure Backup Automatically is Enabled If Time Machine Is Enabled.','Backup solutions are only effective if the backups run on a regular basis. The time to check for backups is before the hard drive fails or the computer goes missing. In order to simplify the user experience so that backups are more likely to occur, Time Machine should be on and set to Back Up Automatically whenever the target volume is available. Operational staff should ensure that backups complete on a regular basis and the backups are tested to ensure that file restoration from backup is possible when needed. Backup dates are available even when the target volume is not available in the Time Machine plist. SnapshotDates = ( "2012-08-20 12:10:22 +0000", "2013-02-03 23:43:22 +0000", "2014-02-19 21:37:21 +0000", "2015-02-22 13:07:25 +0000", "2016-08-20 14:07:14 +0000" When the backup volume is connected to the computer more extensive information is available through tmutil. See man tmutil.','Backups should automatically run whenever the backup drive is available.','The backup will run periodically in the background and could have user impact while running.','Graphical Method: Perform the following steps to enable Time Machine automatic backup: 1. Open System Settings 2. Select General 3. Select Time Machine 4. Select Options... 5. Set Back up frequency to Automatically <every hour/every day/every week> Terminal Method: Run the following command to enable automatic backups if Time Machine is enabled: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.TimeMachine 2. The key to include is Forced 3. The key must be set to: <array> <dict> <key>mcx_preference_settings</key> <dict> <key>AutoBackup</key> <true/> </dict> </dict> </array>.','[{\"cis\": [\"2.3.4.1\"]}, {\"cis_csc_v8\": [\"11.2\"]}, {\"cis_csc_v7\": [\"10.1\"]}, {\"hipaa\": [\"164.308(a)(7)(ii)(A)\"]}, {\"iso_27001-2013\": [\"A.12.3.1\"]}, {\"mitre_techniques\": [\"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1490\", \"T1491\"]}, {\"pci_dss_v3.2.1\": [\"12.10.1\"]}]'),(31021,'Ensure Time Machine Volumes Are Encrypted If Time Machine Is Enabled.','One of the most important security tools for data protection on macOS is FileVault. With encryption in place it makes it difficult for an outside party to access your data if they get physical possession of the computer. One very large weakness in data protection with FileVault is the level of protection on backup volumes. If the internal drive is encrypted but the external backup volume that goes home in the same laptop bag is not it is self-defeating. Apple tries to make this mistake easily avoided by providing a checkbox to enable encryption when setting-up a Time Machine backup. Using this option does require some password management, particularly if a large drive is used with multiple computers. A unique complex password to unlock the drive can be stored in keychains on multiple systems for ease of use. While some portable drives may contain non-sensitive data and encryption may make interoperability with other systems difficult backup volumes should be protected just like boot volumes.','Backup volumes need to be encrypted.','','Graphical Method: Perform the following steps to enable encryption on the Time Machine drive: 1. Open System Settings 2. Select General 3. Select Time Machine 4. Select the unencrypted drive 5. Select - to forget that drive as a destination 6. Select + to add a different drive as the destination 7. Select Set Up Disk... 8. Set Encrypt Backup to enabled 9. Enter a password in the New Password and the same password in the Re-enter Password fields 10. A password hint is required, but it is recommended that you do not use any identifying information for the password Note: In macOS 12.0 Monterey and previous, the existing Time Machine drive could have encryption added without formatting it. This is no longer possible in macOS 13.0 Ventura. If you with to keep previous backups from the unencrypted volume, you will need to manually move those files over to the new encrypted drive.','[{\"cis\": [\"2.3.4.2\"]}, {\"cis_csc_v8\": [\"3.6\", \"3.11\", \"11.3\"]}, {\"cis_csc_v7\": [\"10.4\", \"13.6\", \"14.8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"MP.L2-3.8.9\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.12.3.1\", \"A.6.2.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1070\", \"T1072\", \"T1114\", \"T1119\", \"T1145\", \"T1208\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1490\", \"T1491\", \"T1492\", \"T1493\", \"T1527\", \"T1530\"]}, {\"nist_sp_800-53\": [\"CP-9(8)\", \"SC-28\", \"SC-28(1)\"]}, {\"pci_dss_v3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\", \"9.5\", \"9.5.1\"]}, {\"pci_dss_v4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"A1.2\", \"CC6.1\", \"CC6.4\", \"CC6.7\"]}]'),(31022,'Ensure Location Services Is Enabled.','macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. With the operating system verifying the location, users do not need to change the time or the time zone. The computer will change them based on the user's location. They do not need to specify their location for weather or travel times, and they will receive alerts on travel times to meetings and appointment where location information is supplied. Location Services simplify some processes with mobile computers, such as asset management and time or log management. There are some use cases where it is important that the computer not be able to report its exact location. While the general use case is to enable Location Services, it should not be allowed if the physical location of the computer and the user should not be public knowledge.','Location Services are helpful in most use cases and can simplify log and time management where computers change time zones.','','Graphical Method: Perform the following steps to enable Location Services: 1. Open System Settings 2. Select Privacy & Security 3. Select Location Services 4. Set Location Services to enabled Terminal Method: Run the following command to enable Location Services: $ /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.locationd.plist If the com.apple.locationd.plist outputs 0, run the following command to also ensure Location Services is running: $ /usr/bin/sudo /usr/bin/defaults write /var/db/locationd/Library/Preferences/ByHost/com.apple.locationd LocationServicesEnabled -bool false $ /usr/bin/sudo /bin/launchctl kickstart -k system/com.apple.locationd Note: In some use cases, organizations may not want Location Services running. To disable Location Services, System Integrity Protection must be disabled.','[{\"cis\": [\"2.6.1.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31023,'Ensure Location Services Is in the Menu Bar.','This setting provides the user to understand the current status of Location Services and which applications are using it.','Apple has fully integrated location services into macOS. Where the computer is currently located is used for Timezones, weather, travel times, geolocation, "Find my Mac" and advertising services. This benchmark recommends that location services are enabled for most users. Many users may have occasions when they do not want to share their current locations, some users may need to rarely share their locations. The immediate availability of Location Services in the menu bar provides easy access to the current status, which applications are using the service and a quick shortcut to making changes. This setting provides better user control in managing user privacy.','Users may be provided visibility to a setting they cannot control if organizations control Location Services globally by policy.','Graphical Method: Perform the following steps to set whether the location services icon is in the menu bar: 1. Open System Settings 2. Select Privacy & Security 3. Select Location Services 4. Select Details... 5. Set Show location icon in menu bar when System Services request your location to your organization's parameters Terminal Method: Run the following commands to set the option of the location services icon being in the menu bar: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.locationmenu.plist ShowSystemServices -bool <true/false>.','[{\"cis\": [\"2.6.1.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31024,'Ensure Gatekeeper Is Enabled.','Gatekeeper is Apple's application that utilizes allowlisting to restrict downloaded applications from launching. It functions as a control to limit applications from unverified sources from running without authorization. In an update to Gatekeeper in macOS 13 Ventura, Gatekeeper checks every application on every launch, not just quarantined apps.','Disallowing unsigned software will reduce the risk of unauthorized or malicious applications from running on the system.','','Graphical Method: Perform the following steps to enable Gatekeeper: 1. Open System Settings 2. Select Privacy & Security 3. Set 'Allow apps downloaded from' to 'App Store and identified developers' Terminal Method: Run the following command to enable Gatekeeper to allow applications from App Store and identified developers: $ /usr/bin/sudo /usr/sbin/spctl --master-enable Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.systempolicy.control 2. The key to include is AllowIdentifiedDevelopers 3. The key must be set to <true/> 4. The key to also include is EnableAssessment 5. The key must be set to <true/>.','[{\"cis\": [\"2.6.4\"]}, {\"cis_csc_v8\": [\"10.1\", \"10.2\", \"10.5\"]}, {\"cis_csc_v7\": [\"8.2\", \"8.4\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.2\", \"SI.L1-3.14.4\"]}, {\"hipaa\": [\"164.308(a)(5)(ii)(B)\"]}, {\"iso_27001-2013\": [\"A.12.2.1\"]}, {\"mitre_techniques\": [\"T1017\", \"T1019\", \"T1027\", \"T1045\", \"T1068\", \"T1072\", \"T1073\", \"T1075\", \"T1091\", \"T1100\", \"T1103\", \"T1137\", \"T1138\", \"T1189\", \"T1190\", \"T1193\", \"T1194\", \"T1195\", \"T1200\", \"T1210\", \"T1211\", \"T1212\", \"T1215\", \"T1221\", \"T1495\"]}, {\"nist_sp_800-53\": [\"SI-16\"]}, {\"pci_dss_v3.2.1\": [\"1.4\", \"11.4\", \"5.1\", \"5.1.1\", \"5.2\"]}, {\"pci_dss_v4.0\": [\"5.1.1\", \"5.2.1\", \"5.2.2\", \"5.3.1\", \"5.3.2\"]}, {\"soc_2\": [\"CC6.8\"]}]'),(31025,'Ensure FileVault Is Enabled.','FileVault secures a system's data by automatically encrypting its boot volume and requiring a password or recovery key to access it. FileVault should be used with a saved escrow key to ensure that the owner can decrypt their data if the password is lost. FileVault may also be enabled using command line using the fdesetup command. To use this functionality, consult the Der Flounder blog for more details (see link below under References).','Encrypting sensitive data minimizes the likelihood of unauthorized users gaining access to it.','Mounting a FileVault encrypted volume from an alternate boot source will require a valid password to decrypt it.','Graphical Method: Perform the following steps to enable FileVault: 1. Open System Settings 2. Select Security & Privacy 3. Select Turn On... Note: This will allow you to create a recovery key for FileVault. Keep the key saved securely in case it is needed at a later date. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is dontAllowFDEDisable 3. The key must be set to <true/> Note: This profile is required to pass the audit.','[{\"cis\": [\"2.6.5\"]}, {\"cis_csc_v8\": [\"3.6\", \"3.11\"]}, {\"cis_csc_v7\": [\"13.6\", \"14.8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.6.2.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1070\", \"T1072\", \"T1114\", \"T1119\", \"T1145\", \"T1208\", \"T1492\", \"T1493\", \"T1527\", \"T1530\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"pci_dss_v3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_v4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31026,'Ensure an Administrator Password Is Required to Access System-Wide Preferences.','System Preferences controls system and user settings on a macOS Computer. System Preferences allows the user to tailor their experience on the computer as well as allowing the System Administrator to configure global security settings. Some of the settings should only be altered by the person responsible for the computer.','By requiring a password to unlock system-wide System Preferences, the risk is mitigated of a user changing configurations that affect the entire system and requires an admin user to re-authenticate to make changes.','Users will need to enter their password to unlock some additional preference panes that are unlocked by default like Network, Startup and Printers & Scanners.','Graphical Method: Perform the following steps to verify that an administrator password is required to access system-wide preferences: 1. Open System Settings 2. Select Privacy & Security 3. Select Advanced 4. Set Require an administrator password to access system-wide settings to enabled. Terminal Method: The authorizationdb settings cannot be written to directly, so the plist must be exported out to temporary file. Changes can be made to the temporary plist, then imported back into the authorizationdb settings. Run the following commands to enable that an administrator password is required to access system-wide preferences: $ /usr/bin/sudo /usr/bin/security authorizationdb read system.preferences > /tmp/system.preferences.plist YES (0) $ /usr/bin/sudo /usr/bin/defaults write /tmp/system.preferences.plist shared -bool false $ /usr/bin/sudo /usr/bin/security authorizationdb write system.preferences < /tmp/system.preferences.plist YES (0).','[{\"cis\": [\"2.6.7\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31027,'Ensure Power Nap Is Disabled for Intel Macs.','Power Nap allows the system to stay in low power mode, especially while on battery power, and periodically connect to previously known networks with stored credentials for user applications to phone home and get updates. This capability requires FileVault to remain unlocked and the use of previously joined networks to be risk accepted based on the SSID without user input. This control has been updated to check the status on both battery and AC Power. The presence of an electrical outlet does not completely correlate with logical and physical security of the device or available networks.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. The use of Power Nap adds to the risk of compromised physical and logical security. The user should be able to decrypt FileVault and have the applications download what is required when the computer is actively used. The control to prevent computer sleep has been retired for this version of the Benchmark. Forcing the computer to stay on and use energy in case a management push is needed is contrary to most current management processes. Only keep computers unslept if after hours pushes are required on closed LANs.','Power Nap exists for unattended user application updates like email and social media clients. With Power Nap disabled, the computer will not wake and reconnect to known wireless SSIDs intermittently when slept.','Graphical Method: Perform the following steps to disable Power Nap: Desktop Instructions: 1. Open System Settings 2. Select Energy Saver 3. Set Power Nap to disabled 4. Select UPS (if applicable) 5. Set Power Nap to disabled Laptop Instructions: 1. Open System Settings 2. Select Battery 3. Select Power Adapter (for laptops only) 4. Set Power Nap to disabled 5. Select Battery 6. Set Power Nap to disabled 7. Select UPS (if applicable) 8. Set Power Nap to disabled Terminal Method: Run the following command to disable Power Nap: $ /usr/bin/sudo /usr/bin/pmset -a powernap 0.','[{\"cis\": [\"2.9.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31028,'Ensure Wake for Network Access Is Disabled.','This feature allows the computer to take action when the user is not present and the computer is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. This macOS feature is meant to allow the computer to resume activity as needed regardless of physical security controls. This feature allows other users to be able to access your computer's shared resources, such as shared printers or Apple Music playlists, even when your computer is in sleep mode. In a closed network when only authorized devices could wake a computer, it could be valuable to wake computers in order to do management push activity. Where mobile workstations and agents exist, the device will more likely check in to receive updates when already awake. Mobile devices should not be listening for signals on any unmanaged network or where untrusted devices exist that could send wake signals.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access.','Management programs like Apple Remote Desktop Administrator use wake-on-LAN to connect with computers. If turned off, such management programs will not be able to wake a computer over the LAN. If the wake-on-LAN feature is needed, do not turn off this feature. The control to prevent computer sleep has been retired for this version of the Benchmark. Forcing the computer to stay on and use energy in case a management push is needed is contrary to most current management processes. Only keep computers unslept if after hours pushes are required on closed LANs.','Graphical Method: Perform the following steps to disable Wake for network access: Desktop Instructions: 1. Open System Settings 2. Select Energy Saver 3. Set Wake for network access to disabled Laptop Instructions: 1. Open System Settings 2. Select Battery 3. Select Options... 4. Set Wake for network access to Never Terminal Method: Run the following command to disable Wake for network access: $ /usr/bin/sudo /usr/bin/pmset -a womp 0 Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is com.apple.EnergySaver.desktop.ACPower 3. The key must be set to: <dict> <key>Wake On LAN</key> <integer>0</integer> <key>Wake On Modem Ring</key> <integer>0</integer> </dict> 4. The key to also include is com.apple.EnergySaver.portable.ACPower 5. The key must be set to: <dict> <key>Wake On LAN</key> <integer>0</integer> <key>Wake On Modem Ring</key> <integer>0</integer> </dict> 6. The key to also include is com.apple.EnergySaver.portable.BatteryPower 7. The key must be set to: <dict> <key>Wake On LAN</key> <integer>0</integer> <key>Wake On Modem Ring</key> <integer>0</integer> </dict> Note: Both Wake on LAN and Wake on Modem Ring need to be set. Only setting Wake On LAN will allow the profile to install but not set any settings. This profile will only apply the setting at installation and is not sticky.','[{\"cis\": [\"2.9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1015\", \"T1051\", \"T1076\", \"T1133\", \"T1200\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(31029,'Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled.','Sleep and screen saver modes are low power modes that reduce electrical consumption while the system is not in use.','Prompting for a password when waking from sleep or screen saver mode mitigates the threat of an unauthorized person gaining access to a system in the user's absence.','Without a screenlock in place anyone with physical access to the computer would be logged in and able to use the active user's session.','Graphical Method: Perform the following steps to enable a password for unlock after a screen saver begins or after sleep: 1. Open System Settings 2. Select Lock Screen 3. Set Require password after screensaver begins or display is turned off to either After 0 seconds or After 5 seconds Terminal Method: Run the following command to require a password to unlock the computer after the screen saver engages or the computer sleeps: $ /usr/bin/sudo /usr/sbin/sysadminctl -screenLock immediate -password <administrator password> or $ /usr/bin/sudo /usr/sbin/sysadminctl -screenLock 5 seconds -password <administrator password> Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.screensaver 2. The key to include is askForPassword 3. The key must be set to <true/> 4. The key to also include is askForPasswordDelay 5. The key must be set to <integer><0,5></integer>.','[{\"cis\": [\"2.10.2\"]}, {\"cis_csc_v8\": [\"4.7\"]}, {\"cis_csc_v7\": [\"4.2\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v3.2.1\": [\"2.1\", \"2.1.1\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"2.3.1\"]}, {\"soc_2\": [\"CC6.3\"]}]'),(31030,'Ensure a Custom Message for the Login Screen Is Enabled.','An access warning informs the user that the system is reserved for authorized use only, and that the use of the system may be monitored.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','If users are not informed of their responsibilities, unapproved activities may occur. Users that are not approved for access may take the lack of a warning banner as implied consent to access.','Graphical Method: Perform the following steps to enable a login banner set to your organization's required text: 1. Open System Settings 2. Select Lock Screen 3. Set Show message when locked to enabled 4. Select Set 5. Insert text in the Set a message to appear on the lock screen that matches your organization's required text 6. Select Done Terminal Method: Run the following command to enable a custom login screen message: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "<custom message>" example: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Center for Internet Security Test Message" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is LoginwindowText 3. The key must be set to <string><Your organization's required text></string>.','[{\"cis\": [\"2.10.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31031,'Ensure Login Window Displays as Name and Password Is Enabled.','The login window prompts a user for his/her credentials, verifies their authorization level, and then allows or denies the user access to the system.','Prompting the user to enter both their username and password makes it twice as hard for unauthorized users to gain access to the system since they must discover two attributes.','','Graphical Method: Perform the following steps to ensure the login window display name and password: 1. Open System Settings 2. Select Lock Screen 3. Set 'Login window showstoName and Password` Terminal Method: Run the following command to enable the login window to display name and password: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true Note: The GUI will not display the updated setting until the current user(s) logs out. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is SHOWFULLNAME 3. The key must be set to <true/>.','[{\"cis\": [\"2.10.4\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31032,'Ensure Show Password Hints Is Disabled.','Password hints are user-created text displayed when an incorrect password is used for an account.','Password hints make it easier for unauthorized persons to gain access to systems by displaying information provided by the user to assist in remembering the password. This info could include the password itself or other information that might be readily discerned with basic knowledge of the end user.','The user can set the hint to any value, including the password itself or clues that allow trivial social engineering attacks.','Graphical Method: Perform the following steps to disable password hints from being shown: 1. Open System Settings 2. Select Lock Screen 3. Set 'Show password hints` to disabled Terminal Method: Run the following command to disable password hints: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0 Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is RetriesUntilHint 3. The key must be set to <integer>0</integer>.','[{\"cis\": [\"2.10.5\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31033,'Ensure Users' Accounts Do Not Have a Password Hint.','Password hints help the user recall their passwords for various systems and/or accounts. In most cases, password hints are simple and closely related to the user's password.','Password hints that are closely related to the user's password are a security vulnerability, especially in the social media age. Unauthorized users are more likely to guess a user's password if there is a password hint. The password hint is very susceptible to social engineering attacks and information exposure on social media networks.','','Graphical Method: Perform the following steps to remove a user's password hint: 1. Open System Settings 2. Select Touch ID & Passwords (or Login Password on non-Touch ID Macs) 3. Select Change... 4. Change the password and ensure that no text is entered in the Password hint box Note: This will only change the currently logged-in user's password, and not any others that are not compliant on the Mac. Use the terminal method if multiple users are not in compliance. Terminal Method: Run the following command to remove a user's password hint: $ /usr/bin/sudo /usr/bin/dscl . -list /Users hint . -delete /Users/<username> hint example: $ /usr/bin/sudo /usr/bin/dscl . -list /Users hint . -delete /Users/firstuser hint $ /usr/bin/sudo /usr/bin/dscl . -list /Users hint . -delete /Users/seconduser hint.','[{\"cis\": [\"2.11.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31034,'Ensure Guest Account Is Disabled.','The guest account allows users access to the system without having to create an account or password. Guest users are unable to make setting changes and cannot remotely login to the system. All files, caches, and passwords created by the guest user are deleted upon logging out.','Disabling the guest account mitigates the risk of an untrusted user doing basic reconnaissance and possibly using privilege escalation attacks to take control of the system.','A guest user can use that access to find out additional information about the system and might be able to use privilege escalation vulnerabilities to establish greater access.','Graphical Method: Perform the following steps to disable guest account availability: 1. Open System Settings 2. Select Users & Groups 3. Select the i next to the Guest User 4. Set Allow guests to log in to this computer to disabled Terminal Method: Run the following command to disable the guest account: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is DisableGuestAccount 3. The key must be set to <true/>.','[{\"cis\": [\"2.12.1\"]}, {\"cis_csc_v8\": [\"5.2\", \"6.2\", \"6.8\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.4\", \"AC.L2-3.1.5\", \"IA.L2-3.5.7\", \"SC.L2-3.13.3\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(B)\", \"164.308(a)(3)(ii)(C)\", \"164.308(a)(4)(i)\", \"164.308(a)(4)(ii)(C)\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\", \"AC-5\", \"AC-6\", \"AC-6(1)\", \"AC-6(7)\", \"AU-9(4)\"]}, {\"pci_dss_v3.2.1\": [\"8.1.3\"]}, {\"pci_dss_v4.0\": [\"10.3.1\", \"2.2.2\", \"7.1\", \"7.1.1\", \"7.2\", \"7.2.1\", \"7.2.2\", \"7.2.4\", \"7.2.6\", \"7.3\", \"7.3.1\", \"7.3.2\", \"8.2.4\", \"8.2.5\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC6.2\", \"CC6.3\"]}]'),(31035,'Ensure Guest Access to Shared Folders Is Disabled.','Allowing guests to connect to shared folders enables users to access selected shared folders and their contents from different computers on a network.','Not allowing guests to connect to shared folders mitigates the risk of an untrusted user doing basic reconnaissance and possibly use privilege escalation attacks to take control of the system.','Unauthorized users could access shared files on the system.','Graphical Method: Perform the following steps to no longer allow guest user access to shared folders: 1. Open System Settings 2. Select Users & Groups 3. Select the i next to the Guest User 4. Set Allow guests to connect to shared folders to disabled Terminal Method: Run the following commands to verify that shared folders are not accessible to guest users: $ /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off.','[{\"cis\": [\"2.12.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.3\", \"AC.L2-3.1.5\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1004\", \"T1015\", \"T1021\", \"T1023\", \"T1031\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1050\", \"T1051\", \"T1053\", \"T1054\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1089\", \"T1096\", \"T1097\", \"T1133\", \"T1134\", \"T1145\", \"T1146\", \"T1150\", \"T1152\", \"T1156\", \"T1157\", \"T1159\", \"T1160\", \"T1162\", \"T1163\", \"T1165\", \"T1168\", \"T1169\", \"T1184\", \"T1185\", \"T1196\", \"T1197\", \"T1198\", \"T1200\", \"T1209\", \"T1213\", \"T1484\", \"T1489\", \"T1492\", \"T1494\", \"T1501\", \"T1504\", \"T1528\", \"T1530\", \"T1537\", \"T1538\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(31036,'Ensure Automatic Login Is Disabled.','The automatic login feature saves a user's system access credentials and bypasses the login screen. Instead, the system automatically loads to the user's desktop screen.','Disabling automatic login decreases the likelihood of an unauthorized person gaining access to a system.','If automatic login is not disabled, an unauthorized user could gain access to the system without supplying any credentials.','Graphical Method: Perform the following steps to set automatic login to off: 1. Open System Settings 2. Select Users & Groups 3. Set Automatic login in as... to Off Terminal Method: Run the following command to disable automatic login: $ /usr/bin/sudo /usr/bin/defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is com.apple.login.mcx.DisableAutoLoginClient 3. The key must be set to <true/> Note: If both the profile is enabled and a user is set to autologin, the profile will take precedent. In this case, the graphical or terminal remediation method should also be applied in case the profile is ever removed.','[{\"cis\": [\"2.12.3\"]}, {\"cis_csc_v8\": [\"4.7\"]}, {\"cis_csc_v7\": [\"4.2\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v3.2.1\": [\"2.1\", \"2.1.1\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"2.3.1\"]}, {\"soc_2\": [\"CC6.3\"]}]'),(31037,'Ensure Security Auditing Is Enabled.','macOS's audit facility, auditd, receives notifications from the kernel when certain system calls, such as open, fork, and exit, are made. These notifications are captured and written to an audit log.','Logs generated by auditd may be useful when investigating a security incident as they may help reveal the vulnerable application and the actions taken by a malicious actor.','','Terminal Method: Perform the following to enable security auditing: Run the following command to load auditd: $ /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist.','[{\"cis\": [\"3.1\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.5\"]}, {\"cis_csc_v7\": [\"4.9\", \"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.9.4.2\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.1\", \"10.2\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_v4.0\": [\"10.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"9.4.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1501\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\", \"T1156\", \"T1146\", \"T1196\", \"T1081\", \"T1530\", \"T1089\", \"T1073\", \"T1157\", \"T1054\", \"T1070\", \"T1037\", \"T1036\", \"T1096\", \"T1034\", \"T1150\", \"T1504\", \"T1145\", \"T1494\", \"T1489\", \"T1198\", \"T1165\", \"T1492\", \"T1080\", \"T1209\"]}]'),(31038,'Ensure Security Auditing Flags For User-Attributable Events Are Configured Per Local Organizational Requirements.','Auditing is the capture and maintenance of information about security-related events. Auditable events often depend on differing organizational requirements.','Maintaining an audit trail of system activity logs can help identify configuration errors, troubleshoot service disruptions, and analyze compromises or attacks that have occurred, have begun, or are about to begin. Audit logs are necessary to provide a trail of evidence in case the system or network is compromised. Depending on the governing authority, organizations can have vastly different auditing requirements. In this control we have selected a minimal set of audit flags that should be a part of any organizational requirements. The flags selected below may not adequately meet organizational requirements for users of this benchmark. The auditing checks for the flags proposed here will not impact additional flags that are selected.','','Terminal Method: Perform the following to set the required Security Auditing Flags: Edit the /etc/security/audit_control file and add -fm, ad, -ex, aa, -fr, lo, and -fw to flags. You can also substitute -all for -fm, -ex, -fr, and -fw.','[{\"cis\": [\"3.2\"]}, {\"cis_csc_v8\": [\"3.14\", \"8.2\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"14.9\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.12.4.3\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\", \"AU-3(1)\", \"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.1\", \"10.2\", \"10.2.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\", \"11.5\"]}, {\"pci_dss_v4.0\": [\"10.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"9.4.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC7.2\"]}]'),(31039,'Ensure install.log Is Retained for 365 or More Days and No Maximum Size.','macOS writes information pertaining to system-related events to the file /var/log/install.log and has a configurable retention policy for this file. The default logging setting limits the file size of the logs and the maximum size for all logs. The default allows for an errant application to fill the log files and does not enforce sufficient log retention. The Benchmark recommends a value based on standard use cases. The value should align with local requirements within the organization. The default value has an "all_max" file limitation, no reference to a minimum retention, and a less precise rotation argument. The all_max flag control will remove old log entries based only on the size of the log files. Log size can vary widely depending on how verbose installing applications are in their log entries. The decision here is to ensure that logs go back a year, and depending on the applications a size restriction could compromise the ability to store a full year. While this Benchmark is not scoring for a rotation flag, the default rotation is sequential rather than using a timestamp. Auditors may prefer timestamps in order to simply review specific dates where event information is desired. Please review the File Rotation section in the man page for more information. man asl.conf - The maximum file size limitation string should be removed "all_max=" - An organization appropriate retention should be added "ttl=" - The rotation should be set with timestamps "rotate=utc" or "rotate=local".','Archiving and retaining install.log for at least a year is beneficial in the event of an incident as it will allow the user to view the various changes to the system along with the date and time they occurred.','Without log files system maintenance and security forensics cannot be properly performed.','Terminal Method: Perform the following to ensure that install logs are retained for at least 365 days: Edit the /etc/asl/com.apple.install file and add or modify the ttl value to 365 or greater on the file line. Also, remove the all_max= setting and value from the file line.','[{\"cis\": [\"3.3\"]}, {\"cis_csc_v8\": [\"8.1\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.4\", \"6.7\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.12.4.3\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"pci_dss_v4.0\": [\"10.1\", \"10.1.1\"]}, {\"soc_2\": [\"A1.1\"]}]'),(31040,'Ensure Security Auditing Retention Is Enabled.','The macOS audit capability contains important information to investigate security or operational issues. This resource is only completely useful if it is retained long enough to allow technical staff to find the root cause of anomalies in the records. Retention can be set to respect both size and longevity. To retain as much as possible under a certain size, the recommendation is to use the following: expire-after:60d OR 5G This recomendation is based on minimum storage for review and investigation. When a third party tool is in use to allow remote logging or the store and forwarding of logs, this local storage requirement is not required.','The audit records need to be retained long enough to be reviewed as necessary.','The recommendation is that at least 60 days or 5 gigabytes of audit records are retained. Systems that have very little remaining disk space may have issues retaining sufficient data.','Terminal Method: Perform the following to set the audit retention length: Edit the /etc/security/audit_control file so that expire-after: is at least 60d OR 5G.','[{\"cis\": [\"3.4\"]}, {\"cis_csc_v8\": [\"8.1\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.4\", \"6.7\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.12.4.3\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"pci_dss_v4.0\": [\"10.1\", \"10.1.1\"]}, {\"soc_2\": [\"A1.1\"]}]'),(31041,'Ensure Bonjour Advertising Services Is Disabled.','Bonjour is an auto-discovery mechanism for TCP/IP devices which enumerate devices and services within a local subnet. DNS on macOS is integrated with Bonjour and should not be turned off, but the Bonjour advertising service can be disabled.','Bonjour can simplify device discovery from an internal rogue or compromised host. An attacker could use Bonjour's multicast DNS feature to discover a vulnerable or poorly-configured service or additional information to aid a targeted attack. Implementing this control disables the continuous broadcasting of "I'm here!" messages. Typical end-user endpoints should not have to advertise services to other computers. This setting does not stop the computer from sending out service discovery messages when looking for services on an internal subnet, if the computer is looking for a printer or server and using service discovery. To block all Bonjour traffic except to approved devices, the pf or other firewall would be needed.','Some applications, like Final Cut Studio and AirPort Base Station management, may not operate properly if the mDNSResponder is turned off.','Terminal Method: Run the following command to disable Bonjour Advertising services: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mDNSResponder 2. The key to include is NoMulticastAdvertisements.','[{\"cis\": [\"4.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31042,'Ensure HTTP Server Is Disabled.','macOS used to have a graphical front-end to the embedded Apache web server in the Operating System. Personal web sharing could be enabled to allow someone on another computer to download files or information from the user's computer. Personal web sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. Apache, however, is still part of the Operating System and can be easily turned on to share files and provide remote connectivity to an end-user computer. Web sharing should only be done through hardened web servers and appropriate cloud services.','Web serving should not be done from a user desktop. Dedicated webservers or appropriate cloud storage should be used. Open ports make it easier to exploit the computer.','The web server is both a point of attack for the system and a means for unauthorized file transfers.','Terminal Method: Run the following command to disable the HTTP server services: $ sudo /usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist.','[{\"cis\": [\"4.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31043,'Ensure NFS Server Is Disabled.','macOS can act as an NFS fileserver. NFS sharing could be enabled to allow someone on another computer to mount shares and gain access to information from the user's computer. File sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. NFSD is still part of the Operating System and can be easily turned on to export shares and provide remote connectivity to an end-user computer. The etc/exports file contains the list of NFS shared directories. If the file exists, it is likely that NFS sharing has been enabled in the past or may be available periodically. As an additional check, the audit verifies that there is no /etc/exports file.','File serving should not be done from a user desktop. Dedicated servers should be used. Open ports make it easier to exploit the computer.','The nfs server is both a point of attack for the system and a means for unauthorized file transfers.','Terminal Method: Run the following command to disable the nfsd fileserver services: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd Remove the exported Directory listing. $ /usr/bin/sudo /bin/rm /etc/exports.','[{\"cis\": [\"4.3\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31044,'Ensure Home Folders Are Secure.','By default, macOS allows all valid users into the top level of every other user's home folder and restricts access to the Apple default folders within. Another user on the same system can see you have a "Documents" folder but cannot see inside it. This configuration does work for personal file sharing but can expose user files to standard accounts on the system. The best parallel for Enterprise environments is that everyone who has a Dropbox account can see everything that is at the top level but can't see your pictures. Similarly with macOS, users can see into every new Directory that is created because of the default permissions. Home folders should be restricted to access only by the user. Sharing should be used on dedicated servers or cloud instances that are managing access controls. Some environments may encounter problems if execute rights are removed as well as read and write. Either no access or execute only for group or others is acceptable.','Allowing all users to view the top level of all networked users' home folder may not be desirable since it may lead to the revelation of sensitive information.','If implemented, users will not be able to use the "Public" folders in other users' home folders. "Public" folders with appropriate permissions would need to be set up in the /Shared folder.','Terminal Method: For each user, run the following command to secure all home folders: $ /usr/bin/sudo /bin/chmod -R og-rwx /Users/<username> Alternately, run the following command if there needs to be executable access for a home folder: $ /usr/bin/sudo /bin/chmod -R og-rw /Users/<username> example: $ /usr/bin/sudo /bin/chmod -R og-rw /Users/thirduser/ $ /usr/bin/sudo /bin/chmod -R og-rwx /Users/fourthuser/ # /bin/ls -l /Users/ total 0 drwxr-xr-x+ 12 Guest _guest 384 24 Jul 13:42 Guest drwxrwxrwt 4 root wheel 128 22 Jul 11:00 Shared drwx--x--x+ 18 firstuser staff 576 10 Aug 14:36 firstuser drwx--x--x+ 15 seconduser staff 480 10 Aug 09:16 seconduser drwx--x--x+ 11 thirduser staff 352 10 Aug 14:53 thirduser drwx------+ 11 fourthuser staff 352 10 Aug 14:53 fourthuser.','[{\"cis\": [\"5.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.3\", \"AC.L2-3.1.5\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1004\", \"T1015\", \"T1021\", \"T1023\", \"T1031\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1050\", \"T1051\", \"T1053\", \"T1054\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1089\", \"T1096\", \"T1097\", \"T1133\", \"T1134\", \"T1145\", \"T1146\", \"T1150\", \"T1152\", \"T1156\", \"T1157\", \"T1159\", \"T1160\", \"T1162\", \"T1163\", \"T1165\", \"T1168\", \"T1169\", \"T1184\", \"T1185\", \"T1196\", \"T1197\", \"T1198\", \"T1200\", \"T1209\", \"T1213\", \"T1484\", \"T1489\", \"T1492\", \"T1494\", \"T1501\", \"T1504\", \"T1528\", \"T1530\", \"T1537\", \"T1538\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(31045,'Ensure System Integrity Protection Status (SIP) Is Enabled.','System Integrity Protection is a security feature introduced in OS X 10.11 El Capitan. System Integrity Protection restricts access to System domain locations and restricts runtime attachment to system processes. Any attempt to inspect or attach to a system process will fail. Kernel Extensions are now restricted to /Library/Extensions and are required to be signed with a Developer ID.','Running without System Integrity Protection on a production system runs the risk of the modification of system binaries or code injection of system processes that would otherwise be protected by SIP.','System binaries and processes could become compromised.','Terminal Method: Perform the following steps to enable System Integrity Protection: 1. Reboot into the Recovery Partition (reboot and hold down Command + R) 2. Select Utilities 3. Select Terminal 4. Run the following command: $ /usr/bin/sudo /usr/bin/csrutil enable Successfully enabled System Integrity Protection. Please restart the machine for the changes to take effect. 5. Reboot the computer Note: You should research why the system had SIP disabled. It might be a better option to erase the Mac and reinstall the operating system. That is at your discretion. Note: You cannot enable System Integrity Protection from the booted operating system. If the remediation is attempted in the booted OS and not the Recovery Partition the output will give the error csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v8\": [\"2.3\", \"2.6\", \"10.5\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.9\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"nist_sp_800-53\": [\"CM-10\", \"CM-7(1)\", \"CM-7(2)\", \"CM-8(3)\", \"SI-16\"]}, {\"pci_dss_v3.2.1\": [\"1.4\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"12.3.4\", \"2.2.4\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.8\", \"CC7.1\"]}, {\"mitre_techniques\": [\"T1191\", \"T1092\", \"T1175\", \"T1173\", \"T1519\", \"T1052\", \"T1210\", \"T1133\", \"T1118\", \"T1171\", \"T1170\", \"T1046\", \"T1137\", \"T1086\", \"T1164\", \"T1121\", \"T1076\", \"T1091\", \"T1180\", \"T1064\", \"T1184\", \"T1221\", \"T1127\", \"T1028\"]}]'),(31046,'Ensure Apple Mobile File Integrity (AMFI) Is Enabled.','Apple Mobile File Integrity (AMFI) was first released in macOS 10.12. The daemon and service block attempts to run unsigned code. AMFI uses lanchd, code signatures, certificates, entitlements, and provisioning profiles to create a filtered entitlement dictionary for an app. AMFI is the macOS kernel module that enforces code-signing and library validation.','Apple Mobile File Integrity validates that application code is validated.','Applications could be compromised with malicious code.','Terminal Method: Run the following command to enable the Apple Mobile File Integrity service: $ /usr/bin/sudo /usr/sbin/nvram boot-args="".','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v8\": [\"2.3\", \"2.6\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.9\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"nist_sp_800-53\": [\"CM-10\", \"CM-7(1)\", \"CM-7(2)\", \"CM-8(3)\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"12.3.4\", \"2.2.4\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.1\"]}, {\"mitre_techniques\": [\"T1191\", \"T1092\", \"T1175\", \"T1173\", \"T1519\", \"T1052\", \"T1210\", \"T1133\", \"T1118\", \"T1171\", \"T1170\", \"T1046\", \"T1137\", \"T1086\", \"T1164\", \"T1121\", \"T1076\", \"T1091\", \"T1180\", \"T1064\", \"T1184\", \"T1221\", \"T1127\", \"T1028\"]}]'),(31047,'Ensure Sealed System Volume (SSV) Is Enabled.','Sealed System Volume is a security feature introduced in macOS 11.0 Big Sur. During system installation, a SHA-256 cryptographic hash is calculated for all immutable system files and stored in a Merkle tree which itself is hashed as the Seal. Both are stored in the metadata of the snapshot created of the System volume. The seal is verified by the boot loader at startup. macOS will not boot if system files have been tampered with. If validation fails, the user will be instructed to reinstall the operating system. During read operations for files located in the Sealed System Volume, a hash is calculated and compared to the value stored in the Merkle tree.','Running without Sealed System Volume on a production system could run the risk of Apple software that integrates directly with macOS being modified.','Apple Software that integrates with the operating system could become compromised.','If SSV has been disabled, assume that the operating system has been compromised. Back up any files, and do a clean install to a known good Operating System.','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v8\": [\"3.6\", \"3.11\"]}, {\"cis_csc_v7\": [\"13.6\", \"14.8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.6.2.1\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"pci_dss_v3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_v4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"mitre_techniques\": [\"T1527\", \"T1119\", \"T1530\", \"T1114\", \"T1070\", \"T1208\", \"T1040\", \"T1145\", \"T1492\", \"T1493\", \"T1072\"]}]'),(31048,'Ensure Password Account Lockout Threshold Is Configured.','The account lockout threshold specifies the amount of times a user can enter an incorrect password before a lockout will occur. Ensure that a lockout threshold is part of the password policy on the computer.','The account lockout feature mitigates brute-force password attacks on the system.','The number of incorrect log on attempts should be reasonably small to minimize the possibility of a successful password attack, while allowing for honest errors made during a normal user log on. The locked account will auto-unlock after a few minutes when bad password attempts stop. The computer will accept the still-valid password if remembered or recovered.','Terminal Method: Run the following command to set the maximum number of failed login attempts to less than or equal to 5: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxFailedLoginAttempts=<value=<5>" Note: When the account lockout threshold is set with pwpolicy, it will also set a reset value to policyAttributeMinutesUntilFailedAuthenticationReset that defaults to 1 minute. You can change this value with the command: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "policyAttributeMinutesUntilFailedAuthenticationReset=<value in minutes>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxFailedLoginAttempts=5" /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "policyAttributeMinutesUntilFailedAuthenticationReset=10" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is maxFailedAttempts 3. The key must be set to <integer><value<=5></integer> Note: When setting the lockout threshold with a mobile configuration profile there is no default reset to the lockout. To set the reset value use the key autoEnableInSeconds and set the key to <integer><value in seconds></integer>. Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"pci_dss_v3.2.1\": [\"8.1.3\"]}, {\"pci_dss_v4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}, {\"mitre_techniques\": [\"T1134\", \"T1197\", \"T1538\", \"T1530\", \"T1213\", \"T1089\", \"T1157\", \"T1044\", \"T1484\", \"T1054\", \"T1159\", \"T1160\", \"T1152\", \"T1168\", \"T1162\", \"T1185\", \"T1031\", \"T1050\", \"T1075\", \"T1097\", \"T1034\", \"T1163\", \"T1076\", \"T1021\", \"T1053\", \"T1489\", \"T1051\", \"T1023\", \"T1165\", \"T1528\", \"T1501\", \"T1072\", \"T1537\", \"T1078\", \"T1047\", \"T1084\", \"T1004\"]}]'),(31049,'Ensure Password Minimum Length Is Configured.','A minimum password length is the fewest number of characters a password can contain to meet a system's requirements. Ensure that a minimum of a 15-character password is part of the password policy on the computer. Where the confidentiality of encrypted information in FileVault is more of a concern, requiring a longer password or passphrase may be sufficient rather than imposing additional complexity requirements that may be self-defeating.','Information systems that are not protected with strong password schemes including passwords of minimum length provide a greater opportunity for attackers to crack the password and gain access to the system.','Short passwords can be easily attacked.','Terminal Method: Run the following command to set the password length to greater than or equal to 15: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "minChars=<value>=15>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "minChars=15" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is minLength 3. The key must be set to <integer><value>=15></integer> Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"mitre_techniques\": [\"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1501\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\"]}]'),(31050,'Ensure Complex Password Must Contain Alphabetic Characters Is Configured.','Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non-alphanumeric characters. Ensure that an Alphabetic character is part of the password policy on the computer.','The more complex a password, the more resistant it will be against persons seeking unauthorized access to a system.','Password policy should be in effect to reduce the risk of exposed services being compromised easily through dictionary attacks or other social engineering attempts.','Terminal Method: Run the following command to set the that passwords must contain at least one letter: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy - setaccountpolicies "requiresAlpha=<value>=1>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresAlpha=1" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is requireAlphanumeric 3. The key must be set to <true/> Note: This profile sets a requirement of both an alphabetical and a numeric character. Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31051,'Ensure Complex Password Must Contain Numeric Character Is Configured.','Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non-alphanumeric characters. Ensure that a number or numeric value is part of the password policy on the computer.','The more complex a password, the more resistant it will be against persons seeking unauthorized access to a system.','Password policy should be in effect to reduce the risk of exposed services being compromised easily through dictionary attacks or other social engineering attempts.','Terminal Method: Run the following command to set passwords to require at least one number: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy - setaccountpolicies "requiresNumeric=<value>=1>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresNumeric=2" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is requireAlphanumeric 3. The key must be set to <true/> Note: This profile sets a requirement of both an alphabetical and a numeric character. Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31052,'Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured.','Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non-alphanumeric characters. Ensure that both uppercase and lowercase letters are part of the password policy on the computer.','The more complex a password, the more resistant it will be against persons seeking unauthorized access to a system.','Password policy should be in effect to reduce the risk of exposed services being compromised easily through dictionary attacks or other social engineering attempts.','Terminal Method: Run the following command to set passwords to require at upper and lower case letter: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresMixedCase=<value>=1>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresMixedCase=1".','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31053,'Ensure Password Age Is Configured.','Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users should reset passwords periodically. This control uses 365 days as the acceptable value. Some organizations may be more or less restrictive. This control mainly exists to mitigate against password reuse of the macOS account password in other realms that may be more prone to compromise. Attackers take advantage of exposed information to attack other accounts.','Passwords should be changed periodically to reduce exposure.','Required password changes will lead to some locked computers requiring admin assistance.','Terminal Method: Run the following command to require that passwords expire after at most 365 days: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxMinutesUntilChangePassword=<value<=525600>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxMinutesUntilChangePassword=43200" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is maxPINAgeInDays 3. The key must be set to <integer><value>=365></integer> Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v8\": [\"5.3\"]}, {\"cis_csc_v7\": [\"16.9\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.6\"]}, {\"nist_sp_800-53\": [\"AC-2(3)\"]}, {\"pci_dss_v3.2.1\": [\"8.1.4\"]}, {\"pci_dss_v4.0\": [\"8.3.7\"]}, {\"mitre_techniques\": [\"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\", \"T1134\", \"T1197\", \"T1538\", \"T1089\", \"T1157\", \"T1054\", \"T1159\", \"T1160\", \"T1152\", \"T1168\", \"T1162\", \"T1185\", \"T1050\", \"T1075\", \"T1097\", \"T1163\", \"T1021\", \"T1489\", \"T1051\", \"T1023\", \"T1165\", \"T1501\", \"T1072\", \"T1537\", \"T1047\", \"T1084\", \"T1004\"]}]'),(31054,'Ensure Password History Is Configured.','Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users must reset passwords periodically. This control ensures that previous passwords are not reused immediately by keeping a history of previous password hashes. Ensure that password history checks are part of the password policy on the computer. This control checks whether a new password is different than the previous 15. The latest NIST guidance based on exploit research referenced in this section details how one of the greatest risks is password exposure rather than password cracking. Passwords should be changed to a new unique value whenever a password might have been exposed to anyone other than the account holder. Attackers have maintained persistent control based on predictable password change patterns and substantially different patterns should be used in case of a leak.','Old passwords should not be reused.','Required password changes will lead to some locked computers requiring admin assistance.','Terminal Method: Run the following command to require that the password must to be different from at least the last 15 passwords: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "usingHistory=<value>=15>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "usingHistory=15" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is pinHistory 3. The key must be set to <integer><value>=15></integer> Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"mitre_techniques\": [\"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1501\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\"]}]'),(31055,'Ensure the Sudo Timeout Period Is Set to Zero.','The sudo command allows the user to run programs as the root user. Working as the root user allows the user an extremely high level of configurability within the system. This control, along with the control to use a separate timestamp for each tty, limits the window where an unauthorized user, process, or attacker could utilize legitimate credentials that are valid for longer than required.','The sudo command stays logged in as the root user for five minutes before timing out and re-requesting a password. This five-minute window should be eliminated since it leaves the system extremely vulnerable. This is especially true if an exploit were to gain access to the system, since they would be able to make changes as a root user.','This control has a serious impact where users often have to use sudo. It is even more of an impact where users have to use sudo multiple times in quick succession as part of normal work processes. Organizations with that common use case will likely find this control too onerous and are better to accept the risk of not requiring a 0 grace period. In some ways the use of sudo -s, which is undesirable, is better than a long grace period since that use does change the hash to show that it is a root shell rather than a normal shell where sudo commands will be implemented without a password.','Terminal Method: Run the following command to edit the sudo settings: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/<configuration file name> example: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/10_cissudoconfiguration Note: Unlike other Unix and/or Linux distros, macOS will ignore configuration files in the sudoers.d folder that contain a . so do not add a file extension to the configuration file. Add the line Defaults timestamp_timeout=0 to the configuration file. If /etc/sudoers.d/ is not owned by root or in the wheel group, run the following to change ownership and group: $ /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/sudoers.d/.','[{\"cis\": [\"5.4\"]}, {\"cis_csc_v8\": [\"4.3\"]}, {\"cis_csc_v7\": [\"16.11\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.10\", \"AC.L2-3.1.11\"]}, {\"hipaa\": [\"164.312(a)(2)(iii)\"]}, {\"nist_sp_800-53\": [\"AC-11\", \"AC-11(1)\", \"AC-12\", \"AC-2(5)\"]}, {\"iso_27001-2013\": [\"A.8.1.3\"]}, {\"pci_dss_v3.2.1\": [\"8.1.8\"]}, {\"pci_dss_v4.0\": [\"8.2.8\"]}, {\"mitre_techniques\": [\"T1110\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31056,'Ensure a Separate Timestamp Is Enabled for Each User/tty Combo.','Using tty tickets ensures that a user must enter the sudo password in each Terminal session. With sudo versions 1.8 and higher, introduced in 10.12, the default value is to have tty tickets for each interface so that root access is limited to a specific terminal. The default configuration can be overwritten or not configured correctly on earlier versions of macOS.','In combination with removing the sudo timeout grace period, a further mitigation should be in place to reduce the possibility of a background process using elevated rights when a user elevates to root in an explicit context or tty. Additional mitigation should be in place to reduce the risk of privilege escalation of background processes.','This control should have no user impact. Developers or installers may have issues if background processes are spawned with different interfaces than where sudo was executed.','Terminal Method: Run the following command to edit the sudo settings: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/<configuration file name> example: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/10_cissudoconfiguration Note: Unlike other Unix and/or Linux distros, macOS will ignore configuration files in the sudoers.d folder that contain a . so do not add a file extension to the configuration file. Add the line Defaults timestamp_type=tty to the configuration file. Note: The Defaults timestamp_type=tty line can be added to an existing configuration file or a new one. That will depend on your organization's preference and works either way.','[{\"cis\": [\"5.5\"]}, {\"cis_csc_v8\": [\"4.3\"]}, {\"cis_csc_v7\": [\"16.11\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.10\", \"AC.L2-3.1.11\"]}, {\"hipaa\": [\"164.312(a)(2)(iii)\"]}, {\"nist_sp_800-53\": [\"AC-11\", \"AC-11(1)\", \"AC-12\", \"AC-2(5)\"]}, {\"iso_27001-2013\": [\"A.8.1.3\"]}, {\"pci_dss_v3.2.1\": [\"8.1.8\"]}, {\"pci_dss_v4.0\": [\"8.2.8\"]}, {\"mitre_techniques\": [\"T1110\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31057,'Ensure the "root" Account Is Disabled.','The root account is a superuser account that has access privileges to perform any actions and read/write to any file on the computer. With some versions of Linux, the system administrator may commonly use the root account to perform administrative functions.','Enabling and using the root account puts the system at risk since any successful exploit or mistake while the root account is in use could have unlimited access privileges within the system. Using the sudo command allows users to perform functions as a root user while limiting and password protecting the access privileges. By default the root account is not enabled on a macOS computer. An administrator can escalate privileges using the sudo command (use -s or -i to get a root shell).','Some legacy POSIX software might expect an available root account.','Graphical Method: Perform the following steps to ensure that the root user is disabled: 1. Open /System/Library/CoreServices/Applications/Directory Utility 2. Click the lock icon to unlock the service 3. Click Edit in the menu bar 4. Click Disable Root User Terminal Method: Run the following command to disable the root user: $ /usr/bin/sudo /usr/sbin/dsenableroot -d username = root user password:.','[{\"cis\": [\"5.6\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"mitre_techniques\": [\"T1176\", \"T1501\", \"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\"]}]'),(31058,'Ensure an Administrator Account Cannot Login to Another User's Active and Locked Session.','macOS has a privilege that can be granted to any user that will allow that user to unlock active user's sessions.','Disabling the administrator's and/or user's ability to log into another user's active and locked session prevents unauthorized persons from viewing potentially sensitive and/or personal information.','While Fast user switching is a workaround for some lab environments, especially where there is even less of an expectation of privacy, this setting change may impact some maintenance workflows.','Terminal Method: Run the following command to disable a user logging into another user's active and/or locked session: $ /usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver use-login-window-ui YES (0).','[{\"cis\": [\"5.7\"]}, {\"cis_csc_v8\": [\"4.3\"]}, {\"cis_csc_v7\": [\"16.11\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.10\", \"AC.L2-3.1.11\"]}, {\"hipaa\": [\"164.312(a)(2)(iii)\"]}, {\"nist_sp_800-53\": [\"AC-11\", \"AC-11(1)\", \"AC-12\", \"AC-2(5)\"]}, {\"iso_27001-2013\": [\"A.8.1.3\"]}, {\"pci_dss_v3.2.1\": [\"8.1.8\"]}, {\"pci_dss_v4.0\": [\"8.2.8\"]}, {\"mitre_techniques\": [\"T1110\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31059,'Ensure a Login Window Banner Exists.','A Login window banner warning informs the user that the system is reserved for authorized use only. It enforces an acknowledgment by the user that they have been informed of the use policy in the banner if required. The system recognizes either the .txt and the .rtf formats.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','Users will have to click on the window with the Login text before logging into the computer.','Terminal Method: Run the following commands to create or edit the login window text and set the proper permissions: Edit (or create) a PolicyBanner.txt or PolicyBanner.rtf file, in the /Library/Security/ folder, to include the required login window banner text. Perform the following to set permissions on the policy banner file: $ /usr/bin/sudo /usr/sbin/chown o+r /Library/Security/PolicyBanner.txt $ /usr/bin/sudo /usr/sbin/chown o+r /Library/Security/PolicyBanner.rtf Note: If your organization uses an .rtfd file to set the policy banner, run $ /usr/bin/sudo /usr/sbin/chown -R o+rx /Library/Security/PolicyBanner.rtfd to update the permissions.','[{\"cis\": [\"5.8\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1110\", \"T1003\", \"T1081\", \"T1097\", \"T1178\", \"T1072\", \"T1067\", \"T1495\", \"T1019\", \"T1177\", \"T1485\", \"T1486\", \"T1491\", \"T1488\", \"T1487\", \"T1490\", \"T1146\", \"T1148\", \"T1015\", \"T1133\", \"T1200\", \"T1076\", \"T1051\", \"T1176\", \"T1501\", \"T1087\", \"T1098\", \"T1139\", \"T1197\", \"T1092\", \"T1136\", \"T1011\", \"T1147\", \"T1130\", \"T1174\", \"T1053\", \"T1166\", \"T1206\", \"T1503\", \"T1214\", \"T1187\", \"T1208\", \"T1142\", \"T1075\", \"T1201\", \"T1145\", \"T1184\", \"T1537\", \"T1078\", \"T1077\", \"T1134\", \"T1017\", \"T1088\", \"T1175\", \"T1190\", \"T1210\", \"T1525\", \"T1215\", \"T1086\", \"T1055\", \"T1505\", \"T1035\", \"T1218\", \"T1169\", \"T1100\", \"T1047\", \"T1084\", \"T1028\", \"T1156\", \"T1196\", \"T1530\", \"T1089\", \"T1073\", \"T1157\", \"T1054\", \"T1070\", \"T1037\", \"T1036\", \"T1096\", \"T1034\", \"T1150\", \"T1504\", \"T1494\", \"T1489\", \"T1198\", \"T1165\", \"T1492\", \"T1080\", \"T1209\", \"T1112\", \"T1058\", \"T1173\", \"T1137\", \"T1539\", \"T1535\", \"T1506\", \"T1138\", \"T1044\", \"T1199\"]}]'),(31060,'Ensure the Guest Home Folder Does Not Exist.','In the previous two controls, the guest account login has been disabled and sharing to guests has been disabled, as well. There is no need for the legacy Guest home folder to remain in the file system. When normal user accounts are removed, you have the option to archive it, leave it in place, or delete. In the case of the guest folder, the folder remains in place without a GUI option to remove it. If at some point in the future a Guest account is needed, it will be re-created. The presence of the Guest home folder can cause automated audits to fail when looking for compliant settings within all User folders, as well. Rather than ignoring the folder's continued existence, it is best removed.','The Guest home folders are unneeded after the Guest account is disabled and could be used inappropriately.','The Guest account should not be necessary after it is disabled, and it will be automatically re-created if the Guest account is re-enabled.','Terminal Method: Run the following command to remove the Guest user home folder: $ /usr/bin/sudo /bin/rm -R /Users/Guest.','[{\"cis\": [\"5.10\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1110\", \"T1003\", \"T1081\", \"T1097\", \"T1178\", \"T1072\", \"T1067\", \"T1495\", \"T1019\", \"T1177\", \"T1485\", \"T1486\", \"T1491\", \"T1488\", \"T1487\", \"T1490\", \"T1146\", \"T1148\", \"T1015\", \"T1133\", \"T1200\", \"T1076\", \"T1051\", \"T1176\", \"T1501\", \"T1087\", \"T1098\", \"T1139\", \"T1197\", \"T1092\", \"T1136\", \"T1011\", \"T1147\", \"T1130\", \"T1174\", \"T1053\", \"T1166\", \"T1206\", \"T1503\", \"T1214\", \"T1187\", \"T1208\", \"T1142\", \"T1075\", \"T1201\", \"T1145\", \"T1184\", \"T1537\", \"T1078\", \"T1077\", \"T1134\", \"T1017\", \"T1088\", \"T1175\", \"T1190\", \"T1210\", \"T1525\", \"T1215\", \"T1086\", \"T1055\", \"T1505\", \"T1035\", \"T1218\", \"T1169\", \"T1100\", \"T1047\", \"T1084\", \"T1028\", \"T1156\", \"T1196\", \"T1530\", \"T1089\", \"T1073\", \"T1157\", \"T1054\", \"T1070\", \"T1037\", \"T1036\", \"T1096\", \"T1034\", \"T1150\", \"T1504\", \"T1494\", \"T1489\", \"T1198\", \"T1165\", \"T1492\", \"T1080\", \"T1209\", \"T1112\", \"T1058\", \"T1173\", \"T1137\", \"T1539\", \"T1535\", \"T1506\", \"T1138\", \"T1044\", \"T1199\"]}]'); -INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (41,1,'Security','Hardening plugin for security compliance analysis','','ID;STATUS','',0,2); -INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (42,9,'Security','Hardening plugin for security compliance analysis','','ID;STATUS','',0,2); +SET @tmodule_name = 'CPU'; +SET @tmodule_description = 'CPU'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'Brand;Clock;Model' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'RAM'; +SET @tmodule_description = 'RAM'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'Size' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'NIC'; +SET @tmodule_description = 'NIC'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'NIC;Mac;Speed' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'Software'; +SET @tmodule_description = 'Software'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'PKGINST;VERSION;NAME' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'Security'; +SET @tmodule_description = 'Hardening plugin for security compliance analysis'; +SET @id_os = 1; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'ID:STATUS' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'Security'; +SET @tmodule_description = 'Hardening plugin for security compliance analysis'; +SET @id_os = 9; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'ID:STATUS' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); UPDATE tconfig SET value = '' From a3ce979b39e71cf54b4524b06a4e795ab5e99aff Mon Sep 17 00:00:00 2001 From: Jonathan <jonathan.leon@pandorafms.com> Date: Wed, 18 Oct 2023 09:13:00 +0200 Subject: [PATCH 2/3] Revert "#12256 remove id and check duplicate before insert" This reverts commit 75b035261ff0f8fcec9e243742d1104732d70609. --- pandora_console/extras/mr/65.sql | 57 ++++++-------------------------- 1 file changed, 10 insertions(+), 47 deletions(-) diff --git a/pandora_console/extras/mr/65.sql b/pandora_console/extras/mr/65.sql index 451f4822ae..290c9a3972 100644 --- a/pandora_console/extras/mr/65.sql +++ b/pandora_console/extras/mr/65.sql @@ -78,6 +78,14 @@ ALTER TABLE `tmetaconsole_agent` ADD COLUMN `disabled_by_downtime` TINYINT NOT N DELETE FROM tconfig WHERE token = 'refr'; +INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (37,2,'CPU','CPU','','Brand;Clock;Model','',0,2); + +INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (38,2,'RAM','RAM','','Size','',0,2); + +INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (39,2,'NIC','NIC','','NIC;Mac;Speed','',0,2); + +INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (40,2,'Software','Software','','PKGINST;VERSION;NAME','',0,2); + ALTER TABLE `treport_content` ADD COLUMN `period_range` INT NULL DEFAULT 0 AFTER `period`; CREATE TABLE IF NOT EXISTS `tevent_comment` ( @@ -209,54 +217,9 @@ INSERT INTO `tsca` VALUES (26339,'Ensure 'Do not allow  INSERT INTO `tsca` VALUES (28058,'Ensure VSFTP Server is not installed.','FTP (File Transfer Protocol) is a traditional and widely used standard tool for transferring files between a server and clients over a network, especially where no authentication is necessary (permits anonymous users to connect to a server).','Unless there is a need to run the system as a FTP server, it is recommended that the package be removed to reduce the potential attack surface.','','Run the following command to remove vsftpd: # dnf remove vsftpd.','[{\"cis\": [\"2.2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28059,'Ensure TFTP Server is not installed.','Trivial File Transfer Protocol (TFTP) is a simple protocol for exchanging files between two TCP/IP machines. TFTP servers allow connections from a TFTP Client for sending and receiving files.','Unless there is a need to run the system as a TFTP server, it is recommended that the package be removed to reduce the potential attack surface. TFTP does not have built-in encryption, access control or authentication. This makes it very easy for an attacker to exploit TFTP to gain access to files.','TFTP is often used to provide files for network booting such as for PXE based installation of servers.','Run the following command to remove tftp-server: # dnf remove tftp-server.','[{\"cis\": [\"2.2.7\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28060,'Ensure a web server is not installed.','Web servers provide the ability to host web site content.','Unless there is a need to run the system as a web server, it is recommended that the packages be removed to reduce the potential attack surface. Note: Several http servers exist. They should also be audited, and removed, if not required.','','Run the following command to remove httpd and nginx: # dnf remove httpd nginx.','[{\"cis\": [\"2.2.8\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28061,'Ensure IMAP and POP3 server is not installed.','dovecot is an open source IMAP and POP3 server for Linux based systems.','Unless POP3 and/or IMAP servers are to be provided by this system, it is recommended that the package be removed to reduce the potential attack surface. Note: Several IMAP/POP3 servers exist and can use other service names. These should also be audited and the packages removed if not required.','','Run the following command to remove dovecot and cyrus-imapd: # dnf remove dovecot cyrus-imapd.','[{\"cis\": [\"2.2.9\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28062,'Ensure Samba is not installed.','The Samba daemon allows system administrators to configure their Linux systems to share file systems and directories with Windows desktops. Samba will advertise the file systems and directories via the Server Message Block (SMB) protocol. Windows desktop users will be able to mount these directories and file systems as letter drives on their systems.','If there is no need to mount directories and file systems to Windows systems, then this package can be removed to reduce the potential attack surface.','','Run the following command to remove samba: # dnf remove samba.','[{\"cis\": [\"2.2.10\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1005\", \"T1039\", \"T1083\", \"T1135\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28063,'Ensure HTTP Proxy Server is not installed.','Squid is a standard proxy server used in many distributions and environments.','Unless a system is specifically set up to act as a proxy server, it is recommended that the squid package be removed to reduce the potential attack surface. Note: Several HTTP proxy servers exist. These should be checked and removed unless required.','','Run the following command to remove the squid package: # dnf remove squid.','[{\"cis\": [\"2.2.11\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28064,'Ensure net-snmp is not installed.','Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment, computer equipment and devices like UPSs. Net-SNMP is a suite of applications used to implement SNMPv1 (RFC 1157), SNMPv2 (RFCs 1901-1908), and SNMPv3 (RFCs 3411-3418) using both IPv4 and IPv6. Support for SNMPv2 classic (a.k.a. "SNMPv2 historic" - RFCs 1441-1452) was dropped with the 4.0 release of the UCD-snmp package. The Simple Network Management Protocol (SNMP) server is used to listen for SNMP commands from an SNMP management system, execute the commands or collect the information and then send results back to the requesting system.','The SNMP server can communicate using SNMPv1, which transmits data in the clear and does not require authentication to execute commands. SNMPv3 replaces the simple/clear text password sharing used in SNMPv2 with more securely encoded parameters. If the the SNMP service is not required, the net-snmp package should be removed to reduce the attack surface of the system. Note: If SNMP is required: - The server should be configured for SNMP v3 only. User Authentication and Message Encryption should be configured. - If SNMP v2 is absolutely necessary, modify the community strings' values.','','Run the following command to remove net-snmpd: # dnf remove net-snmp.','[{\"cis\": [\"2.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\", \"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28065,'Ensure telnet-server is not installed.','The telnet-server package contains the telnet daemon, which accepts connections from users from other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow a user with access to sniff network traffic the ability to steal credentials. The ssh package provides an encrypted session and stronger security.','','Run the following command to remove the telnet-server package: # dnf remove telnet-server.','[{\"cis\": [\"2.2.13\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\", \"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28066,'Ensure dnsmasq is not installed.','dnsmasq is a lightweight tool that provides DNS caching, DNS forwarding and DHCP (Dynamic Host Configuration Protocol) services.','Unless a system is specifically designated to act as a DNS caching, DNS forwarding and/or DHCP server, it is recommended that the package be removed to reduce the potential attack surface.','','Run the following command to remove dnsmasq: # dnf remove dnsmasq.','[{\"cis\": [\"2.2.14\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28067,'Ensure mail transfer agent is configured for local-only mode.','Mail Transfer Agents (MTA), such as sendmail and Postfix, are used to listen for incoming mail and transfer the messages to the appropriate user or mail server. If the system is not intended to be a mail server, it is recommended that the MTA be configured to only process local mail.','The software for all Mail Transfer Agents is complex and most have a long history of security issues. While it is important to ensure that the system can process local mail messages, it is not necessary to have the MTA's daemon listening on a port unless the server is intended to be a mail server that receives and processes mail from other systems. Note: - This recommendation is designed around the postfix mail server. - Depending on your environment you may have an alternative MTA installed such as sendmail. If this is the case consult the documentation for your installed MTA to configure the recommended state.','','Edit /etc/postfix/main.cf and add the following line to the RECEIVING MAIL section. If the line already exists, change it to look like the line below: inet_interfaces = loopback-only. Run the following command to restart postfix: # systemctl restart postfix.','[{\"cis\": [\"2.2.15\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28068,'Ensure nfs-utils is not installed or the nfs-server service is masked.','The Network File System (NFS) is one of the first and most widely distributed file systems in the UNIX environment. It provides the ability for systems to mount file systems of other servers through the network.','If the system does not require network shares, it is recommended that the nfs-utils package be removed to reduce the attack surface of the system.','Many of the libvirt packages used by Enterprise Linux virtualization are dependent on the nfs-utils package. If the nfs-utils package is required as a dependency, the nfs-server service should be disabled and masked to reduce the attack surface of the system.','Run the following command to remove nfs-utils: # dnf remove nfs-utils OR If the nfs-utils package is required as a dependency, run the following command to stop and mask the nfs-server service: # systemctl --now mask nfs-server.','[{\"cis\": [\"2.2.16\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1005\", \"T1039\", \"T1083\", \"T1135\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28069,'Ensure rpcbind is not installed or the rpcbind services are masked.','The rpcbind utility maps RPC services to the ports on which they listen. RPC processes notify rpcbind when they start, registering the ports they are listening on and the RPC program numbers they expect to serve. The client system then contacts rpcbind on the server with a particular RPC program number. The rpcbind service redirects the client to the proper port number so it can communicate with the requested service. Portmapper is an RPC service, which always listens on tcp and udp 111, and is used to map other RPC services (such as nfs, nlockmgr, quotad, mountd, etc.) to their corresponding port number on the server. When a remote host makes an RPC call to that server, it first consults with portmap to determine where the RPC server is listening.','A small request (~82 bytes via UDP) sent to the Portmapper generates a large response (7x to 28x amplification), which makes it a suitable tool for DDoS attacks. If rpcbind is not required, it is recommended that the rpcbind package be removed to reduce the attack surface of the system.','Many of the libvirt packages used by Enterprise Linux virtualization, and the nfs-utils package used for The Network File System (NFS), are dependent on the rpcbind package. If the rpcbind package is required as a dependency, the services rpcbind.service and rpcbind.socket should be stopped and masked to reduce the attack surface of the system.','Run the following command to remove rpcbind: # dnf remove rpcbind OR If the rpcbind package is required as a dependency, run the following commands to stop and mask the rpcbind.service and rpcbind.socket systemd units: # systemctl --now mask rpcbind.service # systemctl --now mask rpcbind.socket.','[{\"cis\": [\"2.2.17\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1498\", \"T1498.002\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28070,'Ensure rsync-daemon is not installed or the rsyncd service is masked.','The rsyncd service can be used to synchronize files between systems over network links.','Unless required, the rsync-daemon package should be removed to reduce the attack surface area of the system. The rsyncd service presents a security risk as it uses unencrypted protocols for communication. Note: If a required dependency exists for the rsync-daemon package, but the rsyncd service is not required, the service should be masked.','There are packages that are dependent on the rsync package. If the rsync package is removed, these packages will be removed as well. Before removing the rsync-daemon package, review any dependent packages to determine if they are required on the system. If a dependent package is required, mask the rsyncd service and leave the rsync-daemon package installed.','Run the following command to remove the rsync package: # dnf remove rsync-daemon OR Run the following command to mask the rsyncd service: # systemctl --now mask rsyncd.','[{\"cis\": [\"2.2.18\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1105\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\", \"T1570\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28071,'Ensure telnet client is not installed.','The telnet package contains the telnet client, which allows users to start connections to other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow an unauthorized user to steal credentials. The ssh package provides an encrypted session and stronger security and is included in most Linux distributions.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Run the following command to remove the telnet package: # dnf remove telnet.','[{\"cis\": [\"2.3.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(28072,'Ensure LDAP client is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP client, it is recommended that the software be removed to reduce the potential attack surface.','Removing the LDAP client will prevent or inhibit using LDAP for authentication in your environment.','Run the following command to remove the openldap-clients package: # dnf remove openldap-clients.','[{\"cis\": [\"2.3.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28073,'Ensure TFTP client is not installed.','Trivial File Transfer Protocol (TFTP) is a simple protocol for exchanging files between two TCP/IP machines. TFTP servers allow connections from a TFTP Client for sending and receiving files.','TFTP does not have built-in encryption, access control or authentication. This makes it very easy for an attacker to exploit TFTP to gain access to files.','','Run the following command to remove tftp: # dnf remove tftp.','[{\"cis\": [\"2.3.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28074,'Ensure FTP client is not installed.','FTP (File Transfer Protocol) is a traditional and widely used standard tool for transferring files between a server and clients over a network, especially where no authentication is necessary (permits anonymous users to connect to a server).','FTP does not protect the confidentiality of data or authentication credentials. It is recommended SFTP be used if file transfer is required. Unless there is a need to run the system as a FTP server (for example, to allow anonymous downloads), it is recommended that the package be removed to reduce the potential attack surface.','','Run the following command to remove ftp: # dnf remove ftp.','[{\"cis\": [\"2.3.4\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28075,'Ensure nftables is installed.','nftables provides a new in-kernel packet classification framework that is based on a network-specific Virtual Machine (VM) and a new nft userspace command line tool. nftables reuses the existing Netfilter subsystems such as the existing hook infrastructure, the connection tracking system, NAT, userspace queuing and logging subsystem.','nftables is a subsystem of the Linux kernel that can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host.','Changing firewall settings while connected over the network can result in being locked out of the system.','Run the following command to install nftables # dnf install nftables.','[{\"cis\": [\"3.4.1.1\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(28076,'Ensure at least one nftables table exists.','Tables hold chains. Each table only has one address family and only applies to packets of this family. Tables can have one of five families.','Without a table, nftables will not filter network traffic.','Adding or modifying firewall rules can cause loss of connectivity to the system.','Run the following command to create a table in nftables # nft create table inet <table name> Example if FirewallD is not in use on the system: # nft create table inet filter Note: FirewallD uses the table inet firewalld NFTables table that is created when FirewallD is installed.','[{\"cis\": [\"3.4.2.2\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}]'),(28077,'Ensure nftables base chains exist.','Chains are containers for rules. They exist in two kinds, base chains and regular chains. A base chain is an entry point for packets from the networking stack, a regular chain may be used as jump target and is used for better rule organization.','If a base chain doesn't exist with a hook for input, forward, and delete, packets that would flow through those chains will not be touched by nftables.','If configuring over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command to create the base chains: # nft create chain inet <table name> <base chain name> { type filter hook <(input|forward|output)> priority 0 ; } Example: # nft create chain inet filter input { type filter hook input priority 0 ; } # nft create chain inet filter forward { type filter hook forward priority 0 ; } # nft create chain inet filter output { type filter hook output priority 0 ; }.','[{\"cis\": [\"3.4.2.3\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}]'),(28078,'Ensure nftables default deny firewall policy.','Base chain policy is the default verdict that will be applied to packets reaching the end of the chain.','There are two policies: accept (Default) and drop. If the policy is set to accept, the firewall will accept any packet that is not configured to be denied and the packet will continue traversing the network stack. It is easier to explicitly permit acceptable usage than to deny unacceptable usage. Note: Changing firewall settings while connected over the network can result in being locked out of the system.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','If NFTables utility is in use on your system: Run the following command for the base chains with the input, forward, and output hooks to implement a default DROP policy: # nft chain <table family> <table name> <chain name> { policy drop ; } Example: # nft chain inet filter input { policy drop ; } # nft chain inet filter forward { policy drop ; }.','[{\"cis\": [\"3.4.2.7\"]}, {\"cis_csc_v8\": [\"4.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"nist_sp_800-53\": [\"CA-9\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}]'),(28079,'Ensure auditd is installed.','auditd is the userspace component to the Linux Auditing System. It's responsible for writing audit records to the disk.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to Install auditd: # dnf install audit.','[{\"cis\": [\"4.1.1.1\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-3\", \"AU-3(1)\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"9.4.5\", \"10.2\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28080,'Ensure auditing for processes that start prior to auditd is enabled.','Configure grub2 so that processes that are capable of being audited can be audited even if they start up prior to auditd startup.','Audit events need to be captured on processes that start up prior to auditd, so that potential malicious activity cannot go undetected.','','Run the following command to update the grub2 configuration with audit=1: # grubby --update-kernel ALL --args 'audit=1'.','[{\"cis\": [\"4.1.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28081,'Ensure audit_backlog_limit is sufficient.','The backlog limit has a default setting of 64.','During boot if audit=1, then the backlog will hold 64 records. If more that 64 records are created during boot, auditd records will be lost and potential malicious activity could go undetected.','','Run the following command to add audit_backlog_limit=<BACKLOG SIZE> to GRUB_CMDLINE_LINUX: # grubby --update-kernel ALL --args 'audit_backlog_limit=<BACKLOG SIZE>' Example: # grubby --update-kernel ALL --args 'audit_backlog_limit=8192'.','[{\"cis\": [\"4.1.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28082,'Ensure auditd service is enabled.','Turn on the auditd daemon to record system events.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to enable auditd: # systemctl --now enable auditd.','[{\"cis\": [\"4.1.1.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28083,'Ensure audit log storage size is configured.','Configure the maximum size of the audit log file. Once the log reaches the maximum size, it will be rotated and a new log file will be started.','It is important that an appropriate size is determined for log files so that they do not impact the system and audit data is not lost.','','Set the following parameter in /etc/audit/auditd.conf in accordance with site policy: max_log_file = <MB>.','[{\"cis\": [\"4.1.2.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"nist_sp_800-53\": [\"AU-8\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(28084,'Ensure audit logs are not automatically deleted.','The max_log_file_action setting determines how to handle the audit log file reaching the max file size. A value of keep_logs will rotate the logs but never delete old logs.','In high security contexts, the benefits of maintaining a long audit history exceed the cost of storing the audit history.','','Set the following parameter in /etc/audit/auditd.conf: max_log_file_action = keep_logs.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"nist_sp_800-53\": [\"AU-8\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28085,'Ensure system is disabled when audit logs are full.','The auditd daemon can be configured to halt the system when the audit logs are full. The admin_space_left_action parameter tells the system what action to take when the system has detected that it is low on disk space. Valid values are ignore, syslog, suspend, single, and halt. - ignore, the audit daemon does nothing - Syslog, the audit daemon will issue a warning to syslog - Suspend, the audit daemon will stop writing records to the disk - single, the audit daemon will put the computer system in single user mode - halt, the audit daemon will shutdown the system.','In high security contexts, the risk of detecting unauthorized access or nonrepudiation exceeds the benefit of the system's availability.','If the admin_space_left_action parameter is set to halt the audit daemon will shutdown the system when the disk partition containing the audit logs becomes full.','Set the following parameters in /etc/audit/auditd.conf: space_left_action = email action_mail_acct = root. set admin_space_left_action to either halt or single in /etc/audit/auditd.conf. Example: admin_space_left_action = halt.','[{\"cis\": [\"4.1.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-8\", \"AU-12\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28086,'Ensure changes to system administration scope (sudoers) is collected.','Monitor scope changes for system administrators. If the system has been properly configured to force system administrators to log in as themselves first and then use the sudo command to execute privileged commands, it is possible to monitor changes in scope. The file /etc/sudoers, or files in /etc/sudoers.d, will be written to when the file(s) or related attributes have changed. The audit records will be tagged with the identifier "scope".','Changes in the /etc/sudoers and /etc/sudoers.d files can indicate that an unauthorized change has been made to the scope of system administrator activity.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor scope changes for system administrators. Example: # printf " -w /etc/sudoers -p wa -k scope -w /etc/sudoers.d -p wa -k scope " >> /etc/audit/rules.d/50-scope.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.1\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(28087,'Ensure the audit configuration is immutable.','Set system audit so that audit rules cannot be modified with auditctl. Setting the flag "-e 2" forces audit to be put in immutable mode. Audit changes can only be made on system reboot. Note: This setting will require the system to be rebooted to update the active auditd configuration settings.','In immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. Users would most likely notice a system reboot and that could alert administrators of an attempt to make unauthorized audit changes.','','Edit or create the file /etc/audit/rules.d/99-finalize.rules and add the line -e 2 at the end of the file: Example: # printf -- "-e 2" >> /etc/audit/rules.d/99-finalize.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.20\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-3\", \"AU-3(1)\", \"MP-2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\", \"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\", \"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28088,'Ensure the running and on disk configuration is the same.','The Audit system have both on disk and running configuration. It is possible for these configuration settings to differ. Note: Due to the limitations of augenrules and auditctl, it is not absolutely guaranteed that loading the rule sets via augenrules --load will result in all rules being loaded or even that the user will be informed if there was a problem loading the rules.','Configuration differences between what is currently running and what is on disk could cause unexpected problems or may give a false impression of compliance requirements.','','If the rules are not aligned across all three () areas, run the following command to merge and load all rules: # augenrules --load Check if reboot is required. if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then echo "Reboot required to load rules"; fi.','[{\"cis\": [\"4.1.3.21\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28089,'Ensure audit tools are 755 or more restrictive.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28090,'Ensure audit tools are owned by root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to change the owner of the audit tools to the root user: # chown root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.9\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28091,'Ensure audit tools belong to group root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules Run the following command to change owner and group of the audit tools to root user and group: # chown root:root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.10\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28092,'Ensure rsyslog is installed.','The rsyslog software is recommended in environments where journald does not meet operation requirements.','The security enhancements of rsyslog such as connection-oriented (i.e. TCP) transmission of logs, the option to log to database formats, and the encryption of log data en route to a central logging server) justify installing and configuring the package.','','Run the following command to install rsyslog: # dnf install rsyslog.','[{\"cis\": [\"4.2.1.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1005\", \"T1070\", \"T1070.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28093,'Ensure rsyslog service is enabled.','Once the rsyslog package is installed, ensure that the service is enabled.','If the rsyslog service is not enabled to start on boot, the system will not capture logging events.','','Run the following command to enable rsyslog: # systemctl --now enable rsyslog.','[{\"cis\": [\"4.2.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1211\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28094,'Ensure journald is configured to send logs to rsyslog.','Data from journald may be stored in volatile memory or persisted locally on the server. Utilities exist to accept remote export of journald logs, however, use of the RSyslog service provides a consistent means of log collection and export.','IF RSyslog is the preferred method for capturing logs, all logs of the system should be sent to it for further processing. Note: This recommendation only applies if rsyslog is the chosen method for client side logging. Do not apply this recommendation if journald is used.','','Edit the /etc/systemd/journald.conf file and add the following line: ForwardToSyslog=yes Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-2\", \"AU-4\", \"AU-12\", \"MP-2\", \"SI-5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\", \"T1565\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28095,'Ensure rsyslog default file permissions configured.','Rsyslog will create logfiles that do not already exist on the system. This setting controls what permissions will be applied to these newly created files.','It is important to ensure that log files have the correct permissions to ensure that sensitive data is archived and protected.','The systems global umask could override, but only making the file permissions stricter, what is configured in RSyslog with the FileCreateMode directive. RSyslog also has its own $umask directive that can alter the intended file creation mode. In addition, consideration should be given to how FileCreateMode is used. Thus it is critical to ensure that the intended file creation mode is not overridden with less restrictive settings in /etc/rsyslog.conf, /etc/rsyslog.d/*conf files and that FileCreateMode is set before any file is created.','Edit either /etc/rsyslog.conf or a dedicated .conf file in /etc/rsyslog.d/ and set $FileCreateMode to 0640 or more restrictive: $FileCreateMode 0640 Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.4\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.2\"]}, {\"cis_csc_v7\": [\"5.1\", \"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-2\", \"AU-4\", \"AU-12\", \"MP-2\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\", \"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28096,'Ensure rsyslog is configured to send logs to a remote log host.','RSyslog supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralized log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Edit the /etc/rsyslog.conf and /etc/rsyslog.d/*.conf files and add the following line (where loghost.example.com is the name of your central log host). The target directive may either be a fully qualified domain name or an IP address. *.* action(type="omfwd" target="192.168.2.100" port="514" protocol="tcp" action.resumeRetryCount="100" queue.type="LinkedList" queue.size="1000") Run the following command to reload the rsyslogd configuration: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.6\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28097,'Ensure rsyslog is not configured to receive logs from a remote client.','RSyslog supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Should there be any active log server configuration found in the auditing section, modify those files and remove the specific lines highlighted by the audit. Ensure none of the following entries are present in any of /etc/rsyslog.conf or /etc/rsyslog.d/*.conf. New format: module(load="imtcp") input(type="imtcp" port="514") -OR- Old format: $ModLoad imtcp $InputTCPServerRun - Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.1.7\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.13.1.3\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28098,'Ensure systemd-journal-remote is installed.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralized log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to install systemd-journal-remote: # dnf install systemd-journal-remote.','[{\"cis\": [\"4.2.2.1.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28099,'Ensure systemd-journal-remote is enabled.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralized log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to enable systemd-journal-remote: # systemctl --now enable systemd-journal-upload.service.','[{\"cis\": [\"4.2.2.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"CM-7\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28100,'Ensure journald is not configured to receive logs from a remote client.','Journald supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts. NOTE: - The same package, systemd-journal-remote, is used for both sending logs to remote hosts and receiving incoming logs. - With regards to receiving logs, there are two services; systemd-journal- remote.socket and systemd-journal-remote.service.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Run the following command to disable systemd-journal-remote.socket: # systemctl --now mask systemd-journal-remote.socket.','[{\"cis\": [\"4.2.2.1.4\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.13.1.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28101,'Ensure journald service is enabled.','Ensure that the systemd-journald service is enabled to allow capturing of logging events.','If the systemd-journald service is not enabled to start on boot, the system will not capture logging events.','','By default the systemd-journald service does not have an [Install] section and thus cannot be enabled / disabled. It is meant to be referenced as Requires or Wants by other unit files. As such, if the status of systemd-journald is not static, investigate why.','[{\"cis\": [\"4.2.2.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28102,'Ensure journald is configured to compress large log files.','The journald system includes the capability of compressing overly large files to avoid filling up the system with logs or making the logs unmanageably large.','Uncompressed large files may unexpectedly fill a filesystem leading to resource unavailability. Compressing logs prior to write can prevent sudden, unexpected filesystem impacts.','','Edit the /etc/systemd/journald.conf file and add the following line: Compress=yes Restart the service: # systemctl restart systemd-journald.service.','[{\"cis\": [\"4.2.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.4\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(28103,'Ensure journald is configured to write logfiles to persistent disk.','Data from journald may be stored in volatile memory or persisted locally on the server. Logs in memory will be lost upon a system reboot. By persisting logs to local disk on the server they are protected from loss due to a reboot.','Writing log data to disk will provide the ability to forensically reconstruct events which may have impacted the operations or security of a system even after a system crash or reboot.','','Edit the /etc/systemd/journald.conf file and add the following line: Storage=persistent Restart the service: # systemctl restart systemd-journald.service.','[{\"cis\": [\"4.2.2.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28104,'Ensure journald is not configured to send logs to rsyslog.','Data from journald should be kept in the confines of the service and not forwarded on to other services.','IF journald is the method for capturing logs, all logs of the system should be handled by journald and not forwarded to other logging mechanisms. Note: This recommendation only applies if journald is the chosen method for client side logging. Do not apply this recommendation if rsyslog is used.','','Edit the /etc/systemd/journald.conf file and ensure that ForwardToSyslog=yes is removed. Restart the service: # systemctl restart systemd-journald.service.','[{\"cis\": [\"4.2.2.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-7\", \"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\", \"T1565\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(28105,'Ensure cron daemon is enabled.','The cron daemon is used to execute batch jobs on the system.','While there may not be user jobs that need to be run on the system, the system does have maintenance jobs that may include security monitoring that have to run, and cron is used to execute them.','','Run the following command to enable cron : # systemctl --now enable crond.','[{\"cis\": [\"5.1.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28106,'Ensure permissions on /etc/crontab are configured.','The /etc/crontab file is used by cron to control its own jobs. The commands in this item make sure that root is the user and group owner of the file and that only the owner can access the file.','This file contains information on what system jobs are run by cron. Write access to this file could provide unprivileged users with the ability to elevate their privileges. Read access to this file could provide users with the ability to gain insight on system jobs that run on the system and could provide them a way to gain unauthorized privileged access.','','Run the following commands to set ownership and permissions on /etc/crontab : # chown root:root /etc/crontab # chmod og-rwx /etc/crontab.','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28107,'Ensure permissions on /etc/cron.hourly are configured.','This directory contains system cron jobs that need to run on an hourly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.hourly : # chown root:root /etc/cron.hourly # chmod og-rwx /etc/cron.hourly.','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28108,'Ensure permissions on /etc/cron.daily are configured.','The /etc/cron.daily directory contains system cron jobs that need to run on a daily basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.daily : # chown root:root /etc/cron.daily # chmod og-rwx /etc/cron.daily.','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28109,'Ensure permissions on /etc/cron.weekly are configured.','The /etc/cron.weekly directory contains system cron jobs that need to run on a weekly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.weekly : # chown root:root /etc/cron.weekly # chmod og-rwx /etc/cron.weekly.','[{\"cis\": [\"5.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28110,'Ensure permissions on /etc/cron.monthly are configured.','The /etc/cron.monthly directory contains system cron jobs that need to run on a monthly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.monthly : # chown root:root /etc/cron.monthly # chmod og-rwx /etc/cron.monthly.','[{\"cis\": [\"5.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28111,'Ensure permissions on /etc/cron.d are configured.','The /etc/cron.d directory contains system cron jobs that need to run in a similar manner to the hourly, daily, weekly and monthly jobs from /etc/crontab , but require more granular control as to when they run. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on /etc/cron.d : # chown root:root /etc/cron.d # chmod og-rwx /etc/cron.d.','[{\"cis\": [\"5.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28112,'Ensure permissions on /etc/ssh/sshd_config are configured.','The /etc/ssh/sshd_config file contains configuration specifications for sshd. The command below sets the owner and group of the file to root.','The /etc/ssh/sshd_config file needs to be protected from unauthorized changes by non-privileged users.','','Run the following commands to set ownership and permissions on /etc/ssh/sshd_config: # chown root:root /etc/ssh/sshd_config # chmod u-x,go-rwx /etc/ssh/sshd_config.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1098\", \"T1098.004\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28113,'Ensure SSH access is limited.','There are several options available to limit which users and group can access the system via SSH. It is recommended that at least one of the following options be leveraged: - AllowUsers: The AllowUsers variable gives the system administrator the option of allowing specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by only allowing the allowed users to log in from a particular host, the entry can be specified in the form of user@host. - AllowGroups: The AllowGroups variable gives the system administrator the option of allowing specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable. - DenyUsers: The DenyUsers variable gives the system administrator the option of denying specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by specifically denying a user's access from a particular host, the entry can be specified in the form of user@host. - DenyGroups: The DenyGroups variable gives the system administrator the option of denying specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable.','Restricting which users can remotely access the system via SSH will help ensure that only authorized users access the system.','','Edit the /etc/ssh/sshd_config file to set one or more of the parameters as follows: AllowUsers <userlist> OR AllowGroups <grouplist> OR DenyUsers <userlist> OR DenyGroups <grouplist>.','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28114,'Ensure SSH LogLevel is appropriate.','INFO level is the basic level that only records login activity of SSH users. In many situations, such as Incident Response, it is important to determine when a particular user was active on a system. The logout record can eliminate those users who disconnected, which helps narrow the field. VERBOSE level specifies that login and logout activity as well as the key fingerprint for any SSH key used for login will be logged. This information is important for SSH key management, especially in legacy environments.','SSH provides several logging levels with varying amounts of verbosity. DEBUG is specifically not recommended other than strictly for debugging SSH communications since it provides so much data that it is difficult to identify important security information.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LogLevel VERBOSE OR LogLevel INFO.','[{\"cis\": [\"5.2.5\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"nist_sp_800-53\": [\"AU-2\", \"AU-12\", \"SI-5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(28115,'Ensure SSH PAM is enabled.','UsePAM Enables the Pluggable Authentication Module interface. If set to 'yes' this will enable PAM authentication using ChallengeResponseAuthentication and PasswordAuthentication in addition to PAM account and session module processing for all authentication types.','When usePAM is set to yes, PAM runs through account and session types properly. This is important if you want to restrict access to services based off of IP, time or other factors of the account. Additionally, you can make sure users inherit certain environment variables on login or disallow access to the server.','If UsePAM is enabled, you will not be able to run sshd(8) as a non-root user.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: UsePAM yes.','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(28116,'Ensure SSH root login is disabled.','The PermitRootLogin parameter specifies if the root user can log in using ssh. The default is no.','Disallowing root logins over SSH requires system admins to authenticate using their own individual account, then escalating to root via sudo or su. This in turn limits opportunity for non-repudiation and provides a clear audit trail in the event of a security incident.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitRootLogin no.','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28117,'Ensure SSH HostbasedAuthentication is disabled.','The HostbasedAuthentication parameter specifies if authentication is allowed through trusted hosts via the user of .rhosts , or /etc/hosts.equiv, along with successful public key client host authentication. This option only applies to SSH Protocol Version 2.','Even though the .rhosts files are ineffective if support is disabled in /etc/pam.conf, disabling the ability to use .rhosts files in SSH provides an additional layer of protection.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: HostbasedAuthentication no.','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28118,'Ensure SSH PermitEmptyPasswords is disabled.','The PermitEmptyPasswords parameter specifies if the SSH server allows login to accounts with empty password strings.','Disallowing remote shell access to accounts that have an empty password reduces the probability of unauthorized access to the system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitEmptyPasswords no.','[{\"cis\": [\"5.2.9\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28119,'Ensure SSH PermitUserEnvironment is disabled.','The PermitUserEnvironment option allows users to present environment options to the ssh daemon.','Permitting users the ability to set environment variables through the SSH daemon could potentially allow users to bypass security controls (e.g. setting an execution path that has ssh executing trojan'd programs).','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitUserEnvironment no.','[{\"cis\": [\"5.2.10\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28120,'Ensure SSH IgnoreRhosts is enabled.','The IgnoreRhosts parameter specifies that .rhosts and .shosts files will not be used in RhostsRSAAuthentication or HostbasedAuthentication.','Setting this parameter forces users to enter a password when authenticating with ssh.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: IgnoreRhosts yes.','[{\"cis\": [\"5.2.11\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28121,'Ensure SSH X11 forwarding is disabled.','The X11Forwarding parameter provides the ability to tunnel X11 traffic through the connection to enable remote graphic connections.','Disable X11 forwarding unless there is an operational requirement to use X11 applications directly. There is a small risk that the remote X11 servers of users who are logged in via SSH with X11 forwarding could be compromised by other users on the X11 server. Note that even if X11 forwarding is disabled, users can always install their own forwarders.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: X11Forwarding no.','[{\"cis\": [\"5.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-7\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28122,'Ensure SSH AllowTcpForwarding is disabled.','SSH port forwarding is a mechanism in SSH for tunneling application ports from the client to the server, or servers to clients. It can be used for adding encryption to legacy applications, going through firewalls, and some system administrators and IT professionals use it for opening backdoors into the internal network from their home machines.','Leaving port forwarding enabled can expose the organization to security risks and back-doors. SSH connections are protected with strong encryption. This makes their contents invisible to most deployed network monitoring and traffic filtering solutions. This invisibility carries considerable risk potential if it is used for malicious purposes such as data exfiltration. Cybercriminals or malware could exploit SSH to hide their unauthorized communications, or to exfiltrate stolen data from the target network.','SSH tunnels are widely used in many corporate environments that employ mainframe systems as their application backends. In those environments the applications themselves may have very limited native support for security. By utilizing tunneling, compliance with SOX, HIPAA, PCI-DSS, and other standards can be achieved without having to modify the applications.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: AllowTcpForwarding no.','[{\"cis\": [\"5.2.13\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1048\", \"T1048.002\", \"T1572\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(28123,'Ensure system-wide crypto policy is not over-ridden.','System-wide Crypto policy can be over-ridden or opted out of for openSSH.','Over-riding or opting out of the system-wide crypto policy could allow for the use of less secure Ciphers, MACs, KexAlgorithms and GSSAPIKexAlgorithm.','','Run the following commands: # sed -ri "s/^s*(CRYPTO_POLICYs*=.*)$/# 1/" /etc/sysconfig/sshd; # systemctl reload sshd.','[{\"cis\": [\"5.2.14\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"nist_sp_800-53\": [\"SC-8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.10.1.1\"]}]'),(28124,'Ensure SSH warning banner is configured.','The Banner parameter specifies a file whose contents must be sent to the remote user before authentication is permitted. By default, no banner is displayed.','Banners are used to warn connecting users of the particular site's policy regarding connection. Presenting a warning message prior to the normal user login may assist the prosecution of trespassers on the computer system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: Banner /etc/issue.net.','[{\"cis\": [\"5.2.15\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(28125,'Ensure SSH MaxAuthTries is set to 4 or less.','The MaxAuthTries parameter specifies the maximum number of authentication attempts permitted per connection. When the login failure count reaches half the number, error messages will be written to the syslog file detailing the login failure.','Setting the MaxAuthTries parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. While the recommended setting is 4, set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxAuthTries 4.','[{\"cis\": [\"5.2.16\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"16.13\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(28126,'Ensure SSH MaxStartups is configured.','The MaxStartups parameter specifies the maximum number of concurrent unauthenticated connections to the SSH daemon.','To protect a system from denial of service due to a large number of pending authentication connection attempts, use the rate limiting function of MaxStartups to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxStartups 10:30:60.','[{\"cis\": [\"5.2.17\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(28127,'Ensure SSH MaxSessions is set to 10 or less.','The MaxSessions parameter specifies the maximum number of open sessions permitted from a given connection.','To protect a system from denial of service due to a large number of concurrent sessions, use the rate limiting function of MaxSessions to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxSessions 10.','[{\"cis\": [\"5.2.18\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(28128,'Ensure SSH LoginGraceTime is set to one minute or less.','The LoginGraceTime parameter specifies the time allowed for successful authentication to the SSH server. The longer the Grace period is the more open unauthenticated connections can exist. Like other session controls in this session the Grace Period should be limited to appropriate organizational limits to ensure the service is available for needed access.','Setting the LoginGraceTime parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. It will also limit the number of concurrent unauthenticated connections While the recommended setting is 60 seconds (1 Minute), set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LoginGraceTime 60.','[{\"cis\": [\"5.2.19\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(28129,'Ensure SSH Idle Timeout Interval is configured.','NOTE: To clarify, the two settings described below are only meant for idle connections from a protocol perspective and not meant to check if the user is active or not. An idle user does not mean an idle connection. SSH does not, and never had, intentionally the capability to drop idle users. In SSH versions before 8.2p1 there was a bug that caused these values to behave in such a manner that they were abused to disconnect idle users. This bug has been resolved in 8.2p1 and thus may no longer be abused disconnect idle users. The two options ClientAliveInterval and ClientAliveCountMax control the timeout of SSH sessions. Taken directly from man 5 sshd_config: - ClientAliveInterval Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client. - ClientAliveCountMax Sets the number of client alive messages which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session. It is important to note that the use of client alive messages is very different from TCPKeepAlive. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option enabled by TCPKeepAlive is spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become unresponsive. The default value is 3. If ClientAliveInterval is set to 15, and ClientAliveCountMax is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds. Setting a zero ClientAliveCountMax disables connection termination.','In order to prevent resource exhaustion, appropriate values should be set for both ClientAliveInterval and ClientAliveCountMax. Specifically, looking at the source code, ClientAliveCountMax must be greater than zero in order to utilize the ability of SSH to drop idle connections. If connections are allowed to stay open indefinitely, this can potentially be used as a DDOS attack or simple resource exhaustion could occur over unreliable networks. The example set here is a 45 second timeout. Consult your site policy for network timeouts and apply as appropriate.','','Edit the /etc/ssh/sshd_config file to set the parameters according to site policy. Example: ClientAliveInterval 15 ClientAliveCountMax 3.','[{\"cis\": [\"5.2.20\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28130,'Ensure sudo is installed.','sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.','sudo supports a plug-in architecture for security policies and input/output logging. Third parties can develop and distribute their own policy and I/O logging plug-ins to work seamlessly with the sudo front end. The default security policy is sudoers, which is configured via the file /etc/sudoers and any entries in /etc/sudoers.d. The security policy determines what privileges, if any, a user has to run sudo. The policy may require that users authenticate themselves with a password or another authentication mechanism. If authentication is required, sudo will exit if the user's password is not entered within a configurable time limit. This limit is policy-specific.','','Run the following command to install sudo. # dnf install sudo.','[{\"cis\": [\"5.3.1\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28131,'Ensure sudo commands use pty.','sudo can be configured to run only from a pseudo terminal (pseudo-pty).','Attackers can run a malicious program using sudo which would fork a background process that remains even when the main program has finished executing.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers with visudo or a file in /etc/sudoers.d/ with visudo -f <PATH_TO_FILE> and add the following line: Defaults use_pty.','[{\"cis\": [\"5.3.2\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.003\", \"T1548\", \"T1548.003\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\", \"M1038\"]}]'),(28132,'Ensure sudo log file exists.','sudo can use a custom log file.','A sudo log file simplifies auditing of sudo commands.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files. Creation of additional log files can cause disk space exhaustion if not correctly managed. You should configure logrotate to manage the sudo log in accordance with your local policy.','Edit the file /etc/sudoers or a file in /etc/sudoers.d/ with visudo or visudo -f <PATH TO FILE> and add the following line: Defaults logfile="<PATH TO CUSTOM LOG FILE>" Example: Defaults logfile="/var/log/sudo.log".','[{\"cis\": [\"5.3.3\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28133,'Ensure users must provide password for escalation.','The operating system must be configured so that users must provide a password for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','This will prevent automated processes from being able to elevate privileges. To include Ansible and AWS builds.','Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any line with occurrences of NOPASSWD tags in the file.','[{\"cis\": [\"5.3.4\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28134,'Ensure re-authentication for privilege escalation is not disabled globally.','The operating system must be configured so that users must re-authenticate for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','','Configure the operating system to require users to reauthenticate for privilege escalation. Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any occurrences of !authenticate tags in the file(s).','[{\"cis\": [\"5.3.5\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28135,'Ensure sudo authentication timeout is configured correctly.','sudo caches used credentials for a default of 5 minutes. This is for ease of use when there are multiple administrative tasks to perform. The timeout can be modified to suit local security policies.','Setting a timeout value reduces the window of opportunity for unauthorized privileged access to another user.','','If the currently configured timeout is larger than 15 minutes, edit the file listed in the audit section with visudo -f <PATH TO FILE> and modify the entry timestamp_timeout= to 15 minutes or less as per your site policy. The value is in minutes. This particular entry may appear on its own, or on the same line as env_reset. See the following two examples: Defaults env_reset, timestamp_timeout=15 Defaults timestamp_timeout=15 Defaults env_reset.','[{\"cis\": [\"5.3.6\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(28136,'Ensure access to the su command is restricted.','The su command allows a user to run a command or shell as another user. The program has been superseded by sudo, which allows for more granular control over privileged access. Normally, the su command can be executed by any user. By uncommenting the pam_wheel.so statement in /etc/pam.d/su, the su command will only allow users in a specific groups to execute su. This group should be empty to reinforce the use of sudo for privileged access.','Restricting the use of su, and using sudo in its place, provides system administrators better control of the escalation of user privileges to execute privileged commands. The sudo utility also provides a better logging and audit mechanism, as it can log each command executed via sudo, whereas su can only record that a user executed the su program.','','Create an empty group that will be specified for use of the su command. The group should be named according to site policy. Example: # groupadd sugroup. Add the following line to the /etc/pam.d/su file, specifying the empty group: auth required pam_wheel.so use_uid group=sugroup.','[{\"cis\": [\"5.3.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28137,'Ensure custom authselect profile is used.','A custom profile can be created by copying and customizing one of the default profiles. The default profiles include: sssd, winbind, or the nis. This profile can then be customized to follow site specific requirements. You can select a profile for the authselect utility for a specific host. The profile will be applied to every user logging into the host.','A custom profile is required to customize many of the pam options. When you deploy a profile, the profile is applied to every user logging into the given host.','','Run the following command to create a custom authselect profile: # authselect create-profile <custom-profile name> <options> Example: # authselect create-profile custom-profile -b sssd --symlink-meta Run the following command to select a custom authselect profile: # authselect select custom/<CUSTOM PROFILE NAME> {with-<OPTIONS>} Example: # authselect select custom/custom-profile with-sudo with-faillock without-nullok.','[{\"cis\": [\"5.4.1\"]}, {\"cis_csc_v8\": [\"16.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"pci_dss_3.2.1\": [\"6.3.2\"]}, {\"pci_dss_4.0\": [\"6.3.1\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}]'),(28138,'Ensure authselect includes with-faillock.','The pam_faillock.so module maintains a list of failed authentication attempts per user during a specified interval and locks the account in case there were more than the configured number of consecutive failed authentications (this is defined by the deny parameter in the faillock configuration). It stores the failure records into per-user files in the tally directory.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','','Run the following commands to include the with-faillock option to the current authselect profile: # authselect enable-feature with-faillock # authselect apply-changes.','[{\"cis\": [\"5.4.2\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}]'),(28139,'Ensure password creation requirements are configured.','The pam_pwquality.so module checks the strength of passwords. It performs checks such as making sure a password is not a dictionary word, it is a certain length, contains a mix of characters (e.g. alphabet, numeric, other) and more. The following are definitions of the pam_pwquality.so options. - try_first_pass - retrieve the password from a previous stacked PAM module. If not available, then prompt the user for a password. - retry=3 - Allow 3 tries before sending back a failure. - minlen=14 - password must be 14 characters or more. Either of the following can be used to enforce complex passwords: - minclass=4 - provide at least four classes of characters for the new password. OR - dcredit=-1 - provide at least one digit. - ucredit=-1 - provide at least one uppercase character. - ocredit=-1 - provide at least one special character. - lcredit=-1 - provide at least one lowercase character. - The settings shown above are one possible policy. Alter these values to conform to your own organization's password policies.','Strong passwords protect systems from being hacked through brute force methods.','','Edit the file /etc/security/pwquality.conf and add or modify the following line for password length to conform to site policy: minlen = 14 Edit the file /etc/security/pwquality.conf and add or modify the following line for password complexity to conform to site policy: minclass = 4 OR dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1. Run the following script to update the system-auth and password-auth files: #!/usr/bin/env bash for fn in system-auth password-auth; do file="/etc/authselect/$(head -1 /etc/authselect/authselect.conf | grep 'custom/')/$fn" if ! grep -Pq -- '^h*passwordh+requisiteh+pam_pwquality.so(h+[^#

]+)?h+.*enforce_for_r oot.*$' "$file"; then sed -ri 's/^s*(passwords+requisites+pam_pwquality.sos+)(.*)$/12 enforce_for_root/' "$file" fi if grep -Pq -- '^h*passwordh+requisiteh+pam_pwquality.so(h+[^#

]+)?h+retry=([4-9]|[1-9][0-9]+).*$' "$file"; then sed -ri '/pwquality/s/retry=S+/retry=3/' "$file" elif ! grep -Pq -- '^h*passwordh+requisiteh+pam_pwquality.so(h+[^#

]+)?h+retry=d+.*$' "$file"; then sed -ri 's/^s*(passwords+requisites+pam_pwquality.sos+)(.*)$/12 retry=3/' "$file" fi done authselect apply-changes.','[{\"cis\": [\"5.5.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1178.001\", \"T1178.002\", \"T1178.003\", \"T1178.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28140,'Ensure lockout for failed password attempts is configured.','Lock out users after n unsuccessful consecutive login attempts. - deny=<n> - Number of attempts before the account is locked. - unlock_time=<n> - Time in seconds before the account is unlocked. Note: The maximum configurable value for unlock_time is 604800.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','Use of unlock_time=0 may allow an attacker to cause denial of service to legitimate users.','Set password lockouts and unlock times to conform to site policy. deny should be greater than 0 and no greater than 5. unlock_time should be 0 (never), or 900 seconds or greater. Edit /etc/security/faillock.conf and update or add the following lines: deny = 5 unlock_time = 900.','[{\"cis\": [\"5.5.2\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"pci_dss_3.2.1\": [\"8.1.3\"]}, {\"pci_dss_4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28141,'Ensure password reuse is limited.','The /etc/security/opasswd file stores the users' old passwords and can be checked to ensure that users are not recycling recent passwords. remember=<5> - Number of old passwords to remember.','Forcing users not to reuse their past 5 passwords make it less likely that an attacker will be able to guess the password. Note: These change only apply to accounts configured on the local system.','','Set remembered password history to conform to site policy. Run the following script to add or modify the pam_pwhistory.so and pam_unix.so lines to include the remember option: #!/usr/bin/env bash { file="/etc/authselect/$(head -1 /etc/authselect/authselect.conf | grep 'custom/')/system-auth" if ! grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_pwhistory.soh+([^#

]+h+)?remember=([5-9]|[1-9][0-9]+).*$' "$file"; then if grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_pwhistory.soh+([^#

]+h+)?remember=d+.*$' "$file"; then sed -ri 's/^s*(passwords+(requisite|required|sufficient)s+pam_pwhistory.sos+([^#

]+s+)?)(remember=S+s*)(s+.*)?$/1 remember=5 5/' $file elif grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_pwhistory.soh+([^#

]+h+)?.*$' "$file"; then sed -ri '/^s*passwords+(requisite|required|sufficient)s+pam_pwhistory.so/ s/$/ remember=5/' $file else sed -ri '/^s*passwords+(requisite|required|sufficient)s+pam_unix.so/i password required pam_pwhistory.so remember=5 use_authtok' $file fi fi if ! grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.soh+([^#

]+h+)?remember=([5-9]|[1-9][0-9]+).*$' "$file"; then if grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.soh+([^#

]+h +)?remember=d+.*$' "$file"; then sed -ri 's/^s*(passwords+(requisite|required|sufficient)s+pam_unix.sos+([^#

] +s+)?)(remember=S+s*)(s+.*)?$/1 remember=5 5/' $file else sed -ri '/^s*passwords+(requisite|required|sufficient)s+pam_unix.so/ s/$/ remember=5/' $file fi fi authselect apply-changes }.','[{\"cis\": [\"5.5.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"nist_sp_800-53\": [\"IA-5(1)\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}]'),(28142,'Ensure password hashing algorithm is SHA-512 or yescrypt.','A cryptographic hash function converts an arbitrary-length input into a fixed length output. Password hashing performs a one-way transformation of a password, turning the password into another string, called the hashed password.','The SHA-512 algorithm provides stronger hashing than other hashing algorithms used for password hashing with Linux, providing additional protection to the system by increasing the level of effort for an attacker to successfully determine passwords. Note: These changes only apply to accounts configured on the local system.','','Set password hashing algorithm to sha512. Edit /etc/libuser.conf and edit of add the following line: crypt_style = sha512 Edit /etc/login.defs and edit or add the following line: ENCRYPT_METHOD SHA512 Run the following script to configure pam_unix.so to use the sha512 hashing algorithm: #!/usr/bin/env bash for fn in system-auth password-auth; do file="/etc/authselect/$(head -1 /etc/authselect/authselect.conf | grep 'custom/')/$fn" if ! grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.so(h+[^#

]+)? h+sha512.*$' "$file"; then if grep -Pq -- '^h*passwordh+(requisite|required|sufficient)h+pam_unix.so(h+[^#

]+)? h+(md5|blowfish|bigcrypt|sha256).*$' "$file"; then sed -ri 's/(md5|blowfish|bigcrypt|sha256)/sha512/' "$file" else sed -ri 's/(^s*passwords+(requisite|required|sufficient)s+pam_unix.sos+)(.*)$/1s ha512 3/' $file fi fi done authselect apply-changes Note: This only effects local users and passwords created after updating the files to use sha512. If it is determined that the password algorithm being used is not SHA-512, once it is changed, it is recommended that all user ID's be immediately expired and forced to change their passwords on next login.','[{\"cis\": [\"5.5.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"IA-5(1)\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1110\", \"T1110.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(28143,'Ensure password expiration is 365 days or less.','The PASS_MAX_DAYS parameter in /etc/login.defs allows an administrator to force passwords to expire once they reach a defined age. It is recommended that the PASS_MAX_DAYS parameter be set to less than or equal to 365 days.','The window of opportunity for an attacker to leverage compromised credentials or successfully compromise credentials via an online brute force attack is limited by the age of the password. Therefore, reducing the maximum age of a password also reduces an attacker's window of opportunity.','','Set the PASS_MAX_DAYS parameter to conform to site policy in /etc/login.defs : PASS_MAX_DAYS 365 Modify user parameters for all users with a password set to match: chage --maxdays 365 <user>.','[{\"cis\": [\"5.6.1.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1110.004\"]}]'),(28144,'Ensure minimum days between password changes is configured.','The PASS_MIN_DAYS parameter in /etc/login.defs allows an administrator to prevent users from changing their password until a minimum number of days have passed since the last time the user changed their password. It is recommended that PASS_MIN_DAYS parameter be set to 1 or more days.','By restricting the frequency of password changes, an administrator can prevent users from repeatedly changing their password in an attempt to circumvent password reuse controls.','','Set the PASS_MIN_DAYS parameter to 1 in /etc/login.defs: PASS_MIN_DAYS 1 and modify user parameters for all users with a password set to match: chage --mindays 1 <user>.','[{\"cis\": [\"5.6.1.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28145,'Ensure password expiration warning days is 7 or more.','The PASS_WARN_AGE parameter in /etc/login.defs allows an administrator to notify users that their password will expire in a defined number of days. It is recommended that the PASS_WARN_AGE parameter be set to 7 or more days.','Providing an advance warning that a password will be expiring gives users time to think of a secure password. Users caught unaware may choose a simple password or write it down where it may be discovered.','','Set the PASS_WARN_AGE parameter to 7 in /etc/login.defs: PASS_WARN_AGE 7 and modify user parameters for all users with a password set to match: chage --warndays 7 <user>.','[{\"cis\": [\"5.6.1.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28146,'Ensure inactive password lock is 30 days or less.','User accounts that have been inactive for over a given period of time can be automatically disabled. It is recommended that accounts that are inactive for 30 days after password expiration be disabled.','Inactive accounts pose a threat to system security since the users are not logging in to notice failed login attempts or other anomalies.','','Run the following command to set the default password inactivity period to 30 days: useradd -D -f 30 and modify user parameters for all users with a password set to match: chage --inactive 30 <user>.','[{\"cis\": [\"5.6.1.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28147,'Ensure default group for the root account is GID 0.','The usermod command can be used to specify which group the root account belongs to. This affects permissions of files that are created by the root account.','Using GID 0 for the root account helps prevent root -owned files from accidentally becoming accessible to non-privileged users.','','Run the following command to set the root account default group to GID 0 : # usermod -g 0 root.','[{\"cis\": [\"5.6.4\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"nist_sp_800-53\": [\"CM-1\", \"CM-2\", \"CM-6\", \"CM-7\", \"IA-5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28148,'Ensure root password is set.','There are a number of methods to access the root account directly. Without a password set any user would be able to gain access and thus control over the entire system.','Access to root should be secured at all times.','If there are any automated processes that relies on access to the root account without authentication, they will fail after remediation.','Set the root password with: # passwd root.','[{\"cis\": [\"5.6.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"mitre_techniques\": [\"T1078\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28149,'Ensure permissions on /etc/passwd are configured.','The /etc/passwd file contains user account information that is used by many system utilities and therefore must be readable for these utilities to operate.','It is critical to ensure that the /etc/passwd file is protected from unauthorized write access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd: # chmod u-x,go-wx /etc/passwd # chown root:root /etc/passwd.','[{\"cis\": [\"6.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28150,'Ensure permissions on /etc/passwd- are configured.','The /etc/passwd- file contains backup user account information.','It is critical to ensure that the /etc/passwd- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd-: # chmod u-x,go-wx /etc/passwd- # chown root:root /etc/passwd-.','[{\"cis\": [\"6.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28151,'Ensure permissions on /etc/group are configured.','The /etc/group file contains a list of all the valid groups defined in the system. The command below allows read/write access for root and read access for everyone else.','The /etc/group file needs to be protected from unauthorized changes by non-privileged users, but needs to be readable as this information is used with many non-privileged programs.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group: # chmod u-x,go-wx /etc/group # chown root:root /etc/group.','[{\"cis\": [\"6.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28152,'Ensure permissions on /etc/group- are configured.','The /etc/group- file contains a backup list of all the valid groups defined in the system.','It is critical to ensure that the /etc/group- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group-: # chmod u-x,go-wx /etc/group- # chown root:root /etc/group-.','[{\"cis\": [\"6.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28153,'Ensure permissions on /etc/shadow are configured.','The /etc/shadow file is used to store the information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert the user accounts.','','Run the following commands to set mode, owner, and group on /etc/shadow: # chown root:root /etc/shadow # chmod 0000 /etc/shadow.','[{\"cis\": [\"6.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28154,'Ensure permissions on /etc/shadow- are configured.','The /etc/shadow- file is used to store backup information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/shadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to set mode, owner, and group on /etc/shadow-: # chown root:root /etc/shadow- # chmod 0000 /etc/shadow-.','[{\"cis\": [\"6.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28155,'Ensure permissions on /etc/gshadow are configured.','The /etc/gshadow file is used to store the information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/gshadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/gshadow file (such as group administrators) could also be useful to subvert the group.','','Run the following commands to set mode, owner, and group on /etc/gshadow: # chown root:root /etc/gshadow # chmod 0000 /etc/gshadow.','[{\"cis\": [\"6.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28156,'Ensure permissions on /etc/gshadow- are configured.','The /etc/gshadow- file is used to store backup information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/gshadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to set mode, owner, and group on /etc/gshadow-: # chown root:root /etc/gshadow- # chmod 0000 /etc/gshadow-.','[{\"cis\": [\"6.1.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(28157,'Ensure accounts in /etc/passwd use shadowed passwords.','Local accounts can uses shadowed passwords. With shadowed passwords, the passwords are saved in shadow password file, /etc/shadow, encrypted by a salted one-way hash. Accounts with a shadowed password have an x in the second field in /etc/passwd.','The /etc/passwd file also contains information like user ID's and group ID's that are used by many system programs. Therefore, the /etc/passwd file must remain world readable. In spite of encoding the password with a randomly-generated one-way hash function, an attacker could still break the system if they got access to the /etc/passwd file. This can be mitigated by using shadowed passwords, thus moving the passwords in the /etc/passwd file to /etc/shadow. The /etc/shadow file is set so only root will be able to read and write. This helps mitigate the risk of an attacker gaining access to the encoded passwords with which to perform a dictionary attack. Note: - All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user. - A user account with an empty second field in /etc/passwd allows the account to be logged into by providing only the username.','','Run the following command to set accounts to use shadowed passwords: # sed -e 's/^([a-zA-Z0-9_]*):[^:]*:/1:x:/' -i /etc/passwd Investigate to determine if the account is logged in and what it is being used for, to determine if it needs to be forced off.','[{\"cis\": [\"6.2.1\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28158,'Ensure /etc/shadow password fields are not empty.','An account with an empty password field means that anybody may log in as that user without providing a password.','All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user.','','If any accounts in the /etc/shadow file do not have a password, run the following command to lock the account until it can be determined why it does not have a password: passwd -l <username>. Also, check to see if the account is logged in and investigate what it is being used for to determine if it needs to be forced off.','[{\"cis\": [\"6.2.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(28159,'Ensure root is the only UID 0 account.','Any account with UID 0 has superuser privileges on the system.','This access must be limited to only the default root account and only from the system console. Administrative access must be through an unprivileged account using an approved mechanism as noted in Item 5.6 Ensure access to the su command is restricted.','','Remove any users other than root with UID 0 or assign them a new UID if appropriate.','[{\"cis\": [\"6.2.9\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28500,'Ensure /tmp is a separate partition.','The /tmp directory is a world-writable directory used for temporary storage by all users and some applications.','Making /tmp its own file system allows an administrator to set additional mount options such as the noexec option on the mount, making /tmp useless for an attacker to install executable code. It would also prevent an attacker from establishing a hard link to a system setuid program and wait for it to be updated. Once the program was updated, the hard link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw. This can be accomplished by either mounting tmpfs to /tmp, or creating a separate partition for /tmp.','Since the /tmp directory is intended to be world-writable, there is a risk of resource exhaustion if it is not bound to a separate partition. Running out of /tmp space is a problem regardless of what kind of filesystem lies under it, but in a configuration where /tmp is not a separate file system it will essentially have the whole disk available, as the default installation only creates a single / partition. On the other hand, a RAM-based /tmp (as with tmpfs) will almost certainly be much smaller, which can lead to applications filling up the filesystem much more easily. Another alternative is to create a dedicated partition for /tmp from a separate volume or disk. One of the downsides of a disk-based dedicated partition is that it will be slower than tmpfs which is RAM-based. /tmp utilizing tmpfs can be resized using the size={size} parameter in the relevant entry in /etc/fstab.','First ensure that systemd is correctly configured to ensure that /tmp will be mounted at boot time. # systemctl unmask tmp.mount For specific configuration requirements of the /tmp mount for your environment, modify /etc/fstab or tmp.mount. Example of /etc/fstab configured tmpfs file system with specific mount options: tmpfs 0 /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime,size=2G 0 Example of tmp.mount configured tmpfs file system with specific mount options: [Unit] Description=Temporary Directory /tmp ConditionPathIsSymbolicLink=!/tmp DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target After=swap.target [Mount] What=tmpfs Where=/tmp Type=tmpfs.','[{\"cis\": [\"1.1.2.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28501,'Ensure nodev option set on /tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /tmp.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28502,'Ensure noexec option set on /tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /tmp.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28503,'Ensure nosuid option set on /tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /tmp.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28504,'Ensure separate partition exists for /var.','The /var directory is used by daemons and other system services to temporarily store dynamic data. Some directories created by these processes may be world-writable.','The reasoning for mounting /var on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var and cause unintended behavior across the system as the disk is full. See man auditd.conf for details. Fine grained control over the mount Configuring /var as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behaviour. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection from exploitation An example of exploiting /var may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hardlink would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.3.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28505,'Ensure nodev option set on /var partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28506,'Ensure nosuid option set on /var partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28507,'Ensure separate partition exists for /var/tmp.','The /var/tmp directory is a world-writable directory used for temporary storage by all users and some applications. Temporary file residing in /var/tmp is to be preserved between reboots.','The reasoning for mounting /var/tmp on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var/tmp directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/tmp and cause the potential disruption to daemons as the disk is full. Fine grained control over the mount Configuring /var/tmp as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection from exploitation An example of exploiting /var/tmp may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hard-link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/tmp. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.4.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28508,'Ensure noexec option set on /var/tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp 0 <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28509,'Ensure nosuid option set on /var/tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp 0 <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28510,'Ensure nodev option set on /var/tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp 0 <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28511,'Ensure separate partition exists for /var/log.','The /var/log directory is used by system services to store log data.','The reasoning for mounting /var/log on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var/log directory contain the log files that can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. Fine grained control over the mount Configuring /var/log as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection of log data As /var/log contains log files, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log . For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.5.1\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28512,'Ensure nodev option set on /var/log partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28513,'Ensure noexec option set on /var/log partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot run executable binaries from /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28514,'Ensure nosuid option set on /var/log partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot create setuid files in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28515,'Ensure separate partition exists for /var/log/audit.','The auditing daemon, auditd, stores log data in the /var/log/audit directory.','The reasoning for mounting /var/log/audit on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /var/log/audit directory contain the audit.log file that can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/log/audit and cause auditd to trigger it's space_left_action as the disk is full. See man auditd.conf for details. Fine grained control over the mount Configuring /var/log/audit as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection of audit data As /var/log/audit contains audit logs, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log/audit. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.6.1\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28516,'Ensure noexec option set on /var/log/audit partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log/audit filesystem is only intended for audit logs, set this option to ensure that users cannot run executable binaries from /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28517,'Ensure nodev option set on /var/log/audit partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log/audit filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28518,'Ensure nosuid option set on /var/log/audit partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log/audit filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28519,'Ensure separate partition exists for /home.','The /home directory is used to support disk storage needs of local users.','The reasoning for mounting /home on a separate partition is as follow. Protection from resource exhaustion The default installation only creates a single / partition. Since the /home directory contains user generated data, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /home and impact all local users. Fine grained control over the mount Configuring /home as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. In the case of /home options such as usrquota/grpquota may be considered to limit the impact that users can have on each other with regards to disk resource exhaustion. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. Protection of user data As /home contains user data, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /home. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.7.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28520,'Ensure nodev option set on /home partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /home filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var.','','IF the /home partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28521,'Ensure nosuid option set on /home partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /home filesystem is only intended for user file storage, set this option to ensure that users cannot create setuid files in /home.','','IF the /home partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0 Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28522,'Ensure nodev option set on /dev/shm partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /dev/shm filesystem is not intended to support devices, set this option to ensure that users cannot attempt to create special devices in /dev/shm partitions.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm Additional Information: Some distributions mount /dev/shm through other means and require /dev/shm to be added to /etc/fstab even though it is already being mounted on boot. Others may configure /dev/shm in other locations and may override /etc/fstab configuration. Consult the documentation appropriate for your distribution.','[{\"cis\": [\"1.1.8.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28523,'Ensure noexec option set on /dev/shm partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Setting this option on a file system prevents users from executing programs from shared memory. This deters users from introducing potentially malicious software on the system.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /dev/shm partition. Example: <device> /dev/shm <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 Run the following command to remount /dev/shm with the configured options: # mount -o remount /dev/shm NOTE It is recommended to use tmpfs as the device/filesystem type as /dev/shm is used as shared memory space by applications.','[{\"cis\": [\"1.1.8.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28524,'Ensure nosuid option set on /dev/shm partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Setting this option on a file system prevents users from introducing privileged programs onto the system and allowing non-root users to execute them.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm Additional Information: Some distributions mount /dev/shm through other means and require /dev/shm to be added to /etc/fstab even though it is already being mounted on boot. Others may configure /dev/shm in other locations and may override /etc/fstab configuration. Consult the documentation appropriate for your distribution.','[{\"cis\": [\"1.1.8.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28525,'Disable Automounting.','autofs allows automatic mounting of devices, typically including CD/DVDs and USB drives.','With automounting enabled anyone with physical access could attach a USB drive or disc and have its contents available in system even if they lacked permissions to mount it themselves.','The use of portable hard drives is very common for workstation users. If your organization allows the use of portable storage or media on workstations and physical access controls to workstations is considered adequate there is little value add in turning off automounting.','If there are no other packages that depends on autofs, remove the package with: # apt purge autofs OR if there are dependencies on the autofs package: Run the following commands to mask autofs: # systemctl stop autofs # systemctl mask autofs Additional Information: This control should align with the tolerance of the use of portable drives and optical media in the organization. On a server requiring an admin to manually mount media can be part of defense-in-depth to reduce the risk of unapproved software or information being introduced or proprietary software or information being exfiltrated. If admins commonly use flash drives and Server access has sufficient physical controls, requiring manual mounting may not increase security.','[{\"cis\": [\"1.1.9\"]}, {\"cis_csc_v7\": [\"8.5\"]}, {\"cis_csc_v8\": [\"10.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1203\", \"T1211\", \"T1212\"]}, {\"cmmc_v2.0\": [\"MP.L2-3.8.7\"]}, {\"hipaa\": [\"164.310(d)(1)\"]}]'),(28526,'Ensure AIDE is installed.','AIDE takes a snapshot of filesystem state including modification times, permissions, and file hashes which can then be used to compare against the current state of the filesystem to detect modifications to the system.','By monitoring the filesystem state compromised files can be detected to prevent or limit the exposure of accidental or malicious misconfigurations or modified binaries.','','Install AIDE using the appropriate package manager or manual installation: # apt install aide aide-common Configure AIDE as appropriate for your environment. Consult the AIDE documentation for options. Run the following commands to initialize AIDE: # aideinit # mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db Additional Information: The prelinking feature can interfere with AIDE because it alters binaries to speed up their start up times. Run prelink -ua to restore the binaries to their prelinked state, thus avoiding false positives from AIDE.','[{\"cis\": [\"1.3.1\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"mitre_techniques\": [\"T1036\", \"T1036.002\", \"T1036.003\", \"T1036.004\", \"T1036.005\", \"T1565\", \"T1565.001\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"pci_dss_v3.2.1\": [\"10.2.1\", \"11.5\"]}, {\"pci_dss_v4.0\": [\"10.2.1\", \"10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28527,'Ensure bootloader password is set.','Setting the boot loader password will require that anyone rebooting the system must enter a password before being able to set command line boot parameters.','Requiring a boot password upon execution of the boot loader will prevent an unauthorized user from entering boot parameters or changing the boot partition. This prevents users from weakening security (e.g. turning off AppArmor at boot time).','If password protection is enabled, only the designated superuser can edit a Grub 2 menu item by pressing "e" or access the GRUB 2 command line by pressing "c" If GRUB 2 is set up to boot automatically to a password-protected menu entry the user has no option to back out of the password prompt to select another menu entry. Holding the SHIFT key will not display the menu in this case. The user must enter the correct username and password. If unable, the configuration files will have to be edited via the LiveCD or other means to fix the problem You can add --unrestricted to the menu entries to allow the system to boot without entering a password. Password will still be required to edit menu items. More Information: https://help.ubuntu.com/community/Grub2/Passwords.','Create an encrypted password with grub-mkpasswd-pbkdf2: # grub-mkpasswd-pbkdf2 Enter password: <password> Reenter password: <password> PBKDF2 hash of your password is <encrypted-password> Add the following into a custom /etc/grub.d configuration file: cat <<EOF set superusers="<username>" password_pbkdf2 <username> <encrypted-password> EOF The superuser/user information and password should not be contained in the /etc/grub.d/00_header file as this file could be overwritten in a package update. If there is a requirement to be able to boot/reboot without entering the password, edit /etc/grub.d/10_linux and add --unrestricted to the line CLASS= Example: CLASS="--class gnu-linux --class gnu --class os --unrestricted" Run the following command to update the grub2 configuration: # update-grub Default Value: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings. Replace /boot/grub/grub.cfg with the appropriate grub configuration file for your environment.','[{\"cis\": [\"1.4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"T1542\"]}, {\"mitre_mitigations\": [\"M1046\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \" 8.3.5\", \" 8.3.6\", \" 8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28528,'Ensure permissions on bootloader config are configured.','The grub configuration file contains information on boot settings and passwords for unlocking boot options.','Setting the permissions to read and write for root only prevents non-root users from seeing the boot parameters or changing them. Non-root users who read the boot parameters may be able to identify weaknesses in security upon boot and be able to exploit them.','','Run the following commands to set permissions on your grub configuration: # chown root:root /boot/grub/grub.cfg # chmod u-wx,go-rwx /boot/grub/grub.cfg Additional Information: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings. Replace /boot/grub/grub.cfg with the appropriate grub configuration file for your environment.','[{\"cis\": [\"1.4.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"TA0005\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \" AC.L1-3.1.2\", \" AC.L2-3.1.5\", \" AC.L2-3.1.3\", \" MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \" 164.308(a)(3)(ii)(A)\", \" 164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \" 7.1.1\", \" 7.1.2\", \" 7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \" 7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \" AC-6\"]}, {\"soc_2\": [\"CC5.2\", \" CC6.1\"]}]'),(28529,'Ensure authentication required for single user mode.','Single user mode is used for recovery when the system detects an issue during boot or by manual selection from the bootloader.','Requiring authentication in single user mode prevents an unauthorized user from rebooting the system into single user to gain root privileges without credentials.','','Run the following command and follow the prompts to set a password for the root user: # passwd root.','[{\"cis\": [\"1.4.3\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \" 8.3.5\", \" 8.3.6\", \" 8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28530,'Ensure prelink is not installed.','prelink is a program that modifies ELF shared libraries and ELF dynamically linked binaries in such a way that the time needed for the dynamic linker to perform relocations at startup significantly decreases.','The prelinking feature can interfere with the operation of AIDE, because it changes binaries. Prelinking can also increase the vulnerability of the system if a malicious user is able to compromise a common library such as libc.','','Run the following command to restore binaries to normal: # prelink -ua Uninstall prelink using the appropriate package manager or manual installation: # apt purge prelink.','[{\"cis\": [\"1.5.2\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"mitre_techniques\": [\"T1055\", \"T1055.009\", \"T1065\", \"T1065.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \" 164.312(c)(1)\", \" 164.312(c)(2)\"]}, {\"pci_dss_v3.2.1\": [\"10.2.1\", \" 11.5\"]}, {\"pci_dss_v4.0\": [\"10.2.1\", \" 10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28531,'Ensure Automatic Error Reporting is not enabled.','The Apport Error Reporting Service automatically generates crash reports for debugging.','Apport collects potentially sensitive data, such as core dumps, stack traces, and log files. They can contain passwords, credit card numbers, serial numbers, and other private material.','','Edit /etc/default/apport and add or edit the enabled parameter to equal 0: enabled=0 Run the following commands to stop and disable the apport service # systemctl stop apport.service # systemctl --now disable apport.service -- OR -Run the following command to remove the apport package: # apt purge apport Default Value: enabled=1.','[{\"cis\": [\"1.5.3\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28532,'Ensure core dumps are restricted.','A core dump is the memory of an executable program. It is generally used to determine why a program aborted. It can also be used to glean confidential information from a core file. The system provides the ability to set a soft limit for core dumps, but this can be overridden by the user.','Setting a hard limit on core dumps prevents users from overriding the soft variable. If core dumps are required, consider setting limits for user groups (see limits.conf(5) ). In addition, setting the fs.suid_dumpable variable to 0 will prevent setuid programs from dumping core.','','Add the following line to /etc/security/limits.conf or a /etc/security/limits.d/* file: * hard core 0 Set the following parameter in /etc/sysctl.conf or a /etc/sysctl.d/* file: fs.suid_dumpable = 0 Run the following command to set the active kernel parameter: # sysctl -w fs.suid_dumpable=0 IF systemd-coredump is installed: edit /etc/systemd/coredump.conf and add/modify the following lines: Storage=none ProcessSizeMax=0 Run the command: systemctl daemon-reload','[{\"cis\": [\"1.5.4\"]}, {\"mitre_techniques\": [\"T1005\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28533,'Ensure AppArmor is installed.','AppArmor provides Mandatory Access Controls.','Without a Mandatory Access Control system installed only the default Discretionary Access Control system will be available.','','Install AppArmor. # apt install apparmor.','[{\"cis\": [\"1.6.1.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \" AC.L1-3.1.2\", \" AC.L2-3.1.5\", \" AC.L2-3.1.3\", \" MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \" 164.308(a)(3)(ii)(A)\", \" 164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \" 7.1.1\", \" 7.1.2\", \" 7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \" 7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \" AC-6\"]}, {\"soc_2\": [\"CC5.2\", \" CC6.1\"]}]'),(28534,'Ensure AppArmor is enabled in the bootloader configuration.','Configure AppArmor to be enabled at boot time and verify that it has not been overwritten by the bootloader boot parameters. Note: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings.','AppArmor must be enabled at boot time in your bootloader configuration to ensure that the controls it provides are not overridden.','','Edit /etc/default/grub and add the apparmor=1 and security=apparmor parameters to the GRUB_CMDLINE_LINUX= line GRUB_CMDLINE_LINUX="apparmor=1 security=apparmor" Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"1.6.1.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28535,'Ensure all AppArmor Profiles are in enforce or complain mode.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* OR Run the following command to set all profiles to complain mode: # aa-complain /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28536,'Ensure all AppArmor Profiles are enforcing.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28537,'Ensure message of the day is configured properly.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a " command once they have logged in.','','Edit the /etc/motd file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform OR if the motd is not used, this file can be removed. Run the following command to remove the motd file: # rm /etc/motd','[{\"cis\": [\"1.7.1\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28538,'Ensure local login warning banner is configured properly.','The contents of the /etc/issue file are displayed to users prior to login for local terminals. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version - or the operating system's name.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a " command once they have logged in.','','Edit the /etc/issue file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue.','[{\"cis\": [\"1.7.2\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28539,'Ensure remote login warning banner is configured properly.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a " command once they have logged in.','','Edit the /etc/issue file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue','[{\"cis\": [\"1.7.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(28540,'Ensure permissions on /etc/motd are configured.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users.','If the /etc/motd file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/motd : # chown root:root $(readlink -e /etc/motd) # chmod u-x,go-wx $(readlink -e /etc/motd) OR run the following command to remove the /etc/motd file: # rm /etc/motd','[{\"cis\": [\"1.7.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28541,'Ensure permissions on /etc/issue are configured.','The contents of the /etc/issue file are displayed to users prior to login for local terminals.','If the /etc/issue file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue : # chown root:root $(readlink -e /etc/issue) # chmod u-x,go-wx $(readlink -e /etc/issue) Default Value: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root).','[{\"cis\": [\"1.7.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28542,'Ensure permissions on /etc/issue.net are configured.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services.','If the /etc/issue.net file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue.net : # chown root:root $(readlink -e /etc/issue.net) # chmod u-x,go-wx $(readlink -e /etc/issue.net)','[{\"cis\": [\"1.7.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28543,'Ensure GNOME Display Manager is removed.','The GNOME Display Manager (GDM) is a program that manages graphical display servers and handles graphical user logins.','If a Graphical User Interface (GUI) is not required, it should be removed to reduce the attack surface of the system.','Removing the GNOME Display manager will remove the Graphical User Interface (GUI) from the system.','Run the following command to uninstall gdm3: # apt purge gdm3.','[{\"cis\": [\"1.8.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28544,'Ensure XDCMP is not enabled.','X Display Manager Control Protocol (XDMCP) is designed to provide authenticated access to display management services for remote displays.','XDMCP is inherently insecure. XDMCP is not a ciphered protocol. This may allow an attacker to capture keystrokes entered by a user XDMCP is vulnerable to man-in-the-middle attacks. This may allow an attacker to steal the credentials of legitimate users by impersonating the XDMCP server.','','Edit the file /etc/gdm3/custom.conf and remove the line: Enable=true Default Value: false (This is denoted by no Enabled= entry in the file /etc/gdm3/custom.conf in the [xdmcp] section.','[{\"cis\": [\"1.8.10\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1040\", \"T1056\", \"T1056.001\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28545,'Ensure chrony is running as user _chrony.','The chrony package is installed with a dedicated user account _chrony. This account is granted the access required by the chronyd service.','The chronyd service should run with only the required privileges.','','Add or edit the user line to /etc/chrony/chrony.conf or a file ending in .conf in /etc/chrony/conf.d/: user _chrony OR If another time synchronization service is in use on the system, run the following command to remove chrony from the system: # apt purge chrony','[{\"cis\": [\"2.1.2.2\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28546,'Ensure chrony is enabled and running.','chrony is a daemon for synchronizing the system clock across the network.','chrony needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF chrony is in use on the system, run the following commands: Run the following command to unmask chrony.service: # systemctl unmask chrony.service Run the following command to enable and start chrony.service: # systemctl --now enable chrony.service OR If another time synchronization service is in use on the system, run the following command to remove chrony: # apt purge chrony.','[{\"cis\": [\"2.1.2.3\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28547,'Ensure systemd-timesyncd is enabled and running.','systemd-timesyncd is a daemon that has been added for synchronizing the system clock across the network.','systemd-timesyncd needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF systemd-timesyncd is in use on the system, run the following commands: Run the following command to unmask systemd-timesyncd.service: # systemctl unmask systemd-timesyncd.service Run the following command to enable and start systemd-timesyncd.service: # systemctl --now enable systemd-timesyncd.service OR If another time synchronization service is in use on the system, run the following command to stop and mask systemd-timesyncd: # systemctl --now mask systemd-timesyncd.service','[{\"cis\": [\"2.1.3.2\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28548,'Ensure ntp access control is configured.','ntp Access Control Commands: restrict address [mask mask] [ippeerlimit int] [flag ...] The address argument expressed in dotted-quad form is the address of a host or network. Alternatively, the address argument can be a valid host DNS name. The mask argument expressed in dotted-quad form defaults to 255.255.255.255, meaning that the address is treated as the address of an individual host. A default entry (address 0.0.0.0, mask 0.0.0.0) is always included and is always the first entry in the list. Note: the text string default, with no mask option, may be used to indicate the default entry. The ippeerlimit directive limits the number of peer requests for each IP to int, where a value of -1 means "unlimited", the current default. A value of 0 means "none". There would usually be at most 1 peering request per IP, but if the remote peering requests are behind a proxy there could well be more than 1 per IP. In the current implementation, flag always restricts access, i.e., an entry with no flags indicates that free access to the server is to be given. The flags are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags can generally be classed into two categories, those which restrict time service and those which restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified: kod - If this flag is set when an access violation occurs, a kiss-o'-death (KoD) packet is sent. KoD packets are rate limited to no more than one per second. If another KoD packet occurs within one second after the last one, the packet is dropped. limited - Deny service if the packet spacing violates the lower limits specified in the discard command. A history of clients is kept using the monitoring capability of ntpd. Thus, monitoring is always active as long as there is a restriction entry with the limited flag. lowpriotrap - Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps. noepeer - Deny ephemeral peer requests, even if they come from an authenticated source. Note that the ability to use a symmetric key for authentication may be restricted to one or more IPs or subnets via the third field of the ntp.keys file. This restriction is not enabled by default, to maintain backward compatibility. Expect noepeer to become the default in ntp-4.4. nomodify - Deny ntpq and ntpdc queries which attempt to modify the state of the server (i.e., run time reconfiguration). Queries which return information are permitted. noquery - Deny ntpq and ntpdc queries. Time service is not affected. nopeer - Deny unauthenticated packets which would result in mobilizing a new association. This includes broadcast and symmetric active packets when a configured association does not exist. It also includes pool associations, so if you want to use servers from a pool directive and also want to use nopeer by default, you'll want a restrict source ... line as well that does not include the nopeer directive. noserve - Deny all packets except ntpq and ntpdc queries. notrap - Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the ntpq control message protocol which is intended for use by remote event logging programs. notrust - Deny service unless the packet is cryptographically authenticated. ntpport - This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both ntpport and nonntpport may be specified. The ntpport is considered more specific and is sorted later in the list.','If ntp is in use on the system, proper configuration is vital to ensuring time synchronization is accurate.','','Add or edit restrict lines in /etc/ntp.conf to match the following: restrict -4 default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp Default Value: restrict -4 default kod notrap nomodify nopeer noquery limited restrict -6 default kod notrap nomodify nopeer noquery limited.','[{\"cis\": [\"2.1.4.1\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28549,'Ensure ntp is running as user ntp.','The ntp package is installed with a dedicated user account ntp. This account is granted the access required by the ntpd daemon Note: If chrony or systemd-timesyncd are used, ntp should be removed and this section skipped This recommendation only applies if ntp is in use on the system Only one time synchronization method should be in use on the system.','The ntpd daemon should run with only the required privilege.','','Add or edit the following line in /etc/init.d/ntp: RUNASUSER=ntp Run the following command to restart ntp.servocee: # systemctl restart ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp Default Value: user ntp.','[{\"cis\": [\"2.1.4.3\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28550,'Ensure ntp is enabled and running.','ntp is a daemon for synchronizing the system clock across the network.','ntp needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF ntp is in use on the system, run the following commands: Run the following command to unmask ntp.service: # systemctl unmask ntp.service Run the following command to enable and start ntp.service: # systemctl --now enable ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp: # apt purge ntp.','[{\"cis\": [\"2.1.4.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(28551,'Ensure X Window System is not installed.','The X Window System provides a Graphical User Interface (GUI) where users can have multiple windows in which to run programs and various add on. The X Windows system is typically used on workstations where users login, but not on servers where users typically do not login.','Unless your organization specifically requires graphical login access via X Windows, remove it to reduce the potential attack surface.','Many Linux systems run applications which require a Java runtime. Some Linux Java packages have a dependency on specific X Windows xorg-x11-fonts. One workaround to avoid this dependency is to use the "headless" Java packages for your specific Java runtime, if provided by your distribution.','Remove the X Windows System packages: apt purge xserver-xorg*','[{\"cis\": [\"2.2.1\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28552,'Ensure Avahi Server is not installed.','Avahi is a free zeroconf implementation, including a system for multicast DNS/DNS-SD service discovery. Avahi allows programs to publish and discover services and hosts running on a local network with no specific configuration. For example, a user can plug a computer into a network and Avahi automatically finds printers to print to, files to look at and people to talk to, as well as network services running on the machine.','Automatic discovery of network services is not normally required for system functionality. It is recommended to remove this package to reduce the potential attack surface.','','Run the following commands to remove avahi-daemon: # systemctl stop avahi-daaemon.service # systemctl stop avahi-daemon.socket # apt purge avahi-daemon.','[{\"cis\": [\"2.2.2\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28553,'Ensure CUPS is not installed.','The Common Unix Print System (CUPS) provides the ability to print to both local and network printers. A system running CUPS can also accept print jobs from remote systems and print them to local printers. It also provides a web based remote administration capability.','If the system does not need to print jobs or accept print jobs from other systems, it is recommended that CUPS be removed to reduce the potential attack surface.','Removing CUPS will prevent printing from the system, a common task for workstation systems.','Run one of the following commands to remove cups : # apt purge cups','[{\"cis\": [\"2.2.3\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28554,'Ensure DHCP Server is not installed.','The Dynamic Host Configuration Protocol (DHCP) is a service that allows machines to be dynamically assigned IP addresses.','Unless a system is specifically set up to act as a DHCP server, it is recommended that this package be removed to reduce the potential attack surface.','','Run the following command to remove isc-dhcp-server: # apt purge isc-dhcp-server.','[{\"cis\": [\"2.2.4\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28555,'Ensure LDAP server is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP server, it is recommended that the software be removed to reduce the potential attack surface.','','Run one of the following commands to remove slapd: # apt purge slapd','[{\"cis\": [\"2.2.5\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28556,'Ensure NFS is not installed.','The Network File System (NFS) is one of the first and most widely distributed file systems in the UNIX environment. It provides the ability for systems to mount file systems of other servers through the network.','If the system does not export NFS shares or act as an NFS client, it is recommended that these services be removed to reduce the remote attack surface.','','Run the following command to remove nfs: # apt purge nfs-kernel-server.','[{\"cis\": [\"2.2.6\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28557,'Ensure DNS Server is not installed.','The Domain Name System (DNS) is a hierarchical naming system that maps names to IP addresses for computers, services and other resources connected to a network.','Unless a system is specifically designated to act as a DNS server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following commands to disable DNS server: # apt purge bind9','[{\"cis\": [\"2.2.7\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28558,'Ensure FTP Server is not installed.','The File Transfer Protocol (FTP) provides networked computers with the ability to transfer files.','FTP does not protect the confidentiality of data or authentication credentials. It is recommended SFTP be used if file transfer is required. Unless there is a need to run the system as a FTP server (for example, to allow anonymous downloads), it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove vsftpd: # apt purge vsftpd Additional Information: Additional FTP servers also exist and should be audited.','[{\"cis\": [\"2.2.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28559,'Ensure HTTP server is not installed.','HTTP or web servers provide the ability to host web site content.','Unless there is a need to run the system as a web server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove apache: # apt purge apache2 Additional Information: Several httpd servers exist and can use other service names. apache2 and nginx are example services that provide an HTTP server. These and other services should also be audited','[{\"cis\": [\"2.2.9\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28560,'Ensure IMAP and POP3 server are not installed.','dovecot-imapd and dovecot-pop3d are an open source IMAP and POP3 server for Linux based systems.','Unless POP3 and/or IMAP servers are to be provided by this system, it is recommended that the package be removed to reduce the potential attack surface.','','Run one of the following commands to remove dovecot-imapd and dovecot-pop3d: # apt purge dovecot-imapd dovecot-pop3d Additional Information: Several IMAP/POP3 servers exist and can use other service names. courier-imap and cyrus-imap are example services that provide a mail server. These and other services should also be audited.','[{\"cis\": [\"2.2.10\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28561,'Ensure Samba is not installed.','The Samba daemon allows system administrators to configure their Linux systems to share file systems and directories with Windows desktops. Samba will advertise the file systems and directories via the Server Message Block (SMB) protocol. Windows desktop users will be able to mount these directories and file systems as letter drives on their systems.','If there is no need to mount directories and file systems to Windows systems, then this service should be deleted to reduce the potential attack surface.','','Run the following command to remove samba: # apt purge samba.','[{\"cis\": [\"2.2.11\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28562,'Ensure HTTP Proxy Server is not installed.','Squid is a standard proxy server used in many distributions and environments.','If there is no need for a proxy server, it is recommended that the squid proxy be deleted to reduce the potential attack surface.','','Run the following command to remove squid: # apt purge squid Additional Information: Several HTTP proxy servers exist. These and other services should be checked.','[{\"cis\": [\"2.2.12\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28563,'Ensure SNMP Server is not installed.','Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment, computer equipment and devices like UPSs. Net-SNMP is a suite of applications used to implement SNMPv1 (RFC 1157), SNMPv2 (RFCs 1901-1908), and SNMPv3 (RFCs 3411-3418) using both IPv4 and IPv6. Support for SNMPv2 classic (a.k.a. "SNMPv2 historic" - RFCs 1441-1452) was dropped with the 4.0 release of the UCD-snmp package. The Simple Network Management Protocol (SNMP) server is used to listen for SNMP commands from an SNMP management system, execute the commands or collect the information and then send results back to the requesting system.','The SNMP server can communicate using SNMPv1, which transmits data in the clear and does not require authentication to execute commands. SNMPv3 replaces the simple/clear text password sharing used in SNMPv2 with more securely encoded parameters. If the the SNMP service is not required, the net-snmp package should be removed to reduce the attack surface of the system. Note: If SNMP is required: The server should be configured for SNMP v3 only. User Authentication and Message Encryption should be configured. If SNMP v2 is absolutely necessary, modify the community strings' values.','','Run the following command to remove snmp: # apt purge snmp.','[{\"cis\": [\"2.2.13\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28564,'Ensure NIS Server is not installed.','The Network Information Service (NIS) (formally known as Yellow Pages) is a clientserver directory service protocol for distributing system configuration files. The NIS server is a collection of programs that allow for the distribution of configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed and other, more secure services be used.','','Run the following command to remove nis: # apt purge nis.','[{\"cis\": [\"2.2.14\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28565,'Ensure mail transfer agent is configured for local-only mode.','Mail Transfer Agents (MTA), such as sendmail and Postfix, are used to listen for incoming mail and transfer the messages to the appropriate user or mail server. If the system is not intended to be a mail server, it is recommended that the MTA be configured to only process local mail.','The software for all Mail Transfer Agents is complex and most have a long history of security issues. While it is important to ensure that the system can process local mail messages, it is not necessary to have the MTA's daemon listening on a port unless the server is intended to be a mail server that receives and processes mail from other systems. Note: - This recommendation is designed around the postfix mail server. - Depending on your environment you may have an alternative MTA installed such as exim4. If this is the case consult the documentation for your installed MTA to configure the recommended state.','','Edit /etc/postfix/main.cf and add the following line to the RECEIVING MAIL section. If the line already exists, change it to look like the line below: inet_interfaces = loopback-only Run the following command to restart postfix: # systemctl restart postfix.','[{\"cis\": [\"2.2.15\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1018\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28566,'Ensure rsync service is either not installed or masked.','The rsync service can be used to synchronize files between systems over network links.','The rsync service presents a security risk as it uses unencrypted protocols for communication. The rsync package should be removed to reduce the attack area of the system.','','Run the following command to remove rsync: # apt purge rsync OR Run the following commands to stop and mask rsync: # systemctl stop rsync # systemctl mask rsync.','[{\"cis\": [\"2.2.16\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1105\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\", \"1570\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \" CM.L2-3.4.8\", \" SC.L2-3.13.6\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \" 1.2.1\", \" 2.2.2\", \" 2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \" 2.2.4\", \" 6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \" CC6.6\"]}]'),(28567,'Ensure NIS Client is not installed.','The Network Information Service (NIS), formerly known as Yellow Pages, is a clientserver directory service protocol used to distribute system configuration files. The NIS client was used to bind a machine to an NIS server and receive the distributed configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall nis: # apt purge nis','[{\"cis\": [\"2.3.1\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28568,'Ensure rsh client is not installed.','The rsh-client package contains the client commands for the rsh services.','These legacy clients contain numerous security exposures and have been replaced with the more secure SSH package. Even if the server is removed, it is best to ensure the clients are also removed to prevent users from inadvertently attempting to use these commands and therefore exposing their credentials. Note that removing the rsh package removes the clients for rsh, rcp and rlogin.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall rsh: # apt purge rsh-client','[{\"cis\": [\"2.3.2\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28569,'Ensure talk client is not installed.','The talk software makes it possible for users to send and receive messages across systems through a terminal session. The talk client, which allows initialization of talk sessions, is installed by default.','The software presents a security risk as it uses unencrypted protocols for communication.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall talk: # apt purge talk','[{\"cis\": [\"2.3.3\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28570,'Ensure telnet client is not installed.','The telnet package contains the telnet client, which allows users to start connections to other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow an unauthorized user to steal credentials. The ssh package provides an encrypted session and stronger security and is included in most Linux distributions.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall telnet: # apt purge telnet','[{\"cis\": [\"2.3.4\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28571,'Ensure LDAP client is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP client, it is recommended that the software be removed to reduce the potential attack surface.','Removing the LDAP client will prevent or inhibit using LDAP for authentication in your environment.','Uninstall ldap-utils: # apt purge ldap-utils','[{\"cis\": [\"2.3.5\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28572,'Ensure RPC is not installed.','Remote Procedure Call (RPC) is a method for creating low level client server applications across different system architectures. It requires an RPC compliant client listening on a network port. The supporting package is rpcbind.','If RPC is not required, it is recommended that this services be removed to reduce the remote attack surface.','','Run the following command to remove rpcbind: # apt purge rpcbind','[{\"cis\": [\"2.3.6\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28573,'Ensure ufw is installed.','The Uncomplicated Firewall (ufw) is a frontend for iptables and is particularly well-suited for host-based firewalls. ufw provides a framework for managing netfilter, as well as a command-line interface for manipulating the firewall.','A firewall utility is required to configure the Linux kernel's netfilter framework via the iptables or nftables back-end. The Linux kernel's netfilter framework host-based firewall can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host. Note: Only one firewall utility should be installed and configured. UFW is dependent on the iptables package.','','Run the following command to install Uncomplicated Firewall (UFW): apt install ufw','[{\"cis\": [\"3.5.1.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28574,'Ensure iptables-persistent is not installed with ufw.','The iptables-persistent is a boot-time loader for netfilter rules, iptables plugin.','Running both ufw and the services included in the iptables-persistent package may lead to conflict.','','Run the following command to remove the iptables-persistent package: # apt purge iptables-persistent','[{\"cis\": [\"3.5.1.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28575,'Ensure ufw service is enabled.','UncomplicatedFirewall (ufw) is a frontend for iptables. ufw provides a framework for managing netfilter, as well as a command-line and available graphical user interface for manipulating the firewall. Notes: When running ufw enable or starting ufw via its initscript, ufw will flush its chains. This is required so ufw can maintain a consistent state, but it may drop existing connections (eg ssh). ufw does support adding rules before enabling the firewall. Run the following command before running ufw enable. # ufw allow proto tcp from any to any port 22 The rules will still be flushed, but the ssh port will be open after enabling the firewall. Please note that once ufw is 'enabled', ufw will not flush the chains when adding or removing rules (but will when modifying a rule or changing the default policy) By default, ufw will prompt when enabling the firewall while running under ssh. This can be disabled by using ufw --force enable.','The ufw service must be enabled and running in order for ufw to protect the system.','Changing firewall settings while connected over network can result in being locked out of the system.','Run the following command to unmask the ufw daemon: # systemctl unmask ufw.service Run the following command to enable and start the ufw daemon: # systemctl --now enable ufw.service active Run the following command to enable ufw: # ufw enable','[{\"cis\": [\"3.5.1.3\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28576,'Ensure ufw loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6).','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ufw allow in on lo # ufw allow out on lo # ufw deny in from 127.0.0.0/8 # ufw deny in from ::1','[{\"cis\": [\"3.5.1.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28577,'Ensure ufw default deny firewall policy.','A default deny policy on connections ensures that any unconfigured network usage will be rejected. Note: Any port or protocol without a explicit allow before the default deny will be blocked.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','Any port and protocol not explicitly allowed will be blocked. The following rules should be considered before applying the default deny. ufw allow git ufw allow in http ufw allow out http <- required for apt to connect to repository ufw allow in https ufw allow out https ufw allow out 53 ufw logging on.','Run the following commands to implement a default deny policy: # ufw default deny incoming # ufw default deny outgoing # ufw default deny routed','[{\"cis\": [\"3.5.1.7\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28578,'Ensure nftables is installed.','nftables provides a new in-kernel packet classification framework that is based on a network-specific Virtual Machine (VM) and a new nft userspace command line tool. nftables reuses the existing Netfilter subsystems such as the existing hook infrastructure, the connection tracking system, NAT, userspace queuing and logging subsystem. Notes: nftables is available in Linux kernel 3.13 and newer Only one firewall utility should be installed and configured Changing firewall settings while connected over the network can result in being locked out of the system.','nftables is a subsystem of the Linux kernel that can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host.','','Run the following command to install nftables: # apt install nftables','[{\"cis\": [\"3.5.2.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28579,'Ensure a nftables table exists.','Tables hold chains. Each table only has one address family and only applies to packets of this family. Tables can have one of five families.','nftables doesn't have any default tables. Without a table being build, nftables will not filter network traffic.','Adding rules to a running nftables can cause loss of connectivity to the system.','Run the following command to create a table in nftables # nft create table inet <table name> Example: # nft create table inet filter','[{\"cis\": [\"3.5.2.4\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28580,'Ensure nftables base chains exist.','Chains are containers for rules. They exist in two kinds, base chains and regular chains. A base chain is an entry point for packets from the networking stack, a regular chain may be used as jump target and is used for better rule organization.','If a base chain doesn't exist with a hook for input, forward, and delete, packets that would flow through those chains will not be touched by nftables.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command to create the base chains: # nft create chain inet <table name> <base chain name> { type filter hook <(input|forward|output)> priority 0 ; } Example: # nft create chain inet filter input { type filter hook input priority 0 ; } # nft create chain inet filter forward { type filter hook forward priority 0 ; } # nft create chain inet filter output { type filter hook output priority 0 ; }','[{\"cis\": [\"3.5.2.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28581,'Ensure nftables default deny firewall policy.','Base chain policy is the default verdict that will be applied to packets reaching the end of the chain.','There are two policies: accept (Default) and drop. If the policy is set to accept, the firewall will accept any packet that is not configured to be denied and the packet will continue transversing the network stack. It is easier to white list acceptable usage than to black list unacceptable usage. Note: Changing firewall settings while connected over network can result in being locked out of the system.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command for the base chains with the input, forward, and output hooks to implement a default DROP policy: # nft chain <table family> <table name> <chain name> { policy drop ; } Example: # nft chain inet filter input { policy drop ; } # nft chain inet filter forward { policy drop ; } # nft chain inet filter output { policy drop ; } Default Value: accept','[{\"cis\": [\"3.5.2.8\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28582,'Ensure nftables service is enabled.','The nftables service allows for the loading of nftables rulesets during boot, or starting on the nftables service.','The nftables service restores the nftables rules from the rules files referenced in the /etc/nftables.conf file during boot or the starting of the nftables service.','','Run the following command to enable the nftables service: # systemctl enable nftables.','[{\"cis\": [\"3.5.2.9\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28583,'Ensure iptables packages are installed.','iptables is a utility program that allows a system administrator to configure the tables provided by the Linux kernel firewall, implemented as different Netfilter modules, and the chains and rules it stores. Different kernel modules and programs are used for different protocols; iptables applies to IPv4, ip6tables to IPv6, arptables to ARP, and ebtables to Ethernet frames.','A method of configuring and maintaining firewall rules is necessary to configure a Host Based Firewall.','','Run the following command to install iptables and iptables-persistent # apt install iptables iptables-persistent','[{\"cis\": [\"3.5.3.1.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28584,'Ensure nftables is not installed with iptables.','nftables is a subsystem of the Linux kernel providing filtering and classification of network packets/datagrams/frames and is the successor to iptables.','Running both iptables and nftables may lead to conflict.','','Run the following command to remove nftables: # apt purge nftables','[{\"cis\": [\"3.5.3.1.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28585,'Ensure ufw is uninstalled or disabled with iptables.','Uncomplicated Firewall (UFW) is a program for managing a netfilter firewall designed to be easy to use. Uses a command-line interface consisting of a small number of simple commands Uses iptables for configuration.','Running iptables.persistent with ufw enabled may lead to conflict and unexpected results.','','Run one of the following commands to either remove ufw or stop and mask ufw Run the following command to remove ufw: # apt purge ufw OR Run the following commands to disable ufw: # ufw disable # systemctl stop ufw # systemctl mask ufw.','[{\"cis\": [\"3.5.3.1.3\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28586,'Ensure iptables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.2.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28587,'Ensure iptables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8). Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # iptables -A INPUT -i lo -j ACCEPT # iptables -A OUTPUT -o lo -j ACCEPT # iptables -A INPUT -s 127.0.0.0/8 -j DROP.','[{\"cis\": [\"3.5.3.2.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28588,'Ensure ip6tables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # ip6tables -P INPUT DROP # ip6tables -P OUTPUT DROP # ip6tables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.3.1\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28589,'Ensure ip6tables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (::1). Note: Changing firewall settings while connected over network can result in being locked out of the system Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (::1) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ip6tables -A INPUT -i lo -j ACCEPT # ip6tables -A OUTPUT -o lo -j ACCEPT # ip6tables -A INPUT -s ::1 -j DROP','[{\"cis\": [\"3.5.3.3.2\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.4\", \"1.1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}]'),(28590,'Ensure auditd is installed.','auditd is the userspace component to the Linux Auditing System. It's responsible for writing audit records to the disk.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to Install auditd # apt install auditd audispd-plugins.','[{\"cis\": [\"4.1.1.1\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28591,'Ensure auditd service is enabled and active.','Turn on the auditd daemon to record system events.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to enable and start auditd: # systemctl --now enable auditd.','[{\"cis\": [\"4.1.1.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28592,'Ensure auditing for processes that start prior to auditd is enabled.','Configure grub2 so that processes that are capable of being audited can be audited even if they start up prior to auditd startup.','Audit events need to be captured on processes that start up prior to auditd , so that potential malicious activity cannot go undetected.','','Edit /etc/default/grub and add audit=1 to GRUB_CMDLINE_LINUX: Example: GRUB_CMDLINE_LINUX="audit=1" Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"4.1.1.3\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28593,'Ensure audit_backlog_limit is sufficient.','In the kernel-level audit subsystem, a socket buffer queue is used to hold audit events. Whenever a new audit event is received, it is logged and prepared to be added to this queue. The kernel boot parameter audit_backlog_limit=N, with N representing the amount of messages, will ensure that a queue cannot grow beyond a certain size. If an audit event is logged which would grow the queue beyond this limit, then a failure occurs and is handled according to the system configuration.','If an audit event is logged which would grow the queue beyond the audit_backlog_limit, then a failure occurs, auditd records will be lost, and potential malicious activity could go undetected.','','Edit /etc/default/grub and add audit_backlog_limit=N to GRUB_CMDLINE_LINUX. The recommended size for N is 8192 or larger. Example: GRUB_CMDLINE_LINUX="audit_backlog_limit=8192" Run the following command to update the grub2 configuration: # update-grub','[{\"cis\": [\"4.1.1.4\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28594,'Ensure audit log storage size is configured.','Configure the maximum size of the audit log file. Once the log reaches the maximum size, it will be rotated and a new log file will be started.','It is important that an appropriate size is determined for log files so that they do not impact the system and audit data is not lost.','','Set the following parameter in /etc/audit/auditd.conf in accordance with site policy: max_log_file = <MB> Default Value: max_log_file = 8 Additional Information: The max_log_file parameter is measured in megabytes. Other methods of log rotation may be appropriate based on site policy. One example is time-based rotation strategies which don't have native support in auditd configurations. Manual audit of custom configurations should be evaluated for effectiveness and completeness.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28595,'Ensure audit logs are not automatically deleted.','The max_log_file_action setting determines how to handle the audit log file reaching the max file size. A value of keep_logs will rotate the logs but never delete old logs.','In high security contexts, the benefits of maintaining a long audit history exceed the cost of storing the audit history.','','Set the following parameter in /etc/audit/auditd.conf: max_log_file_action = keep_logs.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28596,'Ensure system is disabled when audit logs are full.','The auditd daemon can be configured to halt the system when the audit logs are full. The admin_space_left_action parameter tells the system what action to take when the system has detected that it is low on disk space. Valid values are ignore, syslog, suspend, single, and halt. ignore, the audit daemon does nothing Syslog, the audit daemon will issue a warning to syslog Suspend, the audit daemon will stop writing records to the disk single, the audit daemon will put the computer system in single user mode halt, the audit daemon will shutdown the system.','In high security contexts, the risk of detecting unauthorized access or nonrepudiation exceeds the benefit of the system's availability.','If the admin_space_left_action parameter is set to halt the audit daemon will shutdown the system when the disk partition containing the audit logs becomes full.','Set the following parameters in /etc/audit/auditd.conf: space_left_action = email action_mail_acct = root set admin_space_left_action to either halt or single in /etc/audit/auditd.conf. Example: admin_space_left_action = halt.','[{\"cis\": [\"4.1.2.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28597,'Ensure changes to system administration scope (sudoers) is collected.','Monitor scope changes for system administrators. If the system has been properly configured to force system administrators to log in as themselves first and then use the sudo command to execute privileged commands, it is possible to monitor changes in scope. The file /etc/sudoers will be written to when the file or its attributes have changed. The audit records will be tagged with the identifier "scope.". Note: Reloading the auditd config to set active settings requires the auditd service to be restarted, and may require a system reboot.','Changes in the /etc/sudoers and /etc/sudoers.d files can indicate that an unauthorized change has been made to the scope of system administrator activity.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor scope changes for system administrators. Example: # printf " -w /etc/sudoers -p wa -k scope -w /etc/sudoers.d -p wa -k scope " >> /etc/audit/rules.d/50-scope.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.1\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28598,'Ensure actions as another user are always logged.','sudo provides users with temporary elevated privileges to perform operations, either as the superuser or another user.','Creating an audit log of users with temporary elevated privileges and the operation(s) they performed is essential to reporting. Administrators will want to correlate the events written to the audit trail with the records written to sudo's logfile to verify if unauthorized commands have been executed.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor elevated privileges. 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -C euid!=uid -F auid!=unset -S execve -k user_emulation -a always,exit -F arch=b32 -C euid!=uid -F auid!=unset -S execve -k user_emulation " >> /etc/audit/rules.d/50-user_emulation.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64. Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.2\"]}, {\"cis_csc_v7\": [\"4.9\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28599,'Ensure events that modify date and time information are collected.','Capture events where the system date and/or time has been modified. The parameters in this section are set to determine if the; adjtimex - tune kernel clock settimeofday - set time using timeval and timezone structures stime - using seconds since 1/1/1970 clock_settime - allows for the setting of several internal clocks and timers system calls have been executed. Further, ensure to write an audit record to the configured audit log file upon exit, tagging the records with a unique identifier such as "time-change".','Unexpected changes in system date and/or time could be a sign of malicious activity on the system.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify date and time information. 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k timechange -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime -k timechange -w /etc/localtime -p wa -k time-change " >> /etc/audit/rules.d/50-time-change.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64. In addition, add stime to the system call audit. Example: -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime,stime -k time-change Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.4\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28600,'Ensure events that modify the system's network environment are collected.','Record changes to network environment files or system calls. The below parameters monitors the following system calls, and write an audit event on system call exit: sethostname - set the systems host name setdomainname - set the systems domain name The files being monitored are: -/etc/issue and /etc/issue.net - messages displayed pre-login /etc/hosts - file containing host names and associated IP addresses - /etc/networks - symbolic names for networks - /etc/network/ - directory containing network interface scripts and configurations files.','Monitoring sethostname and setdomainname will identify potential unauthorized changes to host and domainname of a system. The changing of these names could potentially break security parameters that are set based on those names. The /etc/hosts file is monitored for changes that can indicate an unauthorized intruder is trying to change machine associations with IP addresses and trick users and processes into connecting to unintended machines. Monitoring /etc/issue and /etc/issue.net is important, as intruders could put disinformation into those files and trick users into providing information to the intruder. Monitoring /etc/network is important as it can show if network interfaces or scripts are being modified in a way that can lead to the machine becoming unavailable or compromised. All audit records should have a relevant tag associated with them.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the system's network environment. 64 Bit systems Example: # printf "-a always,exit -F arch=b64 -S sethostname,setdomainname -k system-locale -a always,exit -F arch=b32 -S sethostname,setdomainname -k system-locale -w /etc/issue -p wa -k system-locale -w /etc/issue.net -p wa -k system-locale -w /etc/hosts -p wa -k system-locale -w /etc/networks -p wa -k system-locale -w /etc/network/ -p wa -k system-locale" >> /etc/audit/rules.d/50-system_local.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28601,'Ensure events that modify user/group information are collected.','Record events affecting the modification of user or group information, including that of passwords and old passwords if in use. /etc/group - system groups /etc/passwd - system users /etc/gshadow - encrypted password for each group /etc/shadow - system user passwords /etc/security/opasswd - storage of old passwords if the relevant PAM module is in use The parameters in this section will watch the files to see if they have been opened for write or have had attribute changes (e.g. permissions) and tag them with the identifier "identity" in the audit log file.','Unexpected changes to these files could be an indication that the system has been compromised and that an unauthorized user is attempting to hide their activities or compromise additional accounts.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify user/group information. Example: # printf " -w /etc/group -p wa -k identity -w /etc/passwd -p wa -k identity -w /etc/gshadow -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/security/opasswd -p wa -k identity " >> /etc/audit/rules.d/50-identity.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi.','[{\"cis\": [\"4.1.3.8\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28602,'Ensure session initiation information is collected.','Monitor session initiation events. The parameters in this section track changes to the files associated with session events. /var/run/utmp - tracks all currently logged in users. /var/log/wtmp - file tracks logins, logouts, shutdown, and reboot events. /var/log/btmp - keeps track of failed login attempts and can be read by entering the command /usr/bin/last -f /var/log/btmp. All audit records will be tagged with the identifier "session.".','Monitoring these files for changes could alert a system administrator to logins occurring at unusual hours, which could indicate intruder activity (i.e. a user logging in at a time when they do not normally log in).','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor session initiation information. Example: # printf " -w /var/run/utmp -p wa -k session -w /var/log/wtmp -p wa -k session -w /var/log/btmp -p wa -k session " >> /etc/audit/rules.d/50-session.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.11\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28603,'Ensure login and logout events are collected.','Monitor login and logout events. The parameters below track changes to files associated with login/logout events. /var/log/lastlog - maintain records of the last time a user successfully logged in. /var/run/faillock - directory maintains records of login failures via the pam_faillock module.','Monitoring login/logout events could provide a system administrator with information associated with brute force attacks against user logins.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor login and logout events. Example: # printf " -w /var/log/lastlog -p wa -k logins -w /var/run/faillock -p wa -k logins " >> /etc/audit/rules.d/50-login.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi. Additional Information: Potential reboot required If the auditing configuration is locked (-e 2), then augenrules will not warn in any way that rules could not be loaded into the running configuration. A system reboot will be required to load the rules into the running configuration. System call structure For performance (man 7 audit.rules) reasons it is preferable to have all the system calls on one line. However, your configuration may have them on one line each or some other combination. This is important to understand for both the auditing and remediation sections as the examples given are optimized for performance as per the man page.','[{\"cis\": [\"4.1.3.12\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.11\", \"16.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28604,'Ensure events that modify the system's Mandatory Access Controls are collected.','Monitor AppArmor, an implementation of mandatory access controls. The parameters below monitor any write access (potential additional, deletion or modification of files in the directory) or attribute changes to the /etc/apparmor/ and /etc/apparmor.d/ directories. Note: If a different Mandatory Access Control method is used, changes to the corresponding directories should be audited.','Rationale: Changes to files in the /etc/apparmor/ and /etc/apparmor.d/ directories could indicate that an unauthorized user is attempting to modify access controls and change security contexts, leading to a compromise of the system.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the system's Mandatory Access Controls. Example: # printf " -w /etc/apparmor/ -p wa -k MAC-policy -w /etc/apparmor.d/ -p wa -k MAC-policy " >> /etc/audit/rules.d/50-MAC-policy.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi','[{\"cis\": [\"4.1.3.14\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28605,'Ensure the audit configuration is immutable.','Set system audit so that audit rules cannot be modified with auditctl . Setting the flag "-e 2" forces audit to be put in immutable mode. Audit changes can only be made on system reboot. Note: This setting will require the system to be rebooted to update the active auditd configuration settings.','In immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. Users would most likely notice a system reboot and that could alert administrators of an attempt to make unauthorized audit changes.','','Edit or create the file /etc/audit/rules.d/99-finalize.rules and add the line -e 2 at the end of the file: Example: # printf -- "-e 2 " >> /etc/audit/rules.d/99-finalize.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules "; fi Additional Information: NIST SP 800-53 Rev. 5: AC-3 AU-3 AU-3(1) MP-2','[{\"cis\": [\"4.1.3.20\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28606,'Ensure only authorized groups are assigned ownership of audit log files.','Audit log files contain information about the system and system activity.','Access to audit records can reveal system and configuration data to attackers, potentially compromising its confidentiality.','','Run the following command to configure the audit log files to be owned by adm group: # find $(dirname $(awk -F"=" '/^s*log_files*=s*/ {print $2}' /etc/audit/auditd.conf | xargs)) -type f ( ! -group adm -a ! -group root ) -exec chgrp adm {} + Run the following command to configure the audit log files to be owned by the adm group: # chgrp adm /var/log/audit/ Run the following command to set the log_group parameter in the audit configuration file to log_group = adm: # sed -ri 's/^s*#?s*log_groups*=s*S+(s*#.*)?.*$/log_group = adm1/' /etc/audit/auditd.conf Run the following command to restart the audit daemon to reload the configuration file: # systemctl restart auditd','[{\"cis\": [\"4.1.4.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28607,'Ensure audit configuration files are 640 or more restrictive.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to remove more permissive mode than 0640 from the audit configuration files: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) -exec chmod u-x,g-wx,o-rwx {} +','[{\"cis\": [\"4.1.4.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28608,'Ensure audit configuration files are owned by root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change ownership to root user: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -user root -exec chown root {} +','[{\"cis\": [\"4.1.4.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28609,'Ensure audit configuration files belong to group root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change group to root: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -group root -exec chgrp root {} +','[{\"cis\": [\"4.1.4.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28610,'Ensure audit tools are 755 or more restrictive.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules','[{\"cis\": [\"4.1.4.8\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28611,'Ensure audit tools are owned by root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to change the owner of the audit tools to the root user: # chown root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules','[{\"cis\": [\"4.1.4.9\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28612,'Ensure audit tools belong to group root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules Run the following command to change owner and group of the audit tools to root user and group: # chown root:root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules','[{\"cis\": [\"4.1.4.10\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28613,'Ensure cryptographic mechanisms are used to protect the integrity of audit tools.','Audit 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.','Protecting the integrity of the tools used for auditing purposes is a critical step toward ensuring the integrity of audit information. Audit information includes all information (e.g., audit records, audit settings, and audit reports) needed to successfully audit information system activity. Attackers may replace the audit tools or inject code into the existing tools with the purpose of providing the capability to hide or erase system activity from the audit logs. Audit tools should be cryptographically signed in order to provide the capability to identify when the audit tools have been modified, manipulated, or replaced. An example is a checksum hash of the file or files.','','Add or update the following selection lines for "/etc/aide/aide.conf" to protect the integrity of the audit tools: # Audit Tools /sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512 /sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512','[{\"cis\": [\"4.1.4.11\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28614,'Ensure systemd-journal-remote is installed.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralised log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to install systemd-journal-remote: # apt install systemd-journal-remote','[{\"cis\": [\"4.2.1.1.1\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28615,'Ensure journald is not configured to recieve logs from a remote client.','Journald supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts. NOTE: The same package, systemd-journal-remote, is used for both sending logs to remote hosts and receiving incoming logs. With regards to receiving logs, there are two services; systemd-journalremote.socket and systemd-journal-remote.service.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Run the following command to disable systemd-journal-remote.socket: # systemctl --now disable systemd-journal-remote.socket','[{\"cis\": [\"4.2.1.1.4\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28616,'Ensure journald service is enabled.','Ensure that the systemd-journald service is enabled to allow capturing of logging events.','If the systemd-journald service is not enabled to start on boot, the system will not capture logging events.','','By default the systemd-journald service does not have an [Install] section and thus cannot be enabled / disabled. It is meant to be referenced as Requires or Wants by other unit files. As such, if the status of systemd-journald is not static, investigate why.','[{\"cis\": [\"4.2.1.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28617,'Ensure journald is configured to compress large log files.','The journald system includes the capability of compressing overly large files to avoid filling up the system with logs or making the logs unmanageably large.','Uncompressed large files may unexpectedly fill a filesystem leading to resource unavailability. Compressing logs prior to write can prevent sudden, unexpected filesystem impacts.','','Edit the /etc/systemd/journald.conf file and add the following line: Compress=yes Restart the service: # systemctl restart systemd-journald Additional Information: The main configuration file /etc/systemd/journald.conf is read before any of the custom *.conf files. If there are custom configs present, they override the main configuration parameters. It is possible to change the default threshold of 512 bytes per object before compression is used.','[{\"cis\": [\"4.2.1.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.4\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}]'),(28618,'Ensure journald is configured to write logfiles to persistent disk.','Data from journald may be stored in volatile memory or persisted locally on the server. Logs in memory will be lost upon a system reboot. By persisting logs to local disk on the server they are protected from loss due to a reboot.','Writing log data to disk will provide the ability to forensically reconstruct events which may have impacted the operations or security of a system even after a system crash or reboot.','','Edit the /etc/systemd/journald.conf file and add the following line: Storage=persistent Restart the service: # systemctl restart systemd-journald Additional Information: The main configuration file /etc/systemd/journald.conf is read before any of the custom *.conf files. If there are custom configs present, they override the main configuration parameters.','[{\"cis\": [\"4.2.1.4\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28619,'Ensure journald is not configured to send logs to rsyslog.','Data from journald should be kept in the confines of the service and not forwarded on to other services.','IF journald is the method for capturing logs, all logs of the system should be handled by journald and not forwarded to other logging mechanisms.','','Edit the /etc/systemd/journald.conf file and ensure that ForwardToSyslog=yes is removed. Restart the service: # systemctl restart systemd-journald','[{\"cis\": [\"4.2.1.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}, {\"pci_dss_3.2.1\": [\"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}]'),(28620,'Ensure rsyslog is installed.','The rsyslog software is recommended in environments where journald does not meet operation requirements.','The security enhancements of rsyslog such as connection-oriented (i.e. TCP) transmission of logs, the option to log to database formats, and the encryption of log data en route to a central logging server) justify installing and configuring the package.','','Run the following command to install rsyslog: # apt install rsyslog.','[{\"cis\": [\"4.2.2.1\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1005\", \"T1070\", \"T1070.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28621,'Ensure rsyslog service is enabled.','Once the rsyslog package is installed, ensure that the service is enabled.','If the rsyslog service is not enabled to start on boot, the system will not capture logging events.','','Run the following command to enable rsyslog: # systemctl --now enable rsyslog','[{\"cis\": [\"4.2.2.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28622,'Ensure journald is configured to send logs to rsyslog.','Data from journald may be stored in volatile memory or persisted locally on the server. Utilities exist to accept remote export of journald logs, however, use of the RSyslog service provides a consistent means of log collection and export.','IF RSyslog is the preferred method for capturing logs, all logs of the system should be sent to it for further processing.','','Edit the /etc/systemd/journald.conf file and add the following line: ForwardToSyslog=yes Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"pci_dss_3.2.1\": [\"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}]'),(28623,'Ensure rsyslog default file permissions are configured.','RSyslog will create logfiles that do not already exist on the system. This setting controls what permissions will be applied to these newly created files.','It is important to ensure that log files have the correct permissions to ensure that sensitive data is archived and protected.','The systems global umask could override, but only making the file permissions stricter, what is configured in RSyslog with the FileCreateMode directive. RSyslog also has it's own $umask directive that can alter the intended file creation mode. In addition, consideration should be given to how FileCreateMode is used. Thus it is critical to ensure that the intended file creation mode is not overridden with less restrictive settings in /etc/rsyslog.conf, /etc/rsyslog.d/*conf files and that FileCreateMode is set before any file is created.','Edit either /etc/rsyslog.conf or a dedicated .conf file in /etc/rsyslog.d/ and set $FileCreateMode to 0640 or more restrictive: $FileCreateMode 0640 Restart the service: # systemctl restart rsyslog','[{\"cis\": [\"4.2.2.4\"]}, {\"cis_csc_v7\": [\"5.1\", \"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28624,'Ensure rsyslog is not configured to receive logs from a remote client.','RSyslog supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Should there be any active log server configuration found in the auditing section, modify those file and remove the specific lines highlighted by the audit. Ensure none of the following entries are present in any of /etc/rsyslog.conf or /etc/rsyslog.d/*.conf. Old format $ModLoad imtcp $InputTCPServerRun New format module(load="imtcp") input(type="imtcp" port="514") Restart the service: # systemctl restart rsyslog','[{\"cis\": [\"4.2.2.7\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28625,'Ensure cron daemon is enabled and running.','The cron daemon is used to execute batch jobs on the system. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','While there may not be user jobs that need to be run on the system, the system does have maintenance jobs that may include security monitoring that have to run, and cron is used to execute them.','','Run the following command to enable and start cron: # systemctl --now enable cron','[{\"cis\": [\"5.1.1\"]}, {\"mitre_techniques\": [\"T1562\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(28626,'Ensure permissions on /etc/crontab are configured.','The /etc/crontab file is used by cron to control its own jobs. The commands in this item make sure that root is the user and group owner of the file and that only the owner can access the file. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','This file contains information on what system jobs are run by cron. Write access to these files could provide unprivileged users with the ability to elevate their privileges. Read access to these files could provide users with the ability to gain insight on system jobs that run on the system and could provide them a way to gain unauthorized privileged access.','','Run the following commands to set ownership and permissions on /etc/crontab : # chown root:root /etc/crontab # chmod og-rwx /etc/crontab','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28627,'Ensure permissions on /etc/cron.hourly are configured.','This directory contains system cron jobs that need to run on an hourly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.hourly directory: # chown root:root /etc/cron.hourly/ # chmod og-rwx /etc/cron.hourly','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28628,'Ensure permissions on /etc/cron.daily are configured.','The /etc/cron.daily directory contains system cron jobs that need to run on a daily basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.daily directory: # chown root:root /etc/cron.daily/ # chmod og-rwx /etc/cron.daily/','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28629,'Ensure permissions on /etc/cron.weekly are configured.','The /etc/cron.weekly directory contains system cron jobs that need to run on a weekly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.weekly directory: # chown root:root /etc/cron.weekly/ # chmod og-rwx /etc/cron.weekly/','[{\"cis\": [\"5.1.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28630,'Ensure permissions on /etc/cron.monthly are configured.','The /etc/cron.monthly directory contains system cron jobs that need to run on a monthly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.monthly directory: # chown root:root /etc/cron.monthly/ # chmod og-rwx /etc/cron.monthly/','[{\"cis\": [\"5.1.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28631,'Ensure permissions on /etc/cron.d are configured.','The /etc/cron.d directory contains system cron jobs that need to run in a similar manner to the hourly, daily weekly and monthly jobs from /etc/crontab, but require more granular control as to when they run. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.d directory: # chown root:root /etc/cron.d/ # chmod og-rwx /etc/cron.d/','[{\"cis\": [\"5.1.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28632,'Ensure cron is restricted to authorized users.','Configure /etc/cron.allow to allow specific users to use this service. If /etc/cron.allow does not exist, then /etc/cron.deny is checked. Any user not specifically defined in this file is allowed to use cron. By removing the file, only users in /etc/cron.allow are allowed to use cron. Note: - Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy - Even though a given user is not listed in cron.allow, cron jobs can still be run as that user - The cron.allow file only controls administrative access to the crontab command for scheduling and modifying cron jobs.','On many systems, only the system administrator is authorized to schedule cron jobs. Using the cron.allow file to control who can run cron jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/cron.deny: # rm /etc/cron.deny Run the following command to create /etc/cron.allow # touch /etc/cron.allow Run the following commands to set permissions and ownership for /etc/cron.allow: # chmod g-wx,o-rwx /etc/cron.allow # chown root:root /etc/cron.allow.','[{\"cis\": [\"5.1.8\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28633,'Ensure at is restricted to authorized users.','Configure /etc/cron.allow to allow specific users to use this service. If /etc/cron.allow does not exist, then /etc/cron.deny is checked. Any user not specifically defined in this file is allowed to use cron. By removing the file, only users in /etc/cron.allow are allowed to use cron. Note: - Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy. - Even though a given user is not listed in cron.allow, cron jobs can still be run as that user. - The cron.allow file only controls administrative access to the crontab command for scheduling and modifying cron job.','On many systems, only the system administrator is authorized to schedule at jobs. Using the at.allow file to control who can run at jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/at.deny: # rm /etc/at.deny Run the following command to create /etc/at.allow # touch /etc/at.allow Run the following commands to set permissions and ownership for /etc/at.allow: # chmod g-wx,o-rwx /etc/at.allow # chown root:root /etc/at.allow.','[{\"cis\": [\"5.1.9\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28634,'Ensure permissions on /etc/ssh/sshd_config are configured.','The /etc/ssh/sshd_config file contains configuration specifications for sshd. The command below sets the owner and group of the file to root.','The /etc/ssh/sshd_config file needs to be protected from unauthorized changes by non-privileged users.','','Run the following commands to set ownership and permissions on /etc/ssh/sshd_config: # chown root:root /etc/ssh/sshd_config # chmod og-rwx /etc/ssh/sshd_config.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1098\", \"T1098.004\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28635,'Ensure SSH access is limited.','There are several options available to limit which users and group can access the system via SSH. It is recommended that at least one of the following options be leveraged: - AllowUsers: > The AllowUsers variable gives the system administrator the option of allowing specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by only allowing the allowed users to log in from a particular host, the entry can be specified in the form of user@host. - AllowGroups: > The AllowGroups variable gives the system administrator the option of allowing specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable. - DenyUsers: > The DenyUsers variable gives the system administrator the option of denying specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by specifically denying a user's access from a particular host, the entry can be specified in the form of user@host. - DenyGroups: > The DenyGroups variable gives the system administrator the option of denying specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable.','Restricting which users can remotely access the system via SSH will help ensure that only authorized users access the system.','','Edit the /etc/ssh/sshd_config file or a included configuration file to set one or more of the parameter as follows: AllowUsers <userlist> OR AllowGroups <grouplist> OR DenyUsers <userlist> OR DenyGroups <grouplist>','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1018\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28636,'Ensure SSH LogLevel is appropriate.','INFO level is the basic level that only records login activity of SSH users. In many situations, such as Incident Response, it is important to determine when a particular user was active on a system. The logout record can eliminate those users who disconnected, which helps narrow the field. VERBOSE level specifies that login and logout activity as well as the key fingerprint for any SSH key used for login will be logged. This information is important for SSH key management, especially in legacy environments.','SSH provides several logging levels with varying amounts of verbosity. DEBUG is specifically not recommended other than strictly for debugging SSH communications since it provides so much data that it is difficult to identify important security information.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LogLevel VERBOSE OR LogLevel INFO','[{\"cis\": [\"5.2.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}]'),(28637,'Ensure SSH PAM is enabled.','The UsePAM directive enables the Pluggable Authentication Module (PAM) interface. If set to yes this will enable PAM authentication using ChallengeResponseAuthentication and PasswordAuthentication directives in addition to PAM account and session module processing for all authentication types.','When usePAM is set to yes, PAM runs through account and session types properly. This is important if you want to restrict access to services based off of IP, time or other factors of the account. Additionally, you can make sure users inherit certain environment variables on login or disallow access to the server.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: UsePAM yes','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1035\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28638,'Ensure SSH root login is disabled.','The PermitRootLogin parameter specifies if the root user can log in using SSH. The default is prohibit-password.','Disallowing root logins over SSH requires system admins to authenticate using their own individual account, then escalating to root. This limits opportunity for non-repudiation and provides a clear audit trail in the event of a security incident.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitRootLogin no','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28639,'Ensure SSH HostbasedAuthentication is disabled.','The HostbasedAuthentication parameter specifies if authentication is allowed through trusted hosts via the user of .rhosts, or /etc/hosts.equiv, along with successful public key client host authentication.','Even though the .rhosts files are ineffective if support is disabled in /etc/pam.conf, disabling the ability to use .rhosts files in SSH provides an additional layer of protection.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: HostbasedAuthentication no','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28640,'Ensure SSH PermitEmptyPasswords is disabled.','The PermitEmptyPasswords parameter specifies if the SSH server allows login to accounts with empty password strings.','Disallowing remote shell access to accounts that have an empty password reduces the probability of unauthorized access to the system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitEmptyPasswords no','[{\"cis\": [\"5.2.9\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28641,'Ensure SSH PermitUserEnvironment is disabled.','The PermitUserEnvironment option allows users to present environment options to the SSH daemon.','Permitting users the ability to set environment variables through the SSH daemon could potentially allow users to bypass security controls (e.g. setting an execution path that has SSH executing trojan'd programs).','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitUserEnvironment no','[{\"cis\": [\"5.2.10\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28642,'Ensure SSH IgnoreRhosts is enabled.','The IgnoreRhosts parameter specifies that .rhosts and .shosts files will not be used in RhostsRSAAuthentication or HostbasedAuthentication.','Setting this parameter forces users to enter a password when authenticating with SSH.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: IgnoreRhosts yes','[{\"cis\": [\"5.2.11\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28643,'Ensure SSH X11 forwarding is disabled.','The X11Forwarding parameter provides the ability to tunnel X11 traffic through the connection to enable remote graphic connections.','Disable X11 forwarding unless there is an operational requirement to use X11 applications directly. There is a small risk that the remote X11 servers of users who are logged in via SSH with X11 forwarding could be compromised by other users on the X11 server. Note that even if X11 forwarding is disabled, users can always install their own forwarders.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: X11Forwarding no','[{\"cis\": [\"5.2.12\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"mitre_techniques\": [\"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(28644,'Ensure only strong Ciphers are used.','This variable limits the ciphers that SSH can use during communication. Note: - Some organizations may have stricter requirements for approved ciphers. - Ensure that ciphers used are in compliance with site policy. - The only "strong" ciphers currently FIPS 140-2 compliant are: > aes256-ctr > aes192-ctr > aes128-ctr - Supported ciphers in openSSH 8.2: 3des-cbc aes128-cbc aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr aes128-gcm@openssh.com aes256-gcm@openssh.com chacha20-poly1305@openssh.com.','Weak ciphers that are used for authentication to the cryptographic module cannot be relied upon to provide confidentiality or integrity, and system data may be compromised. - The Triple DES ciphers, as used in SSH, have a birthday bound of approximately four billion blocks, which makes it easier for remote attackers to obtain clear text data via a birthday attack against a long-duration encrypted session, aka a "Sweet32" attack. - Error handling in the SSH protocol; Client and Server, when using a block cipher algorithm in Cipher Block Chaining (CBC) mode, makes it easier for remote attackers to recover certain plain text data from an arbitrary block of cipher text in an SSH session via unknown vectors.','','Edit the /etc/ssh/sshd_config file add/modify the Ciphers line to contain a comma separated list of the site approved ciphers. Example: Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128- gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr','[{\"cis\": [\"5.2.13\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}]'),(28645,'Ensure only strong MAC algorithms are used.','This variable limits the types of MAC algorithms that SSH can use during communication. Note: - Some organizations may have stricter requirements for approved MACs. - Ensure that MACs used are in compliance with site policy. - The only "strong" MACs currently FIPS 140-2 approved are: > hmac-sha2-256 > hmac-sha2-512 - The Supported MACs are: hmac-md5 hmac-md5-96 hmac-sha1 hmac-sha1-96 hmac-sha2-256 hmac-sha2-512 umac-64@openssh.com umac-128@openssh.com hmac-md5-etm@openssh.com hmac-md5-96-etm@openssh.com hmac-sha1-etm@openssh.com hmac-sha1-96-etm@openssh.com hmac-sha2-256-etm@openssh.com hmac-sha2-512-etm@openssh.com umac-64-etm@openssh.com umac-128-etm@openssh.com.','MD5 and 96-bit MAC algorithms are considered weak and have been shown to increase exploitability in SSH downgrade attacks. Weak algorithms continue to have a great deal of attention as a weak spot that can be exploited with expanded computing power. An attacker that breaks the algorithm could take advantage of a MiTM position to decrypt the SSH tunnel and capture credentials and information.','','Edit the /etc/ssh/sshd_config file and add/modify the MACs line to contain a comma separated list of the site approved MACs. Example: MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256','[{\"cis\": [\"5.2.14\"]}, {\"cis_csc_v7\": [\"14.4\", \"16.5\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}]'),(28646,'Ensure only strong Key Exchange algorithms are used.','Key exchange is any method in cryptography by which cryptographic keys are exchanged between two parties, allowing use of a cryptographic algorithm. If the sender and receiver wish to exchange encrypted messages, each must be equipped to encrypt messages to be sent and decrypt messages received. Notes: - Kex algorithms have a higher preference the earlier they appear in the list - Some organizations may have stricter requirements for approved Key exchange algorithms - Ensure that Key exchange algorithms used are in compliance with site policy - The only Key Exchange Algorithms currently FIPS 140-2 approved are: > ecdh-sha2-nistp256 > ecdh-sha2-nistp384 > ecdh-sha2-nistp521 > diffie-hellman-group-exchange-sha256 > diffie-hellman-group16-sha512 > diffie-hellman-group18-sha512 > diffie-hellman-group14-sha256 - The Key Exchange algorithms supported by OpenSSH 8.2 are: curve25519-sha256 curve25519-sha256@libssh.org diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group14-sha256 diffie-hellman-group16-sha512 diffie-hellman-group18-sha512 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 sntrup4591761x25519-sha512@tinyssh.org.','Key exchange methods that are considered weak should be removed. A key exchange method may be weak because too few bits are used, or the hashing algorithm is considered too weak. Using weak algorithms could expose connections to man-in-the-middle attacks.','','Edit the /etc/ssh/sshd_config file add/modify the KexAlgorithms line to contain a comma separated list of the site approved key exchange algorithms Example: KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256','[{\"cis\": [\"5.2.15\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}]'),(28647,'Ensure SSH AllowTcpForwarding is disabled.','SSH port forwarding is a mechanism in SSH for tunneling application ports from the client to the server, or servers to clients. It can be used for adding encryption to legacy applications, going through firewalls, and some system administrators and IT professionals use it for opening backdoors into the internal network from their home machines.','Leaving port forwarding enabled can expose the organization to security risks and backdoors. SSH connections are protected with strong encryption. This makes their contents invisible to most deployed network monitoring and traffic filtering solutions. This invisibility carries considerable risk potential if it is used for malicious purposes such as data exfiltration. Cybercriminals or malware could exploit SSH to hide their unauthorized communications, or to exfiltrate stolen data from the target network.','SSH tunnels are widely used in many corporate environments. In some environments the applications themselves may have very limited native support for security. By utilizing tunneling, compliance with SOX, HIPAA, PCI-DSS, and other standards can be achieved without having to modify the applications.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: AllowTcpForwarding no','[{\"cis\": [\"5.2.16\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1048\", \"T1048.002\", \"T1572\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28648,'Ensure SSH warning banner is configured.','The Banner parameter specifies a file whose contents must be sent to the remote user before authentication is permitted. By default, no banner is displayed.','Banners are used to warn connecting users of the particular site's policy regarding connection. Presenting a warning message prior to the normal user login may assist the prosecution of trespassers on the computer system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: Banner /etc/issue.net','[{\"cis\": [\"5.2.17\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1035\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28649,'Ensure SSH MaxAuthTries is set to 4 or less.','The MaxAuthTries parameter specifies the maximum number of authentication attempts permitted per connection. When the login failure count reaches half the number, error messages will be written to the syslog file detailing the login failure.','Setting the MaxAuthTries parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. While the recommended setting is 4, set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxAuthTries 4','[{\"cis\": [\"5.2.18\"]}, {\"cis_csc_v7\": [\"16.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28650,'Ensure SSH MaxStartups is configured.','The MaxStartups parameter specifies the maximum number of concurrent unauthenticated connections to the SSH daemon.','To protect a system from denial of service due to a large number of pending authentication connection attempts, use the rate limiting function of MaxStartups to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxStartups 10:30:60','[{\"cis\": [\"5.2.19\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28651,'Ensure SSH MaxSessions is set to 10 or less.','The MaxSessions parameter specifies the maximum number of open sessions permitted from a given connection.','To protect a system from denial of service due to a large number of concurrent sessions, use the rate limiting function of MaxSessions to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxSessions 10','[{\"cis\": [\"5.2.20\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(28652,'Ensure SSH LoginGraceTime is set to one minute or less.','The LoginGraceTime parameter specifies the time allowed for successful authentication to the SSH server. The longer the Grace period is the more open unauthenticated connections can exist. Like other session controls in this session the Grace Period should be limited to appropriate organizational limits to ensure the service is available for needed access.','Setting the LoginGraceTime parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. It will also limit the number of concurrent unauthenticated connections. While the recommended setting is 60 seconds (1 Minute), set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LoginGraceTime 60','[{\"cis\": [\"5.2.21\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\", \"T1110.004\", \"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(28653,'Ensure SSH Idle Timeout Interval is configured.','NOTE: To clarify, the two settings described below is only meant for idle connections from a protocol perspective and not meant to check if the user is active or not. An idle user does not mean an idle connection. SSH does not and never had, intentionally, the capability to drop idle users. In SSH versions before 8.2p1 there was a bug that caused these values to behave in such a manner that they where abused to disconnect idle users. This bug has been resolved in 8.2p1 and thus it can no longer be abused disconnect idle users. The two options ClientAliveInterval and ClientAliveCountMax control the timeout of SSH sessions. Taken directly from man 5 sshd_config: - ClientAliveInterval Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client. - ClientAliveCountMax Sets the number of client alive messages which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session. It is important to note that the use of client alive messages is very different from TCPKeepAlive. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option enabled by TCPKeepAlive is spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become unresponsive. The default value is 3. If ClientAliveInterval is set to 15, and ClientAliveCountMax is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds. Setting a zero ClientAliveCountMax disables connection termination.','In order to prevent resource exhaustion, appropriate values should be set for both ClientAliveInterval and ClientAliveCountMax. Specifically, looking at the source code, ClientAliveCountMax must be greater than zero in order to utilize the ability of SSH to drop idle connections. If connections are allowed to stay open indefinately, this can potentially be used as a DDOS attack or simple resource exhaustion could occur over unreliable networks. The example set here is a 45 second timeout. Consult your site policy for network timeouts and apply as appropriate.','','Edit the /etc/ssh/sshd_config file to set the parameters according to site policy. Example: ClientAliveInterval 15 ClientAliveCountMax 3','[{\"cis\": [\"5.2.22\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(28654,'Ensure sudo is installed.','sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.','sudo supports a plug-in architecture for security policies and input/output logging. Third parties can develop and distribute their own policy and I/O logging plug-ins to work seamlessly with the sudo front end. The default security policy is sudoers, which is configured via the file /etc/sudoers and any entries in /etc/sudoers.d. The security policy determines what privileges, if any, a user has to run sudo. The policy may require that users authenticate themselves with a password or another authentication mechanism. If authentication is required, sudo will exit if the user's password is not entered within a configurable time limit. This limit is policy-specific.','','First determine is LDAP functionality is required. If so, then install sudo-ldap, else install  sudo. Example: # apt install sudo','[{\"cis\": [\"5.3.1\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28655,'Ensure sudo commands use pty.','sudo can be configured to run only from a pseudo terminal (pseudo-pty).','Attackers can run a malicious program using sudo which would fork a background process that remains even when the main program has finished executing.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers with visudo or a file in /etc/sudoers.d/ with visudo -f <PATH TO FILE> and add the following line: Defaults use_pty','[{\"cis\": [\"5.3.2\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28656,'Ensure sudo log file exists.','sudo can use a custom log file.','A sudo log file simplifies auditing of sudo commands.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers or a file in /etc/sudoers.d/ with visudo or visudo -f <PATH TO FILE> and add the following line: Example: Defaults logfile='/var/log/sudo.log'','[{\"cis\": [\"5.3.3\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}]'),(28657,'Ensure users must provide password for privilege escalation.','The operating system must be configured so that users must provide a password for privilege escalation.','Without (re-)authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user (re-)authenticate.','This will prevent automated processes from being able to elevate privileges.','Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any line with occurrences of NOPASSWD tags in the file.','[{\"cis\": [\"5.3.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28658,'Ensure re-authentication for privilege escalation is not disabled globally.','The operating system must be configured so that users must re-authenticate for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','','Configure the operating system to require users to reauthenticate for privilege escalation. Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any occurrences of !authenticate tags in the file(s).','[{\"cis\": [\"5.3.5\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28659,'Ensure sudo authentication timeout is configured correctly.','sudo caches used credentials for a default of 15 minutes. This is for ease of use when there are multiple administrative tasks to perform. The timeout can be modified to suit local security policies. This default is distribution specific. See audit section for further information.','Setting a timeout value reduces the window of opportunity for unauthorized privileged access to another user.','','If the currently configured timeout is larger than 15 minutes, edit the file listed in the audit section with visudo -f <PATH TO FILE> and modify the entry timestamp_timeout= to 15 minutes or less as per your site policy. The value is in minutes. This particular entry may appear on its own, or on the same line as env_reset. See the following two examples:  Defaults env_reset, timestamp_timeout=15 Defaults timestamp_timeout=15 Defaults env_reset','[{\"cis\": [\"5.3.6\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}]'),(28660,'Ensure access to the su command is restricted.','The su command allows a user to run a command or shell as another user. The program has been superseded by sudo, which allows for more granular control over privileged access. Normally, the su command can be executed by any user. By uncommenting the pam_wheel.so statement in /etc/pam.d/su, the su command will only allow users in a specific groups to execute su. This group should be empty to reinforce the use of sudo for privileged access.','Restricting the use of su , and using sudo in its place, provides system administrators better control of the escalation of user privileges to execute privileged commands. The sudo utility also provides a better logging and audit mechanism, as it can log each command executed via sudo , whereas su can only record that a user executed the su program.','','Create an empty group that will be specified for use of the su command. The group should be named according to site policy. Example: # groupadd sugroup Add the following line to the /etc/pam.d/su file, specifying the empty group: auth required pam_wheel.so use_uid group=sugroup','[{\"cis\": [\"5.3.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28661,'Ensure password creation requirements are configured.','The pam_pwquality.so module checks the strength of passwords. It performs checks such as making sure a password is not a dictionary word, it is a certain length, contains a mix of characters (e.g. alphabet, numeric, other) and more. The following options are set in the /etc/security/pwquality.conf file: - Password Length: > minlen = 14 - password must be 14 characters or more - Password complexity: > minclass = 4 - The minimum number of required classes of characters for the new password (digits, uppercase, lowercase, others) OR > dcredit = -1 - provide at least one digit > ucredit = -1 - provide at least one uppercase character > ocredit = -1 - provide at least one special character > lcredit = -1 - provide at least one lowercase character.','Strong passwords protect systems from being hacked through brute force methods.','','The following setting is a recommend example policy. Alter these values to conform to your own organization's password policies. Run the following command to install the pam_pwquality module: # apt install libpam-pwquality Edit the file /etc/security/pwquality.conf and add or modify the following line for password length to conform to site policy: minlen = 14 Edit the file /etc/security/pwquality.conf and add or modify the following line for password complexity to conform to site policy: Option 1: minclass = 4 Option 2: dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1','[{\"cis\": [\"5.4.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28662,'Ensure lockout for failed password attempts is configured.','Lock out users after n unsuccessful consecutive login attempts. The first sets of changes are made to the common PAM configuration files. The second set of changes are applied to the program specific PAM configuration file. The second set of changes must be applied to each program that will lock out users. Check the documentation for each secondary program for instructions on how to configure them to work with PAM. All configuration of faillock is located in /etc/security/faillock.conf and well commented. - deny - Deny access if the number of consecutive authentication failures for this user during the recent interval exceeds n tries. - fail_interval - The length of the interval, in seconds, during which the consecutive authentication failures must happen for the user account to be locked out - unlock_time - The access will be re-enabled after n seconds after the lock out. The value 0 has the same meaning as value never - the access will not be re-enabled without resetting the faillock entries by the faillock command. Set the lockout number and unlock time in accordance with local site policy.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','It is critical to test and validate any PAM changes before deploying. Any misconfiguration could cause the system to be inaccessible.','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Common auth Edit /etc/pam.d/common-auth and ensure that faillock is configured. Note: It is critical to understand each line and the relevant arguments for successful implementation. The order of these entries is very specific. The pam_faillock.so lines surround the pam_unix.so line. The comment "Added to enable faillock" is shown to highlight the additional lines and their order in the file. # here are the per-package modules (the "Primary" block) auth required pam_faillock.so preauth # Added to enable faillock auth [success=1 default=ignore] pam_unix.so nullok auth [default=die] pam_faillock.so authfail # Added to enable faillock auth sufficient pam_faillock.so authsucc # Added to enable faillock # here's the fallback if no module succeeds auth requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_cap.so # end of pam-auth-update config Common account Edit /etc/pam.d/common-account and ensure that the following stanza is at the end of the file. account required pam_faillock.so Fail lock configuration Edit /etc/security/faillock.conf and configure it per your site policy. Example: deny = 4 fail_interval = 900 unlock time = 600','[{\"cis\": [\"5.4.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"pci_dss_3.2.1\": [\"8.1.3\"]}, {\"pci_dss_4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}]'),(28663,'Ensure password reuse is limited.','The /etc/security/opasswd file stores the users' old passwords and can be checked to ensure that users are not recycling recent passwords.','Forcing users not to reuse their past 5 passwords make it less likely that an attacker will be able to guess the password.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Edit the /etc/pam.d/common-password file to include the remember option and conform to site policy as shown: password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt remember=5','[{\"cis\": [\"5.4.3\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28664,'Ensure password hashing algorithm is up to date with the latest standards.','The commands below change password encryption to yescrypt. All existing accounts will need to perform a password change to upgrade the stored hashes to the new algorithm.','The yescrypt algorithm provides much stronger hashing than previous available algorithms, thus providing additional protection to the system by increasing the level of effort for an attacker to successfully determine passwords. Note: these change only apply to accounts configured on the local system.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. PAM: Edit the /etc/pam.d/common-password file and ensure that no hashing algorithm option for pam_unix.so is set: password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass remember=5. Login definitions: Edit /etc/login.defs and ensure that ENCRYPT_METHOD is set to yescrypt.','[{\"cis\": [\"5.4.4\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1110\", \"T1110.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28665,'Ensure minimum days between password changes is configured.','The PASS_MIN_DAYS parameter in /etc/login.defs allows an administrator to prevent users from changing their password until a minimum number of days have passed since the last time the user changed their password. It is recommended that PASS_MIN_DAYS parameter be set to 1 or more days.','By restricting the frequency of password changes, an administrator can prevent users from repeatedly changing their password in an attempt to circumvent password reuse controls.','','Set the PASS_MIN_DAYS parameter to 1 in /etc/login.defs : PASS_MIN_DAYS 1 Modify user parameters for all users with a password set to match: # chage --mindays 1 <user>','[{\"cis\": [\"5.5.1.1\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28666,'Ensure password expiration is 365 days or less.','The PASS_MAX_DAYS parameter in /etc/login.defs allows an administrator to force passwords to expire once they reach a defined age.','The window of opportunity for an attacker to leverage compromised credentials or successfully compromise credentials via an online brute force attack is limited by the age of the password. Therefore, reducing the maximum age of a password also reduces an attacker's window of opportunity. It is recommended that the PASS_MAX_DAYS parameter does not exceed 365 days and is greater than the value of PASS_MIN_DAYS.','','Set the PASS_MAX_DAYS parameter to conform to site policy in /etc/login.defs : PASS_MAX_DAYS 365 Modify user parameters for all users with a password set to match: # chage --maxdays 365 <user>','[{\"cis\": [\"5.5.1.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1110.004\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28667,'Ensure password expiration warning days is 7 or more.','The PASS_WARN_AGE parameter in /etc/login.defs allows an administrator to notify users that their password will expire in a defined number of days. It is recommended that the PASS_WARN_AGE parameter be set to 7 or more days.','Providing an advance warning that a password will be expiring gives users time to think of a secure password. Users caught unaware may choose a simple password or write it down where it may be discovered.','','Set the PASS_WARN_AGE parameter to 7 in /etc/login.defs : PASS_WARN_AGE 7 Modify user parameters for all users with a password set to match: # chage --warndays 7 <user>','[{\"cis\": [\"5.5.1.3\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28668,'Ensure inactive password lock is 30 days or less.','User accounts that have been inactive for over a given period of time can be automatically disabled. It is recommended that accounts that are inactive for 30 days after password expiration be disabled.','Inactive accounts pose a threat to system security since the users are not logging in to notice failed login attempts or other anomalies.','','Run the following command to set the default password inactivity period to 30 days: # useradd -D -f 30 Modify user parameters for all users with a password set to match: # chage --inactive 30 <user>','[{\"cis\": [\"5.5.1.4\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28669,'Ensure default group for the root account is GID 0.','The usermod command can be used to specify which group the root user belongs to. This affects permissions of files that are created by the root user.','Using GID 0 for the root account helps prevent root -owned files from accidentally becoming accessible to non-privileged users.','','Run the following command to set the root user default group to GID 0 : # usermod -g 0 root','[{\"cis\": [\"5.5.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28670,'Ensure permissions on /etc/passwd are configured.','The /etc/passwd file contains user account information that is used by many system utilities and therefore must be readable for these utilities to operate.','It is critical to ensure that the /etc/passwd file is protected from unauthorized write access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following command to set permissions on /etc/passwd: # chown root:root /etc/passwd # chmod u-x,go-wx /etc/passwd','[{\"cis\": [\"6.1.1\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28671,'Ensure permissions on /etc/passwd- are configured.','The /etc/passwd- file contains backup user account information.','It is critical to ensure that the /etc/passwd- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following command to set permissions on /etc/passwd- : # chown root:root /etc/passwd- # chmod u-x,go-wx /etc/passwd-','[{\"cis\": [\"6.1.2\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28672,'Ensure permissions on /etc/group are configured.','The /etc/group file contains a list of all the valid groups defined in the system. The command below allows read/write access for root and read access for everyone else.','The /etc/group file needs to be protected from unauthorized changes by non-privileged users, but needs to be readable as this information is used with many non-privileged programs.','','Run the following command to set permissions on /etc/group : # chown root:root /etc/group # chmod u-x,go-wx /etc/group','[{\"cis\": [\"6.1.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28673,'Ensure permissions on /etc/group- are configured.','The /etc/group- file contains a backup list of all the valid groups defined in the system.','It is critical to ensure that the /etc/group- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following command to set permissions on /etc/group- : # chown root:root /etc/group- # chmod u-x,go-wx /etc/group-','[{\"cis\": [\"6.1.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28674,'Ensure permissions on /etc/shadow are configured.','The /etc/shadow file is used to store the information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert the user accounts.','','Run one of the following commands to set ownership of /etc/shadow to root and group to either root or shadow: # chown root:root /etc/shadow # chown root:shadow /etc/shadow Run the following command to remove excess permissions form /etc/shadow: # chmod u-x,g-wx,o-rwx /etc/shadow','[{\"cis\": [\"6.1.5\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28675,'Ensure permissions on /etc/shadow- are configured.','The /etc/shadow- file is used to store backup information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/shadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/shadow- to root and group to either root or shadow: # chown root:root /etc/shadow- # chown root:shadow /etc/shadow Run the following command to remove excess permissions form /etc/shadow-: # chmod u-x,g-wx,o-rwx /etc/shadow-','[{\"cis\": [\"6.1.6\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28676,'Ensure permissions on /etc/gshadow are configured.','The /etc/gshadow file is used to store the information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/gshadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/gshadow file (such as group administrators) could also be useful to subvert the group.','','Run one of the following commands to set ownership of /etc/gshadow to root and group to either root or shadow: # chown root:root /etc/gshadow # chown root:shadow /etc/gshadow Run the following command to remove excess permissions form /etc/gshadow: # chmod u-x,g-wx,o-rwx /etc/gshadow','[{\"cis\": [\"6.1.7\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28677,'Ensure permissions on /etc/gshadow- are configured.','The /etc/gshadow- file is used to store backup information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/gshadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/gshadow- to root and group to either root or shadow: # chown root:root /etc/gshadow- # chown root:shadow /etc/gshadowRun the following command to remove excess permissions form /etc/gshadow-: # chmod u-x,g-wx,o-rwx /etc/gshadow-','[{\"cis\": [\"6.1.8\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28678,'Ensure accounts in /etc/passwd use shadowed passwords.','Local accounts can uses shadowed passwords. With shadowed passwords, The passwords are saved in shadow password file, /etc/shadow, encrypted by a salted oneway hash. Accounts with a shadowed password have an x in the second field in /etc/passwd.','The /etc/passwd file also contains information like user ID's and group ID's that are used by many system programs. Therefore, the /etc/passwd file must remain world readable. In spite of encoding the password with a randomly-generated one-way hash function, an attacker could still break the system if they got access to the /etc/passwd file. This can be mitigated by using shadowed passwords, thus moving the passwords in the /etc/passwd file to /etc/shadow. The /etc/shadow file is set so only root will be able to read and write. This helps mitigate the risk of an attacker gaining access to the encoded passwords with which to perform a dictionary attack. Note: All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user. A user account with an empty second field in /etc/passwd allows the account to be logged into by providing only the username.','','Run the following command to set accounts to use shadowed passwords: # sed -e 's/^([a-zA-Z0-9_]*):[^:]*:/1:x:/' -i /etc/passwd Investigate to determine if the account is logged in and what it is being used for, to determine if it needs to be forced off.','[{\"cis\": [\"6.2.1\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28679,'Ensure /etc/shadow password fields are not empty.','An account with an empty password field means that anybody may log in as that user without providing a password.','All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user.','','If any accounts in the /etc/shadow file do not have a password, run the following command to lock the account until it can be determined why it does not have a password: # passwd -l <username> Also, check to see if the account is logged in and investigate what it is being used for to determine if it needs to be forced off.','[{\"cis\": [\"6.2.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(28680,'Ensure shadow group is empty.','The shadow group allows system programs which require access the ability to read the /etc/shadow file. No users should be assigned to the shadow group.','Any users assigned to the shadow group would be granted read access to the /etc/shadow file. If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed passwords to break them. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert additional user accounts.','','Run the following command to remove all users from the shadow group # sed -ri 's/(^shadow:[^:]*:[^:]*:)([^:]+$)/1/' /etc/group Change the primary group of any users with shadow as their primary group. # usermod -g <primary group> <user>','[{\"cis\": [\"6.2.4\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(28681,'Ensure root is the only UID 0 account.','Any account with UID 0 has superuser privileges on the system.','This access must be limited to only the default root account and only from the system console. Administrative access must be through an unprivileged account using an approved mechanism as noted in Item 5.6 Ensure access to the su command is restricted.','','Remove any users other than root with UID 0 or assign them a new UID if appropriate.','[{\"cis\": [\"6.2.10\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29000,'Ensure All Apple-provided Software Is Current.','Software vendors release security patches and software updates for their products when security vulnerabilities are discovered. There is no simple way to complete this action without a network connection to an Apple software repository. Please ensure appropriate access for this control. This check is only for what Apple provides through software update.','It is important that these updates be applied in a timely manner to prevent unauthorized persons from exploiting the identified vulnerabilities.','','1. In Terminal, run the following command to verify what packages need to be installed: sudo softwareupdate -l. 2.1. In Terminal, run the following command to install all the packages that need to be updated: sudo software -i -a -R. 2.2. In Terminal, run the following for any packages that show up in step 1: sudo softwareupdate -i packagename'','[{\"cis\": [\"1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29001,'Ensure Auto Update Is Enabled.','Auto Update verifies that your system has the newest security patches and software updates. If "Automatically check for updates" is not selected background updates for new malware definition files from Apple for XProtect and Gatekeeper will not occur.','It is important that a system has the newest updates applied so as to prevent unauthorized persons from exploiting identified vulnerabilities.','','Open a terminal session and enter the following command to enable the auto update feature: sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true','[{\"cis\": [\"1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29002,'Ensure Download New Updates When Available is Enabled.','In the GUI both "Install macOS updates" and "Install app updates from the App Store" are dependent on whether "Download new updates when available" is selected.','It is important that a system has the newest updates downloaded so that they can be applied.','','Open a terminal session and enter the following command to enable the auto update feature: sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool true','[{\"cis\": [\"1.3\"]}, {\"cis_level\": [\"1\"]}]'),(29003,'Ensure Installation of App Update Is Enabled.','Ensure that application updates are installed after they are available from Apple. These updates do not require reboots or admin privileges for end users.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','','Open a terminal session and enter the following command to enable the auto update feature: sudo defaults write /Library/Preferences/com.apple.commerce AutoUpdate -bool TRUE','[{\"cis\": [\"1.4\"]}, {\"cis_level\": [\"1\"]}]'),(29004,'Ensure System Data Files and Security Updates Are Downloaded Automatically Is Enabled.','Ensure that system and security updates are installed after they are available from Apple. This setting enables definition updates for XProtect and Gatekeeper. With this setting in place new malware and adware that Apple has added to the list of malware or untrusted software will not execute. These updates do not require reboots or end user admin rights.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','','Open a terminal session and enter the following command to enable install system data files and security updates: sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate ConfigDataInstall -bool true && sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CriticalUpdateInstall -bool true','[{\"cis\": [\"1.5\"]}, {\"cis_level\": [\"1\"]}]'),(29005,'Ensure Install of macOS Updates Is Enabled.','Ensure that macOS updates are installed after they are available from Apple. This setting enables macOS updates to be automatically installed. Some environments will want to approve and test updates before they are delivered. It is best practice to test first where updates can and have caused disruptions to operations. Automatic updates should be turned off where changes are tightly controlled and there are mature testing and approval processes. Automatic updates should not be turned off so the admin can call the users first to let them know it's ok to install. A dependable, repeatable process involving a patch agent or remote management tool should be in place before auto-updates are turned off.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','','Run the following command to to enable automatic checking and installing of macOS updates: sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates -bool TRUE','[{\"cis\": [\"1.6\"]}, {\"cis_level\": [\"1\"]}]'),(29006,'Ensure Bluetooth Is Disabled If No Devices Are Paired.','Bluetooth devices use a wireless communications system that replaces the cables used by other peripherals to connect to a system. It is by design a peer-to-peer network technology and typically lacks centralized administration and security enforcement infrastructure.','Bluetooth is particularly susceptible to a diverse set of security vulnerabilities involving identity detection, location tracking, denial of service, unintended control and access of data and voice channels, and unauthorized device control and data access.','','Open a terminal session and enter the following command to disable bluetooth: sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0 && sudo killall -HUP bluetoothd','[{\"cis\": [\"2.1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29007,'Ensure Show Bluetooth Status in Menu Bar Is Enabled.','By showing the Bluetooth status in the menu bar, a small Bluetooth icon is placed in the menu bar. This icon quickly shows the status of Bluetooth, and can allow the user to quickly turn Bluetooth on or off.','Enabling "Show Bluetooth status in menu bar" is a security awareness method that helps understand the current state of Bluetooth, including whether it is enabled, discoverable, what paired devices exist, and what paired devices are currently active.','','For each user, run the following command to enable Bluetooth status in the menu bar: sudo -u <username> defaults -currentHost write com.apple.controlcenter.plist Bluetooth -int 18','[{\"cis\": [\"2.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29008,'Ensure "Set time and date automatically" Is Enabled','Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features.','','Run the following commands: sudo systemsetup -setnetworktimeserver <timeserver> sudo systemsetup -setusingnetworktime on. Run the following commands if you have not set, or need to set, a new time zone: sudo /usr/sbin/systemsetup -listtimezones sudo /usr/sbin/systemsetup -settimezone <selected time zone>','[{\"cis\": [\"2.2.1\"]}, {\"cis_level\": [\"1\"]}]'),(29009,'Ensure time set is within appropriate limits.','Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. Ensure that time on the computer is within acceptable limits. Truly accurate time is measured within milliseconds. For this audit, a drift under four and a half minutes passes the control check. Since Kerberos is one of the important features of macOS integration into Directory systems the guidance here is to warn you before there could be an impact to operations. From the perspective of accurate time, this check is not strict, so it may be too great for your organization. Your organization can adjust to a smaller offset value as needed. Note: ntpdate has been deprecated with 10.14. sntp replaces that command. NOTE: set the correct network time server in the rules.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features. Audit check is for more than 4 minutes and 30 seconds ahead or behind.','','Run the following commands to ensure your time is set within an appropriate limit: sudo systemsetup -getnetworktimeserver -> Get the time server name and then run: sudo touch /var/db/ntp-kod && sudo chown root:wheel /var/db/ntp-kod && sudo sntp -sS <YOUR-TIME-SERVER> ','[{\"cis\": [\"2.2.2\"]}, {\"cis_level\": [\"1\"]}]'),(29010,'Ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled.','A locking screensaver is one of the standard security controls to limit access to a computer and the current user's session when the computer is temporarily unused or unattended. In macOS the screensaver starts after a value selected in a drop down menu, 10 minutes and 20 minutes are both options and either is acceptable. Any value can be selected through the command line or script but a number that is not reflected in the GUI can be problematic. 20 minutes is the default for new accounts.','Setting an inactivity interval for the screensaver prevents unauthorized persons from viewing a system left unattended for an extensive period of time.','','Run the following command to verify that the idle time of the screen saver to 20 minutes or less (≤1200):  $ sudo -u <username> /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int <value ≤1200>. If there are multiple users out of compliance with the prescribed setting, run this command for each user to set their idle time:  $ sudo -u <username> /usr/bin/defaults -currentHost write com.apple.screensaver idleTime -int <value ≤1200>. Note: Issues arise if the command line is used to make the setting something other than what is available in the GUI Menu. Choose either 1 (60), 2 (120), 5 (300), 10 (600), or 20 (120) minutes to avoid any issues. Profile Method: 1. Create or edit a configuration profile with the PayLoadType of com.apple.screensaver.user 2. Add the key idleTime 3. Set the key to <integer><≤1200></integer> ','[{\"cis\": [\"2.3.1\"]}, {\"cis_level\": [\"1\"]}]'),(29011,'Ensure Screen Saver Corners Are Secure.','Hot Corners can be configured to disable the screen saver by moving the mouse cursor to a corner of the screen.','Setting a hot corner to disable the screen saver poses a potential security risk since an unauthorized person could use this to bypass the login screen and gain access to the system.','','Run the following command to turn off Disable Screen Saver for a Hot Corner: sudo -u <username> defaults write com.apple.dock <corner that is set to '6'> -int 0 ','[{\"cis\": [\"2.3.2\"]}, {\"cis_level\": [\"2\"]}]'),(29012,'Ensure Remote Apple Events Is Disabled.','Apple Events is a technology that allows one program to communicate with other programs. Remote Apple Events allows a program on one computer to communicate with a program on a different computer.','Disabling Remote Apple Events mitigates the risk of an unauthorized program gaining access to the system.','','Run the following command in Terminal: sudo systemsetup -setremoteappleevents off','[{\"cis\": [\"2.4.1\"]}, {\"cis_level\": [\"1\"]}]'),(29013,'Ensure Internet Sharing Is Disabled','Internet Sharing uses the open source natd process to share an internet connection with other computers and devices on a local network. This allows the Mac to function as a router and share the connection to other, possibly unauthorized, devices.','Disabling Internet Sharing reduces the remote attack surface of the system.','','Run the following command to turn off Internet Sharing: sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict Enabled -int 0','[{\"cis\": [\"2.4.2\"]}, {\"cis_level\": [\"1\"]}]'),(29014,'Ensure Screen Sharing Is Disabled.','Screen Sharing allows a computer to connect to another computer on a network and display the computer’s screen. While sharing the computer’s screen, the user can control what happens on that computer, such as opening documents or applications, opening, moving, or closing windows, and even shutting down the computer.','Disabling Screen Sharing mitigates the risk of remote connections being made without the user of the console knowing that they are sharing the computer.','','Run the following command to turn off Screen Sharing: sudo launchctl disable system/com.apple.screensharing','[{\"cis\": [\"2.4.3\"]}, {\"cis_level\": [\"1\"]}]'),(29015,'Ensure Printer Sharing Is Disabled.','By enabling Printer Sharing the computer is set up as a print server to accept print jobs from other computers. Dedicated print servers or direct IP printing should be used instead.','Disabling Printer Sharing mitigates the risk of attackers attempting to exploit the print server to gain access to the system.','','Run the following command in Terminal: sudo cupsctl --no-share-printers','[{\"cis\": [\"2.4.4\"]}, {\"cis_level\": [\"1\"]}]'),(29016,'Ensure Remote Login Is Disabled.','Remote Login allows an interactive terminal connection to a computer.','Disabling Remote Login mitigates the risk of an unauthorized person gaining access to the system via Secure Shell (SSH). While SSH is an industry standard to connect to posix servers, the scope of the benchmark is for Apple macOS clients, not servers. macOS does have an IP based firewall available (pf, ipfw has been deprecated) that is not enabled or configured. There are more details and links in section 7.5. macOS no longer has TCP Wrappers support built-in and does not have strong Brute-Force password guessing mitigations, or frequent patching of openssh by Apple. Most macOS computers are mobile workstations, managing IP based firewall rules on mobile devices can be very resource intensive. All of these factors can be parts of running a hardened SSH server.','','Run the following command in Terminal: sudo systemsetup -setremotelogin off','[{\"cis\": [\"2.4.5\"]}, {\"cis_level\": [\"1\"]}]'),(29017,'Ensure DVD or CD Sharing Is Disabled.','DVD or CD Sharing allows users to remotely access the system's optical drive. While Apple does not ship Macs with built-in optical drives any longer, external optical drives are still recognized when they are connected. In testing the sharing of an external optical drive persists when a drive is reconnected.','Disabling DVD or CD Sharing minimizes the risk of an attacker using the optical drive as a vector for attack and exposure of sensitive data.','','Run the following command to disable DVD or CD sharing: sudo launchctl disable system/com.apple.ODSAgent ','[{\"cis\": [\"2.4.6\"]}, {\"cis_level\": [\"1\"]}]'),(29018,'Ensure Bluetooth Sharing Is Disabled.','Bluetooth Sharing allows files to be exchanged with Bluetooth enabled devices.','Disabling Bluetooth Sharing minimizes the risk of an attacker using Bluetooth to remotely attack the system.','','Run the following command to disable Bluetooth Sharing is disabled: sudo -u <username> /usr/bin/defaults -currentHost write com.apple.Bluetooth PrefKeyServicesEnabled -bool false','[{\"cis\": [\"2.4.7\"]}, {\"cis_level\": [\"1\"]}]'),(29019,'Ensure File Sharing Is Disabled.','Server Message Block (SMB), Common Internet File System (CIFS) When Windows (or possibly Linux) computers need to access file shared on a Mac, SMB/CIFS file sharing is commonly used. Apple warns that SMB sharing stores passwords is a less secure fashion than AFP sharing and anyone with system access can gain access to the password for that account. When sharing with SMB, each user that will access the Mac must have SMB enabled.','By disabling file sharing, the remote attack surface and risk of unauthorized access to files stored on the system is reduced.','','Run the following command to disable SMB file sharing: sudo launchctl disable system/com.apple.smbd ','[{\"cis\": [\"2.4.8\"]}, {\"cis_level\": [\"1\"]}]'),(29020,'Ensure Remote Management Is Disabled.','Remote Management is the client portion of Apple Remote Desktop (ARD). Remote Management can be used by remote administrators to view the current screen, install software, report on, and generally manage client Macs. The screen sharing options in Remote Management are identical to those in the Screen Sharing section. In fact, only one of the two can be configured. If Remote Management is used, refer to the Screen Sharing section above on issues regard screen sharing. Remote Management should only be enabled when a Directory is in place to manage the accounts with access. Computers will be available on port 5900 on a macOS System and could accept connections from untrusted hosts depending on the configuration, definitely a concern for mobile systems.','Remote Management should only be enabled on trusted networks with strong user controls present in a Directory system. Mobile devices without strict controls are vulnerable to exploit and monitoring.','','Run the following command to disable Remote Management: sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop','[{\"cis\": [\"2.4.9\"]}, {\"cis_level\": [\"1\"]}]'),(29021,'Ensure Content Caching Is Disabled.','Starting with 10.13 (macOS High Sierra) Apple introduced a service to make it easier to deploy data from Apple, including software updates, where there are bandwidth constraints to the Internet and fewer constraints and greater bandwidth on the local subnet. This capability can be very valuable for organizations that have throttled and possibly metered Internet connections. In heterogeneous enterprise networks with multiple subnets the effectiveness of this capability would be determined on how many Macs were on each subnet at the time new large updates were made available upstream. This capability requires the use of mac OS clients as P2P nodes for updated Apple content. Unless there is a business requirement to manage operational Internet connectivity bandwidth user endpoints should not store content and act as a cluster to provision data.','The main use case for Mac computers is as mobile user endpoints. P2P sharing services should not be enabled on laptops that are using untrusted networks. Content Caching can allow a computer to be a server for local nodes on an untrusted network. While there are certainly logical controls that could be used to mitigate risk they add to the management complexity, since the value of the service is in specific use cases organizations with the use case described above can accept risk as necessary.','','Run the following command to disable Content Caching:: sudo AssetCacheManagerUtil deactivate','[{\"cis\": [\"2.4.10\"]}, {\"cis_level\": [\"2\"]}]'),(29022,'Ensure AirDrop Is Disabled.','AirDrop is Apple's built-in on demand ad hoc file exchange system that is compatible with both macOS and iOS. It uses Bluetooth LE for discovery that limits connectivity to Mac or iOS users that are in close proximity. Depending on the setting it allows everyone or only Contacts to share files when they are nearby to each other. In many ways this technology is far superior to the alternatives. The file transfer is done over a TLS encrypted session, does not require any open ports that are required for file sharing, does not leave file copies on email servers or within cloud storage, and allows for the service to be mitigated so that only people already trusted and added to contacts can interact with you. While there are positives to AirDrop, there are privacy concerns that could expose personal information. For that reason, AirDrop should be disabled, and should only be enabled when needed and disabled afterwards.','AirDrop can allow malicious files to be downloaded from unknown sources. Contacts Only limits may expose personal information to devices in the same area.','','Run the following commands to disable AirDrop: sudo -u <username> defaults write com.apple.NetworkBrowser DisableAirDrop -bool true','[{\"cis\": [\"2.4.11\"]}, {\"cis_level\": [\"1\"]}]'),(29023,'Ensure Media Sharing Is Disabled.','Starting with macOS 10.15 Apple has provided a control to allow a user to share Apple downloaded content on all Apple devices that are signed in with the same Apple ID. This allows a user to share downloaded Movies, Music or TV shows with other controlled macOS, iOS and iPadOS devices as well as photos with Apple TVs. With this capability guest users can also use media downloaded on the computer. The recommended best practice is not to use the computer as a server but to utilize Apple's cloud storage to download and use content stored there if content stored with Apple is used on multiple devices.','Disabling Media Sharing reduces the remote attack surface of the system.','','Run the following command to disable Media Sharing: sudo -u <username> defaults write com.apple.amp.mediasharingd home-sharing-enabled -int 0','[{\"cis\": [\"2.4.12\"]}, {\"cis_level\": [\"2\"]}]'),(29024,'Ensure FileVault Is Enabled.','FileVault secures a system's data by automatically encrypting its boot volume and requiring a password or recovery key to access it. FileVault may also be enabled using command line using the fdesetup command. To use this functionality, consult the Der Flounder blog for more details (see references).','Encrypting sensitive data minimizes the likelihood of unauthorized users gaining access to it.','','Perform the following to enable FileVault: 1. Open System Preferences 2. Select Security & Privacy 3. Select FileVault 4. Select Turn on FileVault','[{\"cis\": [\"2.5.1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29025,'Ensure Gatekeeper is Enabled.','Gatekeeper is Apple's application allowlisting control that restricts downloaded applications from launching. It functions as a control to limit applications from unverified sources from running without authorization.','Disallowing unsigned software will reduce the risk of unauthorized or malicious applications from running on the system.','','Run the following command to enable Gatekeeper to allow applications from App Store and identified developers: sudo /usr/sbin/spctl --master-enable','[{\"cis\": [\"2.5.2.1\"]}, {\"cis_level\": [\"1\"]}]'),(29026,'Ensure Firewall Is Enabled.','A firewall is a piece of software that blocks unwanted incoming connections to a system. Apple has posted general documentation about the application firewall.','A firewall minimizes the threat of unauthorized users from gaining access to your system while connected to a network or the Internet.','','Run the following command to enable the firewall: sudo /usr/bin/defaults write /Library/Preferences/com.apple.alf globalstate -int <value> For the <value>, use either 1, specific services, or 2, essential services only.','[{\"cis\": [\"2.5.2.2\"]}, {\"cis_level\": [\"1\"]}]'),(29027,'Ensure Firewall Stealth Mode Is Enabled.','While in Stealth mode the computer will not respond to unsolicited probes, dropping that traffic.','Stealth mode on the firewall minimizes the threat of system discovery tools while connected to a network or the Internet.','','Run the following command to enable stealth mode: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on','[{\"cis\": [\"2.5.2.3\"]}, {\"cis_level\": [\"1\"]}]'),(29028,'Ensure Location Services Is Enabled.','macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. With the operating system verifying the location, users do not need to change the time or the time zone. The computer will change them based on the user's location. They do not need to specify their location for weather or travel times and even get alerts on travel times to meetings and appointment where location information is supplied. Location Services simplify some processes, for the purpose of asset management and time and log management, with mobile computers. There are some use cases where it is important that the computer not be able to report its exact location. While the general use case is to enable Location Services, it should not be allowed if the physical location of the computer and the user should not be public knowledge.','Location Services are helpful in most use cases and can simplify log and time management where computers change time zones.','','Run the following command to enable Location Services: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locationd.plist','[{\"cis\": [\"2.5.3\"]}, {\"cis_level\": [\"2\"]}]'),(29029,'Ensure Sending Diagnostic and Usage Data to Apple Is Disabled.','Apple provides a mechanism to send diagnostic and analytics data back to Apple to help them improve the platform. Information sent to Apple may contain internal organizational information that should be controlled and not available for processing by Apple. Turn off all Analytics and Improvements sharing. Share Mac Analytics (Share with App Developers dependent on Mac Analytic sharing) - Includes diagnostics, usage and location data. Share iCloud Analytics - Includes iCloud data and usage information.','Organizations should have knowledge of what is shared with the vendor and the setting automatically forwards information to Apple.','','Perform the following to disable diagnostic data being sent to Apple: sudo /usr/bin/defaults write /Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist AutoSubmit -bool false, sudo /bin/chmod 644 /Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist, sudo /usr/sbin/chgrp admin /Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist','[{\"cis\": [\"2.5.5\"]}, {\"cis_level\": [\"2\"]}]'),(29030,'Ensure Backup Up Automatically is Enabled.','Backup solutions are only effective if the backups run on a regular basis. The time to check for backups is before the hard drive fails or the computer goes missing. In order to simplify the user experience so that backups are more likely to occur Time Machine should be on and set to Back Up Automatically whenever the target volume is available. Operational staff should ensure that backups complete on a regular basis and the backups are tested to ensure that file restoration from backup is possible when needed. Backup dates are available even when the target volume is not available in the Time Machine plist. SnapshotDates = ( "2012-08-20 12:10:22 +0000", "2013-02-03 23:43:22 +0000", "2014-02-19 21:37:21 +0000", "2015-02-22 13:07:25 +0000", "2016-08-20 14:07:14 +0000" When the backup volume is connected to the computer more extensive information is available through tmutil. See man tmutil','Backups should automatically run whenever the backup drive is available.','','Run the following command to enable automatic backups if Time Machine is enabled: sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true','[{\"cis\": [\"2.7.1\"]}, {\"cis_level\": [\"2\"]}]'),(29031,'Ensure Wake for Network Access Is Disabled.','This feature allows the computer to take action when the user is not present and the computer is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. This macOS feature is meant to allow the computer to resume activity as needed regardless of physical security controls. This feature allows other users to be able to access your computer’s shared resources, such as shared printers or iTunes playlists, even when your computer is in sleep mode. In a closed network when only authorized devices could wake a computer it could be valuable to wake computers in order to do management push activity. Where mobile workstations and agents exist the device will more likely check in to receive updates when already awake. Mobile devices should not be listening for signals on any unmanaged network or where untrusted devices exist that could send wake signals.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access.','','Perform the following disable Wake for network access or Power Nap: Run the following command to disable Wake for network access: sudo pmset -a womp 0 ','[{\"cis\": [\"2.8\"]}, {\"cis_level\": [\"1\"]}]'),(29032,'Ensure Power Nap Is Disabled.','This feature allows the computer to take action when the user is not present and the computer is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. This macOS feature is meant to allow the computer to resume activity as needed regardless of physical security controls. Power Nap allows the system to stay in low power mode, especially while on battery power and periodically connect to previously named networks with stored credentials for user applications to phone home and get updates. This capability requires FileVault to remain unlocked and the use of previously joined networks to be risk accepted based on the SSID without user input. This control has been updated to check the status on both battery and AC Power. The presence of an electrical outlet does not completely correlate with logical and physical security of the device or available networks.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. The use of Power Nap adds to the risk of compromised physical and logical security. The user should be able to decrypt FileVault and have the applications download what is required when the computer is actively used. The control to prevent computer sleep has been retired for this version of the Benchmark. Forcing the computer to stay on and use energy in case a management push is needed is contrary to most current management processes. Only keep computers unslept if after hours pushes are required on closed LANs.','','Perform the following disable Wake for network access or Power Nap: sudo pmset -a powernap 0','[{\"cis\": [\"2.9\"]}, {\"cis_level\": [\"1\"]}]'),(29033,'Ensure Secure Keyboard Entry terminal.app is Enabled.','Secure Keyboard Entry prevents other applications on the system and/or network from detecting and recording what is typed into Terminal.','Enabling Secure Keyboard Entry minimizes the risk of a key logger from detecting what is entered in Terminal.','','Perform the following to enable secure keyboard entries in Terminal: sudo -u <username> /usr/bin/defaults write -app Terminal SecureKeyboardEntry -bool true','[{\"cis\": [\"2.10\"]}, {\"cis_level\": [\"1\"]}]'),(29034,'Ensure EFI Version Is Valid and Checked Regularly.','In order to mitigate firmware attacks Apple has created an automated Firmware check to ensure that the EFI version running is a known good version from Apple. There is also an automated process to check it every seven days.','If the Firmware of a computer has been compromised the Operating System that the Firmware loads cannot be trusted either.','','If EFI does not pass the integrity check you may send a report to Apple. Backing up files and clean installing a known good Operating System and Firmware is recommended.','[{\"cis\": [\"2.11\"]}, {\"cis_level\": [\"1\"]}]'),(29035,'Ensure Security Auditing Is Enabled.','macOS's audit facility, auditd, receives notifications from the kernel when certain system calls, such as open, fork, and exit, are made. These notifications are captured and written to an audit log.','Logs generated by auditd may be useful when investigating a security incident as they may help reveal the vulnerable application and the actions taken by a malicious actor.','','Run the following command to load auditd: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist','[{\"cis\": [\"3.1\"]}, {\"cis_level\": [\"1\"]}]'),(29036,'Ensure install.log Is Retained for 365 or More Days and No Maximum Size.','macOS writes information pertaining to system-related events to the file /var/log/install.log and has a configurable retention policy for this file. The default logging setting limits the file size of the logs and the maximum size for all logs. The default allows for an errant application to fill the log files and does not enforce sufficient log retention. The Benchmark recommends a value based on standard use cases. The value should align with local requirements within the organization. The default value has an "all_max" file limitation, no reference to a minimum retention and a less precise rotation argument. The all_max flag control will remove old log entries based only on the size of the log files. Log size can vary widely depending on how verbose installing applications are in their log entries. The decision here is to ensure that logs go back a year and depending on the applications a size restriction could compromise the ability to store a full year. While this Benchmark is not scoring for a rotation flag the default rotation is sequential rather than using a timestamp. Auditors may prefer timestamps in order to simply review specific dates where event information is desired. Please review the File Rotation section in the man page for more information. man asl.conf - The maximum file size limitation string should be removed "all_max=" - An organization appropriate retention should be added "ttl=" - The rotation should be set with timestamps "rotate=utc" or "rotate=local"','Archiving and retaining install.log for at least a year is beneficial in the event of an incident as it will allow the user to view the various changes to the system along with the date and time they occurred.','','Perform the following to ensure that install logs are retained for at least 365 days: Edit the /etc/asl/com.apple.install file and add or modify the ttl value to 365 or greater on the file line. Also, remove the all_max= setting and value from the file line.','[{\"cis\": [\"3.3\"]}, {\"cis_level\": [\"1\"]}]'),(29037,'Ensure Access to Audit Records Is Controlled.','The audit system on macOS writes important operational and security information that can be both useful for an attacker and a place for an attacker to attempt to obfuscate unwanted changes that were recorded. As part of defense-in-depth the /etc/security/audit_control configuration and the files in /var/audit should be owned only by root with group wheel with read-only rights and no other access allowed. macOS ACLs should not be used for these files.','Audit records should never be changed except by the system daemon posting events. Records may be viewed or extracts manipulated, but the authoritative files should be protected from unauthorized changes.','','Run the following to commands to set the audit records to the root user and wheel group: sudo chown -R root:wheel /etc/security/audit_control, sudo chmod -R o-rw /etc/security/audit_control, sudo chown -R root:wheel /var/audit/, sudo chmod -R o-rw /var/audit/ Note: It is recommended to do a thorough verification process on why the audit logs have been changed before following the remediation steps. If the system has different access controls on the audit logs, and the changes cannot be traced, a new install may be prudent. Check for signs of file tampering as well as unapproved OS changes.','[{\"cis\": [\"3.5\"]}, {\"cis_level\": [\"1\"]}]'),(29038,'Ensure Firewall Logging Is Enabled and Configured.','The socketfilter firewall is what is used when the firewall is turned on in the Security Preference Pane. In order to appropriately monitor what access is allowed and denied logging must be enabled. The logging level must be set to "detailed" to be useful in monitoring connection attempts that the firewall detects. Throttled login is not sufficient for examine firewall connection attempts.','In order to troubleshoot the successes and failures of a firewall, detailed logging should be enabled.','','Run the following command to enable logging of the firewall: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on.  sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingopt detail.','[{\"cis\": [\"3.6\"]}, {\"cis_level\": [\"1\"]}]'),(29039,'Ensure Bonjour Advertising Services Is Disabled.','Bonjour is an auto-discovery mechanism for TCP/IP devices which enumerate devices and services within a local subnet. DNS on macOS is integrated with Bonjour and should not be turned off, but the Bonjour advertising service can be disabled.','Bonjour can simplify device discovery from an internal rogue or compromised host. An attacker could use Bonjour's multicast DNS feature to discover a vulnerable or poorly- configured service or additional information to aid a targeted attack. Implementing this control disables the continuous broadcasting of "I'm here!" messages. Typical end-user endpoints should not have to advertise services to other computers. This setting does not stop the computer from sending out service discovery messages when looking for services on an internal subnet, if the computer is looking for a printer or server and using service discovery. To block all Bonjour traffic except to approved devices the pf or other firewall would be needed.','','Run the following command to disable Bonjour Advertising services: sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true','[{\"cis\": [\"4.1\"]}, {\"cis_level\": [\"2\"]}]'),(29040,'Ensure HTTP Server Is Disabled.','macOS used to have a graphical front-end to the embedded Apache web server in the Operating System. Personal web sharing could be enabled to allow someone on another computer to download files or information from the user's computer. Personal web sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. Apache however is still part of the Operating System and can be easily turned on to share files and provide remote connectivity to an end-user computer. Web sharing should only be done through hardened web servers and appropriate cloud services.','Web serving should not be done from a user desktop. Dedicated webservers or appropriate cloud storage should be used. Open ports make it easier to exploit the computer.','','Run the following command to disable the http server services: sudo launchctl disable system/org.apache.httpd','[{\"cis\": [\"4.4\"]}, {\"cis_level\": [\"1\"]}]'),(29041,'Ensure NFS Server Is Disabled.','macOS can act as an NFS fileserver. NFS sharing could be enabled to allow someone on another computer to mount shares and gain access to information from the user's computer. File sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. NFSD is still part of the Operating System and can be easily turned on to export shares and provide remote connectivity to an end-user computer.','File serving should not be done from a user desktop. Dedicated servers should be used. Open ports make it easier to exploit the computer.','','Run the following command to disable the nfsd fileserver services: sudo launchctl disable system/com.apple.nfsd. Remove the exported Directory listing:  sudo rm /etc/exports','[{\"cis\": [\"4.5\"]}, {\"cis_level\": [\"1\"]}]'),(29042,'Ensure System Integrity Protection Status (SIPS) Is Enabled.','System Integrity Protection is a security feature introduced in OS X 10.11 El Capitan. System Integrity Protection restricts access to System domain locations and restricts runtime attachment to system processes. Any attempt to inspect or attach to a system process will fail. Kernel Extensions are now restricted to /Library/Extensions and are required to be signed with a Developer ID.','Running without System Integrity Protection on a production system runs the risk of the modification of system binaries or code injection of system processes that would otherwise be protected by SIP.','','Perform the following to enable System Integrity Protection: 1. Reboot into the Recovery Partition (reboot and hold down Command (⌘) + R) 2. Select Utilities 3. Select Terminal 4. Run the following command: sudo /usr/bin/csrutil enable Successfully enabled System Integrity Protection. Please restart the machine for the changes to take effect. 5. Reboot the computer','[{\"cis\": [\"5.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29043,'Ensure Apple Mobile File Integrity Is Enabled.','Apple Mobile File Integrity was first released in macOS 10.12, the daemon and service block attempts to run unsigned code. AMFI uses lanchd, code signatures, certificates, entitlements, and provisioning profiles to create a filtered entitlement dictionary for an app. AMFI is the macOS kernel module that enforces code-signing and library validation.','Apple Mobile File Integrity (AMFI) validates that application code is validated.','','Run the following command to enable the Apple Mobile File Integrity service: sudo /usr/sbin/nvram boot-args=""','[{\"cis\": [\"5.1.3\"]}, {\"cis_level\": [\"1\"]}]'),(29044,'Ensure Library Validation Is Enabled.','Library Validation is a security feature introduced in macOS 10.10 Yosemite. Library Validation protects processes from loading arbitrary libraries. This stops root from loading arbitrary libraries into any process (depending on SIP status),and keeps root from becoming more powerful. Security is strengthened, because some user processes can no longer be fooled to run additional code without root's explicit request, which may grant access to daemons that depend on Library Validation for secure validation of code identity.','Running without Library Validation on a production system runs the risk of the modification of system binaries or code injection of system processes that would otherwise be protected by Library Validation.','','Run the following command to set library validation: sudo /usr/bin/defaults write /Library/Preferences/com.apple.security.libraryvalidation.plist DisableLibraryValidation -bool false','[{\"cis\": [\"5.1.4\"]}, {\"cis_level\": [\"1\"]}]'),(29045,'Ensure Sealed System Volume (SSV) Is Enabled.','Sealed System Volume is a security feature introduced in macOS 11.0 Big Sur. During system installation, a SHA-256 cryptographic hash is calculated for all immutable system files and stored in a Merkle tree which itself is hashed as the Seal. Both are stored in the metadata of the snapshot created of the System volume. The seal is verified by the boot loader at startup. macOS will not boot if system files have been tampered with. If validation fails, the user will be instructed to reinstall the operating system. During read operations for files located in the Sealed System Volume, a hash is calculated and compared to the value stored in the Merkle tree.','Running without Sealed System Volume on a production system could run the risk of Apple software, that integrates directly with macOS, being modified.','','Perform the following to enable System Integrity Protection: 1. Reboot into the Recovery Partition (reboot and hold down Command (⌘) + R) 2. Select an administrator's account and enter that account's password 3. Select Utilities 4. Select Terminal 5. Run the following command: sudo /usr/bin/csrutil enable authenticated-root 6. Reboot the computer.','[{\"cis\": [\"5.1.5\"]}, {\"cis_level\": [\"1\"]}]'),(29046,'Ensure Appropriate Permissions Are Enabled for System Wide Applications.','Applications in the System Applications Directory (/Applications) should be world executable since that is their reason to be on the system. They should not be world-writable and allow any process or user to alter them for other processes or users to then execute modified versions.','Unauthorized modifications of applications could lead to the execution of malicious code.','','Run the following command to change the permissions for each application that does not meet the requirements: sudo chmod -R o-w /Applications/<applicationname>','[{\"cis\": [\"5.1.6\"]}, {\"cis_level\": [\"1\"]}]'),(29047,'Ensure No World Writable Files Exist in the System Folder.','Software sometimes insists on being installed in the /System/Volumes/Data/SystemDirectory and have inappropriate world-writable permissions.','Folders in /System/Volumes/Data/System should not be world-writable. The audit check excludes the "Drop Box" folder that is part of Apple's default user template.','','Run the following command to set permissions so that folders are not world writable in the /System folder: sudo chmod -R o-w /Path/<baddirectory>','[{\"cis\": [\"5.1.7\"]}, {\"cis_level\": [\"1\"]}]'),(29048,'Ensure No World Writable Files Exist in the Library Folder.','Software sometimes insists on being installed in the /Library Directory and have inappropriate world-writable permissions.','Folders in /System/Volumes/Data/Library should not be world-writable. The audit check excludes the /System/Volumes/Data/Library/Caches and /System/Volumes/Data/Library/Preferences/Audio/Data folders where the sticky bit is set.','','Run the following command to set permissions so that folders are not world writable in the /System/Volumes/Data/Library folder: sudo /bin/chmod -R o-w /System/Volumes/Data/Library/<baddirectory>','[{\"cis\": [\"5.1.8\"]}, {\"cis_level\": [\"2\"]}]'),(29049,'Ensure the Sudo Timeout Period Is Set to Zero.','The sudo command allows the user to run programs as the root user. Working as the root user allows the user an extremely high level of configurability within the system. This control along with the control to use a separate timestamp for each tty limits the window where an unauthorized user, process or attacker could utilize legitimate credentials that are valid for longer than required.','The sudo command stays logged in as the root user for five minutes before timing out and re-requesting a password. This five-minute window should be eliminated since it leaves the system extremely vulnerable. This is especially true if an exploit were to gain access to the system, since they would be able to make changes as a root user.','','Run the following command to edit the sudo settings: sudo visudo. Add the line 'Defaults timestamp_timeout=0' in the Override built-in defaults section. ','[{\"cis\": [\"5.3\"]}, {\"cis_level\": [\"1\"]}]'),(29050,'Ensure a Separate Timestamp Is Enabled for Each User/tty Combo.','Using tty tickets ensures that a user must enter the sudo password in each Terminal session. With sudo versions 1.8 and higher, introduced in 10.12, the default value is to have tty tickets for each interface so that root access is limited to a specific terminal. The default configuration can be overwritten or not configured correctly on earlier versions of macOS.','In combination with removing the sudo timeout grace period, a further mitigation should be in place to reduce the possibility of a background process using elevated rights when a user elevates to root in an explicit context or tty. Additional mitigation should be in place to reduce the risk of privilege escalation of background processes.','','Edit the /etc/sudoers file with visudo and remove !tty_tickets from any Defaults line. If there is a Default line of timestamp_type= with a value other than tty, change the value to tty If there is a file in the /etc/sudoers.d/ folder that contains Defaults !tty_tickets, edit the file and remove !tty_tickets from any Defaults line. If there is a file /etc/sudoers.d/ folder that contains a Default line of timestamp_type= with a value other than tty, change the value to tty.','[{\"cis\": [\"5.4\"]}, {\"cis_level\": [\"1\"]}]'),(29051,'Ensure the "root" Account Is Disabled','The root account is a superuser account that has access privileges to perform any actions and read/write to any file on the computer. With some Linux distros the system administrator may commonly use the root account to perform administrative functions.','Enabling and using the root account puts the system at risk since any successful exploit or mistake while the root account is in use could have unlimited access privileges within the system. Using the sudo command allows users to perform functions as a root user while limiting and password protecting the access privileges. By default the root account is not enabled on a macOS computer. An administrator can escalate privileges using the sudo command (use -s or -i to get a root shell).','','Run the following command to disable the root user: sudo /usr/sbin/dsenableroot -d','[{\"cis\": [\"5.6\"]}, {\"cis_level\": [\"1\"]}]'),(29052,'Ensure Automatic Login Is Disabled.','The automatic login feature saves a user's system access credentials and bypasses the login screen. Instead, the system automatically loads to the user's desktop screen.','Disabling automatic login decreases the likelihood of an unauthorized person gaining access to a system.','','Run the following command to disable automatic login: sudo defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser','[{\"cis\": [\"5.7\"]}, {\"cis_level\": [\"1\"]}]'),(29053,'Require an administrator password to access system-wide preferences.','System Preferences controls system and user settings on a macOS Computer. System Preferences allows the user to tailor their experience on the computer as well as allowing the System Administrator to configure global security settings. Some of the settings should only be altered by the person responsible for the computer.','By requiring a password to unlock system-wide System Preferences the risk is mitigated of a user changing configurations that affect the entire system and requires an admin user to re-authenticate to make changes.','','The authorizationdb settings cannot be written to directly, so the plist must be exported out to temporary file. Changes can be made to the temporary plist, then imported back into the authorizationdb settings. Run the following commands to enable that an administrator password is required to access system-wide preferences: $ sudo security authorizationdb read system.preferences > /tmp/system.preferences.plist $ sudo defaults write /tmp/system.preferences.plist shared -bool false $ sudo security authorizationdb write system.preferences < /tmp/system.preferences.plist','[{\"cis\": [\"5.10\"]}, {\"cis_level\": [\"1\"]}]'),(29054,'Ensure an administrator account cannot login to another user's active and locked session.','macOS has a privilege that can be granted to any user that will allow that user to unlock active user's sessions.','Disabling the admins and/or user's ability to log into another user's active and locked session prevents unauthorized persons from viewing potentially sensitive and/or personal information.','','Run the following command to disable a user logging into another user's active and/or locked session: sudo security authorizationdb write system.login.screensaver use-login-window-ui','[{\"cis\": [\"5.11\"]}, {\"cis_level\": [\"1\"]}]'),(29055,'Ensure a Custom Message for the Login Screen Is Enabled.','An access warning informs the user that the system is reserved for authorized use only, and that the use of the system may be monitored.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','','Run the following command to enable a custom login screen message: sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "<custom.message>"','[{\"cis\": [\"5.12\"]}, {\"cis_level\": [\"1\"]}]'),(29056,'Ensure a Login Window Banner Exists.','A Login window banner warning informs the user that the system is reserved for authorized use only. It enforces an acknowledgment by the user that they have been informed of the use policy in the banner if required. The system recognizes either the .txt and the .rtf formats.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','','Edit (or create) a PolicyBanner.txt or PolicyBanner.rtf file, in the /Library/Security/ folder, to include the required login window banner text.','[{\"cis\": [\"5.13\"]}, {\"cis_level\": [\"2\"]}]'),(29057,'Ensure Fast User Switching Is Disabled.','Fast user switching allows a person to quickly log in to the computer with a different account. While only a minimal security risk, when a second user is logged in, that user might be able to see what processes the first user is using, or possibly gain other information about the first user. In a large directory environment where it is difficult to limit log in access many valid users can login to other user's assigned computers.','Fast user switching allows multiple users to run applications simultaneously at console. There can be information disclosed about processes running under a different user. Without a specific configuration to save data and log out users can have unsaved data running in a background session that is not obvious.','','Run the following command to turn fast user switching off: sudo /usr/bin/defaults write /Library/Preferences/.GlobalPreferences MultipleSessionEnabled -bool false','[{\"cis\": [\"5.15\"]}, {\"cis_level\": [\"2\"]}]'),(29058,'Ensure Login Window Displays as Name and Password Is Enabled.','The login window prompts a user for his/her credentials, verifies their authorization level and then allows or denies the user access to the system.','Prompting the user to enter both their username and password makes it twice as hard for unauthorized users to gain access to the system since they must discover two attributes.','','Run the following command to enable the login window to display name and password: sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true','[{\"cis\": [\"6.1.1\"]}, {\"cis_level\": [\"1\"]}]'),(29059,'Ensure Show Password Hints Is Disabled.','Password hints are user-created text displayed when an incorrect password is used for an account.','Password hints make it easier for unauthorized persons to gain access to systems by providing information to anyone that the user provided to assist in remembering the password. This info could include the password itself or other information that might be readily discerned with basic knowledge of the end user.','','Run the following command to disable password hints: sudo defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0','[{\"cis\": [\"6.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(29060,'Ensure Guest Account Is Disabled.','The guest account allows users access to the system without having to create an account or password. Guest users are unable to make setting changes cannot remotely login to the system. All files, caches, and passwords created by the guest user are deleted upon logging out.','Disabling the guest account mitigates the risk of an untrusted user doing basic reconnaissance and possibly using privilege escalation attacks to take control of the system.','','Run the following command to disable the guest account: sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false','[{\"cis\": [\"6.1.3\"]}, {\"cis_level\": [\"1\"]}]'),(29061,'Ensure Guest Access to Shared Folders Is Disabled.','Allowing guests to connect to shared folders enables users to access selected shared folders and their contents from different computers on a network.','Not allowing guests to connect to shared folders mitigates the risk of an untrusted user doing basic reconnaissance and possibly use privilege escalation attacks to take control of the system.','','Run the following commands to verify that shared folders are not accessible to guest users: sudo /usr/bin/defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server AllowGuestAccess -bool false','[{\"cis\": [\"6.1.4\"]}, {\"cis_level\": [\"1\"]}]'),(29062,'Ensure the Guest Home Folder Does Not Exist.','In the previous two controls the guest account login has been disabled and sharing to guests has been disabled as well. There is no need for the legacy Guest home folder to remain in the file system. When normal user accounts are removed you have the option to archive it, leave it in place or delete. In the case of the guest folder the folder remains in place without a GUI option to remove it. If at some point in the future a Guest account is needed it will be re-created. The presence of the Guest home folder can cause automated audits to fail when looking for compliant settings within all User folders as well. Rather than ignoring the folder's continued existence, it is best removed.','The Guest home folders are unneeded after the Guest account is disabled and could be used inappropriately.','','Run the following command to remove the Guest user home folder: sudo /bin/rm -R /Users/Guest','[{\"cis\": [\"6.1.5\"]}, {\"cis_level\": [\"1\"]}]'),(29063,'Ensure Show All Filename Extensions Setting is Enabled.','A filename extension is a suffix added to a base filename that indicates the base filename's file format.','Visible filename extensions allow the user to identify the file type and the application it is associated with which leads to quick identification of misrepresented malicious files.','','Run the following command to enable displaying of file extensions: sudo -u <username> /usr/bin/defaults write /Users/<username>/Library/Preferences/.GlobalPreferences.plist AppleShowAllExtensions -bool true','[{\"cis\": [\"6.2\"]}, {\"cis_level\": [\"1\"]}]'),(29064,'Ensure Automatic Opening of Safe Files in Safari Is Disabled.','Safari will automatically run or execute what it considers safe files. This can include installers and other files that execute on the operating system. Safari bases file safety by using a list of filetypes maintained by Apple. The list of files include text, image, video and archive formats that would be run in the context of the OS rather than the browser.','Hackers have taken advantage of this setting via drive-by attacks. These attacks occur when a user visits a legitimate website that has been corrupted. The user unknowingly downloads a malicious file either by closing an infected pop-up or hovering over a malicious banner. An attacker can create a malicious file that will fall within Safari's safe file list that will download and execute without user input.','','Run the following command to disable safe files from not opening in Safari: sudo -u <username> /usr/bin/defaults write /Users/<username>/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari AutoOpenSafeDownloads -bool false','[{\"cis\": [\"6.3\"]}, {\"cis_level\": [\"1\"]}]'),(29500,'Ensure /tmp is a separate partition.','The /tmp directory is a world-writable directory used for temporary storage by all users and some applications.','Making /tmp its own file system allows an administrator to set additional mount options such as the noexec option on the mount, making /tmp useless for an attacker to install executable code. It would also prevent an attacker from establishing a hard link to a system setuid program and wait for it to be updated. Once the program was updated, the hard link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw. This can be accomplished by either mounting tmpfs to /tmp, or creating a separate partition for /tmp.','Since the /tmp directory is intended to be world-writable, there is a risk of resource exhaustion if it is not bound to a separate partition. Running out of /tmp space is a problem regardless of what kind of filesystem lies under it, but in a configuration where /tmp is not a separate file system it will essentially have the whole disk available, as the default installation only creates a single / partition. On the other hand, a RAM-based /tmp (as with tmpfs) will almost certainly be much smaller, which can lead to applications filling up the filesystem much more easily. Another alternative is to create a dedicated partition for /tmp from a separate volume or disk. One of the downsides of a disk-based dedicated partition is that it will be slower than tmpfs which is RAM-based. /tmp utilizing tmpfs can be resized using the size={size} parameter in the relevant entry in /etc/fstab.','First ensure that systemd is correctly configured to ensure that /tmp will be mounted at boot time. # systemctl unmask tmp.mount. For specific configuration requirements of the /tmp mount for your environment, modify /etc/fstab or tmp.mount. Example of /etc/fstab configured tmpfs file system with specific mount options: tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime,size=2G 0 0. Example of tmp.mount configured tmpfs file system with specific mount options: [Unit] Description=Temporary Directory /tmp ConditionPathIsSymbolicLink=!/tmp DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target After=swap.target [Mount] What=tmpfs Where=/tmp Type=tmpfs.','[{\"cis\": [\"1.1.2.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29501,'Ensure nodev option set on /tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /tmp.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29502,'Ensure noexec option set on /tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /tmp.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29503,'Ensure nosuid option set on /tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /tmp.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /tmp partition. Example: <device> /tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /tmp with the configured options: # mount -o remount /tmp.','[{\"cis\": [\"1.1.2.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29504,'Ensure separate partition exists for /var.','The /var directory is used by daemons and other system services to temporarily store dynamic data. Some directories created by these processes may be world-writable.','The reasoning for mounting /var on a separate partition is as follow. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var and cause unintended behavior across the system as the disk is full. See man auditd.conf for details. - Fine grained control over the mount: Configuring /var as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behaviour. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection from exploitation: An example of exploiting /var may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hard-link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.3.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0006\"]}]'),(29505,'Ensure nodev option set on /var partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 . Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29506,'Ensure nosuid option set on /var partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var.','','IF the /var partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var partition. Example: <device> /var <fstype> defaults,rw,nosuid,nodev,relatime 0 0 . Run the following command to remount /var with the configured options: # mount -o remount /var.','[{\"cis\": [\"1.1.3.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29507,'Ensure separate partition exists for /var/tmp.','The /var/tmp directory is a world-writable directory used for temporary storage by all users and some applications. Temporary files residing in /var/tmp are to be preserved between reboots.','The reasoning for mounting /var/tmp on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var/tmp directory may contain world-writable files and directories, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/tmp and cause the potential disruption to daemons as the disk is full. - Fine grained control over the mount: Configuring /var/tmp as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection from exploitation: An example of exploiting /var/tmp may be an attacker establishing a hard-link to a system setuid program and wait for it to be updated. Once the program was updated, the hard-link would be broken and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/tmp. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.4.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29508,'Ensure noexec option set on /var/tmp partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot run executable binaries from /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29509,'Ensure nosuid option set on /var/tmp partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/tmp filesystem is only intended for temporary file storage, set this option to ensure that users cannot create setuid files in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29510,'Ensure nodev option set on /var/tmp partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/tmp filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/tmp.','','IF the /var/tmp partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/tmp partition. Example: <device> /var/tmp <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/tmp with the configured options: # mount -o remount /var/tmp.','[{\"cis\": [\"1.1.4.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29511,'Ensure separate partition exists for /var/log.','The /var/log directory is used by system services to store log data.','The reasoning for mounting /var/log on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var/log directory contains log files which can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. - Fine grained control over the mount: Configuring /var/log as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection of log data: As /var/log contains log files, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log . For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.5.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29512,'Ensure nodev option set on /var/log partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29513,'Ensure noexec option set on /var/log partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot run executable binaries from /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29514,'Ensure nosuid option set on /var/log partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log filesystem is only intended for log files, set this option to ensure that users cannot create setuid files in /var/log.','','IF the /var/log partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log partition. Example: <device> /var/log <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log with the configured options: # mount -o remount /var/log.','[{\"cis\": [\"1.1.5.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29515,'Ensure separate partition exists for /var/log/audit.','The auditing daemon, auditd, stores log data in the /var/log/audit directory.','The reasoning for mounting /var/log/audit on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /var/log/audit directory contains the audit.log file which can grow quite large, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /var/log/audit and cause auditd to trigger it's space_left_action as the disk is full. See man auditd.conf for details. - Fine grained control over the mount: Configuring /var/log/audit as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection of audit data: As /var/log/audit contains audit logs, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /var/log/audit. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.6.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29516,'Ensure noexec option set on /var/log/audit partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Since the /var/log/audit filesystem is only intended for audit logs, set this option to ensure that users cannot run executable binaries from /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /var partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29517,'Ensure nodev option set on /var/log/audit partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /var/log/audit filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29518,'Ensure nosuid option set on /var/log/audit partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /var/log/audit filesystem is only intended for variable files such as logs, set this option to ensure that users cannot create setuid files in /var/log/audit.','','IF the /var/log/audit partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /var/log/audit partition. Example: <device> /var/log/audit <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0 . Run the following command to remount /var/log/audit with the configured options: # mount -o remount /var/log/audit.','[{\"cis\": [\"1.1.6.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29519,'Ensure separate partition exists for /home.','The /home directory is used to support disk storage needs of local users.','The reasoning for mounting /home on a separate partition is as follows. - Protection from resource exhaustion: The default installation only creates a single / partition. Since the /home directory contains user generated data, there is a risk of resource exhaustion. It will essentially have the whole disk available to fill up and impact the system as a whole. In addition, other operations on the system could fill up the disk unrelated to /home and impact all local users. - Fine grained control over the mount: Configuring /home as its own file system allows an administrator to set additional mount options such as noexec/nosuid/nodev. These options limits an attackers ability to create exploits on the system. In the case of /home options such as usrquota/grpquota may be considered to limit the impact that users can have on each other with regards to disk resource exhaustion. Other options allow for specific behavior. See man mount for exact details regarding filesystem-independent and filesystem-specific options. - Protection of user data: As /home contains user data, care should be taken to ensure the security and integrity of the data and mount point.','Resizing filesystems is a common activity in cloud-hosted servers. Separate filesystem partitions may prevent successful resizing, or may require the installation of additional tools solely for the purpose of resizing operations. The use of these additional tools may introduce their own security considerations.','For new installations, during installation create a custom partition setup and specify a separate partition for /home. For systems that were previously installed, create a new partition and configure /etc/fstab as appropriate.','[{\"cis\": [\"1.1.7.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29520,'Ensure nodev option set on /home partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /home filesystem is not intended to support devices, set this option to ensure that users cannot create a block or character special devices in /home.','','IF the /home partition exists, edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0. Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29521,'Ensure nosuid option set on /home partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Since the /home filesystem is only intended for user file storage, set this option to ensure that users cannot create setuid files in /home.','','IF the /home partition exists, edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /home partition. Example: <device> /home <fstype> defaults,rw,nosuid,nodev,relatime 0 0. Run the following command to remount /home with the configured options: # mount -o remount /home.','[{\"cis\": [\"1.1.7.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29522,'Ensure nodev option set on /dev/shm partition.','The nodev mount option specifies that the filesystem cannot contain special devices.','Since the /dev/shm filesystem is not intended to support devices, set this option to ensure that users cannot attempt to create special devices in /dev/shm partitions.','','Edit the /etc/fstab file and add nodev to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm.','[{\"cis\": [\"1.1.8.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1200\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29523,'Ensure noexec option set on /dev/shm partition.','The noexec mount option specifies that the filesystem cannot contain executable binaries.','Setting this option on a file system prevents users from executing programs from shared memory. This deters users from introducing potentially malicious software on the system.','','Edit the /etc/fstab file and add noexec to the fourth field (mounting options) for the /dev/shm partition. Example: <device> /dev/shm <fstype> defaults,rw,nosuid,nodev,noexec,relatime 0 0. Run the following command to remount /dev/shm with the configured options: # mount -o remount /dev/shm. NOTE It is recommended to use tmpfs as the device/filesystem type as /dev/shm is used as shared memory space by applications.','[{\"cis\": [\"1.1.8.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1204\", \"T1204.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29524,'Ensure nosuid option set on /dev/shm partition.','The nosuid mount option specifies that the filesystem cannot contain setuid files.','Setting this option on a file system prevents users from introducing privileged programs onto the system and allowing non-root users to execute them.','','Edit the /etc/fstab file and add nosuid to the fourth field (mounting options) for the /dev/shm partition. See the fstab(5) manual page for more information. Run the following command to remount /dev/shm using the updated options from /etc/fstab: # mount -o remount /dev/shm.','[{\"cis\": [\"1.1.8.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1038\"]}]'),(29525,'Disable Automounting.','autofs allows automatic mounting of devices, typically including CD/DVDs and USB drives.','With automounting enabled anyone with physical access could attach a USB drive or disc and have its contents available in system even if they lacked permissions to mount it themselves.','The use of portable hard drives is very common for workstation users. If your organization allows the use of portable storage or media on workstations and physical access controls to workstations is considered adequate there is little value add in turning off automounting.','If there are no other packages that depends on autofs, remove the package with: # apt purge autofs OR if there are dependencies on the autofs package: Run the following commands to mask autofs: # systemctl stop autofs # systemctl mask autofs.','[{\"cis\": [\"1.1.9\"]}, {\"cis_csc_v8\": [\"10.3\"]}, {\"cis_csc_v7\": [\"8.5\"]}, {\"cmmc_v2.0\": [\"MP.L2-3.8.7\"]}, {\"hipaa\": [\"164.310(d)(1)\"]}, {\"iso_27001-2013\": [\"A.12.2.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1203\", \"T1211\", \"T1212\"]}]'),(29526,'Ensure AIDE is installed.','AIDE takes a snapshot of filesystem state including modification times, permissions, and file hashes which can then be used to compare against the current state of the filesystem to detect modifications to the system.','By monitoring the filesystem state compromised files can be detected to prevent or limit the exposure of accidental or malicious misconfigurations or modified binaries.','','Install AIDE using the appropriate package manager or manual installation: # apt install aide aide-common Configure AIDE as appropriate for your environment. Consult the AIDE documentation for options. Run the following commands to initialize AIDE: # aideinit # mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db.','[{\"cis\": [\"1.3.1\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"pci_dss_3.2.1\": [\"10.2.1\", \"11.5\"]}, {\"pci_dss_4.0\": [\"10.2.1\", \"10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1036\", \"T1036.002\", \"T1036.003\", \"T1036.004\", \"T1036.005\", \"T1565\", \"T1565.001\"]}]'),(29527,'Ensure filesystem integrity is regularly checked.','Periodic checking of the filesystem integrity is needed to detect changes to the filesystem.','Periodic file checking allows the system administrator to determine on a regular basis if critical files have been changed in an unauthorized fashion.','','If cron will be used to schedule and run aide check: Run the following command: # crontab -u root -e Add the following line to the crontab: 0 5 * * * /usr/bin/aide.wrapper --config /etc/aide/aide.conf --check OR If aidecheck.service and aidecheck.timer will be used to schedule and run aide check: Create or edit the file /etc/systemd/system/aidecheck.service and add the following lines: [Unit] Description=Aide Check [Service] Type=simple ExecStart=/usr/bin/aide.wrapper --config /etc/aide/aide.conf --check [Install] WantedBy=multi-user.target. Create or edit the file /etc/systemd/system/aidecheck.timer and add the following lines: [Unit] Description=Aide check every day at 5AM [Timer] OnCalendar=*-*-* 05:00:00 Unit=aidecheck.service [Install] WantedBy=multi-user.target. Run the following commands: # chown root:root /etc/systemd/system/aidecheck.* # chmod 0644 /etc/systemd/system/aidecheck.* # systemctl daemon-reload # systemctl enable aidecheck.service # systemctl --now enable aidecheck.timer.','[{\"cis\": [\"1.3.2\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1036\", \"T1036.002\", \"T1036.003\", \"T1036.004\", \"T1036.005\", \"T1565\", \"T1565.001\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29528,'Ensure bootloader password is set.','Setting the boot loader password will require that anyone rebooting the system must enter a password before being able to set command line boot parameters.','Requiring a boot password upon execution of the boot loader will prevent an unauthorized user from entering boot parameters or changing the boot partition. This prevents users from weakening security (e.g. turning off AppArmor at boot time).','If password protection is enabled, only the designated superuser can edit a Grub 2 menu item by pressing 'e' or access the GRUB 2 command line by pressing 'c' If GRUB 2 is set up to boot automatically to a password-protected menu entry the user has no option to back out of the password prompt to select another menu entry. Holding the SHIFT key will not display the menu in this case. The user must enter the correct username and password. If unable, the configuration files will have to be edited via the LiveCD or other means to fix the problem You can add --unrestricted to the menu entries to allow the system to boot without entering a password. Password will still be required to edit menu items. More Information: https://help.ubuntu.com/community/Grub2/Passwords.','Create an encrypted password with grub-mkpasswd-pbkdf2: # grub-mkpasswd-pbkdf2 Enter password: <password> Reenter password: <password> PBKDF2 hash of your password is <encrypted-password>. Add the following into a custom /etc/grub.d configuration file: cat <<EOF set superusers="<username>" password_pbkdf2 <username> <encrypted-password> EOF. The superuser/user information and password should not be contained in the /etc/grub.d/00_header file as this file could be overwritten in a package update. If there is a requirement to be able to boot/reboot without entering the password, edit /etc/grub.d/10_linux and add --unrestricted to the line CLASS= Example: CLASS="--class gnu-linux --class gnu --class os --unrestricted". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"1.4.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1046\"]}]'),(29529,'Ensure permissions on bootloader config are configured.','The grub configuration file contains information on boot settings and passwords for unlocking boot options.','Setting the permissions to read and write for root only prevents non-root users from seeing the boot parameters or changing them. Non-root users who read the boot parameters may be able to identify weaknesses in security upon boot and be able to exploit them.','','Run the following commands to set permissions on your grub configuration: # chown root:root /boot/grub/grub.cfg # chmod u-wx,go-rwx /boot/grub/grub.cfg.','[{\"cis\": [\"1.4.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1542\"]}, {\"mitre_tactics\": [\"TA0005\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29530,'Ensure authentication required for single user mode.','Single user mode is used for recovery when the system detects an issue during boot or by manual selection from the bootloader.','Requiring authentication in single user mode prevents an unauthorized user from rebooting the system into single user to gain root privileges without credentials.','','Run the following command and follow the prompts to set a password for the root user: # passwd root.','[{\"cis\": [\"1.4.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29531,'Ensure prelink is not installed.','prelink is a program that modifies ELF shared libraries and ELF dynamically linked binaries in such a way that the time needed for the dynamic linker to perform relocations at startup significantly decreases.','The prelinking feature can interfere with the operation of AIDE, because it changes binaries. Prelinking can also increase the vulnerability of the system if a malicious user is able to compromise a common library such as libc.','','Run the following command to restore binaries to normal: # prelink -ua . Uninstall prelink using the appropriate package manager or manual installation: # apt purge prelink.','[{\"cis\": [\"1.5.2\"]}, {\"cis_csc_v8\": [\"3.14\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"pci_dss_3.2.1\": [\"10.2.1\", \"11.5\"]}, {\"pci_dss_4.0\": [\"10.2.1\", \"10.2.1.1\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1055\", \"T1055.009\", \"T1065\", \"T1065.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}]'),(29532,'Ensure Automatic Error Reporting is not enabled.','The Apport Error Reporting Service automatically generates crash reports for debugging.','Apport collects potentially sensitive data, such as core dumps, stack traces, and log files. They can contain passwords, credit card numbers, serial numbers, and other private material.','','Edit /etc/default/apport and add or edit the enabled parameter to equal 0: enabled=0 Run the following commands to stop and disable the apport service # systemctl stop apport.service # systemctl --now disable apport.service -- OR -- Run the following command to remove the apport package: # apt purge apport.','[{\"cis\": [\"1.5.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}]'),(29533,'Ensure core dumps are restricted.','A core dump is the memory of an executable program. It is generally used to determine why a program aborted. It can also be used to glean confidential information from a core file. The system provides the ability to set a soft limit for core dumps, but this can be overridden by the user.','Setting a hard limit on core dumps prevents users from overriding the soft variable. If core dumps are required, consider setting limits for user groups (see limits.conf(5) ). In addition, setting the fs.suid_dumpable variable to 0 will prevent setuid programs from dumping core.','','Add the following line to /etc/security/limits.conf or a /etc/security/limits.d/* file: * hard core 0. Set the following parameter in /etc/sysctl.conf or a /etc/sysctl.d/* file: fs.suid_dumpable = 0. Run the following command to set the active kernel parameter: # sysctl -w fs.suid_dumpable=0. IF systemd-coredump is installed: edit /etc/systemd/coredump.conf and add/modify the following lines: Storage=none ProcessSizeMax=0. Run the command: systemctl daemon-reload.','[{\"cis\": [\"1.5.4\"]}, {\"mitre_techniques\": [\"T1005\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29534,'Ensure AppArmor is installed.','AppArmor provides Mandatory Access Controls.','Without a Mandatory Access Control system installed only the default Discretionary Access Control system will be available.','','Install AppArmor. # apt install apparmor apparmor-utils.','[{\"cis\": [\"1.6.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29535,'Ensure AppArmor is enabled in the bootloader configuration.','Configure AppArmor to be enabled at boot time and verify that it has not been overwritten by the bootloader boot parameters. Note: This recommendation is designed around the grub bootloader, if LILO or another bootloader is in use in your environment enact equivalent settings.','AppArmor must be enabled at boot time in your bootloader configuration to ensure that the controls it provides are not overridden.','','Edit /etc/default/grub and add the apparmor=1 and security=apparmor parameters to the GRUB_CMDLINE_LINUX= line GRUB_CMDLINE_LINUX="apparmor=1 security=apparmor". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"1.6.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29536,'Ensure all AppArmor Profiles are in enforce or complain mode.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* OR Run the following command to set all profiles to complain mode: # aa-complain /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29537,'Ensure all AppArmor Profiles are enforcing.','AppArmor profiles define what resources applications are able to access.','Security configuration requirements vary from site to site. Some sites may mandate a policy that is stricter than the default policy, which is perfectly acceptable. This item is intended to ensure that any policies that exist on the system are activated.','','Run the following command to set all profiles to enforce mode: # aa-enforce /etc/apparmor.d/* Note: Any unconfined processes may need to have a profile created or activated for them and then be restarted.','[{\"cis\": [\"1.6.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1068\", \"T1565\", \"T1565.001\", \"T1565.003\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29538,'Ensure message of the day is configured properly.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a ." command once they have logged in.','','Edit the /etc/motd file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , v or references to the OS platform OR If the motd is not used, this file can be removed. Run the following command to remove the motd file: # rm /etc/motd.','[{\"cis\": [\"1.7.1\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29539,'Ensure local login warning banner is configured properly.','The contents of the /etc/issue file are displayed to users prior to login for local terminals. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the " uname -a ." command once they have logged in.','','Edit the /etc/issue file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , or v , or references to the OS platform # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue.','[{\"cis\": [\"1.7.2\"]}, {\"mitre_techniques\": [\"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29540,'Ensure remote login warning banner is configured properly.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services. Unix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform. If mingetty(8) supports the following options, they display operating system information: m - machine architecture 
 - operating system release s - operating system name v - operating system version.','Warning messages inform users who are attempting to login to the system of their legal status regarding the system and must include the name of the organization that owns the system and any monitoring policies that are in place. Displaying OS and patch level information in login banners also has the side effect of providing detailed system information to attackers attempting to target specific exploits of a system. Authorized users can easily get this information by running the "uname -a" command once they have logged in.','','Edit the /etc/issue.net file with the appropriate contents according to your site policy, remove any instances of m , 
 , s , or v or references to the OS platform: # echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue.net.','[{\"cis\": [\"1.7.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1082\", \"T1592\", \"T1592.004\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29541,'Ensure permissions on /etc/motd are configured.','The contents of the /etc/motd file are displayed to users after login and function as a message of the day for authenticated users.','If the /etc/motd file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/motd: # chown root:root $(readlink -e /etc/motd) # chmod u-x,go-wx $(readlink -e /etc/motd) OR run the following command to remove the /etc/motd file: # rm /etc/motd.','[{\"cis\": [\"1.7.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29542,'Ensure permissions on /etc/issue are configured.','The contents of the /etc/issue file are displayed to users prior to login for local terminals.','If the /etc/issue file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue : # chown root:root $(readlink -e /etc/issue) # chmod u-x,go-wx $(readlink -e /etc/issue).','[{\"cis\": [\"1.7.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29543,'Ensure permissions on /etc/issue.net are configured.','The contents of the /etc/issue.net file are displayed to users prior to login for remote connections from configured services.','If the /etc/issue.net file does not have the correct ownership it could be modified by unauthorized users with incorrect or misleading information.','','Run the following commands to set permissions on /etc/issue.net : # chown root:root $(readlink -e /etc/issue.net) # chmod u-x,go-wx $(readlink -e /etc/issue.net).','[{\"cis\": [\"1.7.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29544,'Ensure GNOME Display Manager is removed.','The GNOME Display Manager (GDM) is a program that manages graphical display servers and handles graphical user logins.','If a Graphical User Interface (GUI) is not required, it should be removed to reduce the attack surface of the system.','Removing the GNOME Display manager will remove the Graphical User Interface (GUI) from the system.','Run the following command to uninstall gdm3: # apt purge gdm3.','[{\"cis\": [\"1.8.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0002\"]}]'),(29545,'Ensure XDCMP is not enabled.','X Display Manager Control Protocol (XDMCP) is designed to provide authenticated access to display management services for remote displays.','XDMCP is inherently insecure. XDMCP is not a ciphered protocol. This may allow an attacker to capture keystrokes entered by a user XDMCP is vulnerable to man-in-the-middle attacks. This may allow an attacker to steal the credentials of legitimate users by impersonating the XDMCP server.','','Edit the file /etc/gdm3/custom.conf and remove the line: Enable=true.','[{\"cis\": [\"1.8.10\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1040\", \"T1056\", \"T1056.001\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1050\"]}]'),(29546,'Ensure updates, patches, and additional security software are installed.','Periodically patches are released for included software either due to security flaws or to include additional functionality.','Newer patches may contain security enhancements that would not be available through the latest full update. As a result, it is recommended that the latest software patches be used to take advantage of the latest functionality. As with any software installation, organizations need to determine if a given update meets their requirements and verify the compatibility and supportability of any additional software against the update revision that is selected.','','Run the following command to update all packages following local site policy guidance on applying updates and patches: # apt upgrade OR # apt dist-upgrade.','[{\"cis\": [\"1.9\"]}, {\"cis_csc_v8\": [\"7.3\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"pci_dss_3.2.1\": [\"6.2\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"soc_2\": [\"CC7.1\"]}]'),(29547,'Ensure chrony is running as user _chrony.','The chrony package is installed with a dedicated user account _chrony. This account is granted the access required by the chronyd service.','The chronyd service should run with only the required privileges.','','Add or edit the user line to /etc/chrony/chrony.conf or a file ending in .conf in /etc/chrony/conf.d/: user _chrony OR If another time synchronization service is in use on the system, run the following command to remove chrony from the system: # apt purge chrony.','[{\"cis\": [\"2.1.2.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29548,'Ensure chrony is enabled and running.','chrony is a daemon for synchronizing the system clock across the network.','chrony needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF chrony is in use on the system, run the following commands: Run the following command to unmask chrony.service: # systemctl unmask chrony.service. Run the following command to enable and start chrony.service: # systemctl --now enable chrony.service OR If another time synchronization service is in use on the system, run the following command to remove chrony: # apt purge chrony.','[{\"cis\": [\"2.1.2.3\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29549,'Ensure systemd-timesyncd configured with authorized timeserver.','- NTP= > A space-separated list of NTP server host names or IP addresses. During runtime this list is combined with any per-interface NTP servers acquired from systemd-networkd.service(8). systemd-timesyncd will contact all configured system or per-interface servers in turn, until one responds. When the empty string is assigned, the list of NTP servers is reset, and all prior assignments will have no effect. This setting defaults to an empty list. - FallbackNTP= > A space-separated list of NTP server host names or IP addresses to be used as the fallback NTP servers. Any per-interface NTP servers obtained from systemd-networkd.service(8) take precedence over this setting, as do any servers set via NTP= above. This setting is hence only relevant if no other NTP server information is known. When the empty string is assigned, the list of NTP servers is reset, and all prior assignments will have no effect. If this option is not given, a compiled-in list of NTP servers is used.','Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','Edit or create a file in /etc/systemd/timesyncd.conf.d ending in .conf and add the NTP= and/or FallbackNTP= lines to the [Time] section: Example: [Time] NTP=time.nist.gov # Uses the generic name for NIST's time servers -AND/OR- FallbackNTP=time-a-g.nist.gov time-b-g.nist.gov time-c-g.nist.gov # Space separated list of NIST time servers Note: Servers added to these line(s) should follow local site policy. NIST servers are for example. The timesyncd.conf.d directory may need to be created. Example script: The following example script will create the systemd-timesyncd drop-in configuration snippet: #!/usr/bin/env bash ntp_ts="time.nist.gov" ntp_fb="time-a-g.nist.gov time-b-g.nist.gov time-c-g.nist.gov" disfile="/etc/systemd/timesyncd.conf.d/50-timesyncd.conf" if ! find /etc/systemd -type f -name '*.conf' -exec grep -Ph '^h*NTP=H+' {} +; then [ ! -d /etc/systemd/timesyncd.conf.d ] && mkdir /etc/systemd/timesyncd.conf.d ! grep -Pqs '^h*[Time]' "$disfile" && echo "[Time]" >> "$disfile" echo "NTP=$ntp_ts" >> "$disfile" fi if ! find /etc/systemd -type f -name '*.conf' -exec grep -Ph '^h*FallbackNTP=H+' {} +; then [ ! -d /etc/systemd/timesyncd.conf.d ] && mkdir /etc/systemd/timesyncd.conf.d ! grep -Pqs '^h*[Time]' "$disfile" && echo "[Time]" >> "$disfile" echo "FallbackNTP=$ntp_fb" >> "$disfile" fi Run the following command to reload the systemd-timesyncd configuration: # systemctl try-reload-or-restart systemd-timesyncd OR If another time synchronization service is in use on the system, run the following command to stop and mask systemd-timesyncd: # systemctl --now mask systemd-timesyncd.','[{\"cis\": [\"2.1.3.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29550,'Ensure systemd-timesyncd is enabled and running.','systemd-timesyncd is a daemon that has been added for synchronizing the system clock across the network.','systemd-timesyncd needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF systemd-timesyncd is in use on the system, run the following commands: Run the following command to unmask systemd-timesyncd.service: # systemctl unmask systemd-timesyncd.service. Run the following command to enable and start systemd-timesyncd.service: # systemctl --now enable systemd-timesyncd.service OR If another time synchronization service is in use on the system, run the following command to stop and mask systemd-timesyncd: # systemctl --now mask systemd-timesyncd.service.','[{\"cis\": [\"2.1.3.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29551,'Ensure ntp access control is configured.','ntp Access Control Commands: restrict address [mask mask] [ippeerlimit int] [flag ...]. The address argument expressed in dotted-quad form is the address of a host or network. Alternatively, the address argument can be a valid host DNS name. The mask argument expressed in dotted-quad form defaults to 255.255.255.255, meaning that the address is treated as the address of an individual host. A default entry (address 0.0.0.0, mask 0.0.0.0) is always included and is always the first entry in the list. Note: the text string default, with no mask option, may be used to indicate the default entry. The ippeerlimit directive limits the number of peer requests for each IP to int, where a value of -1 means "unlimited", the current default. A value of 0 means "none". There would usually be at most 1 peering request per IP, but if the remote peering requests are behind a proxy there could well be more than 1 per IP. In the current implementation, flag always restricts access, i.e., an entry with no flags indicates that free access to the server is to be given. The flags are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags can generally be classed into two categories, those which restrict time service and those which restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified: - kod - If this flag is set when an access violation occurs, a kiss-of-death (KoD) packet is sent. KoD packets are rate limited to no more than one per second. If another KoD packet occurs within one second after the last one, the packet is dropped. - limited - Deny service if the packet spacing violates the lower limits specified in the discard command. A history of clients is kept using the monitoring capability of ntpd. Thus, monitoring is always active as long as there is a restriction entry with the limited flag. - lowpriotrap - Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps. - noepeer - Deny ephemeral peer requests, even if they come from an authenticated source. Note that the ability to use a symmetric key for authentication may be restricted to one or more IPs or subnets via the third field of the ntp.keys file. This restriction is not enabled by default, to maintain backward compatibility. Expect noepeer to become the default in ntp-4.4. - nomodify - Deny ntpq and ntpdc queries which attempt to modify the state of the server (i.e., run time reconfiguration). Queries which return information are permitted. - noquery - Deny ntpq and ntpdc queries. Time service is not affected. - nopeer - Deny unauthenticated packets which would result in mobilizing a new association. This includes broadcast and symmetric active packets when a configured association does not exist. It also includes pool associations, so if you want to use servers from a pool directive and also want to use nopeer by default, you'll want a restrict source ... line as well that does not include the nopeer directive. - noserve - Deny all packets except ntpq and ntpdc queries. - notrap - Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the ntpq control message protocol which is intended for use by remote event logging programs. - notrust - Deny service unless the packet is cryptographically authenticated. - ntpport - This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both ntpport and non-ntpport may be specified. The ntpport is considered more specific and is sorted later in the list.','If ntp is in use on the system, proper configuration is vital to ensuring time synchronization is accurate.','','Add or edit restrict lines in /etc/ntp.conf to match the following: restrict -4 default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp.','[{\"cis\": [\"2.1.4.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29552,'Ensure ntp is configured with authorized timeserver.','The various modes are determined by the command keyword and the type of the required IP address. Addresses are classed by type as (s) a remote server or peer (IPv4 class A, B and C), (b) the broadcast address of a local interface, (m) a multicast address (IPv4 class D), or (r) a reference clock address (127.127.x.x). Note: That only those options applicable to each command are listed below. Use of options not listed may not be caught as an error, but may result in some weird and even destructive behavior. If the Basic Socket Interface Extensions for IPv6 (RFC-2553) is detected, support for the IPv6 address family is generated in addition to the default support of the IPv4 address family. In a few cases, including the reslist billboard generated by ntpq or ntpdc, IPv6 addresses are automatically generated. IPv6 addresses can be identified by the presence of colons ":" in the address field. IPv6 addresses can be used almost everywhere where IPv4 addresses can be used, with the exception of reference clock addresses, which are always IPv4. Note: In contexts where a host name is expected, a -4 qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a -6 qualifier forces DNS resolution to the IPv6 namespace. See IPv6 references for the equivalent classes for that address family. - pool - For type s addresses, this command mobilizes a persistent client mode association with a number of remote servers. In this mode the local clock can synchronized to the remote server, but the remote server can never be synchronized to the local clock. - server - For type s and r addresses, this command mobilizes a persistent client mode association with the specified remote server or local radio clock. In this mode the local clock can synchronized to the remote server, but the remote server can never be synchronized to the local clock. This command should not be used for type b or m addresses.','Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','Edit /etc/ntp.conf and add or edit server or pool lines as appropriate according to local site policy: <[server|pool]> <[remote-server|remote-pool]> Examples: pool mode: pool time.nist.gov iburst. server mode: server time-a-g.nist.gov iburst server 132.163.97.3 iburst server time-d-b.nist.gov iburst Run the following command to load the updated time sources into ntp running config: # systemctl restart ntp OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp.','[{\"cis\": [\"2.1.4.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1498\", \"T1498.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29553,'Ensure ntp is running as user ntp.','The ntp package is installed with a dedicated user account ntp. This account is granted the access required by the ntpd daemon. Note: - If chrony or systemd-timesyncd are used, ntp should be removed and this section skipped. - This recommendation only applies if ntp is in use on the system. - Only one time synchronization method should be in use on the system.','The ntpd daemon should run with only the required privilege.','','Add or edit the following line in /etc/init.d/ntp: RUNASUSER=ntp. Run the following command to restart ntp.service: # systemctl restart ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp from the system: # apt purge ntp.','[{\"cis\": [\"2.1.4.3\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29554,'Ensure ntp is enabled and running.','ntp is a daemon for synchronizing the system clock across the network.','ntp needs to be enabled and running in order to synchronize the system to a timeserver. Time synchronization is important to support time sensitive security mechanisms and to ensure log files have consistent time records across the enterprise to aid in forensic investigations.','','IF ntp is in use on the system, run the following commands: Run the following command to unmask ntp.service: # systemctl unmask ntp.service Run the following command to enable and start ntp.service: # systemctl --now enable ntp.service OR If another time synchronization service is in use on the system, run the following command to remove ntp: # apt purge ntp.','[{\"cis\": [\"2.1.4.4\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"pci_dss_3.2.1\": [\"10.4\"]}, {\"pci_dss_4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}]'),(29555,'Ensure X Window System is not installed.','The X Window System provides a Graphical User Interface (GUI) where users can have multiple windows in which to run programs and various add on. The X Windows system is typically used on workstations where users login, but not on servers where users typically do not login.','Unless your organization specifically requires graphical login access via X Windows, remove it to reduce the potential attack surface.','Many Linux systems run applications which require a Java runtime. Some Linux Java packages have a dependency on specific X Windows xorg-x11-fonts. One workaround to avoid this dependency is to use the "headless" Java packages for your specific Java runtime, if provided by your distribution.','Remove the X Windows System packages: apt purge xserver-xorg*.','[{\"cis\": [\"2.2.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29556,'Ensure Avahi Server is not installed.','Avahi is a free zeroconf implementation, including a system for multicast DNS/DNS-SD service discovery. Avahi allows programs to publish and discover services and hosts running on a local network with no specific configuration. For example, a user can plug a computer into a network and Avahi automatically finds printers to print to, files to look at and people to talk to, as well as network services running on the machine.','Automatic discovery of network services is not normally required for system functionality. It is recommended to remove this package to reduce the potential attack surface.','','Run the following commands to remove avahi-daemon: # systemctl stop avahi-daaemon.service # systemctl stop avahi-daemon.socket # apt purge avahi-daemon.','[{\"cis\": [\"2.2.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29557,'Ensure CUPS is not installed.','The Common Unix Print System (CUPS) provides the ability to print to both local and network printers. A system running CUPS can also accept print jobs from remote systems and print them to local printers. It also provides a web based remote administration capability.','If the system does not need to print jobs or accept print jobs from other systems, it is recommended that CUPS be removed to reduce the potential attack surface.','Removing CUPS will prevent printing from the system, a common task for workstation systems.','Run one of the following commands to remove cups: # apt purge cups.','[{\"cis\": [\"2.2.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29558,'Ensure DHCP Server is not installed.','The Dynamic Host Configuration Protocol (DHCP) is a service that allows machines to be dynamically assigned IP addresses.','Unless a system is specifically set up to act as a DHCP server, it is recommended that this package be removed to reduce the potential attack surface.','','Run the following command to remove isc-dhcp-server: # apt purge isc-dhcp-server.','[{\"cis\": [\"2.2.4\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29559,'Ensure LDAP server is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP server, it is recommended that the software be removed to reduce the potential attack surface.','','Run one of the following commands to remove slapd: # apt purge slapd.','[{\"cis\": [\"2.2.5\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29560,'Ensure NFS is not installed.','The Network File System (NFS) is one of the first and most widely distributed file systems in the UNIX environment. It provides the ability for systems to mount file systems of other servers through the network.','If the system does not export NFS shares, it is recommended that the nfs-kernel-server package be removed to reduce the remote attack surface.','','Run the following command to remove nfs: # apt purge nfs-kernel-server.','[{\"cis\": [\"2.2.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}]'),(29561,'Ensure DNS Server is not installed.','The Domain Name System (DNS) is a hierarchical naming system that maps names to IP addresses for computers, services and other resources connected to a network.','Unless a system is specifically designated to act as a DNS server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following commands to disable DNS server: # apt purge bind9.','[{\"cis\": [\"2.2.7\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29562,'Ensure FTP Server is not installed.','The File Transfer Protocol (FTP) provides networked computers with the ability to transfer files.','FTP does not protect the confidentiality of data or authentication credentials. It is recommended SFTP be used if file transfer is required. Unless there is a need to run the system as a FTP server (for example, to allow anonymous downloads), it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove vsftpd: # apt purge vsftpd.','[{\"cis\": [\"2.2.8\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29563,'Ensure HTTP server is not installed.','HTTP or web servers provide the ability to host web site content.','Unless there is a need to run the system as a web server, it is recommended that the package be deleted to reduce the potential attack surface.','','Run the following command to remove apache: # apt purge apache2.','[{\"cis\": [\"2.2.9\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29564,'Ensure IMAP and POP3 server are not installed.','dovecot-imapd and dovecot-pop3d are an open source IMAP and POP3 server for Linux based systems.','Unless POP3 and/or IMAP servers are to be provided by this system, it is recommended that the package be removed to reduce the potential attack surface.','','Run one of the following commands to remove dovecot-imapd and dovecot-pop3d: # apt purge dovecot-imapd dovecot-pop3d.','[{\"cis\": [\"2.2.10\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29565,'Ensure Samba is not installed.','The Samba daemon allows system administrators to configure their Linux systems to share file systems and directories with Windows desktops. Samba will advertise the file systems and directories via the Server Message Block (SMB) protocol. Windows desktop users will be able to mount these directories and file systems as letter drives on their systems.','If there is no need to mount directories and file systems to Windows systems, then this service should be deleted to reduce the potential attack surface.','','Run the following command to remove samba: # apt purge samba.','[{\"cis\": [\"2.2.11\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1005\", \"T1039\", \"T1083\", \"T1135\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}]'),(29566,'Ensure HTTP Proxy Server is not installed.','Squid is a standard proxy server used in many distributions and environments.','If there is no need for a proxy server, it is recommended that the squid proxy be deleted to reduce the potential attack surface.','','Run the following command to remove squid: # apt purge squid.','[{\"cis\": [\"2.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29567,'Ensure SNMP Server is not installed.','Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment, computer equipment and devices like UPSs. Net-SNMP is a suite of applications used to implement SNMPv1 (RFC 1157), SNMPv2 (RFCs 1901-1908), and SNMPv3 (RFCs 3411-3418) using both IPv4 and IPv6. Support for SNMPv2 classic (a.k.a. "SNMPv2 historic" - RFCs 1441-1452) was dropped with the 4.0 release of the UCD-snmp package. The Simple Network Management Protocol (SNMP) server is used to listen for SNMP commands from an SNMP management system, execute the commands or collect the information and then send results back to the requesting system.','The SNMP server can communicate using SNMPv1, which transmits data in the clear and does not require authentication to execute commands. SNMPv3 replaces the simple/clear text password sharing used in SNMPv2 with more securely encoded parameters. If the the SNMP service is not required, the net-snmp package should be removed to reduce the attack surface of the system. Note: If SNMP is required: - The server should be configured for SNMP v3 only. User Authentication and Message Encryption should be configured. - If SNMP v2 is absolutely necessary, modify the community strings' values.','','Run the following command to remove snmp: # apt purge snmp.','[{\"cis\": [\"2.2.13\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29568,'Ensure NIS Server is not installed.','The Network Information Service (NIS) (formally known as Yellow Pages) is a client-server directory service protocol for distributing system configuration files. The NIS server is a collection of programs that allow for the distribution of configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed and other, more secure services be used.','','Run the following command to remove nis: # apt purge nis.','[{\"cis\": [\"2.2.14\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1210\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29569,'Ensure mail transfer agent is configured for local-only mode.','Mail Transfer Agents (MTA), such as sendmail and Postfix, are used to listen for incoming mail and transfer the messages to the appropriate user or mail server. If the system is not intended to be a mail server, it is recommended that the MTA be configured to only process local mail.','The software for all Mail Transfer Agents is complex and most have a long history of security issues. While it is important to ensure that the system can process local mail messages, it is not necessary to have the MTA's daemon listening on a port unless the server is intended to be a mail server that receives and processes mail from other systems. Note: This recommendation is designed around the postfix mail server. Depending on your environment you may have an alternative MTA installed such as exim4. If this is the case consult the documentation for your installed MTA to configure the recommended state.','','Edit /etc/postfix/main.cf and add the following line to the RECEIVING MAIL section. If the line already exists, change it to look like the line below: inet_interfaces = loopback-only. Run the following command to restart postfix: # systemctl restart postfix.','[{\"cis\": [\"2.2.15\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1018\", \"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29570,'Ensure rsync service is either not installed or masked.','The rsync service can be used to synchronize files between systems over network links.','The rsync service presents a security risk as it uses unencrypted protocols for communication. The rsync package should be removed to reduce the attack area of the system.','','Run the following command to remove rsync: # apt purge rsync OR Run the following commands to stop and mask rsync: # systemctl stop rsync # systemctl mask rsync.','[{\"cis\": [\"2.2.16\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1105\", \"T1203\", \"T1210\", \"T1543\", \"T1543.002\", \"T1570\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29571,'Ensure NIS Client is not installed.','The Network Information Service (NIS), formerly known as Yellow Pages, is a client-server directory service protocol used to distribute system configuration files. The NIS client was used to bind a machine to an NIS server and receive the distributed configuration files.','The NIS service is inherently an insecure system that has been vulnerable to DOS attacks, buffer overflows and has poor authentication for querying NIS maps. NIS generally has been replaced by such protocols as Lightweight Directory Access Protocol (LDAP). It is recommended that the service be removed.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall nis: # apt purge nis.','[{\"cis\": [\"2.3.1\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29572,'Ensure rsh client is not installed.','The rsh-client package contains the client commands for the rsh services.','These legacy clients contain numerous security exposures and have been replaced with the more secure SSH package. Even if the server is removed, it is best to ensure the clients are also removed to prevent users from inadvertently attempting to use these commands and therefore exposing their credentials. Note that removing the rsh package removes the clients for rsh, rcp and rlogin.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall rsh: # apt purge rsh-client.','[{\"cis\": [\"2.3.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(29573,'Ensure talk client is not installed.','The talk software makes it possible for users to send and receive messages across systems through a terminal session. The talk client, which allows initialization of talk sessions, is installed by default.','The software presents a security risk as it uses unencrypted protocols for communication.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall talk: # apt purge talk.','[{\"cis\": [\"2.3.3\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(29574,'Ensure telnet client is not installed.','The telnet package contains the telnet client, which allows users to start connections to other systems via the telnet protocol.','The telnet protocol is insecure and unencrypted. The use of an unencrypted transmission medium could allow an unauthorized user to steal credentials. The ssh package provides an encrypted session and stronger security and is included in most Linux distributions.','Many insecure service clients are used as troubleshooting tools and in testing environments. Uninstalling them can inhibit capability to test and troubleshoot. If they are required it is advisable to remove the clients after use to prevent accidental or intentional misuse.','Uninstall telnet: # apt purge telnet.','[{\"cis\": [\"2.3.4\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1040\", \"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0006\", \"TA0008\"]}, {\"mitre_mitigations\": [\"M1041\", \"M1042\"]}]'),(29575,'Ensure LDAP client is not installed.','The Lightweight Directory Access Protocol (LDAP) was introduced as a replacement for NIS/YP. It is a service that provides a method for looking up information from a central database.','If the system will not need to act as an LDAP client, it is recommended that the software be removed to reduce the potential attack surface.','Removing the LDAP client will prevent or inhibit using LDAP for authentication in your environment.','Uninstall ldap-utils: # apt purge ldap-utils.','[{\"cis\": [\"2.3.5\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29576,'Ensure RPC is not installed.','Remote Procedure Call (RPC) is a method for creating low level client server applications across different system architectures. It requires an RPC compliant client listening on a network port. The supporting package is rpcbind.','If RPC is not required, it is recommended that this services be removed to reduce the remote attack surface.','','Run the following command to remove rpcbind: # apt purge rpcbind.','[{\"cis\": [\"2.3.6\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1203\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29577,'Ensure ufw is installed.','The Uncomplicated Firewall (ufw) is a frontend for iptables and is particularly well-suited for host-based firewalls. ufw provides a framework for managing netfilter, as well as a command-line interface for manipulating the firewall.','A firewall utility is required to configure the Linux kernel's netfilter framework via the iptables or nftables back-end. The Linux kernel's netfilter framework host-based firewall can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host. Note: Only one firewall utility should be installed and configured. UFW is dependent on the iptables package.','','Run the following command to install Uncomplicated Firewall (UFW): # apt install ufw.','[{\"cis\": [\"3.5.1.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29578,'Ensure iptables-persistent is not installed with ufw.','The iptables-persistent is a boot-time loader for netfilter rules, iptables plugin.','Running both ufw and the services included in the iptables-persistent package may lead to conflict.','','Run the following command to remove the iptables-persistent package: # apt purge iptables-persistent.','[{\"cis\": [\"3.5.1.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29579,'Ensure ufw service is enabled.','UncomplicatedFirewall (ufw) is a frontend for iptables. ufw provides a framework for managing netfilter, as well as a command-line and available graphical user interface for manipulating the firewall. Notes: - When running ufw enable or starting ufw via its initscript, ufw will flush its chains. This is required so ufw can maintain a consistent state, but it may drop existing connections (eg ssh). ufw does support adding rules before enabling the firewall. - Run the following command before running ufw enable. # ufw allow proto tcp from any to any port 22. - The rules will still be flushed, but the ssh port will be open after enabling the firewall. Please note that once ufw is 'enabled', ufw will not flush the chains when adding or removing rules (but will when modifying a rule or changing the default policy). - By default, ufw will prompt when enabling the firewall while running under ssh. This can be disabled by using ufw --force enable.','The ufw service must be enabled and running in order for ufw to protect the system.','Changing firewall settings while connected over network can result in being locked out of the system.','Run the following command to unmask the ufw daemon: # systemctl unmask ufw.service. Run the following command to enable and start the ufw daemon: # systemctl --now enable ufw.service active Run the following command to enable ufw: # ufw enable.','[{\"cis\": [\"3.5.1.3\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29580,'Ensure ufw loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6).','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8 for IPv4 and ::1/128 for IPv6) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ufw allow in on lo # ufw allow out on lo # ufw deny in from 127.0.0.0/8 # ufw deny in from ::1.','[{\"cis\": [\"3.5.1.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29581,'Ensure ufw default deny firewall policy.','A default deny policy on connections ensures that any unconfigured network usage will be rejected. Note: Any port or protocol without a explicit allow before the default deny will be blocked.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','Any port and protocol not explicitly allowed will be blocked. The following rules should be considered before applying the default deny. ufw allow git, ufw allow in http, ufw allow out http <- required for apt to connect to repository, ufw allow in https, ufw allow out https, ufw allow out 53, ufw logging on.','Run the following commands to implement a default deny policy: # ufw default deny incoming # ufw default deny outgoing # ufw default deny routed.','[{\"cis\": [\"3.5.1.7\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29582,'Ensure nftables is installed.','nftables provides a new in-kernel packet classification framework that is based on a network-specific Virtual Machine (VM) and a new nft userspace command line tool. nftables reuses the existing Netfilter subsystems such as the existing hook infrastructure, the connection tracking system, NAT, userspace queuing and logging subsystem. Notes: - nftables is available in Linux kernel 3.13 and newer. - Only one firewall utility should be installed and configured. - Changing firewall settings while connected over the network can result in being locked out of the system.','nftables is a subsystem of the Linux kernel that can protect against threats originating from within a corporate network to include malicious mobile code and poorly configured software on a host.','','Run the following command to install nftables: # apt install nftables.','[{\"cis\": [\"3.5.2.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29583,'Ensure ufw is uninstalled or disabled with nftables.','Uncomplicated Firewall (UFW) is a program for managing a netfilter firewall designed to be easy to use.','Running both the nftables service and ufw may lead to conflict and unexpected results.','','Run one of the following commands to either remove ufw or disable ufw. Run the following command to remove ufw: # apt purge ufw. Run the following command to disable ufw: # ufw disable.','[{\"cis\": [\"3.5.2.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29584,'Ensure iptables are flushed with nftables.','nftables is a replacement for iptables, ip6tables, ebtables and arptables.','It is possible to mix iptables and nftables. However, this increases complexity and also the chance to introduce errors. For simplicity flush out all iptables rules, and ensure it is not loaded.','','Run the following commands to flush iptables: For iptables: # iptables -F For ip6tables: # ip6tables -F.','[{\"cis\": [\"3.5.2.3\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29585,'Ensure a nftables table exists.','Tables hold chains. Each table only has one address family and only applies to packets of this family. Tables can have one of five families.','nftables doesn't have any default tables. Without a table being build, nftables will not filter network traffic.','Adding rules to a running nftables can cause loss of connectivity to the system.','Run the following command to create a table in nftables: # nft create table inet <table name> Example: # nft create table inet filter.','[{\"cis\": [\"3.5.2.4\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29586,'Ensure nftables base chains exist.','Chains are containers for rules. They exist in two kinds, base chains and regular chains. A base chain is an entry point for packets from the networking stack, a regular chain may be used as jump target and is used for better rule organization.','If a base chain doesn't exist with a hook for input, forward, and delete, packets that would flow through those chains will not be touched by nftables.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command to create the base chains: # nft create chain inet <table name> <base chain name> { type filter hook <(input|forward|output)> priority 0 ; }. Example: # nft create chain inet filter input { type filter hook input priority 0 ; } # nft create chain inet filter forward { type filter hook forward priority 0 ; } # nft create chain inet filter output { type filter hook output priority 0 ; }.','[{\"cis\": [\"3.5.2.5\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29587,'Ensure nftables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # nft add rule inet filter input iif lo accept # nft create rule inet filter input ip saddr 127.0.0.0/8 counter drop. IF IPv6 is enabled on the system: Run the following command to implement the IPv6 loopback rule: # nft add rule inet filter input ip6 saddr ::1 counter drop.','[{\"cis\": [\"3.5.2.6\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29588,'Ensure nftables default deny firewall policy.','Base chain policy is the default verdict that will be applied to packets reaching the end of the chain.','There are two policies: accept (Default) and drop. If the policy is set to accept, the firewall will accept any packet that is not configured to be denied and the packet will continue transversing the network stack. It is easier to white list acceptable usage than to black list unacceptable usage. Note: Changing firewall settings while connected over network can result in being locked out of the system.','If configuring nftables over ssh, creating a base chain with a policy of drop will cause loss of connectivity. Ensure that a rule allowing ssh has been added to the base chain prior to setting the base chain's policy to drop.','Run the following command for the base chains with the input, forward, and output hooks to implement a default DROP policy: # nft chain <table family> <table name> <chain name> { policy drop ; }. Example: # nft chain inet filter input { policy drop ; } # nft chain inet filter forward { policy drop ; } # nft chain inet filter output { policy drop ; }.','[{\"cis\": [\"3.5.2.8\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29589,'Ensure nftables service is enabled.','The nftables service allows for the loading of nftables rulesets during boot, or starting on the nftables service.','The nftables service restores the nftables rules from the rules files referenced in the /etc/nftables.conf file during boot or the starting of the nftables service.','','Run the following command to enable the nftables service: # systemctl enable nftables.','[{\"cis\": [\"3.5.2.9\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29590,'Ensure iptables packages are installed.','iptables is a utility program that allows a system administrator to configure the tables provided by the Linux kernel firewall, implemented as different Netfilter modules, and the chains and rules it stores. Different kernel modules and programs are used for different protocols; iptables applies to IPv4, ip6tables to IPv6, arptables to ARP, and ebtables to Ethernet frames.','A method of configuring and maintaining firewall rules is necessary to configure a Host Based Firewall.','','Run the following command to install iptables and iptables-persistent # apt install iptables iptables-persistent.','[{\"cis\": [\"3.5.3.1.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29591,'Ensure nftables is not installed with iptables.','nftables is a subsystem of the Linux kernel providing filtering and classification of network packets/datagrams/frames and is the successor to iptables.','Running both iptables and nftables may lead to conflict.','','Run the following command to remove nftables: # apt purge nftables.','[{\"cis\": [\"3.5.3.1.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}]'),(29592,'Ensure ufw is uninstalled or disabled with iptables.','Uncomplicated Firewall (UFW) is a program for managing a netfilter firewall designed to be easy to use. - Uses a command-line interface consisting of a small number of simple commands. - Uses iptables for configuration.','Running iptables.persistent with ufw enabled may lead to conflict and unexpected results.','','Run one of the following commands to either remove ufw or stop and mask ufw Run the following command to remove ufw: # apt purge ufw OR Run the following commands to disable ufw: # ufw disable # systemctl stop ufw # systemctl mask ufw.','[{\"cis\": [\"3.5.3.1.3\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}]'),(29593,'Ensure iptables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Notes: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.2.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29594,'Ensure iptables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (127.0.0.0/8). Notes: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (127.0.0.0/8) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # iptables -A INPUT -i lo -j ACCEPT # iptables -A OUTPUT -o lo -j ACCEPT # iptables -A INPUT -s 127.0.0.0/8 -j DROP.','[{\"cis\": [\"3.5.3.2.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29595,'Ensure ip6tables default deny firewall policy.','A default deny all policy on connections ensures that any unconfigured network usage will be rejected. Note: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','With a default accept policy the firewall will accept any packet that is not configured to be denied. It is easier to white list acceptable usage than to black list unacceptable usage.','','Run the following commands to implement a default DROP policy: # ip6tables -P INPUT DROP # ip6tables -P OUTPUT DROP # ip6tables -P FORWARD DROP.','[{\"cis\": [\"3.5.3.3.1\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29596,'Ensure ip6tables loopback traffic is configured.','Configure the loopback interface to accept traffic. Configure all other interfaces to deny traffic to the loopback network (::1). Note: - Changing firewall settings while connected over network can result in being locked out of the system. - Remediation will only affect the active system firewall, be sure to configure the default policy in your firewall management to apply on boot as well.','Loopback traffic is generated between processes on machine and is typically critical to operation of the system. The loopback interface is the only place that loopback network (::1) traffic should be seen, all other interfaces should ignore traffic on this network as an anti-spoofing measure.','','Run the following commands to implement the loopback rules: # ip6tables -A INPUT -i lo -j ACCEPT # ip6tables -A OUTPUT -o lo -j ACCEPT # ip6tables -A INPUT -s ::1 -j DROP.','[{\"cis\": [\"3.5.3.3.2\"]}, {\"cis_csc_v8\": [\"4.4\", \"4.5\"]}, {\"cis_csc_v7\": [\"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.20\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.4\", \"1.3.1\", \"1.4\"]}, {\"pci_dss_4.0\": [\"1.2.1\", \"1.4.1\"]}, {\"nist_sp_800-53\": [\"SC-7(5)\"]}, {\"soc_2\": [\"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.004\"]}, {\"mitre_tactics\": [\"TA0011\"]}, {\"mitre_mitigations\": [\"M1031\", \"M1037\"]}]'),(29597,'Ensure auditd is installed.','auditd is the userspace component to the Linux Auditing System. It's responsible for writing audit records to the disk.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to Install auditd: # apt install auditd audispd-plugins.','[{\"cis\": [\"4.1.1.1\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29598,'Ensure auditd service is enabled and active.','Turn on the auditd daemon to record system events.','The capturing of system events provides system administrators with information to allow them to determine if unauthorized access to their system is occurring.','','Run the following command to enable and start auditd: # systemctl --now enable auditd.','[{\"cis\": [\"4.1.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29599,'Ensure auditing for processes that start prior to auditd is enabled.','Configure grub2 so that processes that are capable of being audited can be audited even if they start up prior to auditd startup.','Audit events need to be captured on processes that start up prior to auditd , so that potential malicious activity cannot go undetected.','','Edit /etc/default/grub and add audit=1 to GRUB_CMDLINE_LINUX: Example: GRUB_CMDLINE_LINUX="audit=1". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"4.1.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29600,'Ensure audit_backlog_limit is sufficient.','In the kernel-level audit subsystem, a socket buffer queue is used to hold audit events. Whenever a new audit event is received, it is logged and prepared to be added to this queue. The kernel boot parameter audit_backlog_limit=N, with N representing the amount of messages, will ensure that a queue cannot grow beyond a certain size. If an audit event is logged which would grow the queue beyond this limit, then a failure occurs and is handled according to the system configuration.','If an audit event is logged which would grow the queue beyond the audit_backlog_limit, then a failure occurs, auditd records will be lost, and potential malicious activity could go undetected.','','Edit /etc/default/grub and add audit_backlog_limit=N to GRUB_CMDLINE_LINUX. The recommended size for N is 8192 or larger. Example: GRUB_CMDLINE_LINUX="audit_backlog_limit=8192". Run the following command to update the grub2 configuration: # update-grub.','[{\"cis\": [\"4.1.1.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29601,'Ensure audit log storage size is configured.','Configure the maximum size of the audit log file. Once the log reaches the maximum size, it will be rotated and a new log file will be started.','It is important that an appropriate size is determined for log files so that they do not impact the system and audit data is not lost.','','Set the following parameter in /etc/audit/auditd.conf in accordance with site policy: max_log_file = <MB>.','[{\"cis\": [\"4.1.2.1\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(29602,'Ensure audit logs are not automatically deleted.','The max_log_file_action setting determines how to handle the audit log file reaching the max file size. A value of keep_logs will rotate the logs but never delete old logs.','In high security contexts, the benefits of maintaining a long audit history exceed the cost of storing the audit history.','','Set the following parameter in /etc/audit/auditd.conf: max_log_file_action = keep_logs.','[{\"cis\": [\"4.1.2.2\"]}, {\"cis_csc_v8\": [\"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"pci_dss_3.2.1\": [\"10.7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(29603,'Ensure system is disabled when audit logs are full.','The auditd daemon can be configured to halt the system when the audit logs are full. The admin_space_left_action parameter tells the system what action to take when the system has detected that it is low on disk space. Valid values are ignore, syslog, suspend, single, and halt. - ignore, the audit daemon does nothing. - Syslog, the audit daemon will issue a warning to syslog. - Suspend, the audit daemon will stop writing records to the disk. - single, the audit daemon will put the computer system in single user mode. - halt, the audit daemon will shutdown the system.','In high security contexts, the risk of detecting unauthorized access or nonrepudiation exceeds the benefit of the system's availability.','If the admin_space_left_action parameter is set to halt the audit daemon will shutdown the system when the disk partition containing the audit logs becomes full.','Set the following parameters in /etc/audit/auditd.conf: space_left_action = email action_mail_acct = root set admin_space_left_action to either halt or single in /etc/audit/auditd.conf. Example: admin_space_left_action = halt.','[{\"cis\": [\"4.1.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29604,'Ensure changes to system administration scope (sudoers) is collected.','Monitor scope changes for system administrators. If the system has been properly configured to force system administrators to log in as themselves first and then use the sudo command to execute privileged commands, it is possible to monitor changes in scope. The file /etc/sudoers, or files in /etc/sudoers.d, will be written to when the file(s) or related attributes have changed. The audit records will be tagged with the identifier "scope".','Changes in the /etc/sudoers and /etc/sudoers.d files can indicate that an unauthorized change has been made to the scope of system administrator activity.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor scope changes for system administrators. Example: # printf " -w /etc/sudoers -p wa -k scope -w /etc/sudoers.d -p wa -k scope " >> /etc/audit/rules.d/50-scope.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
";fi.','[{\"cis\": [\"4.1.3.1\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29605,'Ensure actions as another user are always logged.','sudo provides users with temporary elevated privileges to perform operations, either as the superuser or another user.','Creating an audit log of users with temporary elevated privileges and the operation(s) they performed is essential to reporting. Administrators will want to correlate the events written to the audit trail with the records written to sudo's logfile to verify if unauthorized commands have been executed.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor elevated privileges. - 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -C euid!=uid -F auid!=unset -S execve -k user_emulation -a always,exit -F arch=b32 -C euid!=uid -F auid!=unset -S execve -k user_emulation " >> /etc/audit/rules.d/50-user_emulation.rules - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.2\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.9\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.9.4.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29606,'Ensure events that modify date and time information are collected.','Capture events where the system date and/or time has been modified. The parameters in this section are set to determine if the; - adjtimex: tune kernel clock. - settimeofday: set time using timeval and timezone structures. - stime: using seconds since 1/1/1970. - clock_settime: allows for the setting of several internal clocks and timers system calls have been executed. Further, ensure to write an audit record to the configured audit log file upon exit, tagging the records with a unique identifier such as "time-change".','Unexpected changes in system date and/or time could be a sign of malicious activity on the system.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify date and time information. - 64 Bit systems Example: # printf " -a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time-change -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime -k time-change -w /etc/localtime -p wa -k time-change " >> /etc/audit/rules.d/50-time-change.rules - Load audit rules: Merge and load the rules into active configuration: # augenrules --load .Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64. In addition, add stime to the system call audit. Example: -a always,exit -F arch=b32 -S adjtimex,settimeofday,clock_settime,stime -k time-change.','[{\"cis\": [\"4.1.3.4\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29607,'Ensure events that modify the system's network environment are collected.','Record changes to network environment files or system calls. The below parameters monitors the following system calls, and write an audit event on system call exit: - sethostname: set the systems host name. - setdomainname: set the systems domain name. The files being monitored are: > /etc/issue and /etc/issue.net - messages displayed pre-login. > /etc/hosts - file containing host names and associated IP addresses. > /etc/networks - symbolic names for networks. > /etc/network/ - directory containing network interface scripts and configurations files.','Monitoring sethostname and setdomainname will identify potential unauthorized changes to host and domainname of a system. The changing of these names could potentially break security parameters that are set based on those names. The /etc/hosts file is monitored for changes that can indicate an unauthorized intruder is trying to change machine associations with IP addresses and trick users and processes into connecting to unintended machines. Monitoring /etc/issue and /etc/issue.net is important, as intruders could put disinformation into those files and trick users into providing information to the intruder. Monitoring /etc/network is important as it can show if network interfaces or scripts are being modified in a way that can lead to the machine becoming unavailable or compromised. All audit records should have a relevant tag associated with them.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the system's network environment. - 64 Bit systems: Example: # printf " -a always,exit -F arch=b64 -S sethostname,setdomainname -k system-locale -a always,exit -F arch=b32 -S sethostname,setdomainname -k system-locale -w /etc/issue -p wa -k system-locale -w /etc/issue.net -p wa -k system-locale -w /etc/hosts -p wa -k system-locale -w /etc/networks -p wa -k system-locale -w /etc/network/ -p wa -k system-locale " >> /etc/audit/rules.d/50-system_local.rules - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.5\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29608,'Ensure unsuccessful file access attempts are collected.','Monitor for unsuccessful attempts to access files. The following parameters are associated with system calls that control files: - creation - creat. - opening - open, openat. - truncation - truncate, ftruncate. An audit log record will only be written if all of the following criteria is met for the user when trying to access a file: - a non-privileged user (auid>=UID_MIN). - is not a Daemon event (auid=4294967295/unset/-1). - if the system call returned EACCES (permission denied) or EPERM (some other permanent error associated with the specific system call).','Failed attempts to open, create or truncate files could be an indication that an individual or process is trying to gain unauthorized access to the system.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor unsuccessful file access attempts. 64 Bit systems Example: #{ UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S creat,open,openat,truncate,ftruncate -F exit=-EACCES -F auid>=${UID_MIN} -F auid!=unset -k access -a always,exit -F arch=b64 -S creat,open,openat,truncate,ftruncate -F exit=-EPERM -F auid>=${UID_MIN} -F auid!=unset -k access -a always,exit -F arch=b32 -S creat,open,openat,truncate,ftruncate -F exit=-EACCES -F auid>=${UID_MIN} -F auid!=unset -k access -a always,exit -F arch=b32 -S creat,open,openat,truncate,ftruncate -F exit=-EPERM -F auid>=${UID_MIN} -F auid!=unset -k access " >> /etc/audit/rules.d/50-access.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi. 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.7\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"14.9\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29609,'Ensure events that modify user/group information are collected.','Record events affecting the modification of user or group information, including that of passwords and old passwords if in use. - /etc/group: system groups. - /etc/passwd: system users. - /etc/gshadow: encrypted password for each group. - /etc/shadow: system user passwords. - /etc/security/opasswd: storage of old passwords if the relevant PAM module is in use. The parameters in this section will watch the files to see if they have been opened for write or have had attribute changes (e.g. permissions) and tag them with the identifier "identity" in the audit log file.','Unexpected changes to these files could be an indication that the system has been compromised and that an unauthorized user is attempting to hide their activities or compromise additional accounts.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify user/group information. Example: # printf " -w /etc/group -p wa -k identity -w /etc/passwd -p wa -k identity -w /etc/gshadow -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/security/opasswd -p wa -k identity " >> /etc/audit/rules.d/50-identity.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.8\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.8\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29610,'Ensure discretionary access control permission modification events are collected.','Monitor changes to file permissions, attributes, ownership and group. The parameters in this section track changes for system calls that affect file permissions and attributes. The following commands and system calls effect the permissions, ownership and various attributes of files: chmod, fchmod, fchmodat, chown, fchown, fchownat, lchown, setxattr, lsetxattr, fsetxattr, removexattr, lremovexattr, fremovexattr. In all cases, an audit record will only be written for non-system user ids and will ignore Daemon events. All audit records will be tagged with the identifier "perm_mod".','Monitoring for changes in file attributes could alert a system administrator to activity that could indicate intruder activity or policy violation.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor discretionary access control permission modification events. 64 Bit systems: Example: #{ UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b32 -S chmod,fchmod,fchmodat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b32 -S lchown,fchown,chown,fchownat -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b64 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod -a always,exit -F arch=b32 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=${UID_MIN} -F auid!=unset -F key=perm_mod " >> /etc/audit/rules.d/50-perm_mod.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi. 32 Bit systems Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.9\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29611,'Ensure successful file system mounts are collected.','Monitor the use of the mount system call. The mount (and umount ) system call controls the mounting and unmounting of file systems. The parameters below configure the system to create an audit record when the mount system call is used by a non-privileged user.','It is highly unusual for a non privileged user to mount file systems to the system. While tracking mount commands gives the system administrator evidence that external media may have been mounted (based on a review of the source of the mount and confirming it's an external media type), it does not conclusively indicate that data was exported to the media. System administrators who wish to determine if data were exported, would also have to track successful open, creat and truncate system calls requiring write access to a file under the mount point of the external media file system. This could give a fair indication that a write occurred. The only way to truly prove it, would be to track successful writes to the external media. Tracking write system calls could quickly fill up the audit log and is not recommended. Recommendations on configuration options to track data export to media is beyond the scope of this document.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful file system mounts. - 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b32 -S mount -F auid>=$UID_MIN -F auid!=unset -k mounts -a always,exit -F arch=b64 -S mount -F auid>=$UID_MIN -F auid!=unset -k mounts " >> /etc/audit/rules.d/50-mounts.rules || printf "ERROR: Variable 'UID_MIN' is unset.
"} - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.10\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"CM-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0010\"]}, {\"mitre_mitigations\": [\"M1034\"]}]'),(29612,'Ensure session initiation information is collected.','Monitor session initiation events. The parameters in this section track changes to the files associated with session events. - /var/run/utmp: tracks all currently logged in users. - /var/log/wtmp: file tracks logins, logouts, shutdown, and reboot events. - /var/log/btmp: keeps track of failed login attempts and can be read by entering the command /usr/bin/last -f /var/log/btmp. All audit records will be tagged with the identifier "session".','Monitoring these files for changes could alert a system administrator to logins occurring at unusual hours, which could indicate intruder activity (i.e. a user logging in at a time when they do not normally log in).','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor session initiation information. Example: # printf " -w /var/run/utmp -p wa -k session -w /var/log/wtmp -p wa -k session -w /var/log/btmp -p wa -k session " >> /etc/audit/rules.d/50-session.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.11\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.13\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.9.4.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}]'),(29613,'Ensure login and logout events are collected.','Monitor login and logout events. The parameters below track changes to files associated with login/logout events. - /var/log/lastlog: maintain records of the last time a user successfully logged in. - /var/run/faillock: directory maintains records of login failures via the pam_faillock module.','Monitoring login/logout events could provide a system administrator with information associated with brute force attacks against user logins.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor login and logout events. Example: # printf " -w /var/log/lastlog -p wa -k logins -w /var/run/faillock -p wa -k logins " >> /etc/audit/rules.d/50-login.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.12\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"4.9\", \"16.11\", \"16.13\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3\", \"AU-3(1)\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.9.4.2\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0001\"]}]'),(29614,'Ensure file deletion events by users are collected.','Monitor the use of system calls associated with the deletion or renaming of files and file attributes. This configuration statement sets up monitoring for: - unlink: remove a file. - unlinkat: remove a file attribute. - rename: rename a file. - renameat: rename a file attribute system calls and tags them with the identifier "delete".','Monitoring these calls from non-privileged users could provide a system administrator with evidence that inappropriate removal of files and file attributes associated with protected files is occurring. While this audit option will look at all events, system administrators will want to look for specific privileged files that are being deleted or altered.','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor file deletion events by users. - 64 Bit systems: Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S rename,unlink,unlinkat,renameat -F auid>=${UID_MIN} -F auid!=unset -F key=delete -a always,exit -F arch=b32 -S rename,unlink,unlinkat,renameat -F auid>=${UID_MIN} -F auid!=unset -F key=delete " >> /etc/audit/rules.d/50-delete.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } - Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.13\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29615,'Ensure events that modify the system's Mandatory Access Controls are collected.','Monitor AppArmor, an implementation of mandatory access controls. The parameters below monitor any write access (potential additional, deletion or modification of files in the directory) or attribute changes to the /etc/apparmor/ and /etc/apparmor.d/ directories. Note: If a different Mandatory Access Control method is used, changes to the corresponding directories should be audited.','Changes to files in the /etc/apparmor/ and /etc/apparmor.d/ directories could indicate that an unauthorized user is attempting to modify access controls and change security contexts, leading to a compromise of the system.','','Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor events that modify the systems Mandatory Access Controls. Example: # printf " -w /etc/apparmor/ -p wa -k MAC-policy -w /etc/apparmor.d/ -p wa -k MAC-policy " >> /etc/audit/rules.d/50-MAC-policy.rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.14\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"5.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.1.2\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29616,'Ensure successful and unsuccessful attempts to use the chcon command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the chcon command.','The chcon command is used to change file security context. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the chcon command. - 64 Bit systems: Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k perm_chng " >> /etc/audit/rules.d/50-perm_chng.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } - Load audit rules: Merge and load the rules into active configuration: # augenrules --load .Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.15\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29617,'Ensure successful and unsuccessful attempts to use the setfacl command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the setfacl command.','This utility sets Access Control Lists (ACLs) of files and directories. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the setfacl command. - 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/bin/setfacl -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k perm_chng " >> /etc/audit/rules.d/50-perm_chng.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.16\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29618,'Ensure successful and unsuccessful attempts to use the chacl command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the chacl command. chacl is an IRIX-compatibility command, and is maintained for those users who are familiar with its use from either XFS or IRIX.','chacl changes the ACL(s) for a file or directory. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the chacl command. - 64 Bit systems: Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/bin/chacl -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k perm_chng " >> /etc/audit/rules.d/50-perm_chng.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.17\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29619,'Ensure successful and unsuccessful attempts to use the usermod command are recorded.','The operating system must generate audit records for successful/unsuccessful uses of the usermod command.','The usermod command modifies the system account files to reflect the changes that are specified on the command line. 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. Audit records can be generated from various components within the information system (e.g., module or policy filter).','','Create audit rules: Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor successful and unsuccessful attempts to use the usermod command. - 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k usermod " >> /etc/audit/rules.d/50-usermod.rules || printf "ERROR:Variable 'UID_MIN' is unset.
" } Load audit rules: Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi - 32 Bit systems: Follow the same procedures as for 64 bit systems and ignore any entries with b64.','[{\"cis\": [\"4.1.3.18\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29620,'Ensure kernel module loading unloading and modification is collected.','Monitor the loading and unloading of kernel modules. All the loading / listing / dependency checking of modules is done by kmod via symbolic links. The following system calls control loading and unloading of modules: - init_module - load a module. - finit_module - load a module (used when the overhead of using cryptographically signed modules to determine the authenticity of a module can be avoided). - delete_module - delete a module. - create_module - create a loadable module entry. - query_module - query the kernel for various bits pertaining to modules. Any execution of the loading and unloading module programs and system calls will trigger an audit record with an identifier of modules.','Monitoring the use of all the various ways to manipulate kernel modules could provide system administrators with evidence that an unauthorized change was made to a kernel module, possibly compromising the security of the system.','','Create audit rules Edit or create a file in the /etc/audit/rules.d/ directory, ending in .rules extension, with the relevant rules to monitor kernel module modification. 64 Bit systems Example: # { UID_MIN=$(awk '/^s*UID_MIN/{print $2}' /etc/login.defs) [ -n "${UID_MIN}" ] && printf " -a always,exit -F arch=b64 -S init_module,finit_module,delete_module,create_module,query_module -F auid>=${UID_MIN} -F auid!=unset -k kernel_modules -a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=${UID_MIN} -F auid!=unset -k kernel_modules " >> /etc/audit/rules.d/50-kernel_modules.rules || printf "ERROR: Variable 'UID_MIN' is unset.
" } Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.19\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}, {\"mitre_mitigations\": [\"M1047\"]}]'),(29621,'Ensure the audit configuration is immutable.','Set system audit so that audit rules cannot be modified with auditctl. Setting the flag "-e 2" forces audit to be put in immutable mode. Audit changes can only be made on system reboot. Note: This setting will require the system to be rebooted to update the active auditd configuration settings.','In immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. Users would most likely notice a system reboot and that could alert administrators of an attempt to make unauthorized audit changes.','','Edit or create the file /etc/audit/rules.d/99-finalize.rules and add the line -e 2 at the end of the file: Example: # printf -- "-e 2" >> /etc/audit/rules.d/99-finalize.rules Load audit rules Merge and load the rules into active configuration: # augenrules --load Check if reboot is required. # if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then printf "Reboot required to load rules
"; fi.','[{\"cis\": [\"4.1.3.20\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.3\", \"AC.L2-3.1.5\", \"AU.L2-3.3.1\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\", \"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\", \"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"AU-3\", \"AU-3(1)\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29622,'Ensure the running and on disk configuration is the same.','The Audit system have both on disk and running configuration. It is possible for these configuration settings to differ. Note: Due to the limitations of augenrules and auditctl, it is not absolutely guaranteed that loading the rule sets via augenrules --load will result in all rules being loaded or even that the user will be informed if there was a problem loading the rules.','Configuration differences between what is currently running and what is on disk could cause unexpected problems or may give a false impression of compliance requirements.','','If the rules are not aligned across all three () areas, run the following command to merge and load all rules: # augenrules --load Check if reboot is required. if [[ $(auditctl -s | grep "enabled") =~ "2" ]]; then echo "Reboot required to load rules"; fi.','[{\"cis\": [\"4.1.3.21\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29623,'Ensure only authorized groups are assigned ownership of audit log files.','Audit log files contain information about the system and system activity.','Access to audit records can reveal system and configuration data to attackers, potentially compromising its confidentiality.','','Run the following command to configure the audit log files to be owned by adm group: # find $(dirname $(awk -F"=" '/^s*log_file/ {print $2}' /etc/audit/auditd.conf | xargs)) -type f ( ! -group adm -a ! -group root ) -exec chgrp adm {} + Run the following command to configure the audit log files to be owned by the adm group: # chgrp adm /var/log/audit/ Run the following command to set the log_group parameter in the audit configuration file to log_group = adm: # sed -ri 's/^s*#?s*log_groups*=s*S+(s*#.*)?.*$/log_group = adm1/' /etc/audit/auditd.conf Run the following command to restart the audit daemon to reload the configuration file: # systemctl restart auditd.','[{\"cis\": [\"4.1.4.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29624,'Ensure audit configuration files are 640 or more restrictive.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to remove more permissive mode than 0640 from the audit configuration files: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) -exec chmod u-x,g-wx,o-rwx {} +.','[{\"cis\": [\"4.1.4.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29625,'Ensure audit configuration files are owned by root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change ownership to root user: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -user root -exec chown root {} +.','[{\"cis\": [\"4.1.4.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29626,'Ensure audit configuration files belong to group root.','Audit configuration files control auditd and what events are audited.','Access to the audit configuration files could allow unauthorized personnel to prevent the auditing of critical events. Misconfigured audit configuration files may prevent the auditing of critical events or impact the system's performance by overwhelming the audit log. Misconfiguration of the audit configuration files may also make it more difficult to establish and investigate events relating to an incident.','','Run the following command to change group to root: # find /etc/audit/ -type f ( -name '*.conf' -o -name '*.rules' ) ! -group root -exec chgrp root {} +.','[{\"cis\": [\"4.1.4.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29627,'Ensure audit tools are 755 or more restrictive.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29628,'Ensure audit tools are owned by root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to change the owner of the audit tools to the root user: # chown root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.9\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29629,'Ensure audit tools belong to group root.','Audit 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.','Protecting audit information includes identifying and protecting the tools used to view and manipulate log data. Protecting audit tools is necessary to prevent unauthorized operation on audit information.','','Run the following command to remove more permissive mode from the audit tools: # chmod go-w /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules Run the following command to change owner and group of the audit tools to root user and group: # chown root:root /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/augenrules.','[{\"cis\": [\"4.1.4.10\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29630,'Ensure systemd-journal-remote is installed.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralised log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to install systemd-journal-remote: # apt install systemd-journal-remote.','[{\"cis\": [\"4.2.1.1.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29631,'Ensure systemd-journal-remote is enabled.','Journald (via systemd-journal-remote) supports the ability to send log events it gathers to a remote log host or to receive messages from remote hosts, thus enabling centralised log management.','Storing log data on a remote host protects log integrity from local attacks. If an attacker gains root access on the local system, they could tamper with or remove log data that is stored on the local system.','','Run the following command to enable systemd-journal-remote: # systemctl --now enable systemd-journal-upload.service.','[{\"cis\": [\"4.2.1.1.3\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29632,'Ensure journald is not configured to recieve logs from a remote client.','Journald supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts. NOTE: - The same package, systemd-journal-remote, is used for both sending logs to remote hosts and receiving incoming logs. - With regards to receiving logs, there are two services; systemd-journal-remote.socket and systemd-journal-remote.service.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Run the following command to disable systemd-journal-remote.socket: # systemctl --now disable systemd-journal-remote.socket.','[{\"cis\": [\"4.2.1.1.4\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29633,'Ensure journald service is enabled.','Ensure that the systemd-journald service is enabled to allow capturing of logging events.','If the systemd-journald service is not enabled to start on boot, the system will not capture logging events.','','By default the systemd-journald service does not have an [Install] section and thus cannot be enabled / disabled. It is meant to be referenced as Requires or Wants by other unit files. As such, if the status of systemd-journald is not static, investigate why.','[{\"cis\": [\"4.2.1.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29634,'Ensure journald is configured to compress large log files.','The journald system includes the capability of compressing overly large files to avoid filling up the system with logs or making the logs unmanageably large.','Uncompressed large files may unexpectedly fill a filesystem leading to resource unavailability. Compressing logs prior to write can prevent sudden, unexpected filesystem impacts.','','Edit the /etc/systemd/journald.conf file and add the following line: Compress=yes Restart the service: # systemctl restart systemd-journald.','[{\"cis\": [\"4.2.1.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.4\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.7\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"A1.1\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1053\"]}]'),(29635,'Ensure journald is configured to write logfiles to persistent disk.','Data from journald may be stored in volatile memory or persisted locally on the server. Logs in memory will be lost upon a system reboot. By persisting logs to local disk on the server they are protected from loss due to a reboot.','Writing log data to disk will provide the ability to forensically reconstruct events which may have impacted the operations or security of a system even after a system crash or reboot.','','Edit the /etc/systemd/journald.conf file and add the following line: Storage=persistent Restart the service: # systemctl restart systemd-journald.','[{\"cis\": [\"4.2.1.4\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29636,'Ensure journald is not configured to send logs to rsyslog.','Data from journald should be kept in the confines of the service and not forwarded on to other services.','IF journald is the method for capturing logs, all logs of the system should be handled by journald and not forwarded to other logging mechanisms.','','Edit the /etc/systemd/journald.conf file and ensure that ForwardToSyslog=yes is removed. Restart the service: # systemctl restart systemd-journald.','[{\"cis\": [\"4.2.1.5\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-7\", \"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0040\"]}, {\"mitre_mitigations\": [\"M1029\"]}]'),(29637,'Ensure rsyslog is installed.','The rsyslog software is recommended in environments where journald does not meet operation requirements.','The security enhancements of rsyslog such as connection-oriented (i.e. TCP) transmission of logs, the option to log to database formats, and the encryption of log data en route to a central logging server) justify installing and configuring the package.','','Run the following command to install rsyslog: # apt install rsyslog.','[{\"cis\": [\"4.2.2.1\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1005\", \"T1070\", \"T1070.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29638,'Ensure rsyslog service is enabled.','Once the rsyslog package is installed, ensure that the service is enabled.','If the rsyslog service is not enabled to start on boot, the system will not capture logging events.','','Run the following command to enable rsyslog: # systemctl --now enable rsyslog.','[{\"cis\": [\"4.2.2.2\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29639,'Ensure journald is configured to send logs to rsyslog.','Data from journald may be stored in volatile memory or persisted locally on the server. Utilities exist to accept remote export of journald logs, however, use of the RSyslog service provides a consistent means of log collection and export.','IF RSyslog is the preferred method for capturing logs, all logs of the system should be sent to it for further processing.','','Edit the /etc/systemd/journald.conf file and add the following line: ForwardToSyslog=yes Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.3\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.9\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"6.5\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"10.5.3\", \"10.5.4\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"10.3.3\"]}, {\"nist_sp_800-53\": [\"AU-7\", \"AU-6(3)\"]}, {\"soc_2\": [\"PL1.4\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}]'),(29640,'Ensure rsyslog default file permissions are configured.','RSyslog will create logfiles that do not already exist on the system. This setting controls what permissions will be applied to these newly created files.','It is important to ensure that log files have the correct permissions to ensure that sensitive data is archived and protected.','The systems global umask could override, but only making the file permissions stricter, what is configured in RSyslog with the FileCreateMode directive. RSyslog also has it's own $umask directive that can alter the intended file creation mode. In addition, consideration should be given to how FileCreateMode is used. Thus it is critical to ensure that the intended file creation mode is not overridden with less restrictive settings in /etc/rsyslog.conf, /etc/rsyslog.d/*conf files and that FileCreateMode is set before any file is created.','Edit either /etc/rsyslog.conf or a dedicated .conf file in /etc/rsyslog.d/ and set $FileCreateMode to 0640 or more restrictive: $FileCreateMode 0640 Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.4\"]}, {\"cis_csc_v8\": [\"3.3\", \"8.2\"]}, {\"cis_csc_v7\": [\"5.1\", \"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\", \"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\", \"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\", \"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1083\"]}, {\"mitre_tactics\": [\"TA0007\"]}]'),(29641,'Ensure rsyslog is not configured to receive logs from a remote client.','RSyslog supports the ability to receive messages from remote hosts, thus acting as a log server. Clients should not receive data from other hosts.','If a client is configured to also receive data, thus turning it into a server, the client system is acting outside it's operational boundary.','','Should there be any active log server configuration found in the auditing section, modify those file and remove the specific lines highlighted by the audit. Ensure none of the following entries are present in any of /etc/rsyslog.conf or /etc/rsyslog.d/*.conf. Old format $ModLoad imtcp $InputTCPServerRun New format module(load="imtcp") input(type="imtcp" port="514") Restart the service: # systemctl restart rsyslog.','[{\"cis\": [\"4.2.2.7\"]}, {\"cis_csc_v8\": [\"4.8\", \"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\", \"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1070\", \"T1070.002\", \"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29642,'Ensure cron daemon is enabled and running.','The cron daemon is used to execute batch jobs on the system. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','While there may not be user jobs that need to be run on the system, the system does have maintenance jobs that may include security monitoring that have to run, and cron is used to execute them.','','Run the following command to enable and start cron: # systemctl --now enable cron.','[{\"cis\": [\"5.1.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.001\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29643,'Ensure permissions on /etc/crontab are configured.','The /etc/crontab file is used by cron to control its own jobs. The commands in this item make sure that root is the user and group owner of the file and that only the owner can access the file. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','This file contains information on what system jobs are run by cron. Write access to these files could provide unprivileged users with the ability to elevate their privileges. Read access to these files could provide users with the ability to gain insight on system jobs that run on the system and could provide them a way to gain unauthorized privileged access.','','Run the following commands to set ownership and permissions on /etc/crontab : # chown root:root /etc/crontab # chmod og-rwx /etc/crontab.','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29644,'Ensure permissions on /etc/cron.hourly are configured.','This directory contains system cron jobs that need to run on an hourly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.hourly directory: # chown root:root /etc/cron.hourly/ # chmod og-rwx /etc/cron.hourly/.','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29645,'Ensure permissions on /etc/cron.daily are configured.','The /etc/cron.daily directory contains system cron jobs that need to run on a daily basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.daily directory: # chown root:root /etc/cron.daily/ # chmod og-rwx /etc/cron.daily/.','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29646,'Ensure permissions on /etc/cron.weekly are configured.','The /etc/cron.weekly directory contains system cron jobs that need to run on a weekly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.weekly directory: # chown root:root /etc/cron.weekly/ # chmod og-rwx /etc/cron.weekly/.','[{\"cis\": [\"5.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29647,'Ensure permissions on /etc/cron.monthly are configured.','The /etc/cron.monthly directory contains system cron jobs that need to run on a monthly basis. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.monthly directory: # chown root:root /etc/cron.monthly/ # chmod og-rwx /etc/cron.monthly/.','[{\"cis\": [\"5.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29648,'Ensure permissions on /etc/cron.d are configured.','The /etc/cron.d directory contains system cron jobs that need to run in a similar manner to the hourly, daily weekly and monthly jobs from /etc/crontab, but require more granular control as to when they run. The files in this directory cannot be manipulated by the crontab command, but are instead edited by system administrators using a text editor. The commands below restrict read/write and search access to user and group root, preventing regular users from accessing this directory. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy.','Granting write access to this directory for non-privileged users could provide them the means for gaining unauthorized elevated privileges. Granting read access to this directory could give an unprivileged user insight in how to gain elevated privileges or circumvent auditing controls.','','Run the following commands to set ownership and permissions on the /etc/cron.d directory: # chown root:root /etc/cron.d/ # chmod og-rwx /etc/cron.d/.','[{\"cis\": [\"5.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29649,'Ensure cron is restricted to authorized users.','Configure /etc/cron.allow to allow specific users to use this service. If /etc/cron.allow does not exist, then /etc/cron.deny is checked. Any user not specifically defined in this file is allowed to use cron. By removing the file, only users in /etc/cron.allow are allowed to use cron. Notes: - Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, cron should be removed, and the alternate method should be secured in accordance with local site policy. - Even though a given user is not listed in cron.allow, cron jobs can still be run as that user. - The cron.allow file only controls administrative access to the crontab command for scheduling and modifying cron jobs.','On many systems, only the system administrator is authorized to schedule cron jobs. Using the cron.allow file to control who can run cron jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/cron.deny: # rm /etc/cron.deny Run the following command to create /etc/cron.allow # touch /etc/cron.allow Run the following commands to set permissions and ownership for /etc/cron.allow: # chmod g-wx,o-rwx /etc/cron.allow # chown root:root /etc/cron.allow.','[{\"cis\": [\"5.1.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29650,'Ensure at is restricted to authorized users.','Configure /etc/at.allow to allow specific users to use this service. If /etc/at.allow does not exist, then /etc/at.deny is checked. Any user not specifically defined in this file is allowed to use at. By removing the file, only users in /etc/at.allow are allowed to use at. Note: Other methods, such as systemd timers, exist for scheduling jobs. If another method is used, at should be removed, and the alternate method should be secured in accordance with local site policy.','On many systems, only the system administrator is authorized to schedule at jobs. Using the at.allow file to control who can run at jobs enforces this policy. It is easier to manage an allow list than a deny list. In a deny list, you could potentially add a user ID to the system and forget to add it to the deny files.','','Run the following commands to remove /etc/at.deny: # rm /etc/at.deny Run the following command to create /etc/at.allow # touch /etc/at.allow Run the following commands to set permissions and ownership for /etc/at.allow: # chmod g-wx,o-rwx /etc/at.allow # chown root:root /etc/at.allow.','[{\"cis\": [\"5.1.9\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1053\", \"T1053.003\"]}, {\"mitre_tactics\": [\"TA0002\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29651,'Ensure permissions on /etc/ssh/sshd_config are configured.','The /etc/ssh/sshd_config file contains configuration specifications for sshd. The command below sets the owner and group of the file to root.','The /etc/ssh/sshd_config file needs to be protected from unauthorized changes by non-privileged users.','','Run the following commands to set ownership and permissions on /etc/ssh/sshd_config: # chown root:root /etc/ssh/sshd_config # chmod og-rwx /etc/ssh/sshd_config.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1098\", \"T1098.004\", \"T1543\", \"T1543.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29652,'Ensure SSH access is limited.','There are several options available to limit which users and group can access the system via SSH. It is recommended that at least one of the following options be leveraged: - AllowUsers: > The AllowUsers variable gives the system administrator the option of allowing specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by only allowing the allowed users to log in from a particular host, the entry can be specified in the form of user@host. - AllowGroups: > The AllowGroups variable gives the system administrator the option of allowing specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable. - DenyUsers: > The DenyUsers variable gives the system administrator the option of denying specific users to ssh into the system. The list consists of space separated user names. Numeric user IDs are not recognized with this variable. If a system administrator wants to restrict user access further by specifically denying a user's access from a particular host, the entry can be specified in the form of user@host. - DenyGroups: > The DenyGroups variable gives the system administrator the option of denying specific groups of users to ssh into the system. The list consists of space separated group names. Numeric group IDs are not recognized with this variable.','Restricting which users can remotely access the system via SSH will help ensure that only authorized users access the system.','','Edit the /etc/ssh/sshd_config file to set one or more of the parameter as follows: AllowUsers <userlist> OR AllowGroups <grouplist> OR DenyUsers <userlist> OR DenyGroups <grouplist>.','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1018\"]}]'),(29653,'Ensure SSH LogLevel is appropriate.','INFO level is the basic level that only records login activity of SSH users. In many situations, such as Incident Response, it is important to determine when a particular user was active on a system. The logout record can eliminate those users who disconnected, which helps narrow the field. VERBOSE level specifies that login and logout activity as well as the key fingerprint for any SSH key used for login will be logged. This information is important for SSH key management, especially in legacy environments.','SSH provides several logging levels with varying amounts of verbosity. DEBUG is specifically not recommended other than strictly for debugging SSH communications since it provides so much data that it is difficult to identify important security information.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LogLevel VERBOSE OR LogLevel INFO.','[{\"cis\": [\"5.2.5\"]}, {\"cis_csc_v8\": [\"8.2\"]}, {\"cis_csc_v7\": [\"6.2\", \"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"pci_dss_3.2.1\": [\"10.2\", \"10.3\"]}, {\"pci_dss_4.0\": [\"5.3.4\", \"6.4.1\", \"6.4.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0005\"]}]'),(29654,'Ensure SSH PAM is enabled.','The UsePAM directive enables the Pluggable Authentication Module (PAM) interface. If set to yes this will enable PAM authentication using ChallengeResponseAuthentication and PasswordAuthentication directives in addition to PAM account and session module processing for all authentication types.','When usePAM is set to yes, PAM runs through account and session types properly. This is important if you want to restrict access to services based off of IP, time or other factors of the account. Additionally, you can make sure users inherit certain environment variables on login or disallow access to the server.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: UsePAM yes.','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1021\", \"T1021.004\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(29655,'Ensure SSH root login is disabled.','The PermitRootLogin parameter specifies if the root user can log in using SSH. The default is prohibit-password.','Disallowing root logins over SSH requires system admins to authenticate using their own individual account, then escalating to root. This limits opportunity for non-repudiation and provides a clear audit trail in the event of a security incident.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitRootLogin no.','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29656,'Ensure SSH HostbasedAuthentication is disabled.','The HostbasedAuthentication parameter specifies if authentication is allowed through trusted hosts via the user of .rhosts, or /etc/hosts.equiv, along with successful public key client host authentication.','Even though the .rhosts files are ineffective if support is disabled in /etc/pam.conf, disabling the ability to use .rhosts files in SSH provides an additional layer of protection.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: HostbasedAuthentication no.','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29657,'Ensure SSH PermitEmptyPasswords is disabled.','The PermitEmptyPasswords parameter specifies if the SSH server allows login to accounts with empty password strings.','Disallowing remote shell access to accounts that have an empty password reduces the probability of unauthorized access to the system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitEmptyPasswords no.','[{\"cis\": [\"5.2.9\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"16.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29658,'Ensure SSH PermitUserEnvironment is disabled.','The PermitUserEnvironment option allows users to present environment options to the SSH daemon.','Permitting users the ability to set environment variables through the SSH daemon could potentially allow users to bypass security controls (e.g. setting an execution path that has SSH executing trojan'd programs).','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: PermitUserEnvironment no.','[{\"cis\": [\"5.2.10\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1021\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29659,'Ensure SSH IgnoreRhosts is enabled.','The IgnoreRhosts parameter specifies that .rhosts and .shosts files will not be used in RhostsRSAAuthentication or HostbasedAuthentication.','Setting this parameter forces users to enter a password when authenticating with SSH.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: IgnoreRhosts yes.','[{\"cis\": [\"5.2.11\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29660,'Ensure SSH X11 forwarding is disabled.','The X11Forwarding parameter provides the ability to tunnel X11 traffic through the connection to enable remote graphic connections.','Disable X11 forwarding unless there is an operational requirement to use X11 applications directly. There is a small risk that the remote X11 servers of users who are logged in via SSH with X11 forwarding could be compromised by other users on the X11 server. Note that even if X11 forwarding is disabled, users can always install their own forwarders.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: X11Forwarding no.','[{\"cis\": [\"5.2.12\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"pci_dss_3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1210\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29661,'Ensure only strong Ciphers are used.','This variable limits the ciphers that SSH can use during communication. Note: - Some organizations may have stricter requirements for approved ciphers. - Ensure that ciphers used are in compliance with site policy. - The only "strong" ciphers currently FIPS 140-2 compliant are: aes256-ctr, aes192-ctr, aes128-ctr. - Supported ciphers in openSSH 8.2: 3des-cbc, aes128-cbc, aes192-cbc, aes256-cbc, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com, chacha20-poly1305@openssh.com.','Weak ciphers that are used for authentication to the cryptographic module cannot be relied upon to provide confidentiality or integrity, and system data may be compromised. - The Triple DES ciphers, as used in SSH, have a birthday bound of approximately four billion blocks, which makes it easier for remote attackers to obtain clear text data via a birthday attack against a long-duration encrypted session, aka a "Sweet32" attack. - Error handling in the SSH protocol; Client and Server, when using a block cipher algorithm in Cipher Block Chaining (CBC) mode, makes it easier for remote attackers to recover certain plain text data from an arbitrary block of cipher text in an SSH session via unknown vectors.','','Edit the /etc/ssh/sshd_config file add/modify the Ciphers line to contain a comma separated list of the site approved ciphers. Example: Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr.','[{\"cis\": [\"5.2.13\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29662,'Ensure only strong MAC algorithms are used.','This variable limits the types of MAC algorithms that SSH can use during communication. Notes: - Some organizations may have stricter requirements for approved MACs. - Ensure that MACs used are in compliance with site policy. - The only "strong" MACs currently FIPS 140-2 approved are: hmac-sha2-256, hmac-sha2-512. - The Supported MACs are: hmac-md5, hmac-md5-96, hmac-sha1, hmac-sha1-96, hmac-sha2-256, hmac-sha2-512, umac-64@openssh.co, umac-128@openssh.com, hmac-md5-etm@openssh.com, hmac-md5-96-etm@openssh.com, hmac-sha1-etm@openssh.com, hmac-sha1-96-etm@openssh.com, hmac-sha2-256-etm@openss.com, hmac-sha2-512-etm@openssh.com, umac-64-etm@openssh.com, umac-128-etm@openssh.com.','MD5 and 96-bit MAC algorithms are considered weak and have been shown to increase exploitability in SSH downgrade attacks. Weak algorithms continue to have a great deal of attention as a weak spot that can be exploited with expanded computing power. An attacker that breaks the algorithm could take advantage of a MiTM position to decrypt the SSH tunnel and capture credentials and information.','','Edit the /etc/ssh/sshd_config file and add/modify the MACs line to contain a comma separated list of the site approved MACs.Example: MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256.','[{\"cis\": [\"5.2.14\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\", \"16.5\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29663,'Ensure only strong Key Exchange algorithms are used.','Key exchange is any method in cryptography by which cryptographic keys are exchanged between two parties, allowing use of a cryptographic algorithm. If the sender and receiver wish to exchange encrypted messages, each must be equipped to encrypt messages to be sent and decrypt messages received. Notes: - Kex algorithms have a higher preference the earlier they appear in the list. - Some organizations may have stricter requirements for approved Key exchange algorithms. - Ensure that Key exchange algorithms used are in compliance with site policy. - The only Key Exchange Algorithms currently FIPS 140-2 approved are: ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256. - The Key Exchange algorithms supported by OpenSSH 8.2 are: curve25519-sha256, curve25519-sha256@libssh.org, diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group14-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group-exchange-sha1, diffie-hellman-group-exchange-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, sntrup4591761x25519-sha512@tinyssh.org.','Key exchange methods that are considered weak should be removed. A key exchange method may be weak because too few bits are used, or the hashing algorithm is considered too weak. Using weak algorithms could expose connections to man-in-the-middle attacks.','','Edit the /etc/ssh/sshd_config file add/modify the KexAlgorithms line to contain a comma separated list of the site approved key exchange algorithms Example: KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256.','[{\"cis\": [\"5.2.15\"]}, {\"cis_csc_v8\": [\"3.10\"]}, {\"cis_csc_v7\": [\"14.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.17\", \"AC.L2-3.1.13\", \"IA.L2-3.5.10\", \"SC.L2-3.13.11\", \"SC.L2-3.13.8\", \"SC.L2-3.13.15\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(1)\", \"164.312(e)(2)(i)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"2.1.1\", \"4.1\", \"4.1.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"2.2.7\", \"4.1.1\", \"4.2.1\", \"4.2.1.2\", \"4.2.2\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"AC-17(2)\", \"SC-8\", \"SC-8(1)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.13.1.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1557\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29664,'Ensure SSH AllowTcpForwarding is disabled.','SSH port forwarding is a mechanism in SSH for tunneling application ports from the client to the server, or servers to clients. It can be used for adding encryption to legacy applications, going through firewalls, and some system administrators and IT professionals use it for opening backdoors into the internal network from their home machines.','Leaving port forwarding enabled can expose the organization to security risks and backdoors. SSH connections are protected with strong encryption. This makes their contents invisible to most deployed network monitoring and traffic filtering solutions. This invisibility carries considerable risk potential if it is used for malicious purposes such as data exfiltration. Cybercriminals or malware could exploit SSH to hide their unauthorized communications, or to exfiltrate stolen data from the target network.','SSH tunnels are widely used in many corporate environments. In some environments the applications themselves may have very limited native support for security. By utilizing tunneling, compliance with SOX, HIPAA, PCI-DSS, and other standards can be achieved without having to modify the applications.','Edit the /etc/ssh/sshd_config file to set the parameter as follows: AllowTcpForwarding no.','[{\"cis\": [\"5.2.16\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1048\", \"T1048.002\", \"T1572\"]}, {\"mitre_tactics\": [\"TA0008\"]}, {\"mitre_mitigations\": [\"M1042\"]}]'),(29665,'Ensure SSH warning banner is configured.','The Banner parameter specifies a file whose contents must be sent to the remote user before authentication is permitted. By default, no banner is displayed.','Banners are used to warn connecting users of the particular site's policy regarding connection. Presenting a warning message prior to the normal user login may assist the prosecution of trespassers on the computer system.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: Banner /etc/issue.net.','[{\"cis\": [\"5.2.17\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_tactics\": [\"TA0001\", \"TA0007\"]}, {\"mitre_mitigations\": [\"M1035\"]}]'),(29666,'Ensure SSH MaxAuthTries is set to 4 or less.','The MaxAuthTries parameter specifies the maximum number of authentication attempts permitted per connection. When the login failure count reaches half the number, error messages will be written to the syslog file detailing the login failure.','Setting the MaxAuthTries parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. While the recommended setting is 4, set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxAuthTries 4.','[{\"cis\": [\"5.2.18\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"16.13\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(29667,'Ensure SSH MaxStartups is configured.','The MaxStartups parameter specifies the maximum number of concurrent unauthenticated connections to the SSH daemon.','To protect a system from denial of service due to a large number of pending authentication connection attempts, use the rate limiting function of MaxStartups to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxStartups 10:30:60.','[{\"cis\": [\"5.2.19\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(29668,'Ensure SSH MaxSessions is set to 10 or less.','The MaxSessions parameter specifies the maximum number of open sessions permitted from a given connection.','To protect a system from denial of service due to a large number of concurrent sessions, use the rate limiting function of MaxSessions to protect availability of sshd logins and prevent overwhelming the daemon.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: MaxSessions 10.','[{\"cis\": [\"5.2.20\"]}, {\"mitre_techniques\": [\"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0040\"]}]'),(29669,'Ensure SSH LoginGraceTime is set to one minute or less.','The LoginGraceTime parameter specifies the time allowed for successful authentication to the SSH server. The longer the Grace period is the more open unauthenticated connections can exist. Like other session controls in this session the Grace Period should be limited to appropriate organizational limits to ensure the service is available for needed access.','Setting the LoginGraceTime parameter to a low number will minimize the risk of successful brute force attacks to the SSH server. It will also limit the number of concurrent unauthenticated connections. While the recommended setting is 60 seconds (1 Minute), set the number based on site policy.','','Edit the /etc/ssh/sshd_config file to set the parameter as follows: LoginGraceTime 60.','[{\"cis\": [\"5.2.21\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.6\", \"CM.L2-3.4.2\", \"CM.L2-3.4.7\"]}, {\"pci_dss_3.2.1\": [\"2.2\", \"11.5\"]}, {\"pci_dss_4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.5.1\", \"1.2.7\", \"2.1.1\", \"2.2.1\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\", \"T1110.004\", \"T1499\", \"T1499.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1036\"]}]'),(29670,'Ensure SSH Idle Timeout Interval is configured.','NOTE: To clarify, the two settings described below is only meant for idle connections from a protocol perspective and not meant to check if the user is active or not. An idle user does not mean an idle connection. SSH does not and never had, intentionally, the capability to drop idle users. In SSH versions before 8.2p1 there was a bug that caused these values to behave in such a manner that they where abused to disconnect idle users. This bug has been resolved in 8.2p1 and thus it can no longer be abused disconnect idle users. The two options ClientAliveInterval and ClientAliveCountMax control the timeout of SSH sessions. Taken directly from man 5 sshd_config: - ClientAliveInterval Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client. - ClientAliveCountMax Sets the number of client alive messages which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session. It is important to note that the use of client alive messages is very different from TCPKeepAlive. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option en-abled by TCPKeepAlive is spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become unresponsive. The default value is 3. If ClientAliveInterval is set to 15, and ClientAliveCountMax is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds. Setting a zero ClientAliveCountMax disables connection termination.','In order to prevent resource exhaustion, appropriate values should be set for both ClientAliveInterval and ClientAliveCountMax. Specifically, looking at the source code, ClientAliveCountMax must be greater than zero in order to utilize the ability of SSH to drop idle connections. If connections are allowed to stay open indefinately, this can potentially be used as a DDOS attack or simple resource exhaustion could occur over unreliable networks. The example set here is a 45 second timeout. Consult your site policy for network timeouts and apply as appropriate.','','Edit the /etc/ssh/sshd_config file to set the parameters according to site policy. Example: ClientAliveInterval 15 ClientAliveCountMax 3.','[{\"cis\": [\"5.2.22\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29671,'Ensure sudo is installed.','sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.','sudo supports a plug-in architecture for security policies and input/output logging. Third parties can develop and distribute their own policy and I/O logging plug-ins to work seamlessly with the sudo front end. The default security policy is sudoers, which is configured via the file /etc/sudoers and any entries in /etc/sudoers.d. The security policy determines what privileges, if any, a user has to run sudo. The policy may require that users authenticate themselves with a password or another authentication mechanism. If authentication is required, sudo will exit if the user's password is not entered within a configurable time limit. This limit is policy-specific.','','First determine is LDAP functionality is required. If so, then install sudo-ldap, else install sudo. Example: # apt install sudo.','[{\"cis\": [\"5.3.1\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}]'),(29672,'Ensure sudo commands use pty.','sudo can be configured to run only from a pseudo terminal (pseudo-pty).','Attackers can run a malicious program using sudo which would fork a background process that remains even when the main program has finished executing.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers with visudo or a file in /etc/sudoers.d/ with visudo -f <PATH TO FILE> and add the following line: Defaults use_pty.','[{\"cis\": [\"5.3.2\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.8.1.3\", \"A.14.2.5\"]}, {\"mitre_techniques\": [\"T1548\", \"T1548.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}]'); INSERT INTO `tsca` VALUES (29673,'Ensure sudo log file exists.','sudo can use a custom log file.','A sudo log file simplifies auditing of sudo commands.','WARNING: Editing the sudo configuration incorrectly can cause sudo to stop functioning. Always use visudo to modify sudo configuration files.','Edit the file /etc/sudoers or a file in /etc/sudoers.d/ with visudo or visudo -f <PATH TO FILE> and add the following line: Example: Defaults logfile="/var/log/sudo.log".','[{\"cis\": [\"5.3.3\"]}, {\"cis_csc_v8\": [\"8.5\"]}, {\"cis_csc_v7\": [\"6.3\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"pci_dss_3.2.1\": [\"10.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_4.0\": [\"9.4.5\", \"10.2\", \"10.2.1\", \"10.2.1.2\", \"10.2.1.5\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"iso_27001-2013\": [\"A.12.4.1\"]}, {\"mitre_techniques\": [\"T1562\", \"T1562.006\"]}, {\"mitre_tactics\": [\"TA0004\"]}]'),(29674,'Ensure users must provide password for privilege escalation.','The operating system must be configured so that users must provide a password for privilege escalation.','Without (re-)authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user (re-)authenticate.','This will prevent automated processes from being able to elevate privileges.','Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any line with occurrences of NOPASSWD tags in the file.','[{\"cis\": [\"5.3.4\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(29675,'Ensure re-authentication for privilege escalation is not disabled globally.','The operating system must be configured so that users must re-authenticate for privilege escalation.','Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.','','Configure the operating system to require users to reauthenticate for privilege escalation. Based on the outcome of the audit procedure, use visudo -f <PATH TO FILE> to edit the relevant sudoers file. Remove any occurrences of !authenticate tags in the file(s).','[{\"cis\": [\"5.3.5\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(29676,'Ensure sudo authentication timeout is configured correctly.','sudo caches used credentials for a default of 15 minutes. This is for ease of use when there are multiple administrative tasks to perform. The timeout can be modified to suit local security policies. This default is distribution specific. See audit section for further information.','Setting a timeout value reduces the window of opportunity for unauthorized privileged access to another user.','','If the currently configured timeout is larger than 15 minutes, edit the file listed in the audit section with visudo -f <PATH TO FILE> and modify the entry timestamp_timeout= to 15 minutes or less as per your site policy. The value is in minutes. This particular entry may appear on it's own, or on the same line as env_reset. See the following two examples: Defaults Defaults Defaults env_reset, timestamp_timeout=15 timestamp_timeout=15 env_reset.','[{\"cis\": [\"5.3.6\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}]'),(29677,'Ensure access to the su command is restricted.','The su command allows a user to run a command or shell as another user. The program has been superseded by sudo, which allows for more granular control over privileged access. Normally, the su command can be executed by any user. By uncommenting the pam_wheel.so statement in /etc/pam.d/su, the su command will only allow users in a specific groups to execute su. This group should be empty to reinforce the use of sudo for privileged access.','Restricting the use of su , and using sudo in its place, provides system administrators better control of the escalation of user privileges to execute privileged commands. The sudo utility also provides a better logging and audit mechanism, as it can log each command executed via sudo , whereas su can only record that a user executed the su program.','','Create an empty group that will be specified for use of the su command. The group should be named according to site policy. Example: # groupadd sugroup Add the following line to the /etc/pam.d/su file, specifying the empty group: auth required pam_wheel.so use_uid group=sugroup.','[{\"cis\": [\"5.3.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29678,'Ensure password creation requirements are configured.','The pam_pwquality.so module checks the strength of passwords. It performs checks such as making sure a password is not a dictionary word, it is a certain length, contains a mix of characters (e.g. alphabet, numeric, other) and more. The following options are set in the /etc/security/pwquality.conf file: - Password Length: > minlen = 14 - password must be 14 characters or more. - Password complexity: > minclass = 4 - The minimum number of required classes of characters for the new password (digits, uppercase, lowercase, others) OR > dcredit = -1 - provide at least one digit. > ucredit = -1 - provide at least one uppercase character. > ocredit = -1 - provide at least one special character. > lcredit = -1 - provide at least one lowercase character.','Strong passwords protect systems from being hacked through brute force methods.','','The following setting is a recommend example policy. Alter these values to conform to your own organization's password policies. Run the following command to install the pam_pwquality module: # apt install libpam-pwquality Edit the file /etc/security/pwquality.conf and add or modify the following line for password length to conform to site policy: minlen = 14 .Edit the file /etc/security/pwquality.conf and add or modify the following line for .password complexity to conform to site policy: Option 1 minclass = 4 Option 2 dcredit = -1, ucredit = -1, ocredit = -1, lcredit = -1.','[{\"cis\": [\"5.4.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29679,'Ensure lockout for failed password attempts is configured.','Lock out users after n unsuccessful consecutive login attempts. The first sets of changes are made to the common PAM configuration files. The second set of changes are applied to the program specific PAM configuration file. The second set of changes must be applied to each program that will lock out users. Check the documentation for each secondary program for instructions on how to configure them to work with PAM. All configuration of faillock is located in /etc/security/faillock.conf and well commented. - deny > Deny access if the number of consecutive authentication failures for this user during the recent interval exceeds n tries. - fail_interval > The length of the interval, in seconds, during which the consecutive authentication failures must happen for the user account to be locked out. - unlock_time > The access will be re-enabled after n seconds after the lock out. The value 0 has the same meaning as value never - the access will not be re-enabled without resetting the faillock entries by the faillock command. Set the lockout number and unlock time in accordance with local site policy.','Locking out user IDs after n unsuccessful consecutive login attempts mitigates brute force password attacks against your systems.','It is critical to test and validate any PAM changes before deploying. Any misconfiguration could cause the system to be inaccessible.','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Common auth: Edit /etc/pam.d/common-auth and ensure that faillock is configured. Note: It is critical to understand each line and the relevant arguments for successful implementation. The order of these entries is very specific. The pam_faillock.so lines surround the pam_unix.so line. The comment "Added to enable faillock" is shown to highlight the additional lines and their order in the file. # here are the per-package modules (the "Primary" block) auth required pam_faillock.so preauth # Added to enable faillock auth [success=1 default=ignore] pam_unix.so nullok auth [default=die] pam_faillock.so authfail # Added to enable faillock auth sufficient pam_faillock.so authsucc # Added to enable faillock # here's the fallback if no module succeeds auth requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_cap.so # end of pam-auth-update config Common account: Edit /etc/pam.d/common-account and ensure that the following stanza is at the end of the file. > account > required > pam_faillock.so. Fail lock configuration: Edit /etc/security/faillock.conf and configure it per your site policy. Example: deny = 4 > fail_interval = 900 > unlock time = 600.','[{\"cis\": [\"5.4.2\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"pci_dss_3.2.1\": [\"8.1.3\"]}, {\"pci_dss_4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}, {\"mitre_techniques\": [\"T1110\", \"T1110.001\", \"T1110.003\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29680,'Ensure password reuse is limited.','The /etc/security/opasswd file stores the users old passwords and can be checked to ensure that users are not recycling recent passwords.','Forcing users not to reuse their past 5 passwords make it less likely that an attacker will be able to guess the password.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. Edit the /etc/pam.d/common-password file to include the remember= option of 5 or more. If this line doesn't exist, add the line directly above the line: password [success=1 default=ignore] pam_unix.so obscure yescrypt: Example: password required pam_pwhistory.so use_authtok remember=5.','[{\"cis\": [\"5.4.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}]'),(29681,'Ensure password hashing algorithm is up to date with the latest standards.','The commands below change password encryption to yescrypt. All existing accounts will need to perform a password change to upgrade the stored hashes to the new algorithm.','The yescrypt algorithm provides much stronger hashing than previous available algorithms, thus providing additional protection to the system by increasing the level of effort for an attacker to successfully determine passwords. Note: these change only apply to accounts configured on the local system.','','NOTE: Pay special attention to the configuration. Incorrect configuration can cause system lock outs. This is example configuration. You configuration may differ based on previous changes to the files. PAM Edit the /etc/pam.d/common-password file and ensure that no hashing algorithm option for pam_unix.so is set: password [success=1 default=ignore] try_first_pass remember=5 pam_unix.so obscure use_authtok - Login definitions: Edit /etc/login.defs and ensure that ENCRYPT_METHOD is set to yescrypt.','[{\"cis\": [\"5.4.4\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1110\", \"T1110.002\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1041\"]}]'),(29682,'Ensure minimum days between password changes is configured.','The PASS_MIN_DAYS parameter in /etc/login.defs allows an administrator to prevent users from changing their password until a minimum number of days have passed since the last time the user changed their password. It is recommended that PASS_MIN_DAYS parameter be set to 1 or more days.','By restricting the frequency of password changes, an administrator can prevent users from repeatedly changing their password in an attempt to circumvent password reuse controls.','','Set the PASS_MIN_DAYS parameter to 1 in /etc/login.defs : PASS_MIN_DAYS 1 Modify user parameters for all users with a password set to match: # chage --mindays 1 <user>.','[{\"cis\": [\"5.5.1.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.004\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29683,'Ensure password expiration is 365 days or less.','The PASS_MAX_DAYS parameter in /etc/login.defs allows an administrator to force passwords to expire once they reach a defined age.','The window of opportunity for an attacker to leverage compromised credentials or successfully compromise credentials via an online brute force attack is limited by the age of the password. Therefore, reducing the maximum age of a password also reduces an attacker's window of opportunity. It is recommended that the PASS_MAX_DAYS parameter does not exceed 365 days and is greater than the value of PASS_MIN_DAYS.','','Set the PASS_MAX_DAYS parameter to conform to site policy in /etc/login.defs : PASS_MAX_DAYS 365 Modify user parameters for all users with a password set to match: # chage --maxdays 365 <user>.','[{\"cis\": [\"5.5.1.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.002\", \"T1078.003\", \"T1078.004\", \"T1110\", \"T1110.001\", \"T1110.002\", \"T1110.003\", \"T1110.004\"]}]'),(29684,'Ensure password expiration warning days is 7 or more.','The PASS_WARN_AGE parameter in /etc/login.defs allows an administrator to notify users that their password will expire in a defined number of days. It is recommended that the PASS_WARN_AGE parameter be set to 7 or more days.','Providing an advance warning that a password will be expiring gives users time to think of a secure password. Users caught unaware may choose a simple password or write it down where it may be discovered.','','Set the PASS_WARN_AGE parameter to 7 in /etc/login.defs :PASS_WARN_AGE 7 Modify user parameters for all users with a password set to match: # chage --warndays 7 <user>.','[{\"cis\": [\"5.5.1.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_tactics\": [\"TA0006\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29685,'Ensure inactive password lock is 30 days or less.','User accounts that have been inactive for over a given period of time can be automatically disabled. It is recommended that accounts that are inactive for 30 days after password expiration be disabled.','Inactive accounts pose a threat to system security since the users are not logging in to notice failed login attempts or other anomalies.','','Run the following command to set the default password inactivity period to 30 days: # useradd -D -f 30 Modify user parameters for all users with a password set to match: # chage --inactive 30 <user>.','[{\"cis\": [\"5.5.1.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.002\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29686,'Ensure default group for the root account is GID 0.','The usermod command can be used to specify which group the root user belongs to. This affects permissions of files that are created by the root user.','Using GID 0 for the root account helps prevent root -owned files from accidentally becoming accessible to non-privileged users.','','Run the following command to set the root user default group to GID 0 : # usermod -g 0 root.','[{\"cis\": [\"5.5.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(29687,'Ensure permissions on /etc/passwd are configured.','The /etc/passwd file contains user account information that is used by many system utilities and therefore must be readable for these utilities to operate.','It is critical to ensure that the /etc/passwd file is protected from unauthorized write access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd: # chmod u-x,go-wx /etc/passwd # chown root:root /etc/passwd.','[{\"cis\": [\"6.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29688,'Ensure permissions on /etc/passwd- are configured.','The /etc/passwd- file contains backup user account information.','It is critical to ensure that the /etc/passwd- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/passwd-: # chmod u-x,go-wx /etc/passwd- # chown root:root /etc/passwd-.','[{\"cis\": [\"6.1.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29689,'Ensure permissions on /etc/group are configured.','The /etc/group file contains a list of all the valid groups defined in the system. The command below allows read/write access for root and read access for everyone else.','The /etc/group file needs to be protected from unauthorized changes by non-privileged users, but needs to be readable as this information is used with many non-privileged programs.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group: # chmod u-x,go-wx /etc/group # chown root:root /etc/group.','[{\"cis\": [\"6.1.3\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29690,'Ensure permissions on /etc/group- are configured.','The /etc/group- file contains a backup list of all the valid groups defined in the system.','It is critical to ensure that the /etc/group- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run the following commands to remove excess permissions, set owner, and set group on /etc/group-: # chmod u-x,go-wx /etc/group- # chown root:root /etc/group-.','[{\"cis\": [\"6.1.4\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29691,'Ensure permissions on /etc/shadow are configured.','The /etc/shadow file is used to store the information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/shadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/shadow file (such as expiration) could also be useful to subvert the user accounts.','','Run one of the following commands to set ownership of /etc/shadow to root and group to either root or shadow: # chown root:shadow /etc/shadow -OR- # chown root:root /etc/shadow Run the following command to remove excess permissions form /etc/shadow: # chmod u-x,g-wx,o-rwx /etc/shadow.','[{\"cis\": [\"6.1.5\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29692,'Ensure permissions on /etc/shadow- are configured.','The /etc/shadow- file is used to store backup information about user accounts that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/shadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/shadow- to root and group to either root or shadow: # chown root:shadow /etc/shadow- -OR- # chown root:root /etc/shadow- Run the following command to remove excess permissions form /etc/shadow-: # chmod u-x,g-wx,o-rwx /etc/shadow-.','[{\"cis\": [\"6.1.6\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29693,'Ensure permissions on /etc/gshadow are configured.','The /etc/gshadow file is used to store the information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','If attackers can gain read access to the /etc/gshadow file, they can easily run a password cracking program against the hashed password to break it. Other security information that is stored in the /etc/gshadow file (such as group administrators) could also be useful to subvert the group.','','Run one of the following commands to set ownership of /etc/gshadow to root and group to either root or shadow: # chown root:shadow /etc/gshadow -OR- # chown root:root /etc/gshadow Run the following command to remove excess permissions form /etc/gshadow: # chmod u-x,g-wx,o-rwx /etc/gshadow.','[{\"cis\": [\"6.1.7\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29694,'Ensure permissions on /etc/gshadow- are configured.','The /etc/gshadow- file is used to store backup information about groups that is critical to the security of those accounts, such as the hashed password and other security information.','It is critical to ensure that the /etc/gshadow- file is protected from unauthorized access. Although it is protected by default, the file permissions could be changed either inadvertently or through malicious actions.','','Run one of the following commands to set ownership of /etc/gshadow- to root and group to either root or shadow: # chown root:shadow /etc/gshadow- -OR- # chown root:root /etc/gshadow- Run the following command to remove excess permissions form /etc/gshadow-: # chmod u-x,g-wx,o-rwx /etc/gshadow-.','[{\"cis\": [\"6.1.8\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.3\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"pci_dss_3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_4.0\": [\"1.3.1\", \"7.1\"]}, {\"nist_sp_800-53\": [\"AC-3\", \"MP-2\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\", \"T1222\", \"T1222.002\"]}, {\"mitre_tactics\": [\"TA0005\"]}, {\"mitre_mitigations\": [\"M1022\"]}]'),(29695,'Ensure accounts in /etc/passwd use shadowed passwords.','Local accounts can uses shadowed passwords. With shadowed passwords, The passwords are saved in shadow password file, /etc/shadow, encrypted by a salted one-way hash. Accounts with a shadowed password have an x in the second field in /etc/passwd.','The /etc/passwd file also contains information like user ID's and group ID's that are used by many system programs. Therefore, the /etc/passwd file must remain world readable. In spite of encoding the password with a randomly-generated one-way hash function, an attacker could still break the system if they got access to the /etc/passwd file. This can be mitigated by using shadowed passwords, thus moving the passwords in the /etc/passwd file to /etc/shadow. The /etc/shadow file is set so only root will be able to read and write. This helps mitigate the risk of an attacker gaining access to the encoded passwords with which to perform a dictionary attack. Note: - All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user. - A user account with an empty second field in /etc/passwd allows the account to be logged into by providing only the username.','','Run the following command to set accounts to use shadowed passwords: # sed -e 's/^([a-zA-Z0-9_]*):[^:]*:/1:x:/' -i /etc/passwd Investigate to determine if the account is logged in and what it is being used for, to determine if it needs to be forced off.','[{\"cis\": [\"6.2.1\"]}, {\"cis_csc_v8\": [\"3.11\"]}, {\"cis_csc_v7\": [\"16.4\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"pci_dss_3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.10.1.1\"]}, {\"mitre_techniques\": [\"T1003\", \"T1003.008\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29696,'Ensure /etc/shadow password fields are not empty.','An account with an empty password field means that anybody may log in as that user without providing a password.','All accounts must have passwords or be locked to prevent the account from being used by an unauthorized user.','','If any accounts in the /etc/shadow file do not have a password, run the following command to lock the account until it can be determined why it does not have a password: # passwd -l <username> Also, check to see if the account is logged in and investigate what it is being used for to determine if it needs to be forced off.','[{\"cis\": [\"6.2.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"pci_dss_4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1078\", \"T1078.001\", \"T1078.003\"]}, {\"mitre_tactics\": [\"TA0003\"]}, {\"mitre_mitigations\": [\"M1027\"]}]'),(29697,'Ensure root is the only UID 0 account.','Any account with UID 0 has superuser privileges on the system.','This access must be limited to only the default root account and only from the system console. Administrative access must be through an unprivileged account using an approved mechanism as noted in Item 5.6 Ensure access to the su command is restricted.','','Remove any users other than root with UID 0 or assign them a new UID if appropriate.','[{\"cis\": [\"6.2.10\"]}, {\"mitre_techniques\": [\"T1548\"]}, {\"mitre_tactics\": [\"TA0001\"]}, {\"mitre_mitigations\": [\"M1026\"]}]'),(30001,'Install and configure HP-UX Secure Shell.','OpenSSH is a popular free distribution of the standards-track SSH protocols which allows secure encrypted network logins and file transfers. HP-UX Secure Shell is HP's pre-compiled and supported version of OpenSSH.','Common login and file transfer services such as telnet, FTP, rsh, rlogin, and rcp use insecure, clear-text protocols that are vulnerable to attack. OpenSSH provides a secure, encrypted replacement for these services. Security is improved by further constraining services in the default configuration.','','Perform the following to install and securely configure Secure Shell (SSH) 1. Download and install HP-UX Secure Shell if not already installed on the system. 2. Perform the following post-installation actions to secure the SSH service: a. Change to the /opt/ssh/etc directory b. Open sshd_config c. Set the Protocol token to 2. If it is absent, add and set it. d. Set the X11Forwarding token to yes. If it is absent, add and set it. e. Set the IgnoreRhosts token to yes. If it is absent, add and set it. f. Set the RhostsAuthentication token to no. If it is absent, add and set it. g. Set the RhostsRSAAuthentication token to no. If it is absent, add and set it. h. Set the PermitRootLogin token to no. If it is absent, add and set it. i. Set the PermitEmptyPasswords token to no. If it is absent, add and set it. j. Set the Banner token to /etc/issue. If it is absent, add and set it. k. Set root as the owner of sshd_config and ssh_config. l. Set sys as the group owner of sshd_config and ssh_config. m. Restrict write access to sshd_config and ssh_config to the file owner. The following script will perform the above procedure: 13 | P a g e cd /opt/ssh/etc cp -p sshd_config sshd_config.tmp awk ' /^Protocol/ /^IgnoreRhosts/ /^RhostsAuthentication/ /^RhostsRSAAuthentication/ { $2 ="no" }; /(^#|^)PermitRootLogin/    { $1 = "PermitRootLogin"; $2 = "no" }; /^PermitEmptyPasswords/    { $2 = "no" }; /^#Banner/                 { $1 = "Banner"; $2 = "/etc/issue" } { print }' sshd_config.tmp > sshd_config { $2 ="2"}; { $2 = "yes" }; { $2 = "no" }; rm -f sshd_config.tmp chown root:sys ssh_config sshd_config chmod go-w ssh_config sshd_config','[{\"cis\": [\"1.1.2\"]}, {\"cis_level\": [\"1\"]}]'),(30002,'Use Bastille to report security configuration state.','Bastille is a security hardening, lockdown tool supplied with HP-UX to assist administrators in securing their systems. Included is an assessment function that covers a wide range of lockdown items including most all items in this Benchmark. Bastille can serve as a reporting and audit tool. Appendix D provides a mapping of Benchmark items to related Bastille configuration items.','An automated, tested, and vendor supported reporting tool such as Bastille is more efficient and less error-prone than most manual or custom scripted methods.','','Run Bastille to create an assessment report as shown: /opt/sec_mgmt/bastille/bin/bastille --assessnobrowser','[{\"cis\": [\"1.1.3\"]}]'),(30003,'Disable Standard Services.','The stock /etc/inetd.conf file shipped with HP-UX contains many services which are rarely used, or which have more secure alternatives. Indeed, after enabling SSH (see item 1.1.2) it may be possible to completely do away with all inetd-based services, since SSH provides both a secure login mechanism and a means of transferring files to and from the system. The steps articulated in the Remediation section will disable all services normally enabled in the HP-UX inetd.conf file. The rest of the actions in this section give the administrator the option of re-enabling certain services—in particular, the services that are disabled in the last two loops in the Action section below.','The stock /etc/inetd.conf file shipped with HP-UX contains services that are rarely used or have more secure alternatives. Removing these from inetd will avoid exposure to possible security vulnerability in those services.','','Perform the following to disable standard inetd-based services: 1. Change to the /etc directory 2. Open inetd.conf 3. Disable the following services by adding a comment character (#) to the beginning of its definition: a. echo b. discard c. daytime d. chargen e. dtspc f. exec g. ntalk h. finger i. uucp j. ident k. auth l. instl_boots m. registrar n. recserv o. rpc.rstatd p. rpc.rusersd q. rpc.rwalld r. rpc.sprayd s. rpc.cmsd t. kcms_server u. printer v. shell w. login h. finger x. telnet y. ftp z. tftp aa. bootps bb. kshell cc. klogin dd. rpc.rquotad ee. rpc.ttdbserver 4. Save inetd.conf. 5. Set root as the owner of inetd.conf. 6. Set sys as the group owner of inetd.conf. 7. Restrict write access to inetd.conf to the file owner. 8. Remove the executable and sticky bit from inetd.conf. 9. Invoke inetd to reread it's config file: inetd -c The following script will perform the above procedure: cd /etc for svc in echo discard daytime chargen dtspc  exec ntalk finger uucp ident auth  instl_boots registrar recserv; do awk "($1 == "$svc") { $1 = "#" $1 }; {print}"  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf done for svc in rpc.rstatd rpc.rusersd rpc.rwalld  rpc.sprayd rpc.cmsd kcms_server; do awk "/\/$svc/ { $1 = "#" $1 }; { print }"  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf done for svc in printer shell login telnet ftp tftp  bootps kshell klogin; do awk "($1 == "$svc") { $1 = "#" $1 }; {print}"  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf done for svc in rpc.rquotad rpc.ttdbserver; do awk "/^$svc\// { $1 = "#" $1 }; { print }"  /etc/inetd.conf > /etc/inetd.conf.new cp inetd.conf.new inetd.conf done chown root:sys inetd.conf chmod go-w,a-xs inetd.conf rm -f /etc/inetd.conf.new inetd -c','[{\"cis\": [\"1.2.1\"]}, {\"cis_level\": [\"1\"]}]'),(30004,'Only enable telnet if absolutely necessary.','Re-enable telnet. Telnet uses an unencrypted network protocol, which means data from the login session (such as passwords and all other data transmitted during the session) can be stolen by eavesdroppers on the network, and also that the session can be hijacked by outsiders to gain access to the remote system. HP-UX Secure Shell (OpenSSH) provides an encrypted alternative to telnet (and other utilities) and should be used instead.','There is a mission-critical reason that requires users to access the system via telnet instead of the more secure SSH protocol.','','Perform the following to re-enable telnet: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the telnet service definition. 3. Add -b /etc/issue to the end of the telnet service definition. This will cause telnet to display the contents of /etc/issue to users attempting to access the system via telnet. 4. Save /etc/inetd.conf. The following script will perform the above procedure: awk '/^#telnet/ { $1 = "telnet" print $0 " -b /etc/issue"; next} { print } ' inetd.conf > /etc/inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.2\"]}]'),(30005,'Only enable FTP if absolutely necessary.','Re-enable ftp. Like telnet, the FTP protocol is unencrypted, which means passwords and other data transmitted during the session can be captured by sniffing the network, and that the FTP session itself can be hijacked by an external attacker. SSH provides two alternative, encrypted file transfer mechanisms, scp and sftp, which should be used instead of FTP. Even if FTP is required because the local system is an anonymous FTP server, consider requiring authenticated users on the system to transfer files via SSH-based protocols. For further information on restricting FTP access to the system, see item 1.6.2 below. Sites may also consider augmenting the 'ftpd -l' below with '-v' (10.x and 11.x) or '-L' (11.x only) for additional logging of FTP transactions, or with '-a' (11.x only) for fine grain FTP access control through the use of a configuration file - see the ftpd(1M) man page on your systems for details.','This machine serves as an (anonymous) FTP server or other mission-critical role where data must be transferred via FTP instead of the more secure alternatives.','','Perform the following to re-enable FTP: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the ftp service definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: awk ' /^#ftp/ { $1 = "ftp"; print $0; next} { print } ' inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.3\"]}]'),(30006,'Only enable rlogin/remsh/rcp if absolutely necessary.','Re-enable rlogin/remsh/rcp. SSH was designed to be a drop-in replacement for these protocols. Given the wide availability of free SSH implementations, there are few cases where these tools cannot be replaced with SSH (again, see item 1.2.1 - Install SSH).','There is a mission-critical reason to use rlogin/remsh/rcp instead of the more secure ssh/scp.','','Perform the following to re-enable rlogin/remsh/rcp: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the shell and login service definitions. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#shell/shell/; s/^#login/login/'  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.4\"]}]'),(30007,'Only enable TFTP if absolutely necessary.','Re-enable TFTP. TFTP is typically used for network booting of diskless workstations, X-terminals, and other similar devices. TFTP is also used during network installs of systems via the HP-UX Ignite facility. Routers and other network devices may copy configuration data to remote systems via TFTP for backup.','This system serves as a boot server or has other mission-critical roles where data must be transferred to and from this system via TFTP.','','Perform the following to re-enable TFTP: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the tftp service definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#tftp/tftp/' inetd.conf >inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new mkdir -p /var/opt/ignite','[{\"cis\": [\"1.2.5\"]}]'),(30008,'Only enable printer service if absolutely necessary.','Re-enable rlpdaemon based printer service. rlpdaemon provides a BSD-compatible print server interface. Even machines that are print servers may wish to leave this service disabled if they do not need to support BSD-style printing.','This machine a print server for your network.','','Perform the following to re-enable the rlpdaemon based printer service: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the printer definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure:  sed 's/^#printer/printer/' inetd.conf >inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.6\"]}]'),(30009,'Only enable rquotad if absolutely necessary.','Re-enable rquotad. rquotad allows NFS clients to enforce disk quotas on file systems that are mounted from the local system. If your site does not use disk quotas, then you may leave the rquotad service disabled.','This system an NFS file server that requires the use of disk quotas.','','Perform the following to re-enable rquotad: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the rquotad definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: awk ' $6 ~ //rpc.rquotad$/ { sub(/^#/, "") } { print } ' inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.7\"]}]'),(30010,'Only enable CDE-related daemons if absolutely necessary.','Re-enable CDE-related daemons. The rpc.ttdbserver service supports HP's CDE windowing environment. This service has a history of security problems. Not only is it vital to keep up to date on vendor patches, but also never enable this service on any system which is not well protected by a complete network security infrastructure (including network and host-based firewalls, packet filters, and intrusion detection infrastructure). Note that since this service uses ONC RPC mechanisms, it is important that the system's RPC portmapper (rpcbind) also be enabled when this service is turned on.','There a mission-critical reason to run a CDE GUI on this system.','','Perform the following to re-enable CDE-related daemons: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the rpc.ttdbserver 3. Save /etc/inetd.conf. The following script will perform the above procedure: awk ' $6 ~ //rpc.ttdbserver$/ { sub(/^#/, "") } { print } ' inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.8\"]}]'),(30011,'Only enable Kerberos-related daemons if absolutely necessary.','Re-enable Kerberos-related daemons. Kerberized rlogin/remsh offers a higher degree of security than traditional rlogin, remsh, or telnet by eliminating many clear-text password exchanges from the network. However it is still not as secure as SSH, which encrypts all traffic. Given the wide availability of free SSH implementations, there are few cases where these tools cannot be replaced with SSH.','The Kerberos security system is in use at this site and there is a mission-critical reason that requires users to access this system via Kerberized rlogin/remsh, rather than the more secure SSH protocol.','','Perform the following to re-enable Kerberos-related daemons: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the klogin definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#kshell/kshell/; s/^#klogin/klogin/'  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf.new','[{\"cis\": [\"1.2.9\"]}]'),(30012,'Only enable BOOTP/DHCP daemon if absolutely necessary.','Re-enable BOOTP/DHCP services. BOOTP/DHCP is a popular protocol for dynamically assigning IP addresses and other network information to systems on the network (rather than having administrators manually manage this information on each host). However, if this system is not a BOOTP/DHCP server for the network, there is no need to be running this service.','This server a BOOTP/DHCP server for the network.','','Perform the following to re-enable BOOTP/DHCP services: 1. Open /etc/inetd.conf. 2. Delete the comment character (#) from the bootps definition. 3. Save /etc/inetd.conf. The following script will perform the above procedure: sed 's/^#bootps/bootps/'  inetd.conf > inetd.conf.new cp inetd.conf.new inetd.conf rm -f /etc/inetd.conf','[{\"cis\": [\"1.2.10\"]}]'),(30013,'Disable login: prompts on serial ports.','Disable the login: prompt on the system serial devices to make it more difficult for unauthorized users to attach modems, terminals, and other remote access devices to these ports.','If there is not a mission-critical need to provide login capability from any serial ports (such as for a modem) then disabling the login: prompt on the system serial devices reduces the risk of unauthorized access via these ports.','','Perform the following to disable the login: prompt on the system serial devices: 1. Open /etc/inittab. 2. Disable each getty instance associated with a tty device by adding a comment character (#) to the beginning of the line. 3. Save /etc/inittab.* The following script will perform the above procedure: cp -p /etc/inittab /etc/inittab.tmp sed 's/^[^#].*getty.*tty.*$/#&/'  /etc/inittab.tmp  > /etc/inittab rm -f /etc/inittab.tmp - Note that this action may safely be performed even if console access to the system is provided via the serial ports, as the line in the /etc/inittab file that corresponds to the console does not match the supplied pattern (i.e., it doesn't contain the string 'tty'). - Note that when serial port connectivity is needed, /etc/dialups and /etc/d_passwd can be set to require an extra password for serial port access. See the dialups(4) manual page for more information. - Note that by default in HP-UX 11i, only the console has a getty instance running on it.','[{\"cis\": [\"1.3.1\"]}, {\"cis_level\": [\"1\"]}]'),(30014,'Disable NIS/NIS+ related processes, if possible.','Disable NIS/NIS+ related processes. Network Information Service (NIS) is a distributed database providing centralized control of names, addresses, services, and key configuration files throughout a network of servers and clients. NIS was formerly known as Yellow Pages (YP). NIS+ is a replacement for NIS services, and is more scalable, flexible, and secure. It adds a security system with authentication and authorization services to validate users on the network and to determine if they allowed to access or modify the information requested. However, both systems have known security vulnerabilities, and have been an entry point for security attacks.','Eliminate exposure to NIS/NIS+ vulnerabilities by not running related daemons on hosts that are not NIS/NIS+ servers or clients.','','Perform the following to disable the startup of NIS/NIS+ related processes: ch_rc -a -p NIS_MASTER_SERVER=0 -p NIS_SLAVE_SERVER=0  -p NIS_CLIENT=0 -p NISPLUS_SERVER=0  -p NISPLUS_CLIENT=0 /etc/rc.config.d/namesvrs','[{\"cis\": [\"1.3.2\"]}, {\"cis_level\": [\"1\"]}]'),(30015,'Disable printer daemons, if possible.','Disable printer daemons. The Technical Print Service (TPS) is a printer service used in the X-Windows and/or CDE environment. It is recommended that this service be disabled if the hosting system does not participate in print services The administrator may wish to consider converting to the LPRng print system (see http://www.lprng.org/) which was designed with security in mind and is widely portable across many different Unix platforms. Note, however, that LPRng is not supported by Hewlett-Packard.','Disabling unused services, such as TPS, will reduce the remote and local attack surfaces of the hosting system.','','Perform the following to disable printer daemons: 1. Set the LP parameter to zero in the lp system configuration file /etc/rc.config.d/lp 2. Set the XPRINTSERVERS parameter to an empty string in the tps system configuration file /etc/rc.config.d/tps The following script will perform the above procedure:  ch_rc -a -p XPRINTSERVERS="''" /etc/rc.config.d/tps ch_rc -a -p LP=0 /etc/rc.config.d/lp','[{\"cis\": [\"1.3.3\"]}, {\"cis_level\": [\"1\"]}]'),(30016,'Disable the CDE GUI login, if possible.','CDE stands for 'Common Desktop Environment,' and is an environment for logging on to and interacting with your system via an X-windows type GUI interface from the console. Intended for use with workstation or desktop systems, this service is not commonly used with the server-class systems or in large enterprise environments. The X Windows-based CDE GUI services were developed with a different set of security expecations from those expected in many enterprise deployments, and have had a history of security issues. Unless there is a mission-critical need for a CDE GUI login to the system, this service should not be run to further reduce opportunities for security attacks.','The X Windows-based CDE GUI on HP-UX systems has had a history of security issues, and should be disabled if unused.','','Perform the following to disable the GUI login: ch_rc -a -p DESKTOP="" /etc/rc.config.d/desktop','[{\"cis\": [\"1.3.4\"]}, {\"cis_level\": [\"1\"]}]'),(30017,'Disable email server, if possible.','Disable the sendmail daemon to avoid processing incoming email. It is possible to run a Unix system with the Sendmail daemon disabled and still allow users on that system to send email out from that machine. Running Sendmail in 'daemon mode' (with the -bd command-line option) is only required on machines that act as mail servers, receiving and processing email from other hosts on the network. The remediation below will result in a machine that can send email but not receive it. - Note that after disabling the -bd option on the local mail server on systems running Sendmail v8.12 or later (8.13 is currently shipped as part of HP-UX 11iv3), it is also necessary to modify the /etc/mail/submit.cf file. Find the line that reads 'D{MTAHost}localhost' and change localhost to the name of some other local mail server for the organization. This will cause email generated on the local system to be relayed to that mail server for further processing and delivery. - Note that if the system is an email server, the administrator is encouraged to search the Web for additional documentation on Sendmail security issues.','Avoid potential vulnerabilities in the sendmail server if incoming email service is not used.','','Perform the following to disable the sendmail server: 1. Set the SENDMAIL_SERVER parameter to zero in the mailservs system configuration file. 2. Setup a cron job to run sendmail at regular intervals (e.g. every hour) in order to process queued, outgoing mail. The following script will perform the above procedure: ch_rc -a -p SENDMAIL_SERVER=0 /etc/rc.config.d/mailservs cd /var/spool/cron/crontabs crontab -l >root.tmp echo '0 * * * * /usr/lib/sendmail -q' >>root.tmp crontab root.tmp rm -f root.tmp','[{\"cis\": [\"1.3.5\"]}, {\"cis_level\": [\"1\"]}]'),(30018,'Disable SNMP and OpenView Agents, if remote management or monitoring are not needed.','Disable SNMP and OpenView agents if they are not needed. Note: If SNMP is used, it is recommended to change the default SNMP community string by modifying the get-community and set-community parameters in the SNMP configuration file /etc/SnmpAgent.d/snmpd.conf.','If SNMP and OpenView agents are not needed, avoid potential security vulnerabilities in these programs by disabling them.','','Perform the following to disable the SNMP and OpenView Agents: cd /sbin/rc2.d mv -f S570SnmpFddi .NOS570SnmpFddi ch_rc -a -p SNMP_HPUNIX_START=0  /etc/rc.config.d/SnmpHpunix ch_rc -a -p SNMP_MASTER_START=0  /etc/rc.config.d/SnmpMaster ch_rc -a -p SNMP_MIB2_START=0  /etc/rc.config.d/SnmpMib2 ch_rc -a -p SNMP_TRAPDEST_START=0  /etc/rc.config.d/SnmpTrpDst ch_rc -a -p OSPFMIB=0  /etc/rc.config.d/netdaemons ch_rc -a -p OPCAGT=0  /etc/rc.config.d/opcagt','[{\"cis\": [\"1.3.6\"]}, {\"cis_level\": [\"1\"]}]'),(30019,'Disable rarely used standard boot services.','Disable other standard boot services. Setting these variables in the /etc/rc.config.d configuration files will effectively disable a wide variety of infrequently used subsystems. Variables are merely set (rather than renaming or removing startup scripts) so that the local administrator can easily "restore" any of these services if they discover a mission-critical need to have it. Additionally, HP-UX patches tend to supply fresh copies of the startup scripts, so they may get inadvertently re- enabled, whereas setting configuration variables usually survives patch installs. Finally, setting configuration variables is the method recommended and supported by HP. Note that not all of the configuration files listed above will exist on all systems (some are only valid for certain releases, others only exist if certain OEM vendor software is installed). The rest of the actions in this section give the administrator the option of re-enabling certain services - in particular, the services that are disabled in the second block of the remediation section below. Rather than disabling and then re-enabling these services, experienced administrators may wish to simply disable only those services that they know are unnecessary for their systems. Note: that HP-UX 11.31 was the first version to support disablement of the NFS core services. Disablement on earlier versions is possible by moving /sbin/rc2.d/S400nfs.core to /sbin/rc2.d/.NOS400nfs.core, but there is some risk of system instability.','Avoid potential security vulnerabilities in infrequently used subsystems by disabling them.','','Perform the following: ch_rc -a -p START_SNAPLUS=0 -p START_SNANODE=0  -p START_SNAINETD=0 /etc/rc.config.d/snaplus2 ch_rc -a -p MROUTED=0 -p RWHOD=0 -p DDFA=0  -p START_RBOOTD=0 /etc/rc.config.d/netdaemons ch_rc -a -p RARPD=0 -p RDPD=0 /etc/rc.config.d/netconf ch_rc -a -p PTYDAEMON_START=0 /etc/rc.config.d/ptydaemon ch_rc -a -p VTDAEMON_START=0 /etc/rc.config.d/vt ch_rc -a -p NAMED=0 /etc/rc.config.d/namesvrs ch_rc -a -p START_I4LMD=0 /etc/rc.config.d/i4lmd ch_rc -a -p RUN_X_FONT_SERVER=0 /etc/rc.config.d/xfs ch_rc -a -p AUDIO_SERVER=0 /etc/rc.config.d/audio ch_rc -a -p SLSD_DAEMON=0 /etc/rc.config.d/slsd ch_rc -a -p RUN_SAMBA=0 /etc/rc.config.d/samba ch_rc -a -p RUN_CIFSCLIENT=0  /etc/rc.config.d/cifsclient ch_rc -a -p NFS_SERVER=0  -p NFS_CLIENT=0 /etc/rc.config.d/nfsconf ch_rc -a -p HPWS_APACHE_START=0 /etc/rc.config.d/hpws_apacheconf ch_rc -a -p NFS_CORE=0 /etc/rc.config.d/nfsconf','[{\"cis\": [\"1.3.7\"]}, {\"cis_level\": [\"1\"]}]'),(30020,'Only enable Windows-compatibility server processes if absolutely necessary.','Re-enable CIFS Server (Samba) services. HP-UX 11i includes the popular Open Source Samba server (HP-UX CIFS Server) for providing file and print services to Windows-based systems. This allows an HP-UX system to act as a file or print server on a Windows network, and even act as a Domain Controller (authentication server) to older Windows operating systems. However, if this functionality is not required by the site, this service should be disabled.','This machine provides authentication, file sharing, or printer sharing services to systems running Microsoft Windows operating systems.','','Perform the following to re-enable CIFS Server: ch_rc -a -p RUN_SAMBA=1 /etc/rc.config.d/samba','[{\"cis\": [\"1.3.8\"]}]'),(30021,'Only enable Windows-compatibility client processes if absolutely necessary.','Re-enable the HP CIFS Client service.','This system requires access to file systems from remote servers via the Windows (SMB) file services.','','Perform the following: ch_rc -a -p RUN_CIFSCLIENT=1 /etc/rc.config.d/cifsclient','[{\"cis\": [\"1.3.9\"]}]'),(30022,'Only enable NFS server processes if absolutely necessary.','Re-enable the NFS file service. NFS is frequently exploited to gain unauthorized access to files and systems. Clearly there is no need to run the NFS server-related daemons on hosts that are not NFS servers. If the system is an NFS server, the admin should take reasonable precautions when exporting file systems, including restricting NFS access to a specific range of local IP addresses and exporting file systems "read-only" and "nosuid" where appropriate. For more information consult the exportfs(1M) manual page. Much higher levels of security can be achieved by combining NFS with secure RPC or Kerberos, although there is significant administrative overhead involved in this transition. Note that since this service uses ONC RPC mechanisms, it is important that the system's RPC portmapper (rpcbind) also be enabled when this service is turned on. For more information see Item 1.3.12 below. Also, note that some releases of Oracle software for HP-UX require NFS services in order to install properly. Therefore, the NFS server process may need to be started by hand on systems on which Oracle software is to be installed/updated. This can be accomplished by performing the following: 1. Temporarily set NFS_SERVER=1, /etc/rc.config.d/nfsconf 2. Execute:  /sbin/init.d/nfs.core start /sbin/init.d/nfs.server start 3. Install Oracle 4. Stop the NFS services:  /sbin/init.d/nfs.core stop /sbin/init.d/nfs.server stop 5. Disable the NFS services by resetting NFS_SERVER=0, NUM_NFSD=0, and NUM_NFSIOD=0 in /etc/rc.config.d/nfsconf.','This machine is a NFS file server.','','Perform the following: ch_rc -a -p NFS_SERVER=1 /etc/rc.config.d/nfsconf','[{\"cis\": [\"1.3.10\"]}]'),(30023,'Only enable NFS client processes if absolutely necessary.','Re-enable the NFS Client service. Again, unless there is a significant need for this system to acquire data via NFS, administrators should disable NFS-related services. Note that other file transfer schemes (such as rdist via SSH) can often be more secure than NFS for certain applications, although again the use of secure RPC or Kerberos can significantly improve NFS security. Also note that if the machine will be an NFS client, then the rpcbind process must be running (see Item 3.12 below). - Note that since this service uses ONC RPC mechanisms, it is important that the system's RPC portmapper (rpcbind) also be enabled when this service is turned on. For more information see Item 3.12 below.','This system must access file systems from remote servers via NFS.','','Perform the following: ch_rc -a -p NFS_CLIENT=1 /etc/rc.config.d/nfsconf','[{\"cis\": [\"1.3.11\"]}]'),(30024,'Only enable RPC-based services if absolutely necessary.','Re-enable RPC-based services. RPC-based services typically use very weak or non-existent authentication and yet may share very sensitive information. Unless one of the services listed above is required on this machine, it is best to disable RPC-based tools completely. If you are unsure whether or not a particular third-party application requires RPC services, consult with the application vendor. Note that disabling this service by renaming the startup file may not survive the install of RPC-related patches.','RPC-based services are used such as: - This machine is an NFS client or server. - This machine is an NIS (YP) or NIS+ client or server. - This machine runs a GUI or GUI-based administration tool. - The machine runs a third-party software application which is dependent on RPC support (example: FlexLM License managers).','','Perform the following for 11.31 and later: ch_rc -a -p NFS_CORE=1 /etc/rc.config.d/nfsconf For 11.23 and prior:  mv -f /sbin/rc2.d/.NOS400nfs.core  /sbin/rc2.d/400nfs.core','[{\"cis\": [\"1.3.12\"]}]'),(30025,'Only enable Web server if absolutely necessary.','Re-enable the Web server suite. Even if this machine is a Web server, the local site may choose not to use the Web server provided with HP-UX in favor of a locally developed and supported Web environment. If the machine is a Web server, the administrator is encouraged to search the Web for additional documentation on Web server security. A good starting point is http://httpd.apache.org/docs-2.0/misc/security_tips.html. Note that this action only disables the default web server shipped with the system. Other webservers instances may still be running.','There is a mission-critical reason why this system must run a Web server.','','Perform the following: ch_rc -a -p NS_FTRACK=1 /etc/rc.config.d/ns-ftrack ch_rc -a -p APACHE_START=1 /etc/rc.config.d/apacheconf ch_rc -a -p HPWS_APACHE32_START=1 /etc/rc.config.d/hpws_apache32conf ch_rc -a -p HPWS_TOMCAT_START=1 /etc/rc.config.d/hpws_tomcatconf ch_rc -a -p NS_FTRACK=1 /etc/rc.config.d/ns-ftrack ch_rc -a -p HPWS_WEBMIN_START=1 /etc/rc.config.d/hpws_webminconf','[{\"cis\": [\"1.3.13\"]}]'),(30026,'Only enable BIND DNS server if absolutely necessary.','Re-enable the BIND DNS service. The BIND DNS server, or named, maps IP addresses to hostnames across the Internet and supplies these services to other hosts on the local local network. Though it has been widely implemented, BIND has a long history of security flaws, especially in the BIND 8.x release tree generally shipped with HP-UX 11.x systems. Therefore, if you are going to run BIND, you should strongly consider moving to the BIND 9.x release-tree. HP has supported BIND 9 packages available from http://software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=BIND9.2 . Or it is available directly from the Internet Software Consortium (the developers of BIND), whose website is at http://www.isc.org.','There exists a mission-critical reason why this system must run a DNS server.','','Perform the following: 11.23 and prior: ch_rc -a -p NAMED=1 /etc/rc.config.d/namesvrs 11.31 and later: ch_rc -a -p NAMED=1 /etc/rc.config.d/namesvrs_dns','[{\"cis\": [\"1.3.14\"]}]'),(30027,'Enable stack protection.','Enabling stack protection prevents certain classes of buffer overflow attacks and is a significant security enhancement. - Note that HP-UX 11i is much more capable in this and other security areas than older releases; therefore, administrators should strongly consider upgrading from older releases. - Note that this action requires a subsequent reboot to take effect in some versions of HP-UX.','Buffer overflow exploits have been the basis for many of the recent highly publicized compromises and defacements of large numbers of Internet connected systems. Many of the automated tools in use by system crackers exploit well-known buffer overflow problems in vendor-supplied and third-party software. Enabling stack protection prevents certain classes of buffer overflow attacks and is a significant security enhancement.','','For 11i v2 and later: kctune -K executable_stack=0 For 11i v1: /usr/sbin/kmtune -s executable_stack=0 && mk_kernel && kmupdate','[{\"cis\": [\"1.4.1\"]}, {\"cis_level\": [\"1\"]}]'),(30028,'Network parameter modifications.','Modify the network parameter boot configuration file to meet current best practices. Note: HP-UX 11.11 systems require patch PHNE_25644 for ndd to set arp_cleanup_interval from /etc/rc.config.d/nddconf. - Bastille Note: Bastille performs a similar action but does not support the exact same changes.','Network parameter default values should align with current best practices unless there is a specific need to use other values.','','Perform the following to update the default network parameter values: 1. Change to the /etc/rc.config.d directory 2. Open nddconf and review the comment lines on how to use the configuration file 3. Set each of the following network parameters to the recommended value. If a parameter does not have an entry in nddconf then add a new entry to the end of the file while properly incrementing the parameter index. 4. Save nddconf. - If creating this file for the first time: 1. Set root as the owner of nddconf. 2. Set sys as the group owner of nddconf. 3. Restrict write access to nddconf to the file owner. 4. Remove the executable and sticky bit from nddconf. If the existing nddconf file contains no entries, then the following script will perform the above procedure: cd /etc/rc.config.d cat <<EOF > nddconf # Increase size of half-open connection queue TRANSPORT_NAME[0]=tcp NDD_NAME[0]=tcp_syn_rcvd_max NDD_VALUE[0]=4096 # Reduce timeouts on ARP cache TRANSPORT_NAME[1]=arp NDD_NAME[1]=arp_cleanup_interval NDD_VALUE[1]=60000 # Drop source-routed packets TRANSPORT_NAME[2]=ip NDD_NAME[2]=ip_forward_src_routed NDD_VALUE[2]=0 # Don't forward directed broadcasts TRANSPORT_NAME[3]=ip NDD_NAME[3]=ip_forward_directed_broadcasts NDD_VALUE[3]=0 # Don't respond to unicast ICMP timestamp requests TRANSPORT_NAME[4]=ip NDD_NAME[4]=ip_respond_to_timestamp NDD_VALUE[4]=0 # Don't respond to broadcast ICMP tstamp reqs TRANSPORT_NAME[5]=ip NDD_NAME[5]=ip_respond_to_timestamp_broadcast NDD_VALUE[5]=0 # Don't respond to ICMP address mask requests TRANSPORT_NAME[6]=ip NDD_NAME[6]=ip_respond_to_address_mask_broadcast NDD_VALUE[6]=0 # Don‟t respond to broadcast echo requests TRANSPORT_NAME[7]=ip NDD_NAME[7]=ip_respond_to_echo_broadcast NDD_VALUE[7]=0 EOF chown root:sys nddconf chmod go-w,ug-s nddconf','[{\"cis\": [\"1.4.2\"]}, {\"cis_level\": [\"1\"]}]'),(30029,'Use more random TCP sequence numbers.','Generate initial TCP sequence numbers that comply with RFC1948. - Note: In HP-UX 11i v1 and later, an algorithm largely compliant with RFC1948 is already used. However, setting the isn passphrase closes the small remaining gap, and adds entropy to the seed.','Makes remote off-net session hijacking attacks more difficult.','','Perform the following to use more random TCP sequence numbers upon system startup: 1. Create/open the file /sbin/rc2.d/S999tcpisn 2. Add the following line: ndd -set /dev/tcp tcp_isn_passprase=<random string> replacing <random string> with a string of random characters. 3. Save the file. 4. Set root as the owner and bin as the group owner of the file. 5. Restrict write access to the file. 6. Set the execution bit for the file.','[{\"cis\": [\"1.4.3\"]}, {\"cis_level\": [\"1\"]}]'),(30030,'Additional network parameter modifications.','Configure networking to NOT forward TCP/IP packets between multiple networks, even if the machine has multiple network adapters connected to multiple networks.','System is not going to be used as a firewall or gateway to pass network traffic between different networks.','','Perform the following to disable forwarding TCP/IP packets between networks: 1. Change to the /etc/rc.config.d directory 2. Open nddconf and review the comment lines on how to use the configuration file 3. Set each of the following network parameters to the recommended value. If a parameter does not have an entry in nddconf then add a new entry to the end of the file while properly incrementing the parameter index. 4. Save nddconf. If creating this file for the first time: 5. Set root as the owner of nddconf. 6. Set sys as the group owner of nddconf. 7. Restrict write access to nddconf to the file owner. 8. Remove the executable and sticky bit from nddconf. The following script will perform the above procedure properly if used as a follow-on from the script in item 1.4.2: cat <<EOF >> /etc/rc.config.d/nddconf # Don‟t act as a router TRANSPORT_NAME[8]=ip NDD_NAME[8]=ip_forwarding NDD_VALUE[8]=0 TRANSPORT_NAME[9]=ip NDD_NAME[9]=ip_send_redirects NDD_VALUE[9]=0 EOF','[{\"cis\": [\"1.4.4\"]}, {\"cis_level\": [\"1\"]}]'),(30032,'Enable Hidden Passwords.','Enable hidden passwords by converting the system to a Trusted System or to use Shadow Passwords. - Note: do not perform this if the system runs applications that read the encrypted password entries in /etc/passwd directly.','Without hidden passwords, an intruder could use any user's account to obtain hashed passwords and use crack or similar utilities to find easily guessed passwords. Password aging (covered in item 1.8.3) ensures that users change their passwords on a regular basis and helps stop the use of stolen passwords.','','Perform one of the following to convert the system to trusted mode or shadowed mode: A. Use the system management program smh or sam to convert to a trusted system -or- B. Use the command pwconv to convert to shadowed passwords.','[{\"cis\": [\"1.6.1\"]}, {\"cis_level\": [\"1\"]}]'),(30033,'Restrict users who can access to FTP.','Configure FTP to prevent certain users from accessing the system via FTP. The file ftpusers contains a list of users who are not allowed to access the system via FTP. Generally, only normal users should ever access the system via FTP - there should be no reason for 'system' type accounts to be transferring information via this mechanism. Certainly, the root account should never be allowed to transfer files directly via FTP. - Note: more fine-grained FTP access controls can be placed in /etc/ftpd/ftpaccess.','Privileged users such as root and other 'system' type accounts should never be transferring information via such an insecure service as FTP.','','Perform the following to restrict default priviledged users from access to FTP: 1. Add the users root daemon bin sys adm lp uucp nuucp nobody hpdb useradm to the file /etc/ftpd/ftpusers (each user on a single line). 2. Set the file owner and group owner to the user bin. 3. Set the file permissions so that only the file owner has read or write perms and no user has execute permission (600). The following script will create and populate the ftpusers file as described above: for name in root daemon bin sys adm lp  uucp nuucp nobody hpdb useradm do echo $name done >> $ftpusers sort -u $ftpusers > $ftpusers.tmp cp $ftpusers.tmp $ftpusers rm -f $ftpusers.tmp chown bin:bin $ftpusers chmod 600 $ftpusers','[{\"cis\": [\"1.6.2\"]}, {\"cis_level\": [\"1\"]}]'),(30034,'Prevent Syslog from accepting messages from the network.','Prevent syslogd from accepting messages from the network. By default the system logging daemon, syslogd, listens for log messages from other systems on network port 514/udp. Unfortunately, the protocol used to transfer these messages does not include any form of authentication, so a malicious outsider could simply barrage the local system's Syslog port with spurious traffic—either as a denial-of-service attack on the system, or to fill up the local system's logging file systems so that subsequent attacks will not be logged. - Note: Do not perform this action if this machine is a log server, or needs to receive Syslog messages via the network from other systems. - Note: It is considered good practice to setup one or more machines as central 'log servers' to aggregate log traffic from all machines at a site. However, unless a system is set up to be one of these 'log server' systems, it should not be listening on 514/udp for incoming log messages.','Disabling unused network services will reduce the remote attack surfaces of the hosting system.','','Disable the syslog network option by doing the following: 1. Open the syslogd startup configuration file /etc/rc.config.d/syslogd 2. Add the parameter "-N" to the SYSLOGD_OPTS= line if it is not already present 3. Save and close the file. The following script will perform the procedure above: SYSLOGD_OPTS="`sh -c ". /etc/rc.config.d/syslogd ;  echo "$SYSLOGD_OPTS"'`" if [[ "$SYSLOGD_OPTS" = *-N* ]]; then ch_rc -a -p SYSLOGD_OPTS="-N $SYSLOGD_OPTS"  /etc/rc.config.d/syslogd fi','[{\"cis\": [\"1.6.3\"]}, {\"cis_level\": [\"1\"]}]'),(30035,'Disable XDMCP port.','Disable the XDMCP port for remote login services. The standard GUI login provided on most Unix systems can act as a remote login server to other devices (including X terminals and other workstations). Access control is handled via the Xaccess file—by default under HP-UX, this file allows any system on the network to get a remote login screen from the local system. This behavior can be overridden in the /etc/dt/config/Xaccess file.','XDMCP is an unencrypted protocol that may reduce the confidentiality and integrity of data that traverses it.','','Perform the following to disable the XDMCP port: 1. Open the file /etc/dt/config/Xconfig. If it does not exist, copy it from /usr/dt/config/Xconfig. 2. Append the line Dtlogin.requestPort:0 to the file and close. The following script will perform the procedure above: if [ ! -f /etc/dt/config/Xconfig ]; then mkdir -p /etc/dt/config cp -p /usr/dt/config/Xconfig /etc/dt/config fi cd /etc/dt/config awk '/Dtlogin.requestPort:/  { print "Dtlogin.requestPort: 0"; next } { print }' Xconfig > Xconfig.new cp Xconfig.new Xconfig rm -f Xconfig.new','[{\"cis\": [\"1.6.4\"]}, {\"cis_level\": [\"1\"]}]'),(30036,'Set default locking screensaver timeout.','The default timeout is between 10 and 30 minutes of keyboard/mouse inactivity before a password-protected screen saver is invoked by the CDE session manager depending on the OS release and the locale. Uniformly reduce this default timeout value to 10 minutes (this setting can still be overridden by individual users in their own environment.)','Setting the inactivity timer to a low value will reduce the probability of a malicious entity compromising the system via the console.','','Perform the following to set a default screensaver timeout for all environments: 1. For every sys.resources file in each directory in /usr/dt/config/ create a corresponding /etc/dt/config/*/sys.resources file if it does not already exist. 2. Append the following lines to each /etc/dt/config/*/sys.resources dtsession*saverTimeout: 10 dtsession*lockTimeout: 10 The following script will perform the procedure above: for file in /usr/dt/config/*/sys.resources; do dir="$(dirname "$file" | sed 's|^/usr/|/etc/|')" mkdir -p "$dir" echo 'dtsession*saverTimeout: 10' >>"$dir/sys.resources" echo 'dtsession*lockTimeout: 10' >>"$dir/sys.resources" done','[{\"cis\": [\"1.6.5\"]}, {\"cis_level\": [\"1\"]}]'),(30037,'Configure IPFilter to allow only select communication.','HP-UX IPFilter (B9901AA) is a stateful system firewall that controls IP packet flow in or out of a machine. It is installed by default on HP-UX 11iv2 (11.23) and later. On older systems, IPFilter can be obtained from http://www.hp.com/go/ipfilter. The rules below will work in an otherwise-empty ipf.conf file, or, if there are rules already present, it will block all that were not passed earlier in the ruleset. This is less likely to break things, but will allow more traffic through. Alternatively, you can instead take the pass lines below (not using the block rule), and change them into 'block in quick' rules, and place those at the top of the file. This will error on the side of blocking traffic. See ipf(5) for detail. Your ruleset can be tested using ipftest(1). Bastille note: if using to change and monitor the IPFilter firewall, ensure that rules are added to /etc/opt/sec_mgmt/bastille/ipf.customrules, and that Bastille is rerun with the last config file, so they will not be overwritten in a subsequent lockdown.','Restricting incoming network traffic to explicitly allowed hosts will help prevent unauthorized access the system.','','Perform the following to add enable ipfilter and install a default ruleset to block unauthorized incoming connections: 1. Enable ipfilter: ipfilter -e 2. Append the following lines to /etc/opt/ipf/ipf.conf:  block in all pass in from <allowed net>/<mask> pass in from <allowed net>/<mask> replacing each <allowed net>/<mask> with an authorized IP address and mask. 3. Flush the old rules and read in the updated rules: ipf -Fa -f /etc/opt/ipf/ipf.conf The following script can be used to as a template for creating your own script to perform the procedure above: ipfilter -e cat <<EOF >> /etc/opt/ipf/ipf.conf block in all pass in from <allowed net>/<mask> pass in from <allowed net>/<mask> EOF ipf -Fa -f /etc/opt/ipf/ipf.conf','[{\"cis\": [\"1.6.6\"]}, {\"cis_level\": [\"1\"]}]'),(30038,'Restrict at/cron to authorized users.','The cron.allow and at.allow files are a list of users who are allowed to run the crontab and at commands to submit jobs to be run at scheduled intervals. - Note that even though a given user is not listed in cron.allow, cron jobs can still be run as that user. cron.allow only controls administrative access to the crontab command for scheduling and modifying cron jobs.','On many systems, only the system administrator needs the ability to schedule jobs.','','Perform the following to restrict at/cron to root only: 1. Change to the /var/adm/cron directory 2. Archive or delete any existing cron.deny and at.deny files 3. Create or replace the cron.allow and at.allow files with a single line file containing just root 4. Ensure that the files are owned by root and group owned by sys 5. Ensure that no users have write/execute permission to the files, and that only root has read access to the files. The following script will perform the procedures above: cd /var/adm/cron rm -f cron.deny at.deny echo root >cron.allow echo root >at.allow chown root:sys cron.allow at.allow chmod 400 cron.allow at.allow','[{\"cis\": [\"1.6.7\"]}, {\"cis_level\": [\"1\"]}]'),(30039,'Restrict crontab file permissions.','The system crontab files are only accessed by the cron daemon (which runs with superuser privileges) and the crontab command (which is set-UID to root).','Allowing unprivileged users to read or (even worse) modify system crontab files can create the potential for a local user on the system to gain elevated privileges.','','Perform the following so that only root has access to the crontab files: 1. Change to the /var/spool/cron/crontabs directory 2. Change the file owner to root and file group owner to sys 3. Set file permissions so that only root has access to the files. The following script will perform the procedure above: cd /var/spool/cron/crontabs chown root:sys * chmod og-rwx *','[{\"cis\": [\"1.6.8\"]}, {\"cis_level\": [\"1\"]}]'),(30040,'Restrict root logins to system console.','Anonymous root logins should never be allowed except on the system console in emergency situations. At all other times, the administrator should access the system via an unprivileged account and use some authorized mechanism to gain additional privilege, such as the su command, the freely-available sudo package discussed in item SN.6, or the HP Role Based Authorization system also discussed in item SN.6. These mechanisms provide at least a limited audit trail in the event of problems.','Anonymous root logins do not provide an audit trail, nor are subject to additional authorization provisions.','','Perform the following to restrict root logins to the system console only: 1. Replace the file /etc/securetty with a single line file containing console 2. Change the file owner to root and file group owner to sys 3. Set file permissions so that only root has access to the file. The following script will perform the procedure above:  echo console > /etc/securetty chown root:sys /etc/securetty chmod og-rwx /etc/securetty','[{\"cis\": [\"1.6.9\"]}, {\"cis_level\": [\"1\"]}]'),(30041,'Disable nobody access for secure RPC.','The keyserv process stores user keys that are utilized with the ONC secure RPC mechanism. The action below prevents keyserv from using default keys for the "nobody" user, effectively stopping this user from accessing information via secure RPC.','The default 'nobody' user should not be accessing information via secure RPC.','','Perform the following to disable nobody access for secure RPC: 1. Add the '-d' option to the KEYSERV_OPTIONS parameter in the system startup configuration file /etc/rc.config.d/namesvrs The following script will perform the procedure above: KEYSERV_OPTIONS="`sh -c '. /etc/rc.config.d/namesvrs ; echo "$KEYSERV_OPTIONS"'`" ch_rc -a -p KEYSERV_OPTIONS="-d $KEYSERV_OPTIONS "  /etc/rc.config.d/namesvrs','[{\"cis\": [\"1.6.11\"]}, {\"cis_level\": [\"1\"]}]'),(30042,'Enable kernel-level auditing.','If inetd is running, it is a good idea to make use of the 'logging' (-l) feature of the HP-UX inetd that logs information about the source of any network connections seen by the daemon, allowing the administrator (or software) to scan the logs for unusual activity. This is especially powerful when combined with the access control capabilities accessible through inetd‟s /var/adm/inetd.sec configuration file. This information is logged via Syslog and by default HP-UX systemsdeposit this logging information in var/adm/syslog/syslog.log with other system log messages. Should the administrator wish to capture this information in a separate file, simply modify /etc/syslog.conf to log daemon.notice to some other log file destination. IPFilter, which comes with HP-UX, can log inetd and other connections or attempted connections with its 'ipmon' daemon as either a compliment or alternative to inetd logging.','By recording key system events in log files, kernel-level auditing provides a trail to detect and analyze security breaches. Moreover, this data can be used to detect potential security weakness, and also serves as a deterrent against system abuses.','','Use the Systems Management Homepage (SMH) facility to configure and enable the type and level of auditing appropriate for your environment.','[{\"cis\": [\"1.7.1\"]}, {\"cis_level\": [\"1\"]}]'),(30043,'Enable logging from inetd.','If inetd is running, it is a good idea to make use of the "logging" (-l) feature of the HP-UX inetd that logs information about the source of any network connections seen by the daemon, allowing the administrator (or software) to scan the logs for unusual activity. This is especially powerful when combined with the access control capabilities accessible through inetd's /var/adm/inetd.sec configuration file. This information is logged via Syslog and by default HP-UX systems deposit this logging information in var/adm/syslog/syslog.log with other system log messages. Should the administrator wish to capture this information in a separate file, simply modify /etc/syslog.conf to log daemon.notice to some other log file destination. IPFilter, which comes with HP-UX, can log inetd and other connections or attempted connections with its "ipmon" daemon as either a compliment or alternative to inetd logging.','Logging information about the source of inetd network connections assists in the detection and identification of unusual activity that may be associated with security intrusions.','','Perform the following: ch_rc -a -p INETD_ARGS=-l /etc/rc.config.d/netdaemons','[{\"cis\": [\"1.7.2\"]}, {\"cis_level\": [\"1\"]}]'),(30045,'Block system accounts.','Accounts that are not being used by regular users should be locked. Not only should the password field for the account be set to an invalid string, but the shell field in the password file should contain an invalid shell. Access to the uucp and nuucp accounts is only needed when the deprecated Unix to Unix Copy (UUCP) service is in use. The other listed accounts should never require direct access. The actions below locks the passwords to these accounts (on systems converted to Trusted Mode only) and sets the login shell to /bin/false. Note that the above is not an exhaustive list of possible system/application accounts that could be installed on the system. An audit of all users on the system is the only way to be sure that only authorized accounts are in place.','System accounts are not used by regular users, and almost never require direct access; thus, they should be locked to prevent accidental or malicious usage.','','Perform the following to properly lock the following known system users: www sys smbnull iwww owww sshd hpsmh named uucp nuucp adm daemon bin lp nobody noaccess hpdb useradm 1. Lock the account: passwd -l <user> 2. Set the login shell to an invalid program: /usr/sbin/usermod -s /bin/false <user> 3. If a trusted system, set the adminstrator lock: /usr/lbin/modprpw -m alock=YES <user> The following script will perform the procedure above: for user in www sys smbnull iwww owww sshd  hpsmh named uucp nuucp adm daemon bin lp  nobody noaccess hpdb useradm; do passwd -l "$user" /usr/sbin/usermod -s /bin/false "$user" if [[ -f /tcb ]]; then /usr/lbin/modprpw -m alock=YES "$user" fi done','[{\"cis\": [\"1.8.1\"]}, {\"cis_level\": [\"1\"]}]'),(30046,'Verify that there are no accounts with empty password fields.','An account with an empty password field means that anybody may log in as that user without providing a password at all. All accounts should have strong passwords or should be locked by using a password string like "*", "NP", or "*LOCKED*"','User accounts should have passwords, or be locked.','','Perform the following to ensure that no accounts have an empty password field: 1. Identify all user accounts with an empty password field: logins -p 2. Lock each account: passwd -l <user> 3. If a trusted system, set the administrator lock: /usr/lbin/modprpw -m alock=YES <user>','[{\"cis\": [\"1.8.2\"]}, {\"cis_level\": [\"1\"]}]'),(30047,'Set account expiration parameters on active accounts.','The commands below will set all active accounts (except the root account) to force password changes every 90 days (91 days when not running in HP-UX Trusted Mode) and then prevent password changes for seven days (one week) thereafter. Users will begin receiving warnings 30 days (28 days when not running in HP-UX Trusted Mode) before their password expires. Sites also have the option of expiring idle accounts after a certain number of days (see the on-line manual page for the usermod command, particularly the -f option). These are recommended starting values, but sites may choose to make them more restrictive depending on local policies.','It is a good idea to force users to change passwords on a regular basis.','','Perform the following to set password expiration parameters on all active accounts: 1. Identify all user accounts excluding root that are not locked, and for each: 2. Set password expiration parameters for the account (logname) by executing the following: passwd -x 91 -n 7 -w 28 <logname> for trusted systems, perform the following: /usr/lbin/modprpw -m exptm=90,mintm=7,expwarn=30 <logname> 3. Set the default account expiration parameters by appending the following lines to /etc/default/security: a. PASSWORD_MAXDAYS=91 b. PASSWORD_MINDAYS=7 c. PASSWORD_WARNDAYS=28 4. Set the default parameters for trusted systems with: /usr/lbin/modprdef -m exptm=90,mintm=7,expwarn=30 The following script will perform the procedure above. logins -ox  | awk -F: '($8 != "LK" && $1 != "root") { print $1 }'  | while read logname; do passwd -x 91 -n 7 -w 28 "$logname" /usr/lbin/modprpw -m exptm=90,mintm=7,expwarn=30  "$logname" done echo PASSWORD_MAXDAYS=91 >> /etc/default/security echo PASSWORD_MINDAYS=7 >> /etc/default/security echo PASSWORD_WARNDAYS=28 >> /etc/default/security /usr/lbin/modprdef -m exptm=90,mintm=7,expwarn=30','[{\"cis\": [\"1.8.3\"]}, {\"cis_level\": [\"1\"]}]'),(30048,'Set strong password enforcement policies.','The policies set here are designed to force users to make better password choices when changing their passwords. Sites often have differing opinions on the optimal value of the MIN_PASSWORD_LENGTH and PASSWORD_HISTORY_DEPTH parameters. A minimum password length of seven is in line with industry standards, especially the Payment Card Industry (PCI) Security Standard; however, a longer value may be warranted if account locks are not enabled (item 1.6.10). A password history depth of ten combined with passwords that expire four times per year (item 1.8.3) means users will typically not re-use the same password in any given year. Requiring an upper/lowercase and special character password will dramatically increase the password search space and lower the chances for brute-force attack significantly. - Note: these settings are known to exist for HP-UX 11iv2, 0512 and later. The man page for security(5) will indicate if these exist on your particular system. Be sure to consult you local security standards before adopting the values given above.','All users should use strong passwords.','','Perform the following to set strong password enforcement policies: 1. Change the following parameters in the /etc/default/security file to establish default password policies for new users: a. MIN_PASSORD_LENGTH=7 b. PASSWORD_HISTORY_DEPTH=10 c. PASSWORD_MIN_UPPER_CASE_CHARS=1 d. PASSWORD_MIN_DIGIT_CHARS=1 e. PASSWORD_MIN_SPECIAL_CHARS=1 f. PASSWORD_MIN_LOWER_CASE_CHARS=1 2. If using a trusted system, issue the following modprdef commands to disallow null or trivial passwords:  modprdef -m nullpw=NO modprdef -m rstrpw=YES The following script will perform the procedure above: modprdef -m nullpw=NO modprdef -m rstrpw=YES ch_rc -a -p MIN_PASSORD_LENGTH=7 /etc/default/security ch_rc -a -p PASSWORD_HISTORY_DEPTH=10  /etc/default/security ch_rc -a -p PASSWORD_MIN_UPPER_CASE_CHARS=1  /etc/default/security ch_rc -a -p PASSWORD_MIN_DIGIT_CHARS=1  /etc/default/security ch_rc -a -p PASSWORD_MIN_SPECIAL_CHARS=1  /etc/default/security ch_rc -a -p PASSWORD_MIN_LOWER_CASE_CHARS=1  /etc/default/security modprdef -m nullpw=NO modprdef -m rstrpw=YES','[{\"cis\": [\"1.8.4\"]}, {\"cis_level\": [\"1\"]}]'),(30049,'Verify no legacy '+' entries exist in passwd and group files.',''+' entries in various passwd and group files served as markers for systems to insert data from NIS maps at a certain point in a system configuration file. HP-UX does not use these markers, but they may exist in files that have been imported from other platforms. They should be deleted if they exist.','Legacy '+' entries are no longer required on HP-UX systems, and may provide an avenue for attackers to gain privileged access on the system.','','Perform the following to remove any legacy '+' entries in passwd and group files: 1. Display legacy '+' entries: grep '^+:' /etc/passwd /etc/group 2. Remove any entries found from the passwd and group files.','[{\"cis\": [\"1.8.5\"]}, {\"cis_level\": [\"1\"]}]'),(30050,'No '.' or group/world-writable directory in root $PATH.','Remove the current working directory ('.') or other world-writable directories from the root user's execution path. To execute a file in the current directory when „.‟ is not in the $PATH, use the format “./filename”.','Including these paths in the root's executable path allows an attacker to gain superuser access if an administrator operating as root executes a Trojan horse program.','','Remove the following path components if they exist in the root user's $PATH: 1. current working directory ('.') 2. empty directories („::‟) 3. a trailing path seperator at the end of the $PATH (':') 4. any directory with world or group -write permissions set','[{\"cis\": [\"1.8.6\"]}, {\"cis_level\": [\"1\"]}]'),(30051,'Secure user home directories.','Remove group write and world access to all user home directories. While the modifications below are relatively benign, making global modifications to user home directories without alerting your user community can result in unexpected outages and unhappy users.','Group or world-writable user home directories may enable malicious users to steal or modify other users' data or to gain another user's system privileges.','','Perform the following to secure user home directories: 1. Identify all user accounts excluding root that are not locked, and for each of these user home directories: 2. Remove group write permission (g-w) and all other permissions (o-rwx) The following script will perform the procedure above: logins -ox  | awk -F: '($8 == "PS" && $1 != "root") { print $6 }'  | grep /home/  | while read dir do  chmod g-w,o-rwx "$dir" done','[{\"cis\": [\"1.8.7\"]}, {\"cis_level\": [\"1\"]}]'),(30052,'No user dot-files should be group/world writable.','Remove group and world write permissions from user dot-files. While the modifications below are relatively benign, making global modifications to user dot-files without alerting your user community can result in unexpected outages and unhappy users.','Group or world-writable user configuration files may enable malicious users to steal or modify other users' data or to gain another user's system privileges.','','Perform the following: 1. Identify all user accounts excluding root that are not locked, and for each of these user home directories: 2. Remove group/other write permissions (go-w) from any files beginning with '.' The following script performs the procedure above: logins -ox  | awk -F: '($8 == "PS") { print $6 }'  | while read dir do ls -d "$dir/".[!.]* | while read file do  if [ ! -h "$file" -a -f "$file" ] then chmod go-w "$file" fi done done','[{\"cis\": [\"1.8.8\"]}, {\"cis_level\": [\"1\"]}]'),(30053,'Remove user .netrc, .rhosts and .shosts files.','Remove user .netrc, .rhosts, and .shosts files. Note that making global modifications to user security files in their home directories without alerting your user community can result in unexpected outages and unhappy users.','.netrc files may contain unencrypted passwords that may be used to attack other systems, while .rhosts and .shosts files used in conjunction with the BSD-style “r-commands” (rlogin, remsh, rcp) or SSH implement a weak form of authentication based on the network address or host name of the remote computer (which can be spoofed by a potential attacker to exploit the local system).','','Perform the following to remove user .netrc, .rhosts, and .shosts files. 1. Identify all user accounts, and for each existing home directory: 2. Remove .netrc, .rhosts, and .shosts files The following script performs the procedure above: logins -ox | cut -f6 -d: | while read h do for file in "$h/.netrc" "$h/.rhosts" "$h/.shosts" do  if [ -f "$file" ] then  echo "removing $file" rm -f "$file" fi done done','[{\"cis\": [\"1.8.9\"]}, {\"cis_level\": [\"1\"]}]'),(30054,'Set default umask for users.','Set the default umask to 077 so that files created by users will not be readable by any other user on the system. A umask of 027 would make files and directories readable by users in the same Unix group, while a umask of 022 would make files readable by every user on the system. - Bastille Note: sets the default umask, but uses a umask of 027 rather than the 077.','Restricting access to files and directories created by a user from any other user on the system reduces the possibility of an unauthorized account accessing that user's files. The user creating the file has the discretion of making their files and directories readable by others via the chmod command. Users who wish to allow their files and directories to be readable by others by default may choose a different default umask by inserting the umask command into the standard shell configuration files (.profile, .cshrc, etc.) in their home directories.','','Perform the following to set a default umask for users: 1. Change directory to /etc 2. Append the line umask 077 to the following files: a. profile b. csh.login c. d.profile d. d.login 3. Update the UMASK parameter to 077 in the file /etc/default/security The following script performs the procedure above: cd /etc for file in profile csh.login d.profile d.login do echo umask 077 >> "$file" done ch_rc -a -p UMASK=077 /etc/default/security','[{\"cis\": [\"1.8.10\"]}, {\"cis_level\": [\"1\"]}]'),(30055,'Set 'mesg n' as default for all users.','Block the use of write or talk commands to contact the user at their terminal in order to slightly strengthen permissions on the user's tty device. Note that this setting is the default on HP-UX 11i.','Since write and talk are no longer widely used at most sites, the incremental security increase is worth the loss of functionality.','','Perform the following: 1. Change directory to /etc 2. Append the line mesg n to the following files: a. profile b. csh.login c. d.profile d. d.login The following script performs the procedure above:  cd /etc for file in profile csh.login d.profile d.login do  echo mesg n >> "$file" done','[{\"cis\": [\"1.8.11\"]}, {\"cis_level\": [\"1\"]}]'),(30056,'Create warning banners for terminal-session logins.','The contents of the /etc/issue file are displayed prior to the login prompt on the system's console and serial devices, as well as for remote terminal-session logins such as through SSH or Telnet.  /etc/motd is generally displayed after all successful logins, no matter where the user is logging in from, but is thought to be less useful because it only provides notification to the user after the machine has been accessed.','Presenting some sort of statutory warning message prior to the normal user logon may assist the prosecution of trespassers on the computer system. Changing some of these login banners also has the side effect of hiding OS version information and other detailed system information from attackers attempting to target specific attacks at a system.','','Perform the following to create warning banners for terminal-session logins: 1. Compose a default banner text string 2. Append this string to the files  /etc/motd and /etc/motd 3. Change the owner to root and group owner to sys  for the file /etc/motd 4. Change the owner to root and group owner to root for the file /etc/issue 5. Change file permissions to (644) for the files /etc/motd and /etc/issue','[{\"cis\": [\"1.9.1\"]}, {\"cis_level\": [\"1\"]}]'),(30057,'Create warning banners for GUI logins.','The standard graphical login program for HP-UX requires the user to enter their username in one dialog box and their password in a second separate dialog. The commands below set the warning message on both to be the same message, but the site has the option of using different messages on each screen. The Dtlogin*greeting.labelString is the message for the first dialog where the user is prompted for their username, and .perslabelString is the message on the second dialog box. Note that system administrators may wish to consult with their site’s legal council about the specifics of any warning banners.','Presenting some sort of statutory warning message prior to the normal user logon may assist the prosecution of trespassers on the computer system. Changing some of these login banners also has the side effect of hiding OS version information and other detailed system information from attackers attempting to target specific attacks at a system.','','Perform the following to install default warning banners for GUI logins: 1. Create a default banner text string ($banner) 2. For each directory in /usr/dt/config that contains a Xresources file, copy that Xresources file into a corresponding directory in /etc/dt/config (creating the directory if needed) 3. Append the following lines (replacing $banner with the string in step 1) to each /etc/dt/config/*/Xresources file: a. Dtlogin*greeting.labelString: $banner b. Dtlogin*greeting.persLabelString: $banner 4. Change the owner to root and group owner to sys for each Xresource file 5. Change the file permissions to 644 for each Xresource file The following script performs the procedure above: banner="Authorized users only. All activity may  be monitored and reported." for file in /usr/dt/config/*/Xresources; do dir="$(dirname "$file" | sed 's|^/usr/|/etc/|')" mkdir -p "$dir" if [ ! -f "$dir/Xresources" ]; then cp -p "$file" "$dir/Xresources" fi echo "Dtlogin*greeting.labelString: $banner"  >> "$dir/Xresources" echo "Dtlogin*greeting.persLabelString: $banner"  >> "$dir/Xresources" done chown root:sys /etc/dt/config/*/Xresources chmod 644 /etc/dt/config/*/Xresources','[{\"cis\": [\"1.9.2\"]}, {\"cis_level\": [\"1\"]}]'),(30058,'Create warning banners for FTP daemon.','The FTP daemon in HP-UX 11 is based on the popular Washington University FTP daemon (WU-FTPD), which is an Open Source program widely distributed on the Internet. Note that this setting has no effect if the FTP daemon remains de-activated from item 1.2.1.','Presenting some sort of statutory warning message prior to the normal user logon may assist the prosecution of trespassers on the computer system. Changing some of these login banners also has the side effect of hiding OS version information and other detailed system information from attackers attempting to target specific attacks at a system.','','Perform the following to install a default warning banner for the FTP daemon: 1. Ensure that an appropriate warning message exists in the /etc/issue file . 2. Append the line "banner /etc/issue" to the file /etc/ftpd/ftpaccess 3. Change file permissions to 600 for /etc/ftpd/ftpaccess 4. Change owner to root and group owner to sys for both /etc/ftpd and /etc/ftpd/ftpaccess The following script performs the procedure above: if [ -d /etc/ftpd ]; then echo "banner /etc/issue" >>/etc/ftpd/ftpaccess chmod 600 /etc/ftpd/ftpaccess chown root:sys /etc/ftpd /etc/ftpd/ftpaccess fi','[{\"cis\": [\"1.9.3\"]}, {\"cis_level\": [\"1\"]}]'),(30131,'Resolve 'unowned' files and directories.','Evaluate ownership of any files that are not owned by a locally defined user, and consider reassignment to an active user.','Sometimes when administrators delete users from the system they neglect to remove all files owned by those users from the system. A new user who is assigned the deleted user's user ID or group ID may then end up 'owning' these files, and thus have more access on the system than was intended. It is a good idea to locate files that are owned by users or groups not listed in the system configuration files, and make sure to reset the ownership of these files to some active user on the system (in this example, 'bin') as appropriate.','','Perform the following to identify "unowned" files and directories, and consider resetting ownership to a default owner and restricting access permissions: 1. Locate all local files that are owned by users or groups not listed in the system configuration files. find / ( -nouser -o -nogroup ) 2. Consider resetting user and group ownership of these files to a default active user (e.g. bin) chown bin:bin <filename> 3. Consider restricting world-write permissions, and removing any SUID/SGID bits on these files. chmod ug-s,o-w <filename> - Note: there is no reason for an application to require an unowned file, so these changes should be application-safe.','[{\"cis\": [\"1.5.3\"]}, {\"cis_level\": [\"1\"]}]'),(30144,'Turn on additional logging for FTP daemon.','If the FTP daemon is left on, it is recommended that the command logging (-L) and connection logging (-l) flags also be enabled to track FTP activity on the system, allowing the administrator (or software) to scan the logs for unusual activity. This is especially powerful when combined with the access control capabilities accessible through inetd's /var/adm/inetd.sec configuration file. Note that this setting has no effect if the FTP daemon remains de-activated from item 2.1. Also note that enabling command logging on the FTP daemon (HP-UX 11.x only) can cause user passwords to appear in clear-text form in the system logs, if the user accidentally types their password at the username prompt. Information about FTP sessions will be logged to Syslog and by default HP-UX systems deposit this logging information in /var/adm/syslog/syslog.log with other system log messages. Should the administrator wish to capture this information in a separate file, simply modify /etc/syslog.conf to log daemon.notice to some other log file destination.','Logging information about the source of ftp network connections assists in the detection and identification of unusual activity that may be associated with security intrusions.','','Perform the following to enable logging for the FTP daemon: 1. Change directory to /etc. 2. Open the inetd.conf file and locate the ftpd configuration entry line. 3. Add the "-L" and "-l" flags to the ftpd entry if not already present. 4. Save and close file. The following script will perform the procedure above: cd /etc awk '/^ftpd/ && !/-L/ { $NF = $NF " -L" } /^ftpd/ && !/-l/ { $NF = $NF " -l" } { print }' inetd.conf > inetd.conf.tmp cp inetd.conf.tmp inetd.conf rm -f inetd.conf.tmp','[{\"cis\": [\"1.7.3\"]}, {\"cis_level\": [\"1\"]}]'),(31000,'Ensure All Apple-provided Software Is Current.','Software vendors release security patches and software updates for their products when security vulnerabilities are discovered. There is no simple way to complete this action without a network connection to an Apple software repository. Please ensure appropriate access for this control. This check is only for what Apple provides through software update. Software updates should be run at minimum every 30 days. Run the following command to verify when software update was previously run: $ /usr/bin/sudo defaults read /Library/Preferences/com.apple.SoftwareUpdate | grep -e LastFullSuccessfulDate. The response should be in the last 30 days (Example): LastFullSuccessfulDate = "2020-07-30 12:45:25 +0000";.','It is important that these updates be applied in a timely manner to prevent unauthorized persons from exploiting the identified vulnerabilities.','Missing patches can lead to more exploit opportunities.','Graphical Method: Perform the following to install all available software updates: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select Update All Terminal Method: Run the following command to verify what packages need to be installed: $ /usr/bin/sudo /usr/sbin/softwareupdate -l The output will include the following: Software Update found the following new or updated software: Run the following command to install all the packages that need to be updated: $ /usr/bin/sudo /usr/sbin/softwareupdate -i -a -R Or run the following command to install individual packages: $ /usr/bin/sudo /usr/sbin/softwareupdate -i '<package name>' example: $ /usr/bin/sudo /usr/sbin/softwareupdate -l Software Update Tool Finding available software Software Update found the following new or updated software: * iTunesX-12.8.2 iTunes (12.8.2), 273614K [recommended] $ /usr/bin/sudo /usr/sbin/softwareupdate -i 'iTunesX-12.8.2' Software Update Tool Downloaded iTunes Installing iTunes Done with iTunes Done.','[{\"cis\": [\"1.1\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"mitre_techniques\": [\"T1017\", \"T1019\", \"T1031\", \"T1034\", \"T1038\", \"T1044\", \"T1053\", \"T1068\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1078\", \"T1081\", \"T1088\", \"T1100\", \"T1103\", \"T1114\", \"T1137\", \"T1138\", \"T1145\", \"T1161\", \"T1176\", \"T1189\", \"T1190\", \"T1195\", \"T1210\", \"T1211\", \"T1212\", \"T1213\", \"T1214\", \"T1482\", \"T1484\", \"T1495\", \"T1505\", \"T1525\", \"T1527\", \"T1528\", \"T1530\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}]'),(31001,'Ensure Auto Update Is Enabled.','Auto Update verifies that your system has the newest security patches and software updates. If "Automatically check for updates" is not selected, background updates for new malware definition files from Apple for XProtect and Gatekeeper will not occur. http://macops.ca/os-x-admins-your-clients-are-not-getting-background-security-updates/ https://derflounder.wordpress.com/2014/12/17/forcing-xprotect-blacklist-updates-on-mavericks-and-yosemite/.','It is important that a system has the newest updates applied so as to prevent unauthorized persons from exploiting identified vulnerabilities.','Without automatic update, updates may not be made in a timely manner and the system will be exposed to additional risk.','Graphical Method: Perform the steps following to enable the system to automatically check for updates: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Check for updates to enabled 6. Select Done Terminal Method: Run the following command to enable auto update: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticCheckEnabled 3. The key must be set to <true/>.','[{\"cis\": [\"1.2\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31002,'Ensure Download New Updates When Available Is Enabled.','In the GUI, both "Install macOS updates" and "Install app updates from the App Store" are dependent on whether "Download new updates when available" is selected.','It is important that a system has the newest updates downloaded so that they can be applied.','If "Download new updates when available" is not selected, updates may not be made in a timely manner and the system will be exposed to additional risk.','Perform the following to enable the system to automatically check for updates: Graphical Method: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Download new updates when available to enabled 6. Select Done Terminal Method: Run the following command to enable auto update: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticDownload 3. The key must be set to <true/>.','[{\"cis\": [\"1.3\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31003,'Ensure Install of macOS Updates Is Enabled.','Ensure that macOS updates are installed after they are available from Apple. This setting enables macOS updates to be automatically installed. Some environments will want to approve and test updates before they are delivered. It is best practice to test first where updates can and have caused disruptions to operations. Automatic updates should be turned off where changes are tightly controlled and there are mature testing and approval processes. Automatic updates should not be turned off simply to allow the administrator to contact users in order to verify installation. A dependable, repeatable process involving a patch agent or remote management tool should be in place before auto-updates are turned off.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','Unpatched software may be exploited.','Graphical Method: Perform the following steps to enable macOS updates to run automatically: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Install macOS updates to enabled 6. Select Done Terminal Method: Run the following command to to enable automatic checking and installing of macOS updates: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates -bool TRUE Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticallyInstallMacOSUpdates 3. The key must be set to <true/>.','[{\"cis\": [\"1.4\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31004,'Ensure Install Application Updates from the App Store Is Enabled.','Ensure that application updates are installed after they are available from Apple. These updates do not require reboots or administrator privileges for end users.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','Unpatched software may be exploited.','Graphical Method: Perform the following steps to enable App Store updates to install automatically: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Install application updates from the App Store to enabled 6. Select Done Terminal Method: Run the following command to turn on App Store auto updating: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.commerce AutoUpdate -bool TRUE Note: This remediation requires a log out and log in to show in the GUI. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is AutomaticallyInstallAppUpdates 3. The key must be set to <true/>.','[{\"cis\": [\"1.5\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31005,'Ensure Install Security Responses and System Files Is Enabled.','Ensure that system and security updates are installed after they are available from Apple. This setting enables definition updates for XProtect and Gatekeeper. With this setting in place, new malware and adware that Apple has added to the list of malware or untrusted software will not execute. These updates do not require reboots or end user admin rights.','Patches need to be applied in a timely manner to reduce the risk of vulnerabilities being exploited.','Unpatched software may be exploited.','Graphical Method: Perform the following steps to enable system data files and security updates to install automatically: 1. Open System Settings 2. Select General 3. Select Software Update 4. Select the i 5. Set Install Security Responses and System files to enabled 6. Select Done Terminal Method: Run the following commands to enable automatic checking of system data files and security updates: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate ConfigDataInstall -bool true $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.SoftwareUpdate CriticalUpdateInstall -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.SoftwareUpdate 2. The key to include is ConfigDataInstall 3. The key must be set to <true/> 4. The key to also include is CriticalUpdateInstall 5. The key must be set to <true/>.','[{\"cis\": [\"1.6\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\", \"7.7\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"CA.L2-3.12.2\", \"RA.L2-3.11.3\", \"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"pci_dss_v4.0\": [\"11.3.1\", \"11.3.2\", \"11.3.2.1\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31006,'Ensure Software Update Deferment Is Less Than or Equal to 30 Days.','Apple provides the capability to manage software updates on Apple devices through mobile device management. Part of those capabilities permit organizations to defer software updates and allow for testing. Many organizations have specialized software and configurations that may be negatively impacted by Apple updates. If software updates are deferred, they should not be deferred for more than 30 days. This control only verifies that deferred software updates are not deferred for more than 30 days.','Apple software updates almost always include security updates. Attackers evaluate updates to create exploit code in order to attack unpatched systems. The longer a system remains unpatched, the greater an exploit possibility exists in which there are publicly reported vulnerabilities.','Some organizations may need more than 30 days to evaluate the impact of software updates.','Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.applicationaccess 2. The key to include is enforcedSoftwareUpdateDelay 3. The key must be set to <integer><1-30></integer>.','[{\"cis\": [\"1.7\"]}, {\"cis_csc_v8\": [\"7.3\", \"7.4\"]}, {\"cis_csc_v7\": [\"3.4\", \"3.5\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.1\"]}, {\"nist_sp_800-53\": [\"SI-2(2)\"]}, {\"pci_dss_v3.2.1\": [\"6.2\"]}, {\"soc_2\": [\"CC7.1\"]}, {\"mitre_techniques\": [\"T1103\", \"T1017\", \"T1138\", \"T1189\", \"T1190\", \"T1212\", \"T1211\", \"T1068\", \"T1210\", \"T1495\", \"T1137\", \"T1075\", \"T1195\", \"T1019\", \"T1072\", \"T1100\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31007,'Ensure Firewall Is Enabled.','A firewall is a piece of software that blocks unwanted incoming connections to a system. Apple has posted general documentation about the application firewall:.','A firewall minimizes the threat of unauthorized users gaining access to your system while connected to a network or the Internet.','The firewall may block legitimate traffic. Applications that are unsigned will require special handling.','Graphical Method: Perform the following steps to turn the firewall on: 1. Open System Settings 2. Select Network 3. Select Firewall 4. Set Firewall to enabled Terminal Method: Run the following command to enable the firewall: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.alf globalstate -int <value> For the <value>, use either 1, specific services, or 2, essential services only. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.security.firewall 2. The key to include is EnableFirewall 3. The key must be set to <true/>.','[{\"cis\": [\"2.2.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.5\", \"13.1\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.4\", \"9.5\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L1-3.1.20\", \"AU.L2-3.3.5\", \"AU.L2-3.3.6\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\", \"SI.L2-3.14.3\", \"SI.L2-3.14.7\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"AU-6(1)\", \"AU-7\", \"CM-7(1)\", \"CM-9\", \"IR-4(1)\", \"SA-10\", \"SC-7(5)\", \"SI-4(2)\", \"SI-4(5)\"]}, {\"pci_dss_v3.2.1\": [\"1.1.4\", \"1.4\", \"10.5.3\", \"10.6.1\", \"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"10.7\", \"10.7.1\", \"10.7.2\", \"10.7.3\", \"11.5\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC6.6\", \"CC7.1\", \"CC7.2\", \"CC8.1\"]}]'),(31008,'Ensure Firewall Stealth Mode Is Enabled.','While in Stealth mode, the computer will not respond to unsolicited probes, dropping that traffic.','Stealth mode on the firewall minimizes the threat of system discovery tools while connected to a network or the Internet.','Traditional network discovery tools like ping will not succeed. Other network tools that measure activity and approved applications will work as expected. This control aligns with the primary macOS use case of a laptop that is often connected to untrusted networks where host segregation may be non-existent. In that use case, hiding from the other inmates is likely more than desirable. In use cases where use is only on trusted LANs with static IP addresses, stealth mode may not be desirable.','Graphical Method: Perform the following steps to enable firewall stealth mode: 1. Open System Settings 2. Select Network 3. Select Firewall 4. Select Options... 5. Set Enabled stealth mode to enabled Terminal Method: Run the following command to enable stealth mode: $ /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on Stealth mode enabled Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.security.firewall 2. The key to include is EnableStealthMode 3. The key must be set to <true/> Note: This key must be set in the same configuration profile with EnableFirewall set to <true/>. If it is set in its own configuration profile, it will fail.','[{\"cis\": [\"2.2.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.5\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L1-3.1.20\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L1-3.13.1\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\", \"SC-7(5)\"]}, {\"pci_dss_v3.2.1\": [\"1.1.4\", \"1.1.6\", \"1.2.1\", \"1.4\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31009,'Ensure Set Time and Date Automatically Is Enabled.','Correct date and time settings are required for authentication protocols, file creation, modification dates, and log entries. Note: If your organization has internal time servers, enter them here. Enterprise mobile devices may need to use a mix of internal and external time servers. If multiple servers are required, use the Date & Time System Preference with each server separated by a space. Additional Note: The default Apple time server is time.apple.com. Variations include time.euro.apple.com. While it is certainly more efficient to use internal time servers, there is no reason to block access to global Apple time servers or to add a time.apple.com alias to internal DNS records. There are no reports that Apple gathers any information from NTP synchronization, as the computers already phone home to Apple for Apple services including iCloud use and software updates. Best practice is to allow DNS resolution to an authoritative time service for time.apple.com, preferably to connect to Apple servers, but local servers are acceptable as well.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features.','The timed service will periodically synchronize with named time servers and will make the computer time more accurate.','Graphical Method: Perform the following to enable the date and time to be set automatically: 1. Open System Settings 2. Select General 3. Select Date & Time 4. Set Set time and date automatically to enabled Note: By default, the operating system will use time.apple.com as the time server. You can change to any time server that meets your organization's requirements. Terminal Method: Run the following commands to enable the date and time setting automatically: $ /usr/bin/sudo /usr/sbin/systemsetup -setnetworktimeserver <your.time.server> setNetworkTimeServer: <your.time.server> $ /usr/bin/sudo /usr/sbin/systemsetup -setusingnetworktime on setUsingNetworkTime: On example: $ /usr/bin/sudo /usr/sbin/systemsetup -setnetworktimeserver time.apple.com setNetworkTimeServer: time.apple.com $ /usr/bin/sudo /usr/sbin/systemsetup -setusingnetworktime on setUsingNetworkTime: On Run the following commands if you have not set, or need to set, a new time zone: $ /usr/bin/sudo /usr/sbin/systemsetup -listtimezones $ /usr/bin/sudo /usr/sbin/systemsetup -settimezone <selected time zone> example: $ /usr/bin/sudo /usr/sbin/systemsetup -listtimezones Time Zones: Africa/Abidjan Africa/Accra Africa/Addis_Ababa ... $ /usr/bin/sudo /usr/sbin/systemsetup -settimezone America/New_York Set TimeZone: America/New_York.','[{\"cis\": [\"2.3.2.1\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(31010,'Ensure Time Is Set Within Appropriate Limits.','Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. Ensure that time on the computer is within acceptable limits. Truly accurate time is measured within milliseconds. For this audit, a drift under four and a half minutes passes the control check. Since Kerberos is one of the important features of macOS integration into Directory systems, the guidance here is to warn you before there could be an impact to operations. From the perspective of accurate time, this check is not strict, so it may be too great for your organization. Your organization can adjust to a smaller offset value as needed. If there are consistent drift issues on the OS, some of the most common drift issues should be investigated: - The chosen time server is not reachable based on network firewall rules on the current network - The computer is offline often and the battery drains, and the network is not immediately available - The chosen time server is a special internal or non-public time server that does not provide a reliable time source Note: ntpdate has been deprecated with 10.14. sntp replaces that command.','Kerberos may not operate correctly if the time on the Mac is off by more than 5 minutes. This in turn can affect Apple's single sign-on feature, Active Directory logons, and other features. Audit check is for more than 4 minutes and 30 seconds ahead or behind.','Accurate time is required for many computer functions.','Terminal Method: Run the following commands to ensure your time is set within an appropriate limit: $ /usr/bin/sudo /usr/sbin/systemsetup -getnetworktimeserver The output will include Network Time Server: and the name of your time server example: Network Time Server: time.apple.com. $ /usr/bin/sudo /usr/bin/sntp -sS <your.time.server> example: $ /usr/bin/sudo /usr/sbin/systemsetup -getnetworktimeserver Network Time Server: time.apple.com $ /usr/bin/sudo /usr/bin/sntp -sS time.apple.com.','[{\"cis\": [\"2.3.2.2\"]}, {\"cis_csc_v8\": [\"8.4\"]}, {\"cis_csc_v7\": [\"6.1\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.7\"]}, {\"iso_27001-2013\": [\"A.12.4.4\"]}, {\"nist_sp_800-53\": [\"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.4\"]}, {\"pci_dss_v4.0\": [\"10.6\", \"10.6.1\", \"10.6.2\", \"10.6.3\"]}, {\"soc_2\": [\"CC4.1\", \"CC5.2\"]}]'),(31011,'Ensure DVD or CD Sharing Is Disabled.','DVD or CD Sharing allows users to remotely access the system's optical drive. While Apple does not ship Macs with built-in optical drives any longer, external optical drives are still recognized when they are connected. In testing, the sharing of an external optical drive persists when a drive is reconnected.','Disabling DVD or CD Sharing minimizes the risk of an attacker using the optical drive as a vector for attack and exposure of sensitive data.','Many Apple devices are now sold without optical drives, however drive sharing may be needed for legacy optical media. The media should be explicitly re-shared as needed rather than using a persistent share. Optical drives should not be used for long-term storage. To store necessary data from an optical drive it should be copied to another form of external storage. Optionally, an image can be made of the optical drive so that it is stored in its original form on another form of external storage.','Graphical Method: Perform the following steps to disable DVD or CD Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set DVD or CD sharing to disabled Terminal Method: Run the following command to disable DVD or CD Sharing: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.ODSAgent Note: If using the Terminal method, the GUI will still show the service checked until after a reboot.','[{\"cis\": [\"2.3.3.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31012,'Ensure Screen Sharing Is Disabled.','Screen Sharing allows a computer to connect to another computer on a network and display the computer's screen. While sharing the computer's screen, the user can control what happens on that computer, such as opening documents or applications, opening, moving, or closing windows, and even shutting down the computer. While mature administration and management does not use graphical connections for standard maintenance, most help desks have capabilities to assist users in performing their work when they have technical issues and need support. Help desks use graphical remote tools to understand what the user sees and assist them so they can get back to work. For MacOS, some of these remote capabilities can use Apple's OS tools. Control is therefore not meant to prohibit the use of a just-in-time graphical view from authorized personnel with authentication controls. Sharing should not be enabled except in narrow windows when help desk support is required.','Disabling Screen Sharing mitigates the risk of remote connections being made without the user of the console knowing that they are sharing the computer.','Help desks may require the periodic use of a graphical connection mechanism to assist users. Any support that relies on native MacOS components will not work unless a scripted solution to enable and disable sharing as neccessary.','Graphical Method: Perform the following steps to disable Screen Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Screen Sharing to disabled Terminal Method: Run the following command to turn off Screen Sharing: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing.','[{\"cis\": [\"2.3.3.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31013,'Ensure File Sharing Is Disabled.','File sharing from a user workstation creates additional risks, such as: - Open ports are created that can be probed and attacked - Passwords are attached to user accounts for access that may be exposed and endanger other parts of the organizational environment, including directory accounts Increased complexity makes security more difficult and may expose additional attack vectors - Apple's File Sharing uses the Server Message Block (SMB) protocol to share to other computers that can mount SMB shares. This includes other macOS computers. Apple warns that SMB sharing stored passwords is less secure, and anyone with system access can gain access to the password for that account. When sharing with SMB, each user accessing the Mac must have SMB enabled. Storing passwords, especially copies of valid directory passwords, decrease security for the directory account and should not be used.','By disabling File Sharing, the remote attack surface and risk of unauthorized access to files stored on the system is reduced.','File Sharing can be used to share documents with other users, but hardened servers should be used rather than user endpoints. Turning on File Sharing increases the visibility and attack surface of a system unnecessarily.','Graphical Method: Perform the following steps to disable File Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set File Sharing to disabled Terminal Method: Run the following command to disable File Sharing: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.smbd.','[{\"cis\": [\"2.3.3.3\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\", \"5.4\"]}, {\"cis_csc_v7\": [\"4.3\", \"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.3\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\", \"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\", \"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\", \"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31014,'Ensure Printer Sharing Is Disabled.','By enabling Printer Sharing, the computer is set up as a print server to accept print jobs from other computers. Dedicated print servers or direct IP printing should be used instead.','Disabling Printer Sharing mitigates the risk of attackers attempting to exploit the print server to gain access to the system.','','Graphical Method: Perform the following steps to disable Printer Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Printer Sharing to disabled Terminal Method: Run the following command to disable Printer Sharing: $ /usr/bin/sudo /usr/sbin/cupsctl --no-share-printers.','[{\"cis\": [\"2.3.3.4\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31015,'Ensure Remote Login Is Disabled.','Remote Login allows an interactive terminal connection to a computer.','Disabling Remote Login mitigates the risk of an unauthorized person gaining access to the system via Secure Shell (SSH). While SSH is an industry standard to connect to posix servers, the scope of the benchmark is for Apple macOS clients, not servers. macOS does have an IP-based firewall available (pf, ipfw has been deprecated) that is not enabled or configured. There are more details and links in the Network sub-section. macOS no longer has TCP Wrappers support built in and does not have strong Brute-Force password guessing mitigations, or frequent patching of openssh by Apple. Since most macOS computers are mobile workstations, managing IP-based firewall rules on mobile devices can be very resource intensive. All of these factors can be parts of running a hardened SSH server.','The SSH server built into macOS should not be enabled on a standard user computer, particularly one that changes locations and IP addresses. A standard user that runs local applications, including email, web browser, and productivity tools, should not use the same device as a server. There are Enterprise management toolsets that do utilize SSH. If they are in use, the computer should be locked down to only respond to known, trusted IP addresses and appropriate administrator service accounts. For macOS computers that are being used for specialized functions, there are several options to harden the SSH server to protect against unauthorized access including brute force attacks. There are some basic criteria that need to be considered: - Do not open an SSH server to the internet without controls in place to mitigate SSH brute force attacks. This is particularly important for systems bound to Directory environments. It is great to have controls in place to protect the system, but if they trigger after the user is already locked out of their account, they are not optimal. If authorization happens after authentication, directory accounts for users that don't even use the system can be locked out. - Do not use SSH key pairs when there is no insight to the security on the client system that will authenticate into the server with a private key. If an attacker gets access to the remote system and can find the key, they may not need a password or a key logger to access the SSH server. - Detailed instructions on hardening an SSH server, if needed, are available in the CIS Linux Benchmarks, but it is beyond the scope of this benchmark.','Perform the following to disable Remote Login: Graphical Method: Perform the following steps to disable Remote Login: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Remote Login to disabled Terminal Method: Run the following command to disable Remote Login: $ /usr/bin/sudo /usr/sbin/systemsetup -setremotelogin off Do you really want to turn remote login off? If you do, you will lose this connection and can only turn it back on locally at the server (yes/no)? Entering yes will disable remote login.','[{\"cis\": [\"2.3.3.5\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31016,'Ensure Remote Management Is Disabled.','Remote Management is the client portion of Apple Remote Desktop (ARD). Remote Management can be used by remote administrators to view the current screen, install software, report on, and generally manage client Macs. The screen sharing options in Remote Management are identical to those in the Screen Sharing section. In fact, only one of the two can be configured. If Remote Management is used, refer to the Screen Sharing section above on issues regard screen sharing. Remote Management should only be enabled when a Directory is in place to manage the accounts with access. Computers will be available on port 5900 on a macOS System and could accept connections from untrusted hosts depending on the configuration, which is a major concern for mobile systems. As with other sharing options, an open port even for authorized management functions can be attacked, and both unauthorized access and Denial-of-Service vulnerabilities could be exploited. If remote management is required, the pf firewall should restrict access only to known, trusted management consoles. Remote management should not be used across the Internet without the use of a VPN tunnel.','Remote Management should only be enabled on trusted networks with strong user controls present in a Directory system. Mobile devices without strict controls are vulnerable to exploit and monitoring.','Many organizations utilize ARD for client management.','Graphical Method: Perform the following steps to disable Remote Management: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Remote Management to disabled Terminal Method: Run the following command to disable Remote Management: $ /usr/bin/sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources /kickstart -deactivate -stop Starting... Removed preference to start ARD after reboot. Done.','[{\"cis\": [\"2.3.3.6\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\", \"5.4\"]}, {\"cis_csc_v7\": [\"4.3\", \"9.2\", \"14.3\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.3\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.1\", \"A.13.1.3\", \"A.9.2.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1133\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1176\", \"T1184\", \"T1190\", \"T1200\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\", \"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\", \"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31017,'Ensure Remote Apple Events Is Disabled.','Apple Events is a technology that allows one program to communicate with other programs. Remote Apple Events allows a program on one computer to communicate with a program on a different computer.','Disabling Remote Apple Events mitigates the risk of an unauthorized program gaining access to the system.','With remote Apple events turned on, an AppleScript program running on another Mac can interact with the local computer.','Graphical Method: Perform the following steps to disable Remote Apple Events: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Remote Apple Events to disabled Terminal Method: Run the following commands to set Remote Apple Events to Off: $ /usr/bin/sudo /usr/sbin/systemsetup -setremoteappleevents off setremoteappleevents: Off.','[{\"cis\": [\"2.3.3.7\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31018,'Ensure Internet Sharing Is Disabled.','Internet Sharing uses the open source natd process to share an internet connection with other computers and devices on a local network. This allows the Mac to function as a router and share the connection to other, possibly unauthorized, devices.','Disabling Internet Sharing reduces the remote attack surface of the system.','Internet Sharing allows the computer to function as a router and other computers to use it for access. This can expose both the computer itself and the networks it is accessing to unacceptable access from unapproved devices.','Graphical Method: Perform the following steps to disable Internet Sharing: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Internet Sharing to disabled Terminal Method: Run the following command to turn off Internet Sharing: $ usr/bin/sudo /usr/bin/defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict Enabled -int 0 Note: Using the Terminal Method will not be reflected in the GUI, but will disable the underlying service. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is forceInternetSharingOff 3. The key must be set to <true/>.','[{\"cis\": [\"2.3.3.8\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31019,'Ensure Content Caching Is Disabled.','Starting with 10.13 (macOS High Sierra), Apple introduced a service to make it easier to deploy data from Apple, including software updates, where there are bandwidth constraints to the Internet and fewer constraints or greater bandwidth exist on the local subnet. This capability can be very valuable for organizations that have throttled and possibly metered Internet connections. In heterogeneous enterprise networks with multiple subnets, the effectiveness of this capability would be determined by how many Macs were on each subnet at the time new, large updates were made available upstream. This capability requires the use of mac OS clients as P2P nodes for updated Apple content. Unless there is a business requirement to manage operational Internet connectivity and bandwidth user endpoints should not store content and act as a cluster to provision data. Content types supported by Content Caching in macOS.','The main use case for Mac computers is as mobile user endpoints. P2P sharing services should not be enabled on laptops that are using untrusted networks. Content Caching can allow a computer to be a server for local nodes on an untrusted network. While there are certainly logical controls that could be used to mitigate risk, they add to the management complexity. Since the value of the service is in specific use cases organizations with the use case described above can accept risk as necessary.','This setting will adversely affect bandwidth usage between local subnets and the Internet.','Graphical Method: Perform the following steps to disable Content Caching: 1. Open System Settings 2. Select General 3. Select Sharing 4. Set Content Caching to disabled Terminal Method: Run the following command to disable Content Caching: $ /usr/bin/sudo /usr/bin/AssetCacheManagerUtil deactivate The output will include Content caching deactivated Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.applicationaccess 2. The key to include is allowContentCaching 3. The key must be set to <false/>.','[{\"cis\": [\"2.3.3.9\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1015\", \"T1051\", \"T1076\", \"T1133\", \"T1200\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(31020,'Ensure Backup Automatically is Enabled If Time Machine Is Enabled.','Backup solutions are only effective if the backups run on a regular basis. The time to check for backups is before the hard drive fails or the computer goes missing. In order to simplify the user experience so that backups are more likely to occur, Time Machine should be on and set to Back Up Automatically whenever the target volume is available. Operational staff should ensure that backups complete on a regular basis and the backups are tested to ensure that file restoration from backup is possible when needed. Backup dates are available even when the target volume is not available in the Time Machine plist. SnapshotDates = ( "2012-08-20 12:10:22 +0000", "2013-02-03 23:43:22 +0000", "2014-02-19 21:37:21 +0000", "2015-02-22 13:07:25 +0000", "2016-08-20 14:07:14 +0000" When the backup volume is connected to the computer more extensive information is available through tmutil. See man tmutil.','Backups should automatically run whenever the backup drive is available.','The backup will run periodically in the background and could have user impact while running.','Graphical Method: Perform the following steps to enable Time Machine automatic backup: 1. Open System Settings 2. Select General 3. Select Time Machine 4. Select Options... 5. Set Back up frequency to Automatically <every hour/every day/every week> Terminal Method: Run the following command to enable automatic backups if Time Machine is enabled: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.TimeMachine 2. The key to include is Forced 3. The key must be set to: <array> <dict> <key>mcx_preference_settings</key> <dict> <key>AutoBackup</key> <true/> </dict> </dict> </array>.','[{\"cis\": [\"2.3.4.1\"]}, {\"cis_csc_v8\": [\"11.2\"]}, {\"cis_csc_v7\": [\"10.1\"]}, {\"hipaa\": [\"164.308(a)(7)(ii)(A)\"]}, {\"iso_27001-2013\": [\"A.12.3.1\"]}, {\"mitre_techniques\": [\"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1490\", \"T1491\"]}, {\"pci_dss_v3.2.1\": [\"12.10.1\"]}]'),(31021,'Ensure Time Machine Volumes Are Encrypted If Time Machine Is Enabled.','One of the most important security tools for data protection on macOS is FileVault. With encryption in place it makes it difficult for an outside party to access your data if they get physical possession of the computer. One very large weakness in data protection with FileVault is the level of protection on backup volumes. If the internal drive is encrypted but the external backup volume that goes home in the same laptop bag is not it is self-defeating. Apple tries to make this mistake easily avoided by providing a checkbox to enable encryption when setting-up a Time Machine backup. Using this option does require some password management, particularly if a large drive is used with multiple computers. A unique complex password to unlock the drive can be stored in keychains on multiple systems for ease of use. While some portable drives may contain non-sensitive data and encryption may make interoperability with other systems difficult backup volumes should be protected just like boot volumes.','Backup volumes need to be encrypted.','','Graphical Method: Perform the following steps to enable encryption on the Time Machine drive: 1. Open System Settings 2. Select General 3. Select Time Machine 4. Select the unencrypted drive 5. Select - to forget that drive as a destination 6. Select + to add a different drive as the destination 7. Select Set Up Disk... 8. Set Encrypt Backup to enabled 9. Enter a password in the New Password and the same password in the Re-enter Password fields 10. A password hint is required, but it is recommended that you do not use any identifying information for the password Note: In macOS 12.0 Monterey and previous, the existing Time Machine drive could have encryption added without formatting it. This is no longer possible in macOS 13.0 Ventura. If you with to keep previous backups from the unencrypted volume, you will need to manually move those files over to the new encrypted drive.','[{\"cis\": [\"2.3.4.2\"]}, {\"cis_csc_v8\": [\"3.6\", \"3.11\", \"11.3\"]}, {\"cis_csc_v7\": [\"10.4\", \"13.6\", \"14.8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"MP.L2-3.8.9\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.12.3.1\", \"A.6.2.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1070\", \"T1072\", \"T1114\", \"T1119\", \"T1145\", \"T1208\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1490\", \"T1491\", \"T1492\", \"T1493\", \"T1527\", \"T1530\"]}, {\"nist_sp_800-53\": [\"CP-9(8)\", \"SC-28\", \"SC-28(1)\"]}, {\"pci_dss_v3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\", \"9.5\", \"9.5.1\"]}, {\"pci_dss_v4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"A1.2\", \"CC6.1\", \"CC6.4\", \"CC6.7\"]}]'),(31022,'Ensure Location Services Is Enabled.','macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. With the operating system verifying the location, users do not need to change the time or the time zone. The computer will change them based on the user's location. They do not need to specify their location for weather or travel times, and they will receive alerts on travel times to meetings and appointment where location information is supplied. Location Services simplify some processes with mobile computers, such as asset management and time or log management. There are some use cases where it is important that the computer not be able to report its exact location. While the general use case is to enable Location Services, it should not be allowed if the physical location of the computer and the user should not be public knowledge.','Location Services are helpful in most use cases and can simplify log and time management where computers change time zones.','','Graphical Method: Perform the following steps to enable Location Services: 1. Open System Settings 2. Select Privacy & Security 3. Select Location Services 4. Set Location Services to enabled Terminal Method: Run the following command to enable Location Services: $ /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.locationd.plist If the com.apple.locationd.plist outputs 0, run the following command to also ensure Location Services is running: $ /usr/bin/sudo /usr/bin/defaults write /var/db/locationd/Library/Preferences/ByHost/com.apple.locationd LocationServicesEnabled -bool false $ /usr/bin/sudo /bin/launchctl kickstart -k system/com.apple.locationd Note: In some use cases, organizations may not want Location Services running. To disable Location Services, System Integrity Protection must be disabled.','[{\"cis\": [\"2.6.1.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31023,'Ensure Location Services Is in the Menu Bar.','This setting provides the user to understand the current status of Location Services and which applications are using it.','Apple has fully integrated location services into macOS. Where the computer is currently located is used for Timezones, weather, travel times, geolocation, "Find my Mac" and advertising services. This benchmark recommends that location services are enabled for most users. Many users may have occasions when they do not want to share their current locations, some users may need to rarely share their locations. The immediate availability of Location Services in the menu bar provides easy access to the current status, which applications are using the service and a quick shortcut to making changes. This setting provides better user control in managing user privacy.','Users may be provided visibility to a setting they cannot control if organizations control Location Services globally by policy.','Graphical Method: Perform the following steps to set whether the location services icon is in the menu bar: 1. Open System Settings 2. Select Privacy & Security 3. Select Location Services 4. Select Details... 5. Set Show location icon in menu bar when System Services request your location to your organization's parameters Terminal Method: Run the following commands to set the option of the location services icon being in the menu bar: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.locationmenu.plist ShowSystemServices -bool <true/false>.','[{\"cis\": [\"2.6.1.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31024,'Ensure Gatekeeper Is Enabled.','Gatekeeper is Apple's application that utilizes allowlisting to restrict downloaded applications from launching. It functions as a control to limit applications from unverified sources from running without authorization. In an update to Gatekeeper in macOS 13 Ventura, Gatekeeper checks every application on every launch, not just quarantined apps.','Disallowing unsigned software will reduce the risk of unauthorized or malicious applications from running on the system.','','Graphical Method: Perform the following steps to enable Gatekeeper: 1. Open System Settings 2. Select Privacy & Security 3. Set 'Allow apps downloaded from' to 'App Store and identified developers' Terminal Method: Run the following command to enable Gatekeeper to allow applications from App Store and identified developers: $ /usr/bin/sudo /usr/sbin/spctl --master-enable Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.systempolicy.control 2. The key to include is AllowIdentifiedDevelopers 3. The key must be set to <true/> 4. The key to also include is EnableAssessment 5. The key must be set to <true/>.','[{\"cis\": [\"2.6.4\"]}, {\"cis_csc_v8\": [\"10.1\", \"10.2\", \"10.5\"]}, {\"cis_csc_v7\": [\"8.2\", \"8.4\"]}, {\"cmmc_v2.0\": [\"SI.L1-3.14.2\", \"SI.L1-3.14.4\"]}, {\"hipaa\": [\"164.308(a)(5)(ii)(B)\"]}, {\"iso_27001-2013\": [\"A.12.2.1\"]}, {\"mitre_techniques\": [\"T1017\", \"T1019\", \"T1027\", \"T1045\", \"T1068\", \"T1072\", \"T1073\", \"T1075\", \"T1091\", \"T1100\", \"T1103\", \"T1137\", \"T1138\", \"T1189\", \"T1190\", \"T1193\", \"T1194\", \"T1195\", \"T1200\", \"T1210\", \"T1211\", \"T1212\", \"T1215\", \"T1221\", \"T1495\"]}, {\"nist_sp_800-53\": [\"SI-16\"]}, {\"pci_dss_v3.2.1\": [\"1.4\", \"11.4\", \"5.1\", \"5.1.1\", \"5.2\"]}, {\"pci_dss_v4.0\": [\"5.1.1\", \"5.2.1\", \"5.2.2\", \"5.3.1\", \"5.3.2\"]}, {\"soc_2\": [\"CC6.8\"]}]'),(31025,'Ensure FileVault Is Enabled.','FileVault secures a system's data by automatically encrypting its boot volume and requiring a password or recovery key to access it. FileVault should be used with a saved escrow key to ensure that the owner can decrypt their data if the password is lost. FileVault may also be enabled using command line using the fdesetup command. To use this functionality, consult the Der Flounder blog for more details (see link below under References).','Encrypting sensitive data minimizes the likelihood of unauthorized users gaining access to it.','Mounting a FileVault encrypted volume from an alternate boot source will require a valid password to decrypt it.','Graphical Method: Perform the following steps to enable FileVault: 1. Open System Settings 2. Select Security & Privacy 3. Select Turn On... Note: This will allow you to create a recovery key for FileVault. Keep the key saved securely in case it is needed at a later date. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is dontAllowFDEDisable 3. The key must be set to <true/> Note: This profile is required to pass the audit.','[{\"cis\": [\"2.6.5\"]}, {\"cis_csc_v8\": [\"3.6\", \"3.11\"]}, {\"cis_csc_v7\": [\"13.6\", \"14.8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.6.2.1\"]}, {\"mitre_techniques\": [\"T1040\", \"T1070\", \"T1072\", \"T1114\", \"T1119\", \"T1145\", \"T1208\", \"T1492\", \"T1493\", \"T1527\", \"T1530\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"pci_dss_v3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_v4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31026,'Ensure an Administrator Password Is Required to Access System-Wide Preferences.','System Preferences controls system and user settings on a macOS Computer. System Preferences allows the user to tailor their experience on the computer as well as allowing the System Administrator to configure global security settings. Some of the settings should only be altered by the person responsible for the computer.','By requiring a password to unlock system-wide System Preferences, the risk is mitigated of a user changing configurations that affect the entire system and requires an admin user to re-authenticate to make changes.','Users will need to enter their password to unlock some additional preference panes that are unlocked by default like Network, Startup and Printers & Scanners.','Graphical Method: Perform the following steps to verify that an administrator password is required to access system-wide preferences: 1. Open System Settings 2. Select Privacy & Security 3. Select Advanced 4. Set Require an administrator password to access system-wide settings to enabled. Terminal Method: The authorizationdb settings cannot be written to directly, so the plist must be exported out to temporary file. Changes can be made to the temporary plist, then imported back into the authorizationdb settings. Run the following commands to enable that an administrator password is required to access system-wide preferences: $ /usr/bin/sudo /usr/bin/security authorizationdb read system.preferences > /tmp/system.preferences.plist YES (0) $ /usr/bin/sudo /usr/bin/defaults write /tmp/system.preferences.plist shared -bool false $ /usr/bin/sudo /usr/bin/security authorizationdb write system.preferences < /tmp/system.preferences.plist YES (0).','[{\"cis\": [\"2.6.7\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31027,'Ensure Power Nap Is Disabled for Intel Macs.','Power Nap allows the system to stay in low power mode, especially while on battery power, and periodically connect to previously known networks with stored credentials for user applications to phone home and get updates. This capability requires FileVault to remain unlocked and the use of previously joined networks to be risk accepted based on the SSID without user input. This control has been updated to check the status on both battery and AC Power. The presence of an electrical outlet does not completely correlate with logical and physical security of the device or available networks.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. The use of Power Nap adds to the risk of compromised physical and logical security. The user should be able to decrypt FileVault and have the applications download what is required when the computer is actively used. The control to prevent computer sleep has been retired for this version of the Benchmark. Forcing the computer to stay on and use energy in case a management push is needed is contrary to most current management processes. Only keep computers unslept if after hours pushes are required on closed LANs.','Power Nap exists for unattended user application updates like email and social media clients. With Power Nap disabled, the computer will not wake and reconnect to known wireless SSIDs intermittently when slept.','Graphical Method: Perform the following steps to disable Power Nap: Desktop Instructions: 1. Open System Settings 2. Select Energy Saver 3. Set Power Nap to disabled 4. Select UPS (if applicable) 5. Set Power Nap to disabled Laptop Instructions: 1. Open System Settings 2. Select Battery 3. Select Power Adapter (for laptops only) 4. Set Power Nap to disabled 5. Select Battery 6. Set Power Nap to disabled 7. Select UPS (if applicable) 8. Set Power Nap to disabled Terminal Method: Run the following command to disable Power Nap: $ /usr/bin/sudo /usr/bin/pmset -a powernap 0.','[{\"cis\": [\"2.9.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31028,'Ensure Wake for Network Access Is Disabled.','This feature allows the computer to take action when the user is not present and the computer is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. This macOS feature is meant to allow the computer to resume activity as needed regardless of physical security controls. This feature allows other users to be able to access your computer's shared resources, such as shared printers or Apple Music playlists, even when your computer is in sleep mode. In a closed network when only authorized devices could wake a computer, it could be valuable to wake computers in order to do management push activity. Where mobile workstations and agents exist, the device will more likely check in to receive updates when already awake. Mobile devices should not be listening for signals on any unmanaged network or where untrusted devices exist that could send wake signals.','Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access.','Management programs like Apple Remote Desktop Administrator use wake-on-LAN to connect with computers. If turned off, such management programs will not be able to wake a computer over the LAN. If the wake-on-LAN feature is needed, do not turn off this feature. The control to prevent computer sleep has been retired for this version of the Benchmark. Forcing the computer to stay on and use energy in case a management push is needed is contrary to most current management processes. Only keep computers unslept if after hours pushes are required on closed LANs.','Graphical Method: Perform the following steps to disable Wake for network access: Desktop Instructions: 1. Open System Settings 2. Select Energy Saver 3. Set Wake for network access to disabled Laptop Instructions: 1. Open System Settings 2. Select Battery 3. Select Options... 4. Set Wake for network access to Never Terminal Method: Run the following command to disable Wake for network access: $ /usr/bin/sudo /usr/bin/pmset -a womp 0 Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is com.apple.EnergySaver.desktop.ACPower 3. The key must be set to: <dict> <key>Wake On LAN</key> <integer>0</integer> <key>Wake On Modem Ring</key> <integer>0</integer> </dict> 4. The key to also include is com.apple.EnergySaver.portable.ACPower 5. The key must be set to: <dict> <key>Wake On LAN</key> <integer>0</integer> <key>Wake On Modem Ring</key> <integer>0</integer> </dict> 6. The key to also include is com.apple.EnergySaver.portable.BatteryPower 7. The key must be set to: <dict> <key>Wake On LAN</key> <integer>0</integer> <key>Wake On Modem Ring</key> <integer>0</integer> </dict> Note: Both Wake on LAN and Wake on Modem Ring need to be set. Only setting Wake On LAN will allow the profile to install but not set any settings. This profile will only apply the setting at installation and is not sticky.','[{\"cis\": [\"2.9.2\"]}, {\"cis_csc_v8\": [\"4.8\"]}, {\"cis_csc_v7\": [\"9.2\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\"]}, {\"mitre_techniques\": [\"T1015\", \"T1051\", \"T1076\", \"T1133\", \"T1200\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\"]}]'),(31029,'Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled.','Sleep and screen saver modes are low power modes that reduce electrical consumption while the system is not in use.','Prompting for a password when waking from sleep or screen saver mode mitigates the threat of an unauthorized person gaining access to a system in the user's absence.','Without a screenlock in place anyone with physical access to the computer would be logged in and able to use the active user's session.','Graphical Method: Perform the following steps to enable a password for unlock after a screen saver begins or after sleep: 1. Open System Settings 2. Select Lock Screen 3. Set Require password after screensaver begins or display is turned off to either After 0 seconds or After 5 seconds Terminal Method: Run the following command to require a password to unlock the computer after the screen saver engages or the computer sleeps: $ /usr/bin/sudo /usr/sbin/sysadminctl -screenLock immediate -password <administrator password> or $ /usr/bin/sudo /usr/sbin/sysadminctl -screenLock 5 seconds -password <administrator password> Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.screensaver 2. The key to include is askForPassword 3. The key must be set to <true/> 4. The key to also include is askForPasswordDelay 5. The key must be set to <integer><0,5></integer>.','[{\"cis\": [\"2.10.2\"]}, {\"cis_csc_v8\": [\"4.7\"]}, {\"cis_csc_v7\": [\"4.2\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v3.2.1\": [\"2.1\", \"2.1.1\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"2.3.1\"]}, {\"soc_2\": [\"CC6.3\"]}]'),(31030,'Ensure a Custom Message for the Login Screen Is Enabled.','An access warning informs the user that the system is reserved for authorized use only, and that the use of the system may be monitored.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','If users are not informed of their responsibilities, unapproved activities may occur. Users that are not approved for access may take the lack of a warning banner as implied consent to access.','Graphical Method: Perform the following steps to enable a login banner set to your organization's required text: 1. Open System Settings 2. Select Lock Screen 3. Set Show message when locked to enabled 4. Select Set 5. Insert text in the Set a message to appear on the lock screen that matches your organization's required text 6. Select Done Terminal Method: Run the following command to enable a custom login screen message: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "<custom message>" example: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Center for Internet Security Test Message" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is LoginwindowText 3. The key must be set to <string><Your organization's required text></string>.','[{\"cis\": [\"2.10.3\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31031,'Ensure Login Window Displays as Name and Password Is Enabled.','The login window prompts a user for his/her credentials, verifies their authorization level, and then allows or denies the user access to the system.','Prompting the user to enter both their username and password makes it twice as hard for unauthorized users to gain access to the system since they must discover two attributes.','','Graphical Method: Perform the following steps to ensure the login window display name and password: 1. Open System Settings 2. Select Lock Screen 3. Set 'Login window showstoName and Password` Terminal Method: Run the following command to enable the login window to display name and password: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true Note: The GUI will not display the updated setting until the current user(s) logs out. Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is SHOWFULLNAME 3. The key must be set to <true/>.','[{\"cis\": [\"2.10.4\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31032,'Ensure Show Password Hints Is Disabled.','Password hints are user-created text displayed when an incorrect password is used for an account.','Password hints make it easier for unauthorized persons to gain access to systems by displaying information provided by the user to assist in remembering the password. This info could include the password itself or other information that might be readily discerned with basic knowledge of the end user.','The user can set the hint to any value, including the password itself or clues that allow trivial social engineering attacks.','Graphical Method: Perform the following steps to disable password hints from being shown: 1. Open System Settings 2. Select Lock Screen 3. Set 'Show password hints` to disabled Terminal Method: Run the following command to disable password hints: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0 Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is RetriesUntilHint 3. The key must be set to <integer>0</integer>.','[{\"cis\": [\"2.10.5\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}]'),(31033,'Ensure Users' Accounts Do Not Have a Password Hint.','Password hints help the user recall their passwords for various systems and/or accounts. In most cases, password hints are simple and closely related to the user's password.','Password hints that are closely related to the user's password are a security vulnerability, especially in the social media age. Unauthorized users are more likely to guess a user's password if there is a password hint. The password hint is very susceptible to social engineering attacks and information exposure on social media networks.','','Graphical Method: Perform the following steps to remove a user's password hint: 1. Open System Settings 2. Select Touch ID & Passwords (or Login Password on non-Touch ID Macs) 3. Select Change... 4. Change the password and ensure that no text is entered in the Password hint box Note: This will only change the currently logged-in user's password, and not any others that are not compliant on the Mac. Use the terminal method if multiple users are not in compliance. Terminal Method: Run the following command to remove a user's password hint: $ /usr/bin/sudo /usr/bin/dscl . -list /Users hint . -delete /Users/<username> hint example: $ /usr/bin/sudo /usr/bin/dscl . -list /Users hint . -delete /Users/firstuser hint $ /usr/bin/sudo /usr/bin/dscl . -list /Users hint . -delete /Users/seconduser hint.','[{\"cis\": [\"2.11.1\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31034,'Ensure Guest Account Is Disabled.','The guest account allows users access to the system without having to create an account or password. Guest users are unable to make setting changes and cannot remotely login to the system. All files, caches, and passwords created by the guest user are deleted upon logging out.','Disabling the guest account mitigates the risk of an untrusted user doing basic reconnaissance and possibly using privilege escalation attacks to take control of the system.','A guest user can use that access to find out additional information about the system and might be able to use privilege escalation vulnerabilities to establish greater access.','Graphical Method: Perform the following steps to disable guest account availability: 1. Open System Settings 2. Select Users & Groups 3. Select the i next to the Guest User 4. Set Allow guests to log in to this computer to disabled Terminal Method: Run the following command to disable the guest account: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.MCX 2. The key to include is DisableGuestAccount 3. The key must be set to <true/>.','[{\"cis\": [\"2.12.1\"]}, {\"cis_csc_v8\": [\"5.2\", \"6.2\", \"6.8\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.4\", \"AC.L2-3.1.5\", \"IA.L2-3.5.7\", \"SC.L2-3.13.3\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(B)\", \"164.308(a)(3)(ii)(C)\", \"164.308(a)(4)(i)\", \"164.308(a)(4)(ii)(C)\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\", \"AC-5\", \"AC-6\", \"AC-6(1)\", \"AC-6(7)\", \"AU-9(4)\"]}, {\"pci_dss_v3.2.1\": [\"8.1.3\"]}, {\"pci_dss_v4.0\": [\"10.3.1\", \"2.2.2\", \"7.1\", \"7.1.1\", \"7.2\", \"7.2.1\", \"7.2.2\", \"7.2.4\", \"7.2.6\", \"7.3\", \"7.3.1\", \"7.3.2\", \"8.2.4\", \"8.2.5\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC6.2\", \"CC6.3\"]}]'),(31035,'Ensure Guest Access to Shared Folders Is Disabled.','Allowing guests to connect to shared folders enables users to access selected shared folders and their contents from different computers on a network.','Not allowing guests to connect to shared folders mitigates the risk of an untrusted user doing basic reconnaissance and possibly use privilege escalation attacks to take control of the system.','Unauthorized users could access shared files on the system.','Graphical Method: Perform the following steps to no longer allow guest user access to shared folders: 1. Open System Settings 2. Select Users & Groups 3. Select the i next to the Guest User 4. Set Allow guests to connect to shared folders to disabled Terminal Method: Run the following commands to verify that shared folders are not accessible to guest users: $ /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off.','[{\"cis\": [\"2.12.2\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.3\", \"AC.L2-3.1.5\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1004\", \"T1015\", \"T1021\", \"T1023\", \"T1031\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1050\", \"T1051\", \"T1053\", \"T1054\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1089\", \"T1096\", \"T1097\", \"T1133\", \"T1134\", \"T1145\", \"T1146\", \"T1150\", \"T1152\", \"T1156\", \"T1157\", \"T1159\", \"T1160\", \"T1162\", \"T1163\", \"T1165\", \"T1168\", \"T1169\", \"T1184\", \"T1185\", \"T1196\", \"T1197\", \"T1198\", \"T1200\", \"T1209\", \"T1213\", \"T1484\", \"T1489\", \"T1492\", \"T1494\", \"T1501\", \"T1504\", \"T1528\", \"T1530\", \"T1537\", \"T1538\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(31036,'Ensure Automatic Login Is Disabled.','The automatic login feature saves a user's system access credentials and bypasses the login screen. Instead, the system automatically loads to the user's desktop screen.','Disabling automatic login decreases the likelihood of an unauthorized person gaining access to a system.','If automatic login is not disabled, an unauthorized user could gain access to the system without supplying any credentials.','Graphical Method: Perform the following steps to set automatic login to off: 1. Open System Settings 2. Select Users & Groups 3. Set Automatic login in as... to Off Terminal Method: Run the following command to disable automatic login: $ /usr/bin/sudo /usr/bin/defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.loginwindow 2. The key to include is com.apple.login.mcx.DisableAutoLoginClient 3. The key must be set to <true/> Note: If both the profile is enabled and a user is set to autologin, the profile will take precedent. In this case, the graphical or terminal remediation method should also be applied in case the profile is ever removed.','[{\"cis\": [\"2.12.3\"]}, {\"cis_csc_v8\": [\"4.7\"]}, {\"cis_csc_v7\": [\"4.2\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v3.2.1\": [\"2.1\", \"2.1.1\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"2.3.1\"]}, {\"soc_2\": [\"CC6.3\"]}]'),(31037,'Ensure Security Auditing Is Enabled.','macOS's audit facility, auditd, receives notifications from the kernel when certain system calls, such as open, fork, and exit, are made. These notifications are captured and written to an audit log.','Logs generated by auditd may be useful when investigating a security incident as they may help reveal the vulnerable application and the actions taken by a malicious actor.','','Terminal Method: Perform the following to enable security auditing: Run the following command to load auditd: $ /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist.','[{\"cis\": [\"3.1\"]}, {\"cis_csc_v8\": [\"8.2\", \"8.5\"]}, {\"cis_csc_v7\": [\"4.9\", \"6.2\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.9.4.2\"]}, {\"nist_sp_800-53\": [\"AU-3(1)\", \"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.1\", \"10.2\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\"]}, {\"pci_dss_v4.0\": [\"10.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"9.4.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.2\"]}, {\"mitre_techniques\": [\"T1110\", \"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1501\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\", \"T1156\", \"T1146\", \"T1196\", \"T1081\", \"T1530\", \"T1089\", \"T1073\", \"T1157\", \"T1054\", \"T1070\", \"T1037\", \"T1036\", \"T1096\", \"T1034\", \"T1150\", \"T1504\", \"T1145\", \"T1494\", \"T1489\", \"T1198\", \"T1165\", \"T1492\", \"T1080\", \"T1209\"]}]'),(31038,'Ensure Security Auditing Flags For User-Attributable Events Are Configured Per Local Organizational Requirements.','Auditing is the capture and maintenance of information about security-related events. Auditable events often depend on differing organizational requirements.','Maintaining an audit trail of system activity logs can help identify configuration errors, troubleshoot service disruptions, and analyze compromises or attacks that have occurred, have begun, or are about to begin. Audit logs are necessary to provide a trail of evidence in case the system or network is compromised. Depending on the governing authority, organizations can have vastly different auditing requirements. In this control we have selected a minimal set of audit flags that should be a part of any organizational requirements. The flags selected below may not adequately meet organizational requirements for users of this benchmark. The auditing checks for the flags proposed here will not impact additional flags that are selected.','','Terminal Method: Perform the following to set the required Security Auditing Flags: Edit the /etc/security/audit_control file and add -fm, ad, -ex, aa, -fr, lo, and -fw to flags. You can also substitute -all for -fm, -ex, -fr, and -fw.','[{\"cis\": [\"3.2\"]}, {\"cis_csc_v8\": [\"3.14\", \"8.2\", \"8.5\"]}, {\"cis_csc_v7\": [\"6.2\", \"14.9\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.7\", \"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\", \"164.312(c)(1)\", \"164.312(c)(2)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.12.4.3\"]}, {\"nist_sp_800-53\": [\"AC-6(9)\", \"AU-3(1)\", \"AU-7\"]}, {\"pci_dss_v3.2.1\": [\"10.1\", \"10.2\", \"10.2.1\", \"10.2.2\", \"10.2.4\", \"10.2.5\", \"10.3\", \"11.5\"]}, {\"pci_dss_v4.0\": [\"10.2\", \"10.2.1\", \"10.2.1.1\", \"10.2.1.2\", \"10.2.1.3\", \"10.2.1.4\", \"10.2.1.5\", \"10.2.1.6\", \"10.2.1.7\", \"10.2.2\", \"5.3.4\", \"6.4.1\", \"6.4.2\", \"9.4.5\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\", \"CC7.2\"]}]'),(31039,'Ensure install.log Is Retained for 365 or More Days and No Maximum Size.','macOS writes information pertaining to system-related events to the file /var/log/install.log and has a configurable retention policy for this file. The default logging setting limits the file size of the logs and the maximum size for all logs. The default allows for an errant application to fill the log files and does not enforce sufficient log retention. The Benchmark recommends a value based on standard use cases. The value should align with local requirements within the organization. The default value has an "all_max" file limitation, no reference to a minimum retention, and a less precise rotation argument. The all_max flag control will remove old log entries based only on the size of the log files. Log size can vary widely depending on how verbose installing applications are in their log entries. The decision here is to ensure that logs go back a year, and depending on the applications a size restriction could compromise the ability to store a full year. While this Benchmark is not scoring for a rotation flag, the default rotation is sequential rather than using a timestamp. Auditors may prefer timestamps in order to simply review specific dates where event information is desired. Please review the File Rotation section in the man page for more information. man asl.conf - The maximum file size limitation string should be removed "all_max=" - An organization appropriate retention should be added "ttl=" - The rotation should be set with timestamps "rotate=utc" or "rotate=local".','Archiving and retaining install.log for at least a year is beneficial in the event of an incident as it will allow the user to view the various changes to the system along with the date and time they occurred.','Without log files system maintenance and security forensics cannot be properly performed.','Terminal Method: Perform the following to ensure that install logs are retained for at least 365 days: Edit the /etc/asl/com.apple.install file and add or modify the ttl value to 365 or greater on the file line. Also, remove the all_max= setting and value from the file line.','[{\"cis\": [\"3.3\"]}, {\"cis_csc_v8\": [\"8.1\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.4\", \"6.7\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.12.4.3\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"pci_dss_v4.0\": [\"10.1\", \"10.1.1\"]}, {\"soc_2\": [\"A1.1\"]}]'),(31040,'Ensure Security Auditing Retention Is Enabled.','The macOS audit capability contains important information to investigate security or operational issues. This resource is only completely useful if it is retained long enough to allow technical staff to find the root cause of anomalies in the records. Retention can be set to respect both size and longevity. To retain as much as possible under a certain size, the recommendation is to use the following: expire-after:60d OR 5G This recomendation is based on minimum storage for review and investigation. When a third party tool is in use to allow remote logging or the store and forwarding of logs, this local storage requirement is not required.','The audit records need to be retained long enough to be reviewed as necessary.','The recommendation is that at least 60 days or 5 gigabytes of audit records are retained. Systems that have very little remaining disk space may have issues retaining sufficient data.','Terminal Method: Perform the following to set the audit retention length: Edit the /etc/security/audit_control file so that expire-after: is at least 60d OR 5G.','[{\"cis\": [\"3.4\"]}, {\"cis_csc_v8\": [\"8.1\", \"8.3\"]}, {\"cis_csc_v7\": [\"6.4\", \"6.7\"]}, {\"cmmc_v2.0\": [\"AU.L2-3.3.1\"]}, {\"hipaa\": [\"164.312(b)\"]}, {\"iso_27001-2013\": [\"A.12.4.1\", \"A.12.4.3\"]}, {\"pci_dss_v3.2.1\": [\"10.7\"]}, {\"pci_dss_v4.0\": [\"10.1\", \"10.1.1\"]}, {\"soc_2\": [\"A1.1\"]}]'),(31041,'Ensure Bonjour Advertising Services Is Disabled.','Bonjour is an auto-discovery mechanism for TCP/IP devices which enumerate devices and services within a local subnet. DNS on macOS is integrated with Bonjour and should not be turned off, but the Bonjour advertising service can be disabled.','Bonjour can simplify device discovery from an internal rogue or compromised host. An attacker could use Bonjour's multicast DNS feature to discover a vulnerable or poorly-configured service or additional information to aid a targeted attack. Implementing this control disables the continuous broadcasting of "I'm here!" messages. Typical end-user endpoints should not have to advertise services to other computers. This setting does not stop the computer from sending out service discovery messages when looking for services on an internal subnet, if the computer is looking for a printer or server and using service discovery. To block all Bonjour traffic except to approved devices, the pf or other firewall would be needed.','Some applications, like Final Cut Studio and AirPort Base Station management, may not operate properly if the mDNSResponder is turned off.','Terminal Method: Run the following command to disable Bonjour Advertising services: $ /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mDNSResponder 2. The key to include is NoMulticastAdvertisements.','[{\"cis\": [\"4.1\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31042,'Ensure HTTP Server Is Disabled.','macOS used to have a graphical front-end to the embedded Apache web server in the Operating System. Personal web sharing could be enabled to allow someone on another computer to download files or information from the user's computer. Personal web sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. Apache, however, is still part of the Operating System and can be easily turned on to share files and provide remote connectivity to an end-user computer. Web sharing should only be done through hardened web servers and appropriate cloud services.','Web serving should not be done from a user desktop. Dedicated webservers or appropriate cloud storage should be used. Open ports make it easier to exploit the computer.','The web server is both a point of attack for the system and a means for unauthorized file transfers.','Terminal Method: Run the following command to disable the HTTP server services: $ sudo /usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist.','[{\"cis\": [\"4.2\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31043,'Ensure NFS Server Is Disabled.','macOS can act as an NFS fileserver. NFS sharing could be enabled to allow someone on another computer to mount shares and gain access to information from the user's computer. File sharing from a user endpoint has long been considered questionable, and Apple has removed that capability from the GUI. NFSD is still part of the Operating System and can be easily turned on to export shares and provide remote connectivity to an end-user computer. The etc/exports file contains the list of NFS shared directories. If the file exists, it is likely that NFS sharing has been enabled in the past or may be available periodically. As an additional check, the audit verifies that there is no /etc/exports file.','File serving should not be done from a user desktop. Dedicated servers should be used. Open ports make it easier to exploit the computer.','The nfs server is both a point of attack for the system and a means for unauthorized file transfers.','Terminal Method: Run the following command to disable the nfsd fileserver services: $ /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd Remove the exported Directory listing. $ /usr/bin/sudo /bin/rm /etc/exports.','[{\"cis\": [\"4.3\"]}, {\"cis_csc_v8\": [\"4.1\", \"4.8\"]}, {\"cis_csc_v7\": [\"5.1\", \"9.2\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\", \"CM.L2-3.4.8\", \"SC.L2-3.13.6\"]}, {\"iso_27001-2013\": [\"A.13.1.3\", \"A.14.2.5\", \"A.8.1.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1011\", \"T1015\", \"T1017\", \"T1019\", \"T1028\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1051\", \"T1053\", \"T1054\", \"T1055\", \"T1058\", \"T1067\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1086\", \"T1087\", \"T1088\", \"T1089\", \"T1092\", \"T1096\", \"T1097\", \"T1098\", \"T1100\", \"T1110\", \"T1112\", \"T1130\", \"T1133\", \"T1134\", \"T1136\", \"T1137\", \"T1138\", \"T1139\", \"T1142\", \"T1145\", \"T1146\", \"T1147\", \"T1148\", \"T1150\", \"T1156\", \"T1157\", \"T1165\", \"T1166\", \"T1169\", \"T1173\", \"T1174\", \"T1175\", \"T1176\", \"T1177\", \"T1178\", \"T1184\", \"T1187\", \"T1190\", \"T1196\", \"T1197\", \"T1198\", \"T1199\", \"T1200\", \"T1201\", \"T1206\", \"T1208\", \"T1209\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1485\", \"T1486\", \"T1487\", \"T1488\", \"T1489\", \"T1490\", \"T1491\", \"T1492\", \"T1494\", \"T1495\", \"T1501\", \"T1503\", \"T1504\", \"T1505\", \"T1506\", \"T1525\", \"T1530\", \"T1535\", \"T1537\", \"T1539\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"1.1.6\", \"1.2.1\", \"11.5\", \"2.2\", \"2.2.2\", \"2.2.5\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.5\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\", \"2.2.4\", \"6.4.1\"]}, {\"soc_2\": [\"CC6.3\", \"CC6.6\", \"CC7.1\", \"CC8.1\"]}]'),(31044,'Ensure Home Folders Are Secure.','By default, macOS allows all valid users into the top level of every other user's home folder and restricts access to the Apple default folders within. Another user on the same system can see you have a "Documents" folder but cannot see inside it. This configuration does work for personal file sharing but can expose user files to standard accounts on the system. The best parallel for Enterprise environments is that everyone who has a Dropbox account can see everything that is at the top level but can't see your pictures. Similarly with macOS, users can see into every new Directory that is created because of the default permissions. Home folders should be restricted to access only by the user. Sharing should be used on dedicated servers or cloud instances that are managing access controls. Some environments may encounter problems if execute rights are removed as well as read and write. Either no access or execute only for group or others is acceptable.','Allowing all users to view the top level of all networked users' home folder may not be desirable since it may lead to the revelation of sensitive information.','If implemented, users will not be able to use the "Public" folders in other users' home folders. "Public" folders with appropriate permissions would need to be set up in the /Shared folder.','Terminal Method: For each user, run the following command to secure all home folders: $ /usr/bin/sudo /bin/chmod -R og-rwx /Users/<username> Alternately, run the following command if there needs to be executable access for a home folder: $ /usr/bin/sudo /bin/chmod -R og-rw /Users/<username> example: $ /usr/bin/sudo /bin/chmod -R og-rw /Users/thirduser/ $ /usr/bin/sudo /bin/chmod -R og-rwx /Users/fourthuser/ # /bin/ls -l /Users/ total 0 drwxr-xr-x+ 12 Guest _guest 384 24 Jul 13:42 Guest drwxrwxrwt 4 root wheel 128 22 Jul 11:00 Shared drwx--x--x+ 18 firstuser staff 576 10 Aug 14:36 firstuser drwx--x--x+ 15 seconduser staff 480 10 Aug 09:16 seconduser drwx--x--x+ 11 thirduser staff 352 10 Aug 14:53 thirduser drwx------+ 11 fourthuser staff 352 10 Aug 14:53 fourthuser.','[{\"cis\": [\"5.1.1\"]}, {\"cis_csc_v8\": [\"3.3\"]}, {\"cis_csc_v7\": [\"14.6\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"AC.L2-3.1.3\", \"AC.L2-3.1.5\", \"MP.L2-3.8.2\"]}, {\"hipaa\": [\"164.308(a)(3)(i)\", \"164.308(a)(3)(ii)(A)\", \"164.312(a)(1)\"]}, {\"iso_27001-2013\": [\"A.9.1.1\"]}, {\"mitre_techniques\": [\"T1004\", \"T1015\", \"T1021\", \"T1023\", \"T1031\", \"T1034\", \"T1035\", \"T1036\", \"T1037\", \"T1044\", \"T1047\", \"T1050\", \"T1051\", \"T1053\", \"T1054\", \"T1070\", \"T1072\", \"T1073\", \"T1075\", \"T1076\", \"T1078\", \"T1080\", \"T1081\", \"T1084\", \"T1089\", \"T1096\", \"T1097\", \"T1133\", \"T1134\", \"T1145\", \"T1146\", \"T1150\", \"T1152\", \"T1156\", \"T1157\", \"T1159\", \"T1160\", \"T1162\", \"T1163\", \"T1165\", \"T1168\", \"T1169\", \"T1184\", \"T1185\", \"T1196\", \"T1197\", \"T1198\", \"T1200\", \"T1209\", \"T1213\", \"T1484\", \"T1489\", \"T1492\", \"T1494\", \"T1501\", \"T1504\", \"T1528\", \"T1530\", \"T1537\", \"T1538\"]}, {\"nist_sp_800-53\": [\"AC-5\", \"AC-6\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"pci_dss_v4.0\": [\"1.3.1\", \"7.1\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.1\"]}]'),(31045,'Ensure System Integrity Protection Status (SIP) Is Enabled.','System Integrity Protection is a security feature introduced in OS X 10.11 El Capitan. System Integrity Protection restricts access to System domain locations and restricts runtime attachment to system processes. Any attempt to inspect or attach to a system process will fail. Kernel Extensions are now restricted to /Library/Extensions and are required to be signed with a Developer ID.','Running without System Integrity Protection on a production system runs the risk of the modification of system binaries or code injection of system processes that would otherwise be protected by SIP.','System binaries and processes could become compromised.','Terminal Method: Perform the following steps to enable System Integrity Protection: 1. Reboot into the Recovery Partition (reboot and hold down Command + R) 2. Select Utilities 3. Select Terminal 4. Run the following command: $ /usr/bin/sudo /usr/bin/csrutil enable Successfully enabled System Integrity Protection. Please restart the machine for the changes to take effect. 5. Reboot the computer Note: You should research why the system had SIP disabled. It might be a better option to erase the Mac and reinstall the operating system. That is at your discretion. Note: You cannot enable System Integrity Protection from the booted operating system. If the remediation is attempted in the booted OS and not the Recovery Partition the output will give the error csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.','[{\"cis\": [\"5.1.2\"]}, {\"cis_csc_v8\": [\"2.3\", \"2.6\", \"10.5\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.9\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"nist_sp_800-53\": [\"CM-10\", \"CM-7(1)\", \"CM-7(2)\", \"CM-8(3)\", \"SI-16\"]}, {\"pci_dss_v3.2.1\": [\"1.4\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"12.3.4\", \"2.2.4\"]}, {\"soc_2\": [\"CC5.2\", \"CC6.8\", \"CC7.1\"]}, {\"mitre_techniques\": [\"T1191\", \"T1092\", \"T1175\", \"T1173\", \"T1519\", \"T1052\", \"T1210\", \"T1133\", \"T1118\", \"T1171\", \"T1170\", \"T1046\", \"T1137\", \"T1086\", \"T1164\", \"T1121\", \"T1076\", \"T1091\", \"T1180\", \"T1064\", \"T1184\", \"T1221\", \"T1127\", \"T1028\"]}]'),(31046,'Ensure Apple Mobile File Integrity (AMFI) Is Enabled.','Apple Mobile File Integrity (AMFI) was first released in macOS 10.12. The daemon and service block attempts to run unsigned code. AMFI uses lanchd, code signatures, certificates, entitlements, and provisioning profiles to create a filtered entitlement dictionary for an app. AMFI is the macOS kernel module that enforces code-signing and library validation.','Apple Mobile File Integrity validates that application code is validated.','Applications could be compromised with malicious code.','Terminal Method: Run the following command to enable the Apple Mobile File Integrity service: $ /usr/bin/sudo /usr/sbin/nvram boot-args="".','[{\"cis\": [\"5.1.3\"]}, {\"cis_csc_v8\": [\"2.3\", \"2.6\"]}, {\"cis_csc_v7\": [\"2.6\"]}, {\"cmmc_v2.0\": [\"CM.L2-3.4.7\", \"CM.L2-3.4.9\"]}, {\"iso_27001-2013\": [\"A.12.5.1\", \"A.12.6.2\"]}, {\"nist_sp_800-53\": [\"CM-10\", \"CM-7(1)\", \"CM-7(2)\", \"CM-8(3)\"]}, {\"pci_dss_v4.0\": [\"1.2.5\", \"12.3.4\", \"2.2.4\"]}, {\"soc_2\": [\"CC5.2\", \"CC7.1\"]}, {\"mitre_techniques\": [\"T1191\", \"T1092\", \"T1175\", \"T1173\", \"T1519\", \"T1052\", \"T1210\", \"T1133\", \"T1118\", \"T1171\", \"T1170\", \"T1046\", \"T1137\", \"T1086\", \"T1164\", \"T1121\", \"T1076\", \"T1091\", \"T1180\", \"T1064\", \"T1184\", \"T1221\", \"T1127\", \"T1028\"]}]'),(31047,'Ensure Sealed System Volume (SSV) Is Enabled.','Sealed System Volume is a security feature introduced in macOS 11.0 Big Sur. During system installation, a SHA-256 cryptographic hash is calculated for all immutable system files and stored in a Merkle tree which itself is hashed as the Seal. Both are stored in the metadata of the snapshot created of the System volume. The seal is verified by the boot loader at startup. macOS will not boot if system files have been tampered with. If validation fails, the user will be instructed to reinstall the operating system. During read operations for files located in the Sealed System Volume, a hash is calculated and compared to the value stored in the Merkle tree.','Running without Sealed System Volume on a production system could run the risk of Apple software that integrates directly with macOS being modified.','Apple Software that integrates with the operating system could become compromised.','If SSV has been disabled, assume that the operating system has been compromised. Back up any files, and do a clean install to a known good Operating System.','[{\"cis\": [\"5.1.4\"]}, {\"cis_csc_v8\": [\"3.6\", \"3.11\"]}, {\"cis_csc_v7\": [\"13.6\", \"14.8\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.19\", \"IA.L2-3.5.10\", \"MP.L2-3.8.1\", \"SC.L2-3.13.11\", \"SC.L2-3.13.16\"]}, {\"hipaa\": [\"164.312(a)(2)(iv)\", \"164.312(e)(2)(ii)\"]}, {\"iso_27001-2013\": [\"A.10.1.1\", \"A.6.2.1\"]}, {\"nist_sp_800-53\": [\"SC-28\", \"SC-28(1)\"]}, {\"pci_dss_v3.2.1\": [\"3.4\", \"3.4.1\", \"8.2.1\"]}, {\"pci_dss_v4.0\": [\"3.1.1\", \"3.3.2\", \"3.3.3\", \"3.5.1\", \"3.5.1.2\", \"3.5.1.3\", \"8.3.2\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"mitre_techniques\": [\"T1527\", \"T1119\", \"T1530\", \"T1114\", \"T1070\", \"T1208\", \"T1040\", \"T1145\", \"T1492\", \"T1493\", \"T1072\"]}]'),(31048,'Ensure Password Account Lockout Threshold Is Configured.','The account lockout threshold specifies the amount of times a user can enter an incorrect password before a lockout will occur. Ensure that a lockout threshold is part of the password policy on the computer.','The account lockout feature mitigates brute-force password attacks on the system.','The number of incorrect log on attempts should be reasonably small to minimize the possibility of a successful password attack, while allowing for honest errors made during a normal user log on. The locked account will auto-unlock after a few minutes when bad password attempts stop. The computer will accept the still-valid password if remembered or recovered.','Terminal Method: Run the following command to set the maximum number of failed login attempts to less than or equal to 5: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxFailedLoginAttempts=<value=<5>" Note: When the account lockout threshold is set with pwpolicy, it will also set a reset value to policyAttributeMinutesUntilFailedAuthenticationReset that defaults to 1 minute. You can change this value with the command: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "policyAttributeMinutesUntilFailedAuthenticationReset=<value in minutes>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxFailedLoginAttempts=5" /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "policyAttributeMinutesUntilFailedAuthenticationReset=10" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is maxFailedAttempts 3. The key must be set to <integer><value<=5></integer> Note: When setting the lockout threshold with a mobile configuration profile there is no default reset to the lockout. To set the reset value use the key autoEnableInSeconds and set the key to <integer><value in seconds></integer>. Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.1\"]}, {\"cis_csc_v8\": [\"6.2\"]}, {\"cis_csc_v7\": [\"16.7\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\"]}, {\"hipaa\": [\"164.308(a)(3)(ii)(C)\"]}, {\"iso_27001-2013\": [\"A.9.2.6\"]}, {\"nist_sp_800-53\": [\"AC-2(1)\"]}, {\"pci_dss_v3.2.1\": [\"8.1.3\"]}, {\"pci_dss_v4.0\": [\"8.2.4\", \"8.2.5\"]}, {\"soc_2\": [\"CC6.2\", \"CC6.3\"]}, {\"mitre_techniques\": [\"T1134\", \"T1197\", \"T1538\", \"T1530\", \"T1213\", \"T1089\", \"T1157\", \"T1044\", \"T1484\", \"T1054\", \"T1159\", \"T1160\", \"T1152\", \"T1168\", \"T1162\", \"T1185\", \"T1031\", \"T1050\", \"T1075\", \"T1097\", \"T1034\", \"T1163\", \"T1076\", \"T1021\", \"T1053\", \"T1489\", \"T1051\", \"T1023\", \"T1165\", \"T1528\", \"T1501\", \"T1072\", \"T1537\", \"T1078\", \"T1047\", \"T1084\", \"T1004\"]}]'),(31049,'Ensure Password Minimum Length Is Configured.','A minimum password length is the fewest number of characters a password can contain to meet a system's requirements. Ensure that a minimum of a 15-character password is part of the password policy on the computer. Where the confidentiality of encrypted information in FileVault is more of a concern, requiring a longer password or passphrase may be sufficient rather than imposing additional complexity requirements that may be self-defeating.','Information systems that are not protected with strong password schemes including passwords of minimum length provide a greater opportunity for attackers to crack the password and gain access to the system.','Short passwords can be easily attacked.','Terminal Method: Run the following command to set the password length to greater than or equal to 15: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "minChars=<value>=15>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "minChars=15" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is minLength 3. The key must be set to <integer><value>=15></integer> Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.2\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"mitre_techniques\": [\"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1501\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\"]}]'),(31050,'Ensure Complex Password Must Contain Alphabetic Characters Is Configured.','Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non-alphanumeric characters. Ensure that an Alphabetic character is part of the password policy on the computer.','The more complex a password, the more resistant it will be against persons seeking unauthorized access to a system.','Password policy should be in effect to reduce the risk of exposed services being compromised easily through dictionary attacks or other social engineering attempts.','Terminal Method: Run the following command to set the that passwords must contain at least one letter: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy - setaccountpolicies "requiresAlpha=<value>=1>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresAlpha=1" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is requireAlphanumeric 3. The key must be set to <true/> Note: This profile sets a requirement of both an alphabetical and a numeric character. Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.3\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31051,'Ensure Complex Password Must Contain Numeric Character Is Configured.','Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non-alphanumeric characters. Ensure that a number or numeric value is part of the password policy on the computer.','The more complex a password, the more resistant it will be against persons seeking unauthorized access to a system.','Password policy should be in effect to reduce the risk of exposed services being compromised easily through dictionary attacks or other social engineering attempts.','Terminal Method: Run the following command to set passwords to require at least one number: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy - setaccountpolicies "requiresNumeric=<value>=1>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresNumeric=2" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is requireAlphanumeric 3. The key must be set to <true/> Note: This profile sets a requirement of both an alphabetical and a numeric character. Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.4\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31052,'Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured.','Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non-alphanumeric characters. Ensure that both uppercase and lowercase letters are part of the password policy on the computer.','The more complex a password, the more resistant it will be against persons seeking unauthorized access to a system.','Password policy should be in effect to reduce the risk of exposed services being compromised easily through dictionary attacks or other social engineering attempts.','Terminal Method: Run the following command to set passwords to require at upper and lower case letter: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresMixedCase=<value>=1>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresMixedCase=1".','[{\"cis\": [\"5.2.6\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"mitre_techniques\": [\"T1003\", \"T1017\", \"T1019\", \"T1028\", \"T1035\", \"T1047\", \"T1051\", \"T1053\", \"T1055\", \"T1067\", \"T1072\", \"T1075\", \"T1076\", \"T1077\", \"T1078\", \"T1084\", \"T1086\", \"T1088\", \"T1097\", \"T1098\", \"T1100\", \"T1134\", \"T1136\", \"T1169\", \"T1175\", \"T1184\", \"T1190\", \"T1206\", \"T1208\", \"T1210\", \"T1214\", \"T1215\", \"T1218\", \"T1495\", \"T1501\", \"T1505\", \"T1525\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}]'),(31053,'Ensure Password Age Is Configured.','Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users should reset passwords periodically. This control uses 365 days as the acceptable value. Some organizations may be more or less restrictive. This control mainly exists to mitigate against password reuse of the macOS account password in other realms that may be more prone to compromise. Attackers take advantage of exposed information to attack other accounts.','Passwords should be changed periodically to reduce exposure.','Required password changes will lead to some locked computers requiring admin assistance.','Terminal Method: Run the following command to require that passwords expire after at most 365 days: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxMinutesUntilChangePassword=<value<=525600>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "maxMinutesUntilChangePassword=43200" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is maxPINAgeInDays 3. The key must be set to <integer><value>=365></integer> Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.7\"]}, {\"cis_csc_v8\": [\"5.3\"]}, {\"cis_csc_v7\": [\"16.9\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.6\"]}, {\"nist_sp_800-53\": [\"AC-2(3)\"]}, {\"pci_dss_v3.2.1\": [\"8.1.4\"]}, {\"pci_dss_v4.0\": [\"8.3.7\"]}, {\"mitre_techniques\": [\"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\", \"T1134\", \"T1197\", \"T1538\", \"T1089\", \"T1157\", \"T1054\", \"T1159\", \"T1160\", \"T1152\", \"T1168\", \"T1162\", \"T1185\", \"T1050\", \"T1075\", \"T1097\", \"T1163\", \"T1021\", \"T1489\", \"T1051\", \"T1023\", \"T1165\", \"T1501\", \"T1072\", \"T1537\", \"T1047\", \"T1084\", \"T1004\"]}]'),(31054,'Ensure Password History Is Configured.','Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users must reset passwords periodically. This control ensures that previous passwords are not reused immediately by keeping a history of previous password hashes. Ensure that password history checks are part of the password policy on the computer. This control checks whether a new password is different than the previous 15. The latest NIST guidance based on exploit research referenced in this section details how one of the greatest risks is password exposure rather than password cracking. Passwords should be changed to a new unique value whenever a password might have been exposed to anyone other than the account holder. Attackers have maintained persistent control based on predictable password change patterns and substantially different patterns should be used in case of a leak.','Old passwords should not be reused.','Required password changes will lead to some locked computers requiring admin assistance.','Terminal Method: Run the following command to require that the password must to be different from at least the last 15 passwords: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "usingHistory=<value>=15>" example: $ /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "usingHistory=15" Profile Method: Create or edit a configuration profile with the following information: 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy 2. The key to include is pinHistory 3. The key must be set to <integer><value>=15></integer> Note: The profile method is the preferred method for setting password policy since - setglobalpolicy in pwpolicy is deprecated and will likely be removed in a future macOS release.','[{\"cis\": [\"5.2.8\"]}, {\"cis_csc_v8\": [\"5.2\"]}, {\"cis_csc_v7\": [\"4.4\"]}, {\"cmmc_v2.0\": [\"IA.L2-3.5.7\"]}, {\"iso_27001-2013\": [\"A.9.4.3\"]}, {\"pci_dss_v4.0\": [\"2.2.2\", \"8.3.5\", \"8.3.6\", \"8.6.3\"]}, {\"soc_2\": [\"CC6.1\"]}, {\"mitre_techniques\": [\"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1501\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\"]}]'),(31055,'Ensure the Sudo Timeout Period Is Set to Zero.','The sudo command allows the user to run programs as the root user. Working as the root user allows the user an extremely high level of configurability within the system. This control, along with the control to use a separate timestamp for each tty, limits the window where an unauthorized user, process, or attacker could utilize legitimate credentials that are valid for longer than required.','The sudo command stays logged in as the root user for five minutes before timing out and re-requesting a password. This five-minute window should be eliminated since it leaves the system extremely vulnerable. This is especially true if an exploit were to gain access to the system, since they would be able to make changes as a root user.','This control has a serious impact where users often have to use sudo. It is even more of an impact where users have to use sudo multiple times in quick succession as part of normal work processes. Organizations with that common use case will likely find this control too onerous and are better to accept the risk of not requiring a 0 grace period. In some ways the use of sudo -s, which is undesirable, is better than a long grace period since that use does change the hash to show that it is a root shell rather than a normal shell where sudo commands will be implemented without a password.','Terminal Method: Run the following command to edit the sudo settings: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/<configuration file name> example: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/10_cissudoconfiguration Note: Unlike other Unix and/or Linux distros, macOS will ignore configuration files in the sudoers.d folder that contain a . so do not add a file extension to the configuration file. Add the line Defaults timestamp_timeout=0 to the configuration file. If /etc/sudoers.d/ is not owned by root or in the wheel group, run the following to change ownership and group: $ /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/sudoers.d/.','[{\"cis\": [\"5.4\"]}, {\"cis_csc_v8\": [\"4.3\"]}, {\"cis_csc_v7\": [\"16.11\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.10\", \"AC.L2-3.1.11\"]}, {\"hipaa\": [\"164.312(a)(2)(iii)\"]}, {\"nist_sp_800-53\": [\"AC-11\", \"AC-11(1)\", \"AC-12\", \"AC-2(5)\"]}, {\"iso_27001-2013\": [\"A.8.1.3\"]}, {\"pci_dss_v3.2.1\": [\"8.1.8\"]}, {\"pci_dss_v4.0\": [\"8.2.8\"]}, {\"mitre_techniques\": [\"T1110\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31056,'Ensure a Separate Timestamp Is Enabled for Each User/tty Combo.','Using tty tickets ensures that a user must enter the sudo password in each Terminal session. With sudo versions 1.8 and higher, introduced in 10.12, the default value is to have tty tickets for each interface so that root access is limited to a specific terminal. The default configuration can be overwritten or not configured correctly on earlier versions of macOS.','In combination with removing the sudo timeout grace period, a further mitigation should be in place to reduce the possibility of a background process using elevated rights when a user elevates to root in an explicit context or tty. Additional mitigation should be in place to reduce the risk of privilege escalation of background processes.','This control should have no user impact. Developers or installers may have issues if background processes are spawned with different interfaces than where sudo was executed.','Terminal Method: Run the following command to edit the sudo settings: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/<configuration file name> example: $ /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/10_cissudoconfiguration Note: Unlike other Unix and/or Linux distros, macOS will ignore configuration files in the sudoers.d folder that contain a . so do not add a file extension to the configuration file. Add the line Defaults timestamp_type=tty to the configuration file. Note: The Defaults timestamp_type=tty line can be added to an existing configuration file or a new one. That will depend on your organization's preference and works either way.','[{\"cis\": [\"5.5\"]}, {\"cis_csc_v8\": [\"4.3\"]}, {\"cis_csc_v7\": [\"16.11\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.10\", \"AC.L2-3.1.11\"]}, {\"hipaa\": [\"164.312(a)(2)(iii)\"]}, {\"nist_sp_800-53\": [\"AC-11\", \"AC-11(1)\", \"AC-12\", \"AC-2(5)\"]}, {\"iso_27001-2013\": [\"A.8.1.3\"]}, {\"pci_dss_v3.2.1\": [\"8.1.8\"]}, {\"pci_dss_v4.0\": [\"8.2.8\"]}, {\"mitre_techniques\": [\"T1110\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31057,'Ensure the "root" Account Is Disabled.','The root account is a superuser account that has access privileges to perform any actions and read/write to any file on the computer. With some versions of Linux, the system administrator may commonly use the root account to perform administrative functions.','Enabling and using the root account puts the system at risk since any successful exploit or mistake while the root account is in use could have unlimited access privileges within the system. Using the sudo command allows users to perform functions as a root user while limiting and password protecting the access privileges. By default the root account is not enabled on a macOS computer. An administrator can escalate privileges using the sudo command (use -s or -i to get a root shell).','Some legacy POSIX software might expect an available root account.','Graphical Method: Perform the following steps to ensure that the root user is disabled: 1. Open /System/Library/CoreServices/Applications/Directory Utility 2. Click the lock icon to unlock the service 3. Click Edit in the menu bar 4. Click Disable Root User Terminal Method: Run the following command to disable the root user: $ /usr/bin/sudo /usr/sbin/dsenableroot -d username = root user password:.','[{\"cis\": [\"5.6\"]}, {\"cis_csc_v8\": [\"5.4\"]}, {\"cis_csc_v7\": [\"4.3\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.5\", \"AC.L2-3.1.6\", \"AC.L2-3.1.7\", \"SC.L2-3.13.3\"]}, {\"iso_27001-2013\": [\"A.9.2.3\"]}, {\"nist_sp_800-53\": [\"AC-6(2)\", \"AC-6(5)\"]}, {\"pci_dss_v3.2.1\": [\"7.1\", \"7.1.1\", \"7.1.2\", \"7.1.3\"]}, {\"soc_2\": [\"CC6.1\", \"CC6.3\"]}, {\"mitre_techniques\": [\"T1176\", \"T1501\", \"T1134\", \"T1098\", \"T1017\", \"T1067\", \"T1088\", \"T1175\", \"T1136\", \"T1003\", \"T1214\", \"T1190\", \"T1210\", \"T1495\", \"T1525\", \"T1208\", \"T1215\", \"T1075\", \"T1097\", \"T1086\", \"T1055\", \"T1076\", \"T1053\", \"T1505\", \"T1035\", \"T1051\", \"T1218\", \"T1184\", \"T1169\", \"T1206\", \"T1019\", \"T1072\", \"T1078\", \"T1100\", \"T1077\", \"T1047\", \"T1084\", \"T1028\"]}]'),(31058,'Ensure an Administrator Account Cannot Login to Another User's Active and Locked Session.','macOS has a privilege that can be granted to any user that will allow that user to unlock active user's sessions.','Disabling the administrator's and/or user's ability to log into another user's active and locked session prevents unauthorized persons from viewing potentially sensitive and/or personal information.','While Fast user switching is a workaround for some lab environments, especially where there is even less of an expectation of privacy, this setting change may impact some maintenance workflows.','Terminal Method: Run the following command to disable a user logging into another user's active and/or locked session: $ /usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver use-login-window-ui YES (0).','[{\"cis\": [\"5.7\"]}, {\"cis_csc_v8\": [\"4.3\"]}, {\"cis_csc_v7\": [\"16.11\"]}, {\"cmmc_v2.0\": [\"AC.L2-3.1.10\", \"AC.L2-3.1.11\"]}, {\"hipaa\": [\"164.312(a)(2)(iii)\"]}, {\"nist_sp_800-53\": [\"AC-11\", \"AC-11(1)\", \"AC-12\", \"AC-2(5)\"]}, {\"iso_27001-2013\": [\"A.8.1.3\"]}, {\"pci_dss_v3.2.1\": [\"8.1.8\"]}, {\"pci_dss_v4.0\": [\"8.2.8\"]}, {\"mitre_techniques\": [\"T1110\", \"T1527\", \"T1176\", \"T1088\", \"T1081\", \"T1214\", \"T1530\", \"T1213\", \"T1038\", \"T1073\", \"T1482\", \"T1114\", \"T1044\", \"T1484\", \"T1525\", \"T1161\", \"T1031\", \"T1034\", \"T1145\", \"T1076\", \"T1053\", \"T1505\", \"T1528\", \"T1078\"]}]'),(31059,'Ensure a Login Window Banner Exists.','A Login window banner warning informs the user that the system is reserved for authorized use only. It enforces an acknowledgment by the user that they have been informed of the use policy in the banner if required. The system recognizes either the .txt and the .rtf formats.','An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, acceptable use policy, and authorization requirements.','Users will have to click on the window with the Login text before logging into the computer.','Terminal Method: Run the following commands to create or edit the login window text and set the proper permissions: Edit (or create) a PolicyBanner.txt or PolicyBanner.rtf file, in the /Library/Security/ folder, to include the required login window banner text. Perform the following to set permissions on the policy banner file: $ /usr/bin/sudo /usr/sbin/chown o+r /Library/Security/PolicyBanner.txt $ /usr/bin/sudo /usr/sbin/chown o+r /Library/Security/PolicyBanner.rtf Note: If your organization uses an .rtfd file to set the policy banner, run $ /usr/bin/sudo /usr/sbin/chown -R o+rx /Library/Security/PolicyBanner.rtfd to update the permissions.','[{\"cis\": [\"5.8\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1110\", \"T1003\", \"T1081\", \"T1097\", \"T1178\", \"T1072\", \"T1067\", \"T1495\", \"T1019\", \"T1177\", \"T1485\", \"T1486\", \"T1491\", \"T1488\", \"T1487\", \"T1490\", \"T1146\", \"T1148\", \"T1015\", \"T1133\", \"T1200\", \"T1076\", \"T1051\", \"T1176\", \"T1501\", \"T1087\", \"T1098\", \"T1139\", \"T1197\", \"T1092\", \"T1136\", \"T1011\", \"T1147\", \"T1130\", \"T1174\", \"T1053\", \"T1166\", \"T1206\", \"T1503\", \"T1214\", \"T1187\", \"T1208\", \"T1142\", \"T1075\", \"T1201\", \"T1145\", \"T1184\", \"T1537\", \"T1078\", \"T1077\", \"T1134\", \"T1017\", \"T1088\", \"T1175\", \"T1190\", \"T1210\", \"T1525\", \"T1215\", \"T1086\", \"T1055\", \"T1505\", \"T1035\", \"T1218\", \"T1169\", \"T1100\", \"T1047\", \"T1084\", \"T1028\", \"T1156\", \"T1196\", \"T1530\", \"T1089\", \"T1073\", \"T1157\", \"T1054\", \"T1070\", \"T1037\", \"T1036\", \"T1096\", \"T1034\", \"T1150\", \"T1504\", \"T1494\", \"T1489\", \"T1198\", \"T1165\", \"T1492\", \"T1080\", \"T1209\", \"T1112\", \"T1058\", \"T1173\", \"T1137\", \"T1539\", \"T1535\", \"T1506\", \"T1138\", \"T1044\", \"T1199\"]}]'),(31060,'Ensure the Guest Home Folder Does Not Exist.','In the previous two controls, the guest account login has been disabled and sharing to guests has been disabled, as well. There is no need for the legacy Guest home folder to remain in the file system. When normal user accounts are removed, you have the option to archive it, leave it in place, or delete. In the case of the guest folder, the folder remains in place without a GUI option to remove it. If at some point in the future a Guest account is needed, it will be re-created. The presence of the Guest home folder can cause automated audits to fail when looking for compliant settings within all User folders, as well. Rather than ignoring the folder's continued existence, it is best removed.','The Guest home folders are unneeded after the Guest account is disabled and could be used inappropriately.','The Guest account should not be necessary after it is disabled, and it will be automatically re-created if the Guest account is re-enabled.','Terminal Method: Run the following command to remove the Guest user home folder: $ /usr/bin/sudo /bin/rm -R /Users/Guest.','[{\"cis\": [\"5.10\"]}, {\"cis_csc_v8\": [\"4.1\"]}, {\"cis_csc_v7\": [\"5.1\"]}, {\"cmmc_v2.0\": [\"AC.L1-3.1.1\", \"AC.L1-3.1.2\", \"CM.L2-3.4.1\", \"CM.L2-3.4.2\", \"CM.L2-3.4.6\", \"CM.L2-3.4.7\"]}, {\"iso_27001-2013\": [\"A.14.2.5\", \"A.8.1.3\"]}, {\"nist_sp_800-53\": [\"CM-7(1)\", \"CM-9\", \"SA-10\"]}, {\"pci_dss_v3.2.1\": [\"11.5\", \"2.2\"]}, {\"pci_dss_v4.0\": [\"1.1.1\", \"1.2.1\", \"1.2.6\", \"1.2.7\", \"1.5.1\", \"2.1.1\", \"2.2.1\"]}, {\"soc_2\": [\"CC7.1\", \"CC8.1\"]}, {\"mitre_techniques\": [\"T1110\", \"T1003\", \"T1081\", \"T1097\", \"T1178\", \"T1072\", \"T1067\", \"T1495\", \"T1019\", \"T1177\", \"T1485\", \"T1486\", \"T1491\", \"T1488\", \"T1487\", \"T1490\", \"T1146\", \"T1148\", \"T1015\", \"T1133\", \"T1200\", \"T1076\", \"T1051\", \"T1176\", \"T1501\", \"T1087\", \"T1098\", \"T1139\", \"T1197\", \"T1092\", \"T1136\", \"T1011\", \"T1147\", \"T1130\", \"T1174\", \"T1053\", \"T1166\", \"T1206\", \"T1503\", \"T1214\", \"T1187\", \"T1208\", \"T1142\", \"T1075\", \"T1201\", \"T1145\", \"T1184\", \"T1537\", \"T1078\", \"T1077\", \"T1134\", \"T1017\", \"T1088\", \"T1175\", \"T1190\", \"T1210\", \"T1525\", \"T1215\", \"T1086\", \"T1055\", \"T1505\", \"T1035\", \"T1218\", \"T1169\", \"T1100\", \"T1047\", \"T1084\", \"T1028\", \"T1156\", \"T1196\", \"T1530\", \"T1089\", \"T1073\", \"T1157\", \"T1054\", \"T1070\", \"T1037\", \"T1036\", \"T1096\", \"T1034\", \"T1150\", \"T1504\", \"T1494\", \"T1489\", \"T1198\", \"T1165\", \"T1492\", \"T1080\", \"T1209\", \"T1112\", \"T1058\", \"T1173\", \"T1137\", \"T1539\", \"T1535\", \"T1506\", \"T1138\", \"T1044\", \"T1199\"]}]'); +INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (41,1,'Security','Hardening plugin for security compliance analysis','','ID;STATUS','',0,2); -SET @tmodule_name = 'CPU'; -SET @tmodule_description = 'CPU'; -SET @id_os = 2; - -INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) -SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'Brand;Clock;Model' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp -WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); - -SET @tmodule_name = 'RAM'; -SET @tmodule_description = 'RAM'; -SET @id_os = 2; - -INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) -SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'Size' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp -WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); - -SET @tmodule_name = 'NIC'; -SET @tmodule_description = 'NIC'; -SET @id_os = 2; - -INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) -SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'NIC;Mac;Speed' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp -WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); - -SET @tmodule_name = 'Software'; -SET @tmodule_description = 'Software'; -SET @id_os = 2; - -INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) -SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'PKGINST;VERSION;NAME' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp -WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); - -SET @tmodule_name = 'Security'; -SET @tmodule_description = 'Hardening plugin for security compliance analysis'; -SET @id_os = 1; - -INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) -SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'ID:STATUS' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp -WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); - -SET @tmodule_name = 'Security'; -SET @tmodule_description = 'Hardening plugin for security compliance analysis'; -SET @id_os = 9; - -INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) -SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'ID:STATUS' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp -WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); +INSERT INTO `tmodule_inventory` (`id_module_inventory`, `id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) VALUES (42,9,'Security','Hardening plugin for security compliance analysis','','ID;STATUS','',0,2); UPDATE tconfig SET value = '' From ac0f89b24ffd8e5a78f34abf3100bf78a6693a98 Mon Sep 17 00:00:00 2001 From: Jonathan <jonathan.leon@pandorafms.com> Date: Wed, 18 Oct 2023 09:15:46 +0200 Subject: [PATCH 3/3] #12256 remove id and check duplicate before insert --- pandora_console/extras/mr/66.sql | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/pandora_console/extras/mr/66.sql b/pandora_console/extras/mr/66.sql index e19339bc30..b7b2b400d7 100644 --- a/pandora_console/extras/mr/66.sql +++ b/pandora_console/extras/mr/66.sql @@ -219,4 +219,53 @@ ALTER TABLE `treport_content` ADD COLUMN `status_of_check` TINYTEXT; ALTER TABLE `tservice` ADD COLUMN `enable_horizontal_tree` TINYINT NOT NULL DEFAULT 0; INSERT INTO tmodule_group (name) SELECT ('Security') WHERE NOT EXISTS (SELECT name FROM tmodule_group WHERE LOWER(name) = 'security'); + +SET @tmodule_name = 'CPU'; +SET @tmodule_description = 'CPU'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'Brand;Clock;Model' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'RAM'; +SET @tmodule_description = 'RAM'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'Size' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'NIC'; +SET @tmodule_description = 'NIC'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'NIC;Mac;Speed' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'Software'; +SET @tmodule_description = 'Software'; +SET @id_os = 2; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'PKGINST;VERSION;NAME' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'Security'; +SET @tmodule_description = 'Hardening plugin for security compliance analysis'; +SET @id_os = 1; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'ID:STATUS' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + +SET @tmodule_name = 'Security'; +SET @tmodule_description = 'Hardening plugin for security compliance analysis'; +SET @id_os = 9; + +INSERT INTO tmodule_inventory (`id_os`, `name`, `description`, `interpreter`, `data_format`, `code`, `block_mode`,`script_mode`) +SELECT * FROM (SELECT @id_os id_os, @tmodule_name name, @tmodule_description description, '' interpreter, 'ID:STATUS' data_format, '' code, '0' block_mode, 2 script_mode) AS tmp +WHERE NOT EXISTS (SELECT name, description FROM tmodule_inventory WHERE name = @tmodule_name and description = @tmodule_description and id_os = @id_os); + COMMIT;