CCIs from General Purpose Operating System SRG Mapped to Guide to the Secure Configuration of Red Hat Enterprise Linux 6

SRG ID | CCI ID | SRG Title | SRG Description | Rule ID | Rule Title | Rule Desc | Rule Check

SRG-OS-000001-GPOS-00001

CCI-000015

The operating system must provide automated mechanisms for supporting account management functions.

Enterprise environments make account management challenging and complex. A manual process for account management functions adds the risk of a potential oversight or other errors. A comprehensive account management process that includes automation helps to ensure accounts designated as requiring attention are consistently and promptly addressed. Examples include, but are not limited to, using automation to take action on multiple accounts designated as inactive, suspended or terminated, or by disabling accounts located in non-centralized account stores such as multiple servers. This requirement applies to all account types, including individual/user, shared, group, system, guest/anonymous, emergency, developer/manufacturer/vendor, temporary, and service. The automated mechanisms may reside within the operating system itself or may be offered by other infrastructure providing automated account management capabilities. Automated mechanisms may be composed of differing technologies that, when placed together, contain an overall automated mechanism supporting an organization's automated account management requirements. Account management functions include: assigning group or role membership; identifying account type; specifying user access authorizations (i.e., privileges); account removal, update, or termination; and administrative alerts. The use of automated mechanisms can include, for example: using email or text messaging to automatically notify account managers when users are terminated or transferred; using the information system to monitor account usage; and using automated telephonic notification to report atypical system account usage.

account_use_centralized_automated_auth

Use Centralized and Automated Authentication

Implement an automated system for managing user accounts that minimizes the risk of errors, either intentional or deliberate. This system should integrate with an existing enterprise user management system, such as one based on Identity Management tools such as Active Directory, Kerberos, Directory Server, etc.

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00232

CCI-000366

The operating system must enable an application firewall, if available.

Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000002-GPOS-00002

CCI-000016

The operating system must automatically remove or disable temporary user accounts after 72 hours.

If temporary user accounts remain active when no longer needed or for an excessive period, these accounts may be used to gain unauthorized access. To mitigate this risk, automated termination of all temporary accounts must be set upon account creation. Temporary accounts are established as part of normal account activation procedures when there is a need for short-term accounts without the demand for immediacy in account activation. If temporary accounts are used, the operating system must be configured to automatically terminate these types of accounts after a DoD-defined time period of 72 hours. To address access requirements, many operating systems may be integrated with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements.

account_disable_post_pw_expiration

Set Account Expiration Following Inactivity

To specify the number of days after a password expires (which signifies inactivity) until an account is permanently disabled, add or correct the following lines in `/etc/default/useradd`, substituting `NUM_DAYS` appropriately:

    INACTIVE=

A value of 35 is recommended. If a password is currently on the verge of expiration, then 35 days remain until the account is automatically disabled. However, if the password will not expire for another 60 days, then 95 days could elapse until the account would be automatically disabled. See the `useradd` man page for more information. Determining the inactivity timeout must be done with careful consideration of the length of a "normal" period of inactivity for users in the particular environment. Setting the timeout too low incurs support costs and also has the potential to impact availability of the system to legitimate users.

SRG-OS-000002-GPOS-00002

CCI-000016

The operating system must automatically remove or disable temporary user accounts after 72 hours.

If temporary user accounts remain active when no longer needed or for an excessive period, these accounts may be used to gain unauthorized access. To mitigate this risk, automated termination of all temporary accounts must be set upon account creation. Temporary accounts are established as part of normal account activation procedures when there is a need for short-term accounts without the demand for immediacy in account activation. If temporary accounts are used, the operating system must be configured to automatically terminate these types of accounts after a DoD-defined time period of 72 hours. To address access requirements, many operating systems may be integrated with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements.

account_temp_expire_date

Assign Expiration Date to Temporary Accounts

In the event temporary or emergency accounts are required, configure the system to terminate them after a documented time period. For every temporary and emergency account, run the following command to set an expiration date on it, substituting `USER` and `YYYY-MM-DD` appropriately:

    $ sudo chage -E YYYY-MM-DD USER

`YYYY-MM-DD` indicates the documented expiration date for the account.

SRG-OS-000004-GPOS-00004

CCI-000018

The operating system must audit all account creations.

Once an attacker establishes access to a system, the attacker often attempts to create a persistent method of reestablishing access. One way to accomplish this is for the attacker to create an account. Auditing account creation actions provides logging that can be used for forensic purposes. To address access requirements, many operating systems may be integrated with enterprise level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000021-GPOS-00005

CCI-000044

The operating system must enforce the limit of three consecutive invalid logon attempts by a user during a 15-minute time period.

By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.

accounts_passwords_pam_faillock_deny

Set Deny For Failed Password Attempts

To configure the system to lock out accounts after a number of incorrect login attempts using `pam_faillock.so`, modify the content of both `/etc/pam.d/system-auth` and `/etc/pam.d/password-auth` as follows:

- Add the following line immediately `before` the `pam_unix.so` statement in the `AUTH` section:

      auth required pam_faillock.so preauth silent deny= unlock_time= fail_interval=

- Add the following line immediately `after` the `pam_unix.so` statement in the `AUTH` section:

      auth [default=die] pam_faillock.so authfail deny= unlock_time= fail_interval=

- Add the following line immediately `before` the `pam_unix.so` statement in the `ACCOUNT` section:

      account required pam_faillock.so

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00231

CCI-000366

The operating system must employ a deny-all, allow-by-exception firewall policy for allowing connections to other systems.

Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DoD data.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00230

CCI-000366

The operating system must limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders.

Users' home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000023-GPOS-00006

CCI-000048

The operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system.

Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

ftp_present_banner

Create Warning Banners for All FTP Users

Edit the vsftpd configuration file, which resides at `/etc/vsftpd/vsftpd.conf` by default. Add or correct the following configuration options:

    banner_file=/etc/issue

SRG-OS-000023-GPOS-00006

CCI-000048

The operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system.

Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

sshd_enable_warning_banner

Enable SSH Warning Banner

To enable the warning banner and ensure it is consistent across the system, add or correct the following line in `/etc/ssh/sshd_config`:

    Banner /etc/issue

Another section contains information on how to create an appropriate system-wide warning banner.

SRG-OS-000023-GPOS-00006

CCI-000048

The operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system.

Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

gconf_gdm_enable_warning_gui_banner

Enable GUI Warning Banner

To enable displaying a login warning banner in the GNOME Display Manager's login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/banner_message_enable true

To display a banner, this setting must be enabled and then banner text must also be set.

SRG-OS-000023-GPOS-00006

CCI-000048

The operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system.

Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

gconf_gdm_set_login_banner_text

Set GUI Warning Banner Text

To set the text shown by the GNOME Display Manager in the login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gdm/simple-greeter/banner_message_text \
      "Text of the warning banner here"

When entering a warning banner that spans several lines, remember to begin and end the string with `"`. This command writes directly either to the `/etc/gconf/gconf.xml.mandatory/%gconf-tree.xml` if it exists or to the file `/etc/gconf/gconf.xml.mandatory/apps/gdm/simple-greeter/%gconf.xml`. Either of these files can later be edited directly if necessary.

SRG-OS-000023-GPOS-00006

CCI-000048

The operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system.

Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

banner_etc_issue

Modify the System Login Banner

To configure the system login banner:
Edit `/etc/issue`. Replace the default text with a message compliant with the local site policy or a legal disclaimer. The DoD required text is either:
`You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions:
-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.
-At any time, the USG may inspect and seize data stored on this IS.
-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.
-This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy.
-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.`
OR:
`Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.
This is a DoD interest computer system. All DoD interest computer systems and related equipment are intended for the communication, transmission, processing, and storage of official U.S. Government or other authorized information only. All DoD interest computer systems are subject to monitoring at all times to ensure proper functioning of equipment and systems including security devices and systems, to prevent unauthorized use and violations of statutes and security regulations, to deter criminal activity, and for other similar purposes. Any user of a DoD interest computer system should be aware that any information placed in the system is subject to monitoring and is not subject to any expectation of privacy.
If monitoring of this or any other DoD interest computer system reveals possible evidence of violation of criminal statutes, this evidence and any other related information, including identification information about the user, may be provided to law enforcement officials. If monitoring of this or any other DoD interest computer systems reveals violations of security regulations or unauthorized use, employees who violate security regulations or make unauthorized use of DoD interest computer systems are subject to appropriate disciplinary action.
Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.`
OR:
`I've read & consent to terms in IS user agreem't.`

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00229

CCI-000366

The operating system must not allow an unattended or automatic logon to the system.

Failure to restrict system access to authenticated users negatively impacts operating system security.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00228

CCI-000366

The operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.

Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00227

CCI-000366

The operating system must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.

Configuring the operating system to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000024-GPOS-00007

CCI-000050

The operating system must display the Standard Mandatory DoD Notice and Consent Banner until users acknowledge the usage conditions and take explicit actions to log on for further access.

The banner must be acknowledged by the user prior to allowing the user access to the operating system. This provides assurance that the user has seen the message and accepted the conditions for access. If the consent banner is not acknowledged by the user, DoD will not be in compliance with system use notifications required by law. To establish acceptance of the application usage policy, a click-through banner at system logon is required. The system must prevent further activity until the user executes a positive action to manifest agreement by clicking on a box indicating "OK".

gconf_gdm_enable_warning_gui_banner

Enable GUI Warning Banner

To enable displaying a login warning banner in the GNOME Display Manager's login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/banner_message_enable true

To display a banner, this setting must be enabled and then banner text must also be set.

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00226

CCI-000366

The operating system must enforce a delay of at least 4 seconds between logon prompts following a failed logon attempt.

Limiting the number of logon attempts over a certain time interval reduces the chances that an unauthorized user may gain access to an account.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000480-GPOS-00225

CCI-000366

The operating system must prevent the use of dictionary words for passwords.

If the operating system allows the user to select passwords based on dictionary words, then this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000479-GPOS-00224 | CCI-001851 | The operating system must, at a minimum, off-load interconnected systems in real time and off-load standalone systems weekly. | Information stored in one location is vulnerable to accidental or incidental deletion or alteration. Off-loading is a common process in information systems with limited audit storage capacity. |

SRG-OS-000478-GPOS-00223

CCI-002450

The operating system must implement NIST FIPS-validated cryptography for the following: to provision digital signatures, to generate cryptographic hashes, and to protect unclassified information requiring confidentiality and cryptographic protection in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.

sshd_use_approved_macs

Use Only Approved MACs

Limit the MACs to those hash algorithms which are FIPS-approved. The following line in `/etc/ssh/sshd_config` demonstrates use of FIPS-approved MACs:

    MACs hmac-sha2-512,hmac-sha2-256,hmac-sha1

The man page `sshd_config(5)` contains a list of supported MACs.

SRG-OS-000478-GPOS-00223

CCI-002450

The operating system must implement NIST FIPS-validated cryptography for the following: to provision digital signatures, to generate cryptographic hashes, and to protect unclassified information requiring confidentiality and cryptographic protection in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.

package_dracut-fips_installed

Install the dracut-fips Package

To enable FIPS, the system requires that the `dracut-fips` package be installed. The `dracut-fips` package can be installed with the following command:

    $ sudo yum install dracut-fips

SRG-OS-000478-GPOS-00223

CCI-002450

The operating system must implement NIST FIPS-validated cryptography for the following: to provision digital signatures, to generate cryptographic hashes, and to protect unclassified information requiring confidentiality and cryptographic protection in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.

grub_enable_fips_mode

Enable FIPS Mode in GRUB

To ensure FIPS mode is enabled, rebuild `initramfs` by running the following command:

    dracut -f

After the `dracut` command has been run, add the argument `fips=1` to the default GRUB kernel line for the Linux operating system in `/etc/grub.conf`, in the manner below:

    kernel /vmlinuz-version ro vga=ext root=/dev/VolGroup00/LogVol00 rhgb quiet fips=1

SRG-OS-000477-GPOS-00222

CCI-000172

The operating system must generate audit records for all kernel module load, unload, and restart actions, and also for all program initiations.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000476-GPOS-00221

CCI-000172

The operating system must generate audit records for all account creations, modifications, disabling, and termination events.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000475-GPOS-00220

CCI-000172

The operating system must generate audit records for all direct access to the information system.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000474-GPOS-00219

CCI-000172

The operating system must generate audit records when successful/unsuccessful accesses to objects occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000473-GPOS-00218

CCI-000172

The operating system must generate audit records when concurrent logons to the same account occur from different sources.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000472-GPOS-00217

CCI-000172

The operating system must generate audit records showing starting and ending time for user access to the system.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000471-GPOS-00216

CCI-000172

The audit system must be configured to audit the loading and unloading of dynamic kernel modules.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000471-GPOS-00215

CCI-000172

The operating system must generate audit records for privileged activities or other system-level access.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000470-GPOS-00214

CCI-000172

The operating system must generate audit records when successful/unsuccessful logon attempts occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000468-GPOS-00212

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to delete security objects occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000467-GPOS-00211

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to delete security levels occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000466-GPOS-00210

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to delete privileges occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000465-GPOS-00209

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to modify categories of information (e.g., classification levels) occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000027-GPOS-00008

CCI-000054

The operating system must limit the number of concurrent sessions to ten for all accounts and/or account types.

Operating system management includes the ability to control the number of users and user sessions that utilize an operating system. Limiting the number of allowed users and sessions per user is helpful in reducing the risks related to DoS attacks. This requirement addresses concurrent sessions for information system accounts and does not address concurrent sessions by single users via multiple system accounts. The maximum number of concurrent sessions should be defined based upon mission needs and the operational environment for each system.

accounts_max_concurrent_login_sessions

Limit the Number of Concurrent Login Sessions Allowed Per User

Limiting the number of allowed users and sessions per user can limit risks related to Denial of Service attacks. This addresses concurrent sessions for a single account and does not address concurrent sessions by a single user via multiple accounts. The DoD requirement is 10. To set the number of concurrent sessions per user add the following line in `/etc/security/limits.conf`:

    * hard maxlogins

SRG-OS-000028-GPOS-00009

CCI-000056

The operating system must retain a users session lock until that user reestablishes access using established identification and authentication procedures.

A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence. The session lock is implemented at the point where session activity can be determined. Regardless of where the session lock is determined and implemented, once invoked, the session lock shall remain in place until the user re-authenticates. No other activity aside from re-authentication shall unlock the system.

SRG-OS-000029-GPOS-00010

CCI-000057

The operating system must initiate a session lock after a 15-minute period of inactivity for all connection types.

A session time-out lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, operating systems need to be able to identify when a user's session has idled and take action to initiate the session lock. The session lock is implemented at the point where session activity can be determined and/or controlled.

gconf_gnome_screensaver_lock_enabled

Enable Screen Lock Activation After Idle Period

Run the following command to activate locking of the screensaver in the GNOME desktop when it is activated:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gnome-screensaver/lock_enabled true

SRG-OS-000029-GPOS-00010

CCI-000057

The operating system must initiate a session lock after a 15-minute period of inactivity for all connection types.

A session time-out lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, operating systems need to be able to identify when a user's session has idled and take action to initiate the session lock. The session lock is implemented at the point where session activity can be determined and/or controlled.

gconf_gnome_screensaver_idle_activation_enabled

GNOME Desktop Screensaver Mandatory Use

Run the following command to activate the screensaver in the GNOME desktop after a period of inactivity:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gnome-screensaver/idle_activation_enabled true

SRG-OS-000029-GPOS-00010

CCI-000057

The operating system must initiate a session lock after a 15-minute period of inactivity for all connection types.

A session time-out lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, operating systems need to be able to identify when a user's session has idled and take action to initiate the session lock. The session lock is implemented at the point where session activity can be determined and/or controlled.

gconf_gnome_screensaver_idle_delay

Set GNOME Login Inactivity Timeout

Run the following command to set the idle time-out value for inactivity in the GNOME desktop to minutes:

    $ sudo gconftool-2 \
      --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type int \
      --set /desktop/gnome/session/idle_delay

SRG-OS-000030-GPOS-00011

CCI-000058

The operating system must provide the capability for users to directly initiate a session lock for all connection types.

A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence. The session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, operating systems need to provide users with the ability to manually invoke a session lock so users may secure their session should the need arise for them to temporarily vacate the immediate physical vicinity.

package_screen_installed

Install the screen Package

To enable console screen locking, install the `screen` package:

    $ sudo yum install screen

Instruct users to begin new terminal sessions with the following command:

    $ screen

The console can now be locked with the following key combination:

    ctrl+a x

SRG-OS-000030-GPOS-00011

CCI-000058

The operating system must provide the capability for users to directly initiate a session lock for all connection types.

A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence. The session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, operating systems need to provide users with the ability to manually invoke a session lock so users may secure their session should the need arise for them to temporarily vacate the immediate physical vicinity.

gconf_gnome_screen_locking_keybindings

Set GNOME Screen Locking Keybindings

Run the following command to prevent changes to the screensaver lock keybindings:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/screensaver "<Control><Alt>l"

SRG-OS-000031-GPOS-00012

CCI-000060

The operating system must conceal, via the session lock, information previously visible on the display with a publicly viewable image.

A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. The session lock is implemented at the point where session activity can be determined. The operating system session lock event must include an obfuscation of the display screen so as to prevent other users from reading what was previously displayed. Publicly viewable images can include static or dynamic images, for example, patterns used with screen savers, photographic images, solid colors, a clock, a battery life indicator, or a blank screen, with the additional caveat that none of the images convey sensitive information.

gconf_gnome_screensaver_mode_blank

Implement Blank Screensaver

Run the following command to set the screensaver mode in the GNOME desktop to a blank screen:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome-screensaver/mode blank-only

SRG-OS-000032-GPOS-00013

CCI-000067

The operating system must monitor remote access methods.

Remote access services, such as those providing remote access to network devices and information systems, which lack automated monitoring capabilities, increase risk and make remote user access management difficult at best. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Automated monitoring of remote access sessions allows organizations to detect cyber attacks and also ensure ongoing compliance with remote access policies by auditing connection activities of remote access capabilities, such as Remote Desktop Protocol (RDP), on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000033-GPOS-00014

CCI-000068

The operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.

service_rexec_disabled

Disable rexec Service

The `rexec` service, which is available with the `rsh-server` package and runs as a service through xinetd, should be disabled. The `rexec` service can be disabled with the following command:

    $ sudo chkconfig rexec off

SRG-OS-000033-GPOS-00014

CCI-000068

The operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.

service_rsh_disabled

Disable rsh Service

The `rsh` service, which is available with the `rsh-server` package and runs as a service through xinetd, should be disabled. The `rsh` service can be disabled with the following command:

    $ sudo chkconfig rsh off

SRG-OS-000033-GPOS-00014

CCI-000068

The operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.

service_telnetd_disabled

Disable telnet Service

The `telnet` service can be disabled with the following command:

    $ sudo chkconfig telnet off

SRG-OS-000033-GPOS-00014

CCI-000068

The operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.

sshd_use_approved_macs

Use Only Approved MACs

Limit the MACs to those hash algorithms which are FIPS-approved. The following line in `/etc/ssh/sshd_config` demonstrates use of FIPS-approved MACs:

    MACs hmac-sha2-512,hmac-sha2-256,hmac-sha1

The man page `sshd_config(5)` contains a list of supported MACs.

SRG-OS-000033-GPOS-00014

CCI-000068

The operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.

package_dracut-fips_installed

Install the dracut-fips Package

To enable FIPS, the system requires that the `dracut-fips` package be installed. The `dracut-fips` package can be installed with the following command:

    $ sudo yum install dracut-fips

SRG-OS-000033-GPOS-00014

CCI-000068

The operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.

grub_enable_fips_mode

Enable FIPS Mode in GRUB

To ensure FIPS mode is enabled, rebuild `initramfs` by running the following command:

    dracut -f

After the `dracut` command has been run, add the argument `fips=1` to the default GRUB kernel line for the Linux operating system in `/etc/grub.conf`, in the manner below:

    kernel /vmlinuz-version ro vga=ext root=/dev/VolGroup00/LogVol00 rhgb quiet fips=1

SRG-OS-000463-GPOS-00207

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to modify security objects occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000462-GPOS-00206

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to modify privileges occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000037-GPOS-00015

CCI-000130

The operating system must produce audit records containing information to establish what type of events occurred.

Without establishing what type of events occurred, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack. Audit record content that may be necessary to satisfy this requirement includes, for example, time stamps, source and destination addresses, user/process identifiers, event descriptions, success/fail indications, filenames involved, and access control or flow control rules invoked. Associating event types with detected events in the operating system audit logs provides a means of investigating an attack; recognizing resource utilization or capacity thresholds; or identifying an improperly configured operating system.

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000038-GPOS-00016

CCI-000131

The operating system must produce audit records containing information to establish when (date and time) the events occurred.

Without establishing when events occurred, it is impossible to establish, correlate, and investigate the events leading up to an outage or attack. In order to compile an accurate risk assessment and provide forensic analysis, it is essential for security personnel to know when events occurred (date and time). Associating event types with detected events in the operating system audit logs provides a means of investigating an attack; recognizing resource utilization or capacity thresholds; or identifying an improperly configured operating system.

SRG-OS-000039-GPOS-00017

CCI-000132

The operating system must produce audit records containing information to establish where the events occurred.

Without establishing where events occurred, it is impossible to establish, correlate, and investigate the events leading up to an outage or attack. In order to compile an accurate risk assessment and provide forensic analysis, it is essential for security personnel to know where events occurred, such as operating system components, modules, device identifiers, node names, file names, and functionality. Associating information about where the event occurred within the operating system provides a means of investigating an attack; recognizing resource utilization or capacity thresholds; or identifying an improperly configured operating system.

SRG-OS-000040-GPOS-00018

CCI-000133

The operating system must produce audit records containing information to establish the source of the events.

Without establishing the source of the event, it is impossible to establish, correlate, and investigate the events leading up to an outage or attack. In addition to logging where events occur within the operating system, the operating system must also generate audit records that identify sources of events. Sources of operating system events include, but are not limited to, processes and services. In order to compile an accurate risk assessment and provide forensic analysis, it is essential for security personnel to know the source of the event.

SRG-OS-000041-GPOS-00019

CCI-000134

The operating system must produce audit records containing information to establish the outcome of the events.

Without information about the outcome of events, security personnel cannot make an accurate assessment as to whether an attack was successful or if changes were made to the security state of the system. Event outcomes can include indicators of event success or failure and event-specific results (e.g., the security state of the information system after the event occurred). As such, they also provide a means to measure the impact of an event and help authorized personnel to determine the appropriate response.

SRG-OS-000042-GPOS-00020

CCI-000135

The operating system must generate audit records containing the full-text recording of privileged commands.

Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise.

SRG-OS-000042-GPOS-00021

CCI-000135

The operating system must produce audit records containing the individual identities of group account users.

Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. At a minimum, the organization must audit the individual identities of group users. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the actual account involved in the activity.

SRG-OS-000046-GPOS-00022

CCI-000139

The operating system must alert the ISSO and SA (at a minimum) in the event of an audit processing failure.

It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected. Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. This requirement applies to each audit data storage repository (i.e., distinct information system component where audit records are stored), the centralized audit storage capacity of organizations (i.e., all audit data storage repositories combined), or both.

auditd_data_retention_action_mail_acct

Configure auditd mail_acct Action on Low Disk Space

The `auditd` service can be configured to send email to a designated account in certain situations. Add or correct the following line in `/etc/audit/auditd.conf` to ensure that administrators are notified via email for those situations:

    action_mail_acct =

SRG-OS-000047-GPOS-00023

CCI-000140

The operating system must shut down by default upon audit failure (unless availability is an overriding concern).

It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include: software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: 1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner. 2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.

auditd_data_disk_full_action

Configure auditd Disk Full Action when Disk Space Is Full

The `auditd` service can be configured to take an action when disk space is running low but prior to running out of space completely. Edit the file `/etc/audit/auditd.conf`. Add or modify the following line, substituting ACTION appropriately:

    disk_full_action = ACTION

Set this value to `single` to cause the system to switch to single-user mode for corrective action. Acceptable values also include `syslog`, `exec`, `single`, and `halt`. For certain systems, the need for availability outweighs the need to log all actions, and a different setting should be determined. Details regarding all possible values for ACTION are described in the `auditd.conf` man page.

SRG-OS-000047-GPOS-00023

CCI-000140

The operating system must shut down by default upon audit failure (unless availability is an overriding concern).

It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include: software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: 1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner. 2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.

auditd_data_retention_admin_space_left_action

Configure auditd admin_space_left Action on Low Disk Space

The `auditd` service can be configured to take an action when disk space is running low but prior to running out of space completely. Edit the file `/etc/audit/auditd.conf`. Add or modify the following line, substituting ACTION appropriately:

    admin_space_left_action = ACTION

Set this value to `single` to cause the system to switch to single-user mode for corrective action. Acceptable values also include `suspend` and `halt`. For certain systems, the need for availability outweighs the need to log all actions, and a different setting should be determined. Details regarding all possible values for ACTION are described in the `auditd.conf` man page.

SRG-OS-000047-GPOS-00023

CCI-000140

The operating system must shut down by default upon audit failure (unless availability is an overriding concern).

It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include: software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: 1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner. 2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.

auditd_data_retention_space_left_action

Configure auditd space_left Action on Low Disk Space

The `auditd` service can be configured to take an action when disk space starts to run low. Edit the file `/etc/audit/auditd.conf`. Modify the following line, substituting ACTION appropriately:

    space_left_action = ACTION

Possible values for ACTION are described in the `auditd.conf` man page. These include:

- `ignore`
- `syslog`
- `email`
- `exec`
- `suspend`
- `single`
- `halt`

Set this to `email` (instead of the default, which is `suspend`) as it is more likely to get prompt attention. Acceptable values also include `suspend`, `single`, and `halt`.

SRG-OS-000047-GPOS-00023

CCI-000140

The operating system must shut down by default upon audit failure (unless availability is an overriding concern).

It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include: software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: 1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner. 2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.

auditd_data_disk_error_action

Configure auditd Disk Error Action on Disk Error

The `auditd` service can be configured to take an action when there is a disk error. Edit the file `/etc/audit/auditd.conf`. Add or modify the following line, substituting ACTION appropriately:

    disk_error_action = ACTION

Set this value to `single` to cause the system to switch to single-user mode for corrective action. Acceptable values also include `syslog`, `exec`, `single`, and `halt`. For certain systems, the need for availability outweighs the need to log all actions, and a different setting should be determined. Details regarding all possible values for ACTION are described in the `auditd.conf` man page.

SRG-OS-000051-GPOS-00024

CCI-000154

The operating system must provide the capability to centrally review and analyze audit records from multiple components within the system.

Successful incident response and auditing relies on timely, accurate system information and analysis in order to allow the organization to identify and respond to potential incidents in a proficient manner. If the operating system does not provide the ability to centrally review the operating system logs, forensic analysis is negatively impacted. Segregation of logging data to multiple disparate computer systems is counterproductive and makes log analysis and log event alarming difficult to implement and manage, particularly when the system has multiple logging components writing to different locations or systems. To support the centralized capability, the operating system must be able to provide the information in a format that can be extracted and used, allowing the application performing the centralization of the log records to meet this requirement.

SRG-OS-000054-GPOS-00025

CCI-000158

The operating system must provide the capability to filter audit records for events of interest based upon all audit fields within audit records.

The ability to specify the event criteria that are of interest provides the individuals reviewing the logs with the ability to quickly isolate and identify these events without having to review entries that are of little or no consequence to the investigation. Without this capability, forensic investigations are impeded. Events of interest can be identified by the content of specific audit record fields, including, for example, identities of individuals, event types, event locations, event times, event dates, system resources involved, IP addresses involved, or information objects accessed. Organizations may define audit event criteria to any degree of granularity required, for example, locations selectable by general networking location (e.g., by network or subnetwork) or selectable by specific information system component. This requires operating systems to provide the capability to customize audit record reports based on all available criteria.

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000055-GPOS-00026

CCI-000159

The operating system must use internal system clocks to generate time stamps for audit records.

Without an internal clock used as the reference for the time stored on each event to provide a trusted common reference for the time, forensic analysis would be impeded. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. If the internal clock is not used, the system may not be able to provide time stamps for log messages. Additionally, externally generated time stamps may not be accurate.

SRG-OS-000057-GPOS-00027

CCI-000162

The operating system must protect audit information from unauthorized read access.

Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit operating system activity.

SRG-OS-000058-GPOS-00028

CCI-000163

The operating system must protect audit information from unauthorized modification.

If audit information were to become compromised, then forensic analysis and discovery of the true source of potentially malicious system activity is impossible to achieve. To ensure the veracity of audit information, the operating system must protect audit information from unauthorized modification. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit information system activity.

SRG-OS-000059-GPOS-00029

CCI-000164

The operating system must protect audit information from unauthorized deletion.

If audit information were to become compromised, then forensic analysis and discovery of the true source of potentially malicious system activity is impossible to achieve. To ensure the veracity of audit information, the operating system must protect audit information from unauthorized deletion. This requirement can be achieved through multiple methods, which will depend upon system architecture and design. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit information system activity.

directory_permissions_var_log_audit

System Audit Logs Must Have Mode 0750 or Less Permissive

If `log_group` in `/etc/audit/auditd.conf` is set to a group other than the `root` group account, change the mode of the audit log files with the following command:

    $ sudo chmod 0750 /var/log/audit

Otherwise, change the mode of the audit log files with the following command:

    $ sudo chmod 0700 /var/log/audit

SRG-OS-000062-GPOS-00031

CCI-000169

The operating system must provide audit record generation capability for DoD-defined auditable events for all operating system components.

Without the capability to generate audit records, 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). The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. DoD has defined the list of events for which the operating system will provide an audit record generation capability as the following: 1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); 2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; 3) All account creations, modifications, disabling, and terminations; and 4) All kernel module load, unload, and restart actions.

audit_rules_time_stime

Record Attempts to Alter Time Through stime

Add the following line to `/etc/audit/audit.rules` for both 32-bit and 64-bit systems:

    # audit_time_rules
    -a always,exit -F arch=b32 -S stime -k audit_time_rules

Since the 64-bit version of the "stime" system call is not defined in the audit lookup table, the corresponding "-F arch=b64" form of this rule is not expected to be defined on 64-bit systems (the aforementioned "-F arch=b32" stime rule form itself is sufficient for both 32-bit and 64-bit systems). The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000062-GPOS-00031

CCI-000169

The operating system must provide audit record generation capability for DoD-defined auditable events for all operating system components.

Without the capability to generate audit records, 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). The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. DoD has defined the list of events for which the operating system will provide an audit record generation capability as the following: 1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); 2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; 3) All account creations, modifications, disabling, and terminations; and 4) All kernel module load, unload, and restart actions.

audit_rules_time_settimeofday

Record attempts to alter time through settimeofday

On a 32-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b32 -S settimeofday -k audit_time_rules

On a 64-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b64 -S settimeofday -k audit_time_rules

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000062-GPOS-00031

CCI-000169

The operating system must provide audit record generation capability for DoD-defined auditable events for all operating system components.

Without the capability to generate audit records, 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). The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. DoD has defined the list of events for which the operating system will provide an audit record generation capability as the following: 1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); 2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; 3) All account creations, modifications, disabling, and terminations; and 4) All kernel module load, unload, and restart actions.

audit_rules_time_watch_localtime

Record Attempts to Alter the localtime File

Add the following to `/etc/audit/audit.rules`:

    -w /etc/localtime -p wa -k audit_time_rules

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport and should always be used.

SRG-OS-000062-GPOS-00031

CCI-000169

The operating system must provide audit record generation capability for DoD-defined auditable events for all operating system components.

Without the capability to generate audit records, 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). The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. DoD has defined the list of events for which the operating system will provide an audit record generation capability as the following: 1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); 2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; 3) All account creations, modifications, disabling, and terminations; and 4) All kernel module load, unload, and restart actions.

audit_rules_time_clock_settime

Record Attempts to Alter Time Through clock_settime

On a 32-bit system, add the following to `/etc/audit/audit.rules`:

    # time-change
    -a always,exit -F arch=b32 -S clock_settime -F a0=0x0 -F key=time-change

On a 64-bit system, add the following to `/etc/audit/audit.rules`:

    # time-change
    -a always,exit -F arch=b64 -S clock_settime -F a0=0x0 -F key=time-change

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000062-GPOS-00031

CCI-000169

The operating system must provide audit record generation capability for DoD-defined auditable events for all operating system components.

Without the capability to generate audit records, 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). The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. DoD has defined the list of events for which the operating system will provide an audit record generation capability as the following: 1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); 2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; 3) All account creations, modifications, disabling, and terminations; and 4) All kernel module load, unload, and restart actions.

audit_rules_time_adjtimex

Record attempts to alter time through adjtimex

On a 32-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b32 -S adjtimex -k audit_time_rules

On a 64-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b64 -S adjtimex -k audit_time_rules

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000062-GPOS-00031

CCI-000169

The operating system must provide audit record generation capability for DoD-defined auditable events for all operating system components.

Without the capability to generate audit records, 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). The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. DoD has defined the list of events for which the operating system will provide an audit record generation capability as the following: 1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); 2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; 3) All account creations, modifications, disabling, and terminations; and 4) All kernel module load, unload, and restart actions.

bootloader_audit_argument

Enable Auditing for Processes Which Start Prior to the Audit Daemon

To ensure all processes can be audited, even those which start prior to the audit daemon, add the argument `audit=1` to the kernel line in `/etc/grub.conf`, in the manner below:

    kernel /vmlinuz-version ro vga=ext root=/dev/VolGroup00/LogVol00 rhgb quiet audit=1

SRG-OS-000063-GPOS-00032

CCI-000171

The operating system must allow only the ISSM (or individuals or roles appointed by the ISSM) to select which auditable events are to be audited.

Without the capability to restrict which roles and individuals can select which events are audited, unauthorized personnel may be able to prevent the auditing of critical events. Misconfigured audits may degrade the system's performance by overwhelming the audit log. Misconfigured audits may also make it more difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.

SRG-OS-000064-GPOS-00033

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to access privileges occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000066-GPOS-00034

CCI-000185

The operating system, for PKI-based authentication, must validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.

Without path validation, an informed trust decision by the relying party cannot be made when presented with any certificate not already explicitly trusted. A trust anchor is an authoritative entity represented via a public key and associated data. It is used in the context of public key infrastructures, X.509 digital certificates, and DNSSEC. When there is a chain of trust, usually the top entity to be trusted becomes the trust anchor; it can be, for example, a Certification Authority (CA). A certification path starts with the subject certificate and proceeds through a number of intermediate certificates up to a trusted root certificate, typically issued by a trusted CA. This requirement verifies that a certification path to an accepted trust anchor is used for certificate validation and that the path includes status information. Path validation is necessary for a relying party to make an informed trust decision when presented with any certificate not already explicitly trusted. Status information for certification paths includes certificate revocation lists or online certificate status protocol responses. Validation of the certificate status information is out of scope for this requirement.

SRG-OS-000067-GPOS-00035

CCI-000186

The operating system, for PKI-based authentication, must enforce authorized access to the corresponding private key.

If the private key is discovered, an attacker can use the key to authenticate as an authorized user and gain access to the network infrastructure. The cornerstone of the PKI is the private key used to encrypt or digitally sign information. If the private key is stolen, this will lead to the compromise of the authentication and non-repudiation gained through PKI because the attacker can use the private key to digitally sign documents and pretend to be the authorized user. Both the holders of a digital certificate and the issuing authority must protect the computers, storage devices, or whatever they use to keep the private keys.

SRG-OS-000068-GPOS-00036 | CCI-000187 | The operating system must map the authenticated identity to the user or group account for PKI-based authentication. | Without mapping the certificate used to authenticate to the user account, the ability to determine the identity of the individual user or group will not be available for forensic analysis. |

SRG-OS-000069-GPOS-00037

CCI-000192

The operating system must enforce password complexity by requiring that at least one upper-case character be used.

Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.

accounts_password_pam_ucredit

Set Password Strength Minimum Uppercase Characters

The pam_cracklib module's `ucredit=` parameter controls requirements for usage of uppercase letters in a password. When set to a negative number, any password will be required to contain that many uppercase characters. When set to a positive number, pam_cracklib will grant +1 additional length credit for each uppercase character. Add `ucredit=-1` after pam_cracklib.so to require use of an upper case character in passwords.

SRG-OS-000070-GPOS-00038

CCI-000193

The operating system must enforce password complexity by requiring that at least one lower-case character be used.

Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.

accounts_password_pam_lcredit

Set Password Strength Minimum Lowercase Characters

The pam_cracklib module's `lcredit=` parameter controls requirements for usage of lowercase letters in a password. When set to a negative number, any password will be required to contain that many lowercase characters. When set to a positive number, pam_cracklib will grant +1 additional length credit for each lowercase character. Add `lcredit=-1` after pam_cracklib.so to require use of a lowercase character in passwords.

SRG-OS-000071-GPOS-00039

CCI-000194

The operating system must enforce password complexity by requiring that at least one numeric character be used.

Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.

accounts_password_pam_dcredit

Set Password Strength Minimum Digit Characters

The pam_cracklib module's `dcredit` parameter controls requirements for usage of digits in a password. When set to a negative number, any password will be required to contain that many digits. When set to a positive number, pam_cracklib will grant +1 additional length credit for each digit. Add `dcredit=-1` after pam_cracklib.so to require use of a digit in passwords.

SRG-OS-000072-GPOS-00040

CCI-000195

The operating system must require the change of at least 50% of the total number of characters when passwords are changed.

If the operating system allows the user to consecutively reuse extensive portions of passwords, this increases the chances of password compromise by increasing the window of opportunity for attempts at guessing and brute-force attacks. The number of changed characters refers to the number of changes required with respect to the total number of positions in the current password. In other words, characters may be the same within the two passwords; however, the positions of the like characters must be different. If the password length is an odd number then number of changed characters must be rounded up. For example, a password length of 15 characters must require the change of at least 8 characters.

accounts_password_pam_difok

Set Password Strength Minimum Different Characters

The pam_cracklib module's `difok` parameter controls requirements for usage of different characters during a password change. Add `difok=` after pam_cracklib.so to require differing characters when changing passwords. The DoD requirement is `4`.

SRG-OS-000073-GPOS-00041

CCI-000196

The operating system must store only encrypted representations of passwords.

Passwords need to be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.

no_netrc_files

Verify No netrc Files Exist

The `.netrc` files contain login information used to auto-login into FTP servers and reside in the user's home directory. These files may contain unencrypted passwords to remote FTP servers making them susceptible to access by unauthorized users and should not be used. Any `.netrc` files should be removed.

SRG-OS-000074-GPOS-00042

CCI-000197

The operating system must transmit only encrypted representations of passwords.

Passwords need to be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.

service_telnetd_disabled

Disable telnet Service

The `telnet` service can be disabled with the following command:

    $ sudo chkconfig telnet off

SRG-OS-000075-GPOS-00043

CCI-000198

Operating systems must enforce 24 hours/1 day as the minimum password lifetime.

Enforcing a minimum password lifetime helps to prevent repeated password changes to defeat the password reuse or history enforcement requirement. If users are allowed to immediately and continually change their password, then the password could be repeatedly changed in a short period of time to defeat the organization's policy regarding password reuse.

accounts_minimum_age_login_defs

Set Password Minimum Age

To specify password minimum age for new accounts, edit the file `/etc/login.defs` and add or correct the following line:

    PASS_MIN_DAYS

A value of 1 day is considered sufficient for many environments. The DoD requirement is 1.

SRG-OS-000076-GPOS-00044

CCI-000199

Operating systems must enforce a 60-day maximum password lifetime restriction.

Any password, no matter how complex, can eventually be cracked. Therefore, passwords need to be changed periodically. If the operating system does not limit the lifetime of passwords and force users to change their passwords, there is the risk that the operating system passwords could be compromised.

accounts_maximum_age_login_defs

Set Password Maximum Age

To specify password maximum age for new accounts, edit the file `/etc/login.defs` and add or correct the following line:

    PASS_MAX_DAYS

A value of 180 days is sufficient for many environments. The DoD requirement is 60.

SRG-OS-000077-GPOS-00045

CCI-000200

The operating system must prohibit password reuse for a minimum of five generations.

Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. If the information system or application allows the user to consecutively reuse their password when that password has exceeded its defined lifetime, the end result is a password that is not changed as per policy requirements.

accounts_password_pam_unix_remember

Limit Password Reuse

Do not allow users to reuse recent passwords. This can be accomplished by using the `remember` option for the `pam_unix` or `pam_pwhistory` PAM modules. In the file `/etc/pam.d/system-auth`, append `remember=` to the line which refers to the `pam_unix.so` or `pam_pwhistory.so`module, as shown below:

- for the `pam_unix.so` case:

      password sufficient pam_unix.so existing_options remember=

- for the `pam_pwhistory.so` case:

      password requisite pam_pwhistory.so existing_options remember=

The DoD STIG requirement is 5 passwords.

SRG-OS-000461-GPOS-00205

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to access categories of information (e.g., classification levels) occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000458-GPOS-00203

CCI-000172

The operating system must generate audit records when successful/unsuccessful attempts to access security objects occur.

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).

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000447-GPOS-00201

CCI-002702

The operating system must shut down the information system, restart the information system, and/or notify the system administrator when anomalies in the operation of any security functions are discovered.

If anomalies are not acted upon, security functions may fail to secure the system. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. Security functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters. Notifications provided by information systems include messages to local computer consoles, and/or hardware indications, such as lights. This capability must take into account operational requirements for availability for selecting an appropriate response. The organization may choose to shut down or restart the information system upon security function anomaly detection.

SRG-OS-000446-GPOS-00200

CCI-002699

The operating system must perform verification of the correct operation of security functions: upon system start-up and/or restart; upon command by a user with privileged access; and/or every 30 days.

Without verification of the security functions, security functions may not operate correctly and the failure may go unnoticed. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. Security functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters. Notifications provided by information systems include, for example, electronic alerts to system administrators, messages to local computer consoles, and/or hardware indications, such as lights. This requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.

SRG-OS-000445-GPOS-00199

CCI-002696

The operating system must verify correct operation of all security functions.

Without verification of the security functions, security functions may not operate correctly and the failure may go unnoticed. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. Security functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters. This requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.

SRG-OS-000437-GPOS-00194

CCI-002617

The operating system must remove all software components after updated versions have been installed.

Previous versions of software components that are not removed from the information system after updates have been installed may be exploited by adversaries. Some information technology products may remove older versions of software automatically from the information system.

SRG-OS-000433-GPOS-00193

CCI-002824

The operating system must implement address space layout randomization to protect its memory from unauthorized code execution.

Some adversaries launch attacks with the intent of executing code in non-executable regions of memory or in memory locations that are prohibited. Security safeguards employed to protect memory include, for example, data execution prevention and address space layout randomization. Data execution prevention safeguards can either be hardware-enforced or software-enforced with hardware providing the greater strength of mechanism. Examples of attacks are buffer overflow attacks.

SRG-OS-000433-GPOS-00192

CCI-002824

The operating system must implement non-executable data to protect its memory from unauthorized code execution.

Some adversaries launch attacks with the intent of executing code in non-executable regions of memory or in memory locations that are prohibited. Security safeguards employed to protect memory include, for example, data execution prevention and address space layout randomization. Data execution prevention safeguards can either be hardware-enforced or software-enforced with hardware providing the greater strength of mechanism. Examples of attacks are buffer overflow attacks.

SRG-OS-000432-GPOS-00191

CCI-002754

The operating system must behave in a predictable and documented manner that reflects organizational and system objectives when invalid inputs are received.

A common vulnerability of operating system is unpredictable behavior when invalid inputs are received. This requirement guards against adverse or unintended system behavior caused by invalid inputs, where information system responses to the invalid input may be disruptive or cause the system to fail into an unsafe state. The behavior will be derived from the organizational and system requirements and includes, but is not limited to, notification of the appropriate personnel, creating an audit record, and rejecting invalid input.

SRG-OS-000426-GPOS-00190

CCI-002422

The operating system must maintain the confidentiality and integrity of information during reception.

Information can be either unintentionally or maliciously disclosed or modified during reception, including, for example, during aggregation, at protocol transformation points, and during packing/unpacking. These unauthorized disclosures or modifications compromise the confidentiality or integrity of the information. Ensuring the confidentiality of transmitted information requires the operating system to take measures in preparing information for transmission. This can be accomplished via access control and encryption. Use of this requirement will be limited to situations where the data owner has a strict requirement for ensuring data integrity and confidentiality is maintained at every step of the data transfer and handling process. When receiving data, operating systems need to leverage protection mechanisms such as TLS, SSL VPNs, or IPSec.

SRG-OS-000425-GPOS-00189

CCI-002420

The operating system must maintain the confidentiality and integrity of information during preparation for transmission.

Information can be either unintentionally or maliciously disclosed or modified during preparation for transmission, for example, during aggregation, at protocol transformation points, and during packing/unpacking. These unauthorized disclosures or modifications compromise the confidentiality or integrity of the information. Ensuring the confidentiality of transmitted information requires the operating system to take measures in preparing information for transmission. This can be accomplished via access control and encryption. Use of this requirement will be limited to situations where the data owner has a strict requirement for ensuring data integrity and confidentiality is maintained at every step of the data transfer and handling process. When transmitting data, operating systems need to support transmission protection mechanisms such as TLS, SSL VPNs, or IPSec.

SRG-OS-000424-GPOS-00188

CCI-002421

The operating system must implement cryptographic mechanisms to prevent unauthorized disclosure of information and/or detect changes to information during transmission unless otherwise protected by alternative physical safeguards, such as, at a minimum, a Protected Distribution System (PDS).

Encrypting information for transmission protects information from unauthorized disclosure and modification. Cryptographic mechanisms implemented to protect information integrity include, for example, cryptographic hash functions which have common application in digital signatures, checksums, and message authentication codes. Use of this requirement will be limited to situations where the data owner has a strict requirement for ensuring data integrity and confidentiality is maintained at every step of the data transfer and handling process. When transmitting data, operating systems need to leverage transmission protection mechanisms such as TLS, SSL VPNs, or IPSec. Alternative physical protection measures include PDS. PDSs are used to transmit unencrypted classified National Security Information (NSI) through an area of lesser classification or control. Since the classified NSI is unencrypted, the PDS must provide adequate electrical, electromagnetic, and physical safeguards to deter exploitation.

SRG-OS-000423-GPOS-00187

CCI-002418

The operating system must protect the confidentiality and integrity of transmitted information.

Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa.

wireless_disable_interfaces

Deactivate Wireless Network Interfaces

Deactivating wireless network interfaces should prevent normal usage of the wireless capability.
First, identify the interfaces available with the command:

    $ ifconfig -a

Additionally, the following command may be used to determine whether wireless support is included for a particular interface, though this may not always be a clear indicator:

    $ iwconfig

After identifying any wireless interfaces (which may have names like `wlan0`, `ath0`, `wifi0`, `em1` or `eth0`), deactivate the interface with the command:

    $ sudo ifdown interface

These changes will only last until the next reboot. To disable the interface for future boots, remove the appropriate interface file from `/etc/sysconfig/network-scripts`:

    $ sudo rm /etc/sysconfig/network-scripts/ifcfg-interface

SRG-OS-000420-GPOS-00186

CCI-002385

The operating system must protect against or limit the effects of Denial of Service (DoS) attacks by ensuring the operating system is implementing rate-limiting measures on impacted network interfaces.

DoS is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity. This requirement addresses the configuration of the operating system to mitigate the impact of DoS attacks that have occurred or are ongoing on system availability. For each system, known and potential DoS attacks must be identified and solutions for each type implemented. A variety of technologies exist to limit or, in some cases, eliminate the effects of DoS attacks (e.g., limiting processes or establishing memory partitions). Employing increased capacity and bandwidth, combined with service redundancy, may reduce the susceptibility to some DoS attacks.

SRG-OS-000405-GPOS-00184

CCI-002476

The operating system must implement cryptographic mechanisms to prevent unauthorized disclosure of all information at rest on all operating system components.

Operating systems handling data requiring "data at rest" protections must employ cryptographic mechanisms to prevent unauthorized disclosure and modification of the information at rest. Selection of a cryptographic mechanism is based on the need to protect the integrity of organizational information. The strength of the mechanism is commensurate with the security category and/or classification of the information. Organizations have the flexibility to either encrypt all information on storage devices (i.e., full disk encryption) or encrypt specific data structures (e.g., files, records, or fields).

SRG-OS-000404-GPOS-00183

CCI-002475

The operating system must implement cryptographic mechanisms to prevent unauthorized modification of all information at rest on all operating system components.

Operating systems handling data requiring "data at rest" protections must employ cryptographic mechanisms to prevent unauthorized disclosure and modification of the information at rest. Selection of a cryptographic mechanism is based on the need to protect the integrity of organizational information. The strength of the mechanism is commensurate with the security category and/or classification of the information. Organizations have the flexibility to either encrypt all information on storage devices (i.e., full disk encryption) or encrypt specific data structures (e.g., files, records, or fields).

SRG-OS-000078-GPOS-00046

CCI-000205

The operating system must enforce a minimum 15-character password length.

The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. Use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.

accounts_password_minlen_login_defs

Set Password Minimum Length in login.defs

To specify password length requirements for new accounts, edit the file `/etc/login.defs` and add or correct the following lines:

    PASS_MIN_LEN

As of the DISA Red Hat 6 STIG - Ver 1, Rel 13 (28-OCT-2016), the DoD requirement is now `15`. The FISMA requirement is `12`. If a program consults `/etc/login.defs` and also another PAM module (such as `pam_cracklib`) during a password change operation, then the most restrictive must be satisfied. See PAM section for more information about enforcing password quality requirements.

SRG-OS-000078-GPOS-00046

CCI-000205

The operating system must enforce a minimum 15-character password length.

The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. Use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.

accounts_password_pam_minlen

Set Password Minimum Length

The pam_cracklib module's `minlen` parameter controls requirements for minimum characters required in a password. Add `minlen=` after pam_pwquality to set minimum password length requirements.

SRG-OS-000079-GPOS-00047

CCI-000206

The operating system must obscure feedback of authentication information during the authentication process to protect the information from possible exploitation/use by unauthorized individuals.

To prevent the compromise of authentication information, such as passwords during the authentication process, the feedback from the operating system shall not provide any information allowing an unauthorized user to compromise the authentication mechanism. Obfuscation of user-provided information that is typed into the system is a method used when addressing this risk. For example, displaying asterisks when a user types in a password is an example of obscuring feedback of authentication information.

SRG-OS-000080-GPOS-00048

CCI-000213

The operating system must enforce approved authorizations for logical access to information and system resources in accordance with applicable access control policies.

To mitigate the risk of unauthorized access to sensitive information by entities that have been issued certificates by DoD-approved PKIs, all DoD systems (e.g., web servers and web portals) must be properly configured to incorporate access control methods that do not rely solely on the possession of a certificate for access. Successful authentication must not automatically give an entity access to an asset or security boundary. Authorization procedures and controls must be implemented to ensure each authenticated entity also has a validated and current authorization. Authorization is the process of determining whether an entity, once authenticated, is permitted to access a specific asset. Information systems use access control policies and enforcement mechanisms to implement this requirement. Access control policies include: identity-based policies, role-based policies, and attribute-based policies. Access enforcement mechanisms include: access control lists, access control matrices, and cryptography. These policies and mechanisms must be employed by the application to control access between users (or processes acting on behalf of users) and objects (e.g., devices, files, records, processes, programs, and domains) in the information system.

bootloader_password

Set Boot Loader Password

The grub boot loader should have password protection enabled to protect boot-time settings. To do so, select a password and then generate a hash from it by running the following command:

    $ grub-crypt --sha-512

When prompted to enter a password, insert the following line into `/etc/grub.conf` immediately after the header comments. (Use the output from `grub-crypt` as the value of password-hash):

    password --encrypted password-hash

NOTE: To meet FISMA Moderate, the bootloader password MUST differ from the root password.

SRG-OS-000080-GPOS-00048

CCI-000213

The operating system must enforce approved authorizations for logical access to information and system resources in accordance with applicable access control policies.

To mitigate the risk of unauthorized access to sensitive information by entities that have been issued certificates by DoD-approved PKIs, all DoD systems (e.g., web servers and web portals) must be properly configured to incorporate access control methods that do not rely solely on the possession of a certificate for access. Successful authentication must not automatically give an entity access to an asset or security boundary. Authorization procedures and controls must be implemented to ensure each authenticated entity also has a validated and current authorization. Authorization is the process of determining whether an entity, once authenticated, is permitted to access a specific asset. Information systems use access control policies and enforcement mechanisms to implement this requirement. Access control policies include: identity-based policies, role-based policies, and attribute-based policies. Access enforcement mechanisms include: access control lists, access control matrices, and cryptography. These policies and mechanisms must be employed by the application to control access between users (or processes acting on behalf of users) and objects (e.g., devices, files, records, processes, programs, and domains) in the information system.

disable_interactive_boot

Disable Interactive Boot

To disable the ability for users to perform interactive startups, perform both of the following:

1. Edit the file `/etc/sysconfig/init`. Add or correct the line:

       PROMPT=no

2. Inspect the kernel boot arguments (which follow the word `kernel`) in `/etc/grub.conf` and ensure the `confirm` argument is not present.

Both the `PROMPT` option of the `/etc/sysconfig/init` file and the `confirm` kernel boot argument of the `/etc/grub.conf` file allow the console user to perform an interactive system startup, in which it is possible to select the set of services which are started on boot.

SRG-OS-000080-GPOS-00048

CCI-000213

The operating system must enforce approved authorizations for logical access to information and system resources in accordance with applicable access control policies.

To mitigate the risk of unauthorized access to sensitive information by entities that have been issued certificates by DoD-approved PKIs, all DoD systems (e.g., web servers and web portals) must be properly configured to incorporate access control methods that do not rely solely on the possession of a certificate for access. Successful authentication must not automatically give an entity access to an asset or security boundary. Authorization procedures and controls must be implemented to ensure each authenticated entity also has a validated and current authorization. Authorization is the process of determining whether an entity, once authenticated, is permitted to access a specific asset. Information systems use access control policies and enforcement mechanisms to implement this requirement. Access control policies include: identity-based policies, role-based policies, and attribute-based policies. Access enforcement mechanisms include: access control lists, access control matrices, and cryptography. These policies and mechanisms must be employed by the application to control access between users (or processes acting on behalf of users) and objects (e.g., devices, files, records, processes, programs, and domains) in the information system.

require_singleuser_auth

Require Authentication for Single User Mode

Single-user mode is intended as a system recovery method, providing a single user root access to the system by providing a boot option at startup. By default, no authentication is performed if single-user mode is selected.
To require entry of the root password even if the system is started in single-user mode, add or correct the following line in the file `/etc/sysconfig/init`:

    SINGLE=/sbin/sulogin

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

package_rsh-server_removed

Uninstall rsh-server Package

The `rsh-server` package can be uninstalled with the following command:

    $ sudo yum erase rsh-server

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

package_telnet-server_removed

Uninstall telnet-server Package

The `telnet-server` package can be uninstalled with the following command:

    $ sudo yum erase telnet-server

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

package_ypserv_removed

Uninstall ypserv Package

The `ypserv` package can be uninstalled with the following command:

    $ sudo yum erase ypserv

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

service_atd_disabled

Disable At Service (atd)

The `at` and `batch` commands can be used to schedule tasks that are meant to be executed only once. This allows delayed execution in a manner similar to cron, except that it is not recurring. The daemon `atd` keeps track of tasks scheduled via `at` and `batch`, and executes them at the specified time. The `atd` service can be disabled with the following command:

    $ sudo chkconfig atd off

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

service_netconsole_disabled

Disable Network Console (netconsole)

The `netconsole` service is responsible for loading the netconsole kernel module, which logs kernel printk messages over UDP to a syslog server. This allows debugging of problems where disk logging fails and serial consoles are impractical. The `netconsole` service can be disabled with the following command:

    $ sudo chkconfig netconsole off

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

service_oddjobd_disabled

Disable Odd Job Daemon (oddjobd)

The `oddjobd` service exists to provide an interface and access control mechanism through which specified privileged tasks can run tasks for unprivileged client applications. Communication with `oddjobd` through the system message bus. The `oddjobd` service can be disabled with the following command:

    $ sudo chkconfig oddjobd off

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

service_abrtd_disabled

Disable Automatic Bug Reporting Tool (abrtd)

The Automatic Bug Reporting Tool (`abrtd`) daemon collects and reports crash data when an application crash is detected. Using a variety of plugins, abrtd can email crash reports to system administrators, log crash reports to files, or forward crash reports to a centralized issue tracking system such as RHTSupport. The `abrtd` service can be disabled with the following command:

    $ sudo chkconfig abrtd off

SRG-OS-000095-GPOS-00049

CCI-000381

The operating system must be configured to disable non-essential capabilities.

It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software, not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled.

mount_option_tmp_noexec

Add noexec Option to /tmp

The `noexec` mount option can be used to prevent binaries from being executed out of `/tmp`. Add the `noexec` option to the fourth column of `/etc/fstab` for the line which controls mounting of `/tmp`.

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

service_rdisc_disabled

Disable Network Router Discovery Daemon (rdisc)

The `rdisc` service implements the client side of the ICMP Internet Router Discovery Protocol (IRDP), which allows discovery of routers on the local subnet. If a router is discovered then the local routing table is updated with a corresponding default route. By default this daemon is disabled. The `rdisc` service can be disabled with the following command:

    $ sudo chkconfig rdisc off

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

service_rhnsd_disabled

Disable Red Hat Network Service (rhnsd)

The Red Hat Network service automatically queries Red Hat Network servers to determine whether there are any actions that should be executed, such as package updates. This only occurs if the system was registered to an RHN server or satellite and managed as such. The `rhnsd` service can be disabled with the following command:

    $ sudo chkconfig rhnsd off

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

service_qpidd_disabled

Disable Apache Qpid (qpidd)

The `qpidd` service provides high speed, secure, guaranteed delivery services. It is an implementation of the Advanced Message Queuing Protocol. By default the qpidd service will bind to port 5672 and listen for connection attempts. The `qpidd` service can be disabled with the following command:

    $ sudo chkconfig qpidd off

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

service_ntpdate_disabled

Disable ntpdate Service (ntpdate)

The `ntpdate` service sets the local hardware clock by polling NTP servers when the system boots. It synchronizes to the NTP servers listed in `/etc/ntp/step-tickers` or `/etc/ntp.conf` and then sets the local hardware clock to the newly synchronized system time. The `ntpdate` service can be disabled with the following command:

    $ sudo chkconfig ntpdate off

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

postfix_network_listening_disabled

Disable Postfix Network Listening

Edit the file `/etc/postfix/main.cf` to ensure that only the following `inet_interfaces` line appears:

    inet_interfaces = localhost

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

kernel_module_dccp_disabled

Disable DCCP Support

The Datagram Congestion Control Protocol (DCCP) is a relatively new transport layer protocol, designed to support streaming media and telephony. To configure the system to prevent the `dccp` kernel module from being loaded, add the following line to a file in the directory `/etc/modprobe.d`:

    install dccp /bin/true

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

kernel_module_rds_disabled

Disable RDS Support

The Reliable Datagram Sockets (RDS) protocol is a transport layer protocol designed to provide reliable high- bandwidth, low-latency communications between nodes in a cluster. To configure the system to prevent the `rds` kernel module from being loaded, add the following line to a file in the directory `/etc/modprobe.d`:

    install rds /bin/true

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

kernel_module_sctp_disabled

Disable SCTP Support

The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. To configure the system to prevent the `sctp` kernel module from being loaded, add the following line to a file in the directory `/etc/modprobe.d`:

    install sctp /bin/true

SRG-OS-000096-GPOS-00050

CCI-000382

The operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments.

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

kernel_module_tipc_disabled

Disable TIPC Support

The Transparent Inter-Process Communication (TIPC) protocol is designed to provide communications between nodes in a cluster. To configure the system to prevent the `tipc` kernel module from being loaded, add the following line to a file in the directory `/etc/modprobe.d`:

    install tipc /bin/true

SRG-OS-000104-GPOS-00051

CCI-000764

The operating system must uniquely identify and must authenticate organizational users (or processes acting on behalf of organizational users).

To assure accountability and prevent unauthenticated access, organizational users must be identified and authenticated to prevent potential misuse and compromise of the system. Organizational users include organizational employees or individuals the organization deems to have equivalent status of employees (e.g., contractors). Organizational users (and processes acting on behalf of users) must be uniquely identified and authenticated to all accesses, except for the following: 1) Accesses explicitly identified and documented by the organization. Organizations document specific user actions that can be performed on the information system without identification or authentication; and 2) Accesses that occur through authorized use of group authenticators without individual authentication. Organizations may require unique identification of individuals in group accounts (e.g., shared privilege accounts) or for detailed accountability of individual activity.

no_all_squash_exports

Ensure All-Squashing Disabled On All Exports

The `all_squash` maps all uids and gids to an anonymous user. This should be disabled by removing any instances of the `all_squash` option from the file `/etc/exports`.

SRG-OS-000104-GPOS-00051

CCI-000764

The operating system must uniquely identify and must authenticate organizational users (or processes acting on behalf of organizational users).

To assure accountability and prevent unauthenticated access, organizational users must be identified and authenticated to prevent potential misuse and compromise of the system. Organizational users include organizational employees or individuals the organization deems to have equivalent status of employees (e.g., contractors). Organizational users (and processes acting on behalf of users) must be uniquely identified and authenticated to all accesses, except for the following: 1) Accesses explicitly identified and documented by the organization. Organizations document specific user actions that can be performed on the information system without identification or authentication; and 2) Accesses that occur through authorized use of group authenticators without individual authentication. Organizations may require unique identification of individuals in group accounts (e.g., shared privilege accounts) or for detailed accountability of individual activity.

no_insecure_locks_exports

Ensure Insecure File Locking is Not Allowed

By default the NFS server requires secure file-lock requests, which require credentials from the client in order to lock a file. Most NFS clients send credentials with file lock requests, however, there are a few clients that do not send credentials when requesting a file-lock, allowing the client to only be able to lock world-readable files. To get around this, the `insecure_locks` option can be used so these clients can access the desired export. This poses a security risk by potentially allowing the client access to data for which it does not have authorization. Remove any instances of the `insecure_locks` option from the file `/etc/exports`.

SRG-OS-000105-GPOS-00052

CCI-000765

The operating system must use multifactor authentication for network access to privileged accounts.

Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased. Multifactor authentication requires using two or more factors to achieve authentication. Factors include: 1) something a user knows (e.g., password/PIN); 2) something a user has (e.g., cryptographic identification device, token); and 3) something a user is (e.g., biometric). A privileged account is defined as an information system account with authorizations of a privileged user. Network access is defined as access to an information system by a user (or a process acting on behalf of a user) communicating through a network (e.g., local area network, wide area network, or the Internet). The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

sshd_disable_rhosts

Disable SSH Support for .rhosts Files

SSH can emulate the behavior of the obsolete rsh command in allowing users to enable insecure access to their accounts via `.rhosts` files.
To ensure this behavior is disabled, add or correct the following line in `/etc/ssh/sshd_config`:

    IgnoreRhosts yes

SRG-OS-000105-GPOS-00052

CCI-000765

The operating system must use multifactor authentication for network access to privileged accounts.

Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased. Multifactor authentication requires using two or more factors to achieve authentication. Factors include: 1) something a user knows (e.g., password/PIN); 2) something a user has (e.g., cryptographic identification device, token); and 3) something a user is (e.g., biometric). A privileged account is defined as an information system account with authorizations of a privileged user. Network access is defined as access to an information system by a user (or a process acting on behalf of a user) communicating through a network (e.g., local area network, wide area network, or the Internet). The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

sshd_disable_empty_passwords

Disable SSH Access via Empty Passwords

To explicitly disallow remote login from accounts with empty passwords, add or correct the following line in `/etc/ssh/sshd_config`:

    PermitEmptyPasswords no

Any accounts with empty passwords should be disabled immediately, and PAM configuration should prevent users from being able to assign themselves empty passwords.

SRG-OS-000105-GPOS-00052

CCI-000765

The operating system must use multifactor authentication for network access to privileged accounts.

Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased. Multifactor authentication requires using two or more factors to achieve authentication. Factors include: 1) something a user knows (e.g., password/PIN); 2) something a user has (e.g., cryptographic identification device, token); and 3) something a user is (e.g., biometric). A privileged account is defined as an information system account with authorizations of a privileged user. Network access is defined as access to an information system by a user (or a process acting on behalf of a user) communicating through a network (e.g., local area network, wide area network, or the Internet). The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

disable_host_auth

Disable Host-Based Authentication

SSH's cryptographic host-based authentication is more secure than `.rhosts` authentication. However, it is not recommended that hosts unilaterally trust one another, even within an organization.
To disable host-based authentication, add or correct the following line in `/etc/ssh/sshd_config`:

    HostbasedAuthentication no

SRG-OS-000105-GPOS-00052

CCI-000765

The operating system must use multifactor authentication for network access to privileged accounts.

Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased. Multifactor authentication requires using two or more factors to achieve authentication. Factors include: 1) something a user knows (e.g., password/PIN); 2) something a user has (e.g., cryptographic identification device, token); and 3) something a user is (e.g., biometric). A privileged account is defined as an information system account with authorizations of a privileged user. Network access is defined as access to an information system by a user (or a process acting on behalf of a user) communicating through a network (e.g., local area network, wide area network, or the Internet). The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

smartcard_auth

Enable Smart Card Login

To enable smart card authentication, consult the documentation at:

- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/enabling-smart-card-login.html

For guidance on enabling SSH to authenticate against a Common Access Card (CAC), consult documentation at:

- https://access.redhat.com/solutions/82273

SRG-OS-000106-GPOS-00053

CCI-000766

The operating system must use multifactor authentication for network access to non-privileged accounts.

To assure accountability and prevent unauthenticated access, non-privileged users must utilize multifactor authentication to prevent potential misuse and compromise of the system. Multifactor authentication uses two or more factors to achieve authentication. Factors include: 1) Something you know (e.g., password/PIN); 2) Something you have (e.g., cryptographic identification device, token); and 3) Something you are (e.g., biometric). A non-privileged account is any information system account with authorizations of a non-privileged user. Network access is any access to an application by a user (or process acting on behalf of a user) where said access is obtained through a network connection. The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

sshd_disable_rhosts

Disable SSH Support for .rhosts Files

SSH can emulate the behavior of the obsolete rsh command in allowing users to enable insecure access to their accounts via `.rhosts` files.
To ensure this behavior is disabled, add or correct the following line in `/etc/ssh/sshd_config`:

    IgnoreRhosts yes

SRG-OS-000106-GPOS-00053

CCI-000766

The operating system must use multifactor authentication for network access to non-privileged accounts.

To assure accountability and prevent unauthenticated access, non-privileged users must utilize multifactor authentication to prevent potential misuse and compromise of the system. Multifactor authentication uses two or more factors to achieve authentication. Factors include: 1) Something you know (e.g., password/PIN); 2) Something you have (e.g., cryptographic identification device, token); and 3) Something you are (e.g., biometric). A non-privileged account is any information system account with authorizations of a non-privileged user. Network access is any access to an application by a user (or process acting on behalf of a user) where said access is obtained through a network connection. The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

sshd_disable_empty_passwords

Disable SSH Access via Empty Passwords

To explicitly disallow remote login from accounts with empty passwords, add or correct the following line in `/etc/ssh/sshd_config`:

    PermitEmptyPasswords no

Any accounts with empty passwords should be disabled immediately, and PAM configuration should prevent users from being able to assign themselves empty passwords.

SRG-OS-000106-GPOS-00053

CCI-000766

The operating system must use multifactor authentication for network access to non-privileged accounts.

To assure accountability and prevent unauthenticated access, non-privileged users must utilize multifactor authentication to prevent potential misuse and compromise of the system. Multifactor authentication uses two or more factors to achieve authentication. Factors include: 1) Something you know (e.g., password/PIN); 2) Something you have (e.g., cryptographic identification device, token); and 3) Something you are (e.g., biometric). A non-privileged account is any information system account with authorizations of a non-privileged user. Network access is any access to an application by a user (or process acting on behalf of a user) where said access is obtained through a network connection. The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

disable_host_auth

Disable Host-Based Authentication

SSH's cryptographic host-based authentication is more secure than `.rhosts` authentication. However, it is not recommended that hosts unilaterally trust one another, even within an organization.
To disable host-based authentication, add or correct the following line in `/etc/ssh/sshd_config`:

    HostbasedAuthentication no

SRG-OS-000106-GPOS-00053

CCI-000766

The operating system must use multifactor authentication for network access to non-privileged accounts.

To assure accountability and prevent unauthenticated access, non-privileged users must utilize multifactor authentication to prevent potential misuse and compromise of the system. Multifactor authentication uses two or more factors to achieve authentication. Factors include: 1) Something you know (e.g., password/PIN); 2) Something you have (e.g., cryptographic identification device, token); and 3) Something you are (e.g., biometric). A non-privileged account is any information system account with authorizations of a non-privileged user. Network access is any access to an application by a user (or process acting on behalf of a user) where said access is obtained through a network connection. The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

smartcard_auth

Enable Smart Card Login

To enable smart card authentication, consult the documentation at:

- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/enabling-smart-card-login.html

For guidance on enabling SSH to authenticate against a Common Access Card (CAC), consult documentation at:

- https://access.redhat.com/solutions/82273

SRG-OS-000107-GPOS-00054

CCI-000767

The operating system must use multifactor authentication for local access to privileged accounts.

To assure accountability and prevent unauthenticated access, privileged users must utilize multifactor authentication to prevent potential misuse and compromise of the system. Multifactor authentication is defined as using two or more factors to achieve authentication. Factors include: 1) Something you know (e.g., password/PIN); 2) Something you have (e.g., cryptographic identification device, token); and 3) Something you are (e.g., biometric). A privileged account is defined as an operating system account with authorizations of a privileged user. Local access is defined as access to an organizational information system by a user (or process acting on behalf of a user) communicating through a direct connection without the use of a network. The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

smartcard_auth

Enable Smart Card Login

To enable smart card authentication, consult the documentation at:

- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/enabling-smart-card-login.html

For guidance on enabling SSH to authenticate against a Common Access Card (CAC), consult documentation at:

- https://access.redhat.com/solutions/82273

SRG-OS-000108-GPOS-00055

CCI-000768

The operating system must use multifactor authentication for local access to non-privileged accounts.

To assure accountability, prevent unauthenticated access, and prevent misuse of the system, non-privileged users must utilize multifactor authentication for local access. Multifactor authentication is defined as using two or more factors to achieve authentication. Factors include: 1) Something you know (e.g., password/PIN); 2) Something you have (e.g., cryptographic identification device or token); and 3) Something you are (e.g., biometric). A non-privileged account is defined as an operating system account with authorizations of a regular or non-privileged user. Local access is defined as access to an organizational information system by a user (or process acting on behalf of a user) communicating through a direct connection without the use of a network. The DoD CAC with DoD-approved PKI is an example of multifactor authentication.

smartcard_auth

Enable Smart Card Login

To enable smart card authentication, consult the documentation at:

- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/enabling-smart-card-login.html

For guidance on enabling SSH to authenticate against a Common Access Card (CAC), consult documentation at:

- https://access.redhat.com/solutions/82273

SRG-OS-000109-GPOS-00056

CCI-000770

The operating system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.

To assure individual accountability and prevent unauthorized access, organizational users must be individually identified and authenticated. A group authenticator is a generic account used by multiple individuals. Use of a group authenticator alone does not uniquely identify individual users. Examples of the group authenticator is the UNIX OS "root" user account, the Windows "Administrator" account, the "sa" account, or a "helpdesk" account. For example, the UNIX and Windows operating systems offer a 'switch user' capability allowing users to authenticate with their individual credentials and, when needed, 'switch' to the administrator role. This method provides for unique individual authentication prior to using a group authenticator. Users (and any processes acting on behalf of users) need to be uniquely identified and authenticated for all accesses other than those accesses explicitly identified and documented by the organization, which outlines specific user actions that can be performed on the operating system without identification or authentication. Requiring individuals to be authenticated with an individual authenticator prior to using a group authenticator allows for traceability of actions, as well as adding an additional level of protection of the actions that can be taken with group account knowledge.

sshd_disable_root_login

Disable SSH Root Login

The root user should never be allowed to login to a system directly over a network. To disable root login via SSH, add or correct the following line in `/etc/ssh/sshd_config`:

    PermitRootLogin no

SRG-OS-000109-GPOS-00056

CCI-000770

The operating system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.

To assure individual accountability and prevent unauthorized access, organizational users must be individually identified and authenticated. A group authenticator is a generic account used by multiple individuals. Use of a group authenticator alone does not uniquely identify individual users. Examples of the group authenticator is the UNIX OS "root" user account, the Windows "Administrator" account, the "sa" account, or a "helpdesk" account. For example, the UNIX and Windows operating systems offer a 'switch user' capability allowing users to authenticate with their individual credentials and, when needed, 'switch' to the administrator role. This method provides for unique individual authentication prior to using a group authenticator. Users (and any processes acting on behalf of users) need to be uniquely identified and authenticated for all accesses other than those accesses explicitly identified and documented by the organization, which outlines specific user actions that can be performed on the operating system without identification or authentication. Requiring individuals to be authenticated with an individual authenticator prior to using a group authenticator allows for traceability of actions, as well as adding an additional level of protection of the actions that can be taken with group account knowledge.

securetty_root_login_console_only

Restrict Virtual Console Root Logins

To restrict root logins through the (deprecated) virtual console devices, ensure lines of this form do not appear in `/etc/securetty`:

    vc/1
    vc/2
    vc/3
    vc/4

SRG-OS-000109-GPOS-00056

CCI-000770

The operating system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.

To assure individual accountability and prevent unauthorized access, organizational users must be individually identified and authenticated. A group authenticator is a generic account used by multiple individuals. Use of a group authenticator alone does not uniquely identify individual users. Examples of the group authenticator is the UNIX OS "root" user account, the Windows "Administrator" account, the "sa" account, or a "helpdesk" account. For example, the UNIX and Windows operating systems offer a 'switch user' capability allowing users to authenticate with their individual credentials and, when needed, 'switch' to the administrator role. This method provides for unique individual authentication prior to using a group authenticator. Users (and any processes acting on behalf of users) need to be uniquely identified and authenticated for all accesses other than those accesses explicitly identified and documented by the organization, which outlines specific user actions that can be performed on the operating system without identification or authentication. Requiring individuals to be authenticated with an individual authenticator prior to using a group authenticator allows for traceability of actions, as well as adding an additional level of protection of the actions that can be taken with group account knowledge.

restrict_serial_port_logins

Restrict Serial Port Root Logins

To restrict root logins on serial ports, ensure lines of this form do not appear in `/etc/securetty`:

    ttyS0
    ttyS1

SRG-OS-000109-GPOS-00056

CCI-000770

The operating system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.

To assure individual accountability and prevent unauthorized access, organizational users must be individually identified and authenticated. A group authenticator is a generic account used by multiple individuals. Use of a group authenticator alone does not uniquely identify individual users. Examples of the group authenticator is the UNIX OS "root" user account, the Windows "Administrator" account, the "sa" account, or a "helpdesk" account. For example, the UNIX and Windows operating systems offer a 'switch user' capability allowing users to authenticate with their individual credentials and, when needed, 'switch' to the administrator role. This method provides for unique individual authentication prior to using a group authenticator. Users (and any processes acting on behalf of users) need to be uniquely identified and authenticated for all accesses other than those accesses explicitly identified and documented by the organization, which outlines specific user actions that can be performed on the operating system without identification or authentication. Requiring individuals to be authenticated with an individual authenticator prior to using a group authenticator allows for traceability of actions, as well as adding an additional level of protection of the actions that can be taken with group account knowledge.

account_unique_name

Ensure All Accounts on the System Have Unique Names

Change usernames, or delete accounts, so each has a unique name.

SRG-OS-000112-GPOS-00057

CCI-001941

The operating system must implement replay-resistant authentication mechanisms for network access to privileged accounts.

A replay attack may enable an unauthorized user to gain access to the operating system. Authentication sessions between the authenticator and the operating system validating the user credentials must not be vulnerable to a replay attack. An authentication process resists replay attacks if it is impractical to achieve a successful authentication by recording and replaying a previous authentication message. A privileged account is any information system account with authorizations of a privileged user. Techniques used to address this include protocols using nonces (e.g., numbers generated for a specific one-time use) or challenges (e.g., TLS, WS_Security). Additional techniques include time-synchronous or challenge-response one-time authenticators.

SRG-OS-000113-GPOS-00058

CCI-001942

The operating system must implement replay-resistant authentication mechanisms for network access to non-privileged accounts.

A replay attack may enable an unauthorized user to gain access to the operating system. Authentication sessions between the authenticator and the operating system validating the user credentials must not be vulnerable to a replay attack. An authentication process resists replay attacks if it is impractical to achieve a successful authentication by recording and replaying a previous authentication message. A non-privileged account is any operating system account with authorizations of a non-privileged user. Techniques used to address this include protocols using nonces (e.g., numbers generated for a specific one-time use) or challenges (e.g., TLS, WS_Security). Additional techniques include time-synchronous or challenge-response one-time authenticators.

SRG-OS-000114-GPOS-00059

CCI-000778

The operating system must uniquely identify peripherals before establishing a connection.

Without identifying devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. Peripherals include, but are not limited to, such devices as flash drives, external storage, and printers.

ldap_client_start_tls

Configure LDAP Client to Use TLS For All Transactions

Configure LDAP to enforce TLS use. First, edit the file `/etc/pam_ldap.conf`, and add or correct the following lines:

    ssl start_tls

Then review the LDAP server and ensure TLS has been configured.

SRG-OS-000114-GPOS-00059

CCI-000778

The operating system must uniquely identify peripherals before establishing a connection.

Without identifying devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. Peripherals include, but are not limited to, such devices as flash drives, external storage, and printers.

ldap_client_tls_cacertpath

Configure Certificate Directives for LDAP Use of TLS

Ensure a copy of a trusted CA certificate has been placed in the file `/etc/pki/tls/CA/cacert.pem`. Configure LDAP to enforce TLS use and to trust certificates signed by that CA. First, edit the file `/etc/pam_ldap.conf`, and add or correct either of the following lines:

    tls_cacertdir /etc/pki/tls/CA

or

    tls_cacertfile /etc/pki/tls/CA/cacert.pem

Then review the LDAP server and ensure TLS has been configured.

SRG-OS-000118-GPOS-00060

CCI-000795

The operating system must disable account identifiers (individuals, groups, roles, and devices) after 35 days of inactivity.

Inactive identifiers pose a risk to systems and applications because attackers may exploit an inactive identifier and potentially obtain undetected access to the system. Owners of inactive accounts will not notice if unauthorized access to their user account has been obtained. Operating systems need to track periods of inactivity and disable application identifiers after 35 days of inactivity.

account_disable_post_pw_expiration

Set Account Expiration Following Inactivity

To specify the number of days after a password expires (which signifies inactivity) until an account is permanently disabled, add or correct the following lines in `/etc/default/useradd`, substituting `NUM_DAYS` appropriately:

    INACTIVE=

A value of 35 is recommended. If a password is currently on the verge of expiration, then 35 days remain until the account is automatically disabled. However, if the password will not expire for another 60 days, then 95 days could elapse until the account would be automatically disabled. See the `useradd` man page for more information. Determining the inactivity timeout must be done with careful consideration of the length of a "normal" period of inactivity for users in the particular environment. Setting the timeout too low incurs support costs and also has the potential to impact availability of the system to legitimate users.

SRG-OS-000403-GPOS-00182

CCI-002470

The operating system must only allow the use of DoD PKI-established certificate authorities for verification of the establishment of protected sessions.

Untrusted Certificate Authorities (CA) can issue certificates, but they may be issued by organizations or individuals that seek to compromise DoD systems or by organizations with insufficient security controls. If the CA used for verifying the certificate is not a DoD-approved CA, trust of this CA has not been established. The DoD will only accept PKI-certificates obtained from a DoD-approved internal or external certificate authority. Reliance on CAs for the establishment of secure sessions includes, for example, the use of SSL/TLS certificates.

SRG-OS-000402-GPOS-00181

CCI-002468

The operating system must perform data origin verification authentication on the name/address resolution responses the system receives from authoritative sources.

If data origin authentication and data integrity verification are not performed, the resultant response could be forged, it may have come from a poisoned cache, the packets could have been intercepted without the resolver's knowledge, or resource records could have been removed which would result in query failure or denial of service. Data origin authentication verification must be performed to thwart these types of attacks. Each client of name resolution services either performs this validation on its own or has authenticated channels to trusted validation providers. Information systems that provide name and address resolution services for local clients include, for example, recursive resolving or caching Domain Name System (DNS) servers. DNS client resolvers either perform validation of DNSSEC signatures, or clients use authenticated channels to recursive resolvers that perform such validations. This is not applicable if DNSSEC is not implemented on the local network.

SRG-OS-000401-GPOS-00180

CCI-002467

The operating system must perform data integrity verification on the name/address resolution responses the system receives from authoritative sources.

If data origin authentication and data integrity verification are not performed, the resultant response could be forged, it may have come from a poisoned cache, the packets could have been intercepted without the resolver's knowledge, or resource records could have been removed which would result in query failure or denial of service. Data integrity verification must be performed to thwart these types of attacks. Each client of name resolution services either performs this validation on its own or has authenticated channels to trusted validation providers. Information systems that provide name and address resolution services for local clients include, for example, recursive resolving or caching Domain Name System (DNS) servers. DNS client resolvers either perform validation of DNSSEC signatures, or clients use authenticated channels to recursive resolvers that perform such validations. This is not applicable if DNSSEC is not implemented on the local network.

SRG-OS-000400-GPOS-00179

CCI-002466

The operating system must request data integrity verification on the name/address resolution responses the system receives from authoritative sources.

If data origin authentication and data integrity verification are not performed, the resultant response could be forged, it may have come from a poisoned cache, the packets could have been intercepted without the resolver's knowledge, or resource records could have been removed which would result in query failure or denial of service. Data integrity verification must be performed to thwart these types of attacks. Each client of name resolution services either performs this validation on its own or has authenticated channels to trusted validation providers. Information systems that provide name and address resolution services for local clients include, for example, recursive resolving or caching Domain Name System (DNS) servers. DNS client resolvers either perform validation of DNSSEC signatures, or clients use authenticated channels to recursive resolvers that perform such validations. This is not applicable if DNSSEC is not implemented on the local network.

SRG-OS-000399-GPOS-00178

CCI-002465

The operating system must request data origin authentication verification on the name/address resolution responses the system receives from authoritative sources.

If data origin authentication and data integrity verification are not performed, the resultant response could be forged, it may have come from a poisoned cache, the packets could have been intercepted without the resolver's knowledge, or resource records could have been removed, which would result in query failure or DoS. Data origin authentication must be performed to thwart these types of attacks. Each client of name resolution services either performs this validation on its own or has authenticated channels to trusted validation providers. Information systems that provide name and address resolution services for local clients include, for example, recursive resolving or caching Domain Name System (DNS) servers. DNS client resolvers either perform validation of DNSSEC signatures, or clients use authenticated channels to recursive resolvers that perform such validations. Information systems that use technologies other than the DNS to map between host/service names and network addresses provide other means to enable clients to verify the authenticity of response data. This is not applicable if DNSSEC is not implemented on the local network.

SRG-OS-000396-GPOS-00176

CCI-002450

The operating system must implement NSA-approved cryptography to protect classified information in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.

sshd_use_approved_macs

Use Only Approved MACs

Limit the MACs to those hash algorithms which are FIPS-approved. The following line in `/etc/ssh/sshd_config` demonstrates use of FIPS-approved MACs:

    MACs hmac-sha2-512,hmac-sha2-256,hmac-sha1

The man page `sshd_config(5)` contains a list of supported MACs.

SRG-OS-000396-GPOS-00176

CCI-002450

The operating system must implement NSA-approved cryptography to protect classified information in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.

package_dracut-fips_installed

Install the dracut-fips Package

To enable FIPS, the system requires that the `dracut-fips` package be installed. The `dracut-fips` package can be installed with the following command:

    $ sudo yum install dracut-fips

SRG-OS-000396-GPOS-00176

CCI-002450

The operating system must implement NSA-approved cryptography to protect classified information in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.

grub_enable_fips_mode

Enable FIPS Mode in GRUB

To ensure FIPS mode is enabled, rebuild `initramfs` by running the following command:

    dracut -f

After the `dracut` command has been run, add the argument `fips=1` to the default GRUB kernel line for the Linux operating system in `/etc/grub.conf`, in the manner below:

    kernel /vmlinuz-version ro vga=ext root=/dev/VolGroup00/LogVol00 rhgb quiet fips=1

SRG-OS-000120-GPOS-00061

CCI-000803

The operating system must use mechanisms meeting the requirements of applicable federal laws, Executive orders, directives, policies, regulations, standards, and guidance for authentication to a cryptographic module.

Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. Operating systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general purpose computing system.

sshd_use_approved_macs

Use Only Approved MACs

Limit the MACs to those hash algorithms which are FIPS-approved. The following line in `/etc/ssh/sshd_config` demonstrates use of FIPS-approved MACs:

    MACs hmac-sha2-512,hmac-sha2-256,hmac-sha1

The man page `sshd_config(5)` contains a list of supported MACs.

SRG-OS-000120-GPOS-00061

CCI-000803

The operating system must use mechanisms meeting the requirements of applicable federal laws, Executive orders, directives, policies, regulations, standards, and guidance for authentication to a cryptographic module.

Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. Operating systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general purpose computing system.

sshd_use_approved_ciphers

Use Only Approved Ciphers

Limit the ciphers to those algorithms which are FIPS-approved. Counter (CTR) mode is also preferred over cipher-block chaining (CBC) mode. The following line in `/etc/ssh/sshd_config` demonstrates use of FIPS-approved ciphers:

    Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

The man page `sshd_config(5)` contains a list of supported ciphers.

SRG-OS-000120-GPOS-00061

CCI-000803

The operating system must use mechanisms meeting the requirements of applicable federal laws, Executive orders, directives, policies, regulations, standards, and guidance for authentication to a cryptographic module.

Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. Operating systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general purpose computing system.

set_password_hashing_algorithm_logindefs

Set Password Hashing Algorithm in /etc/login.defs

In `/etc/login.defs`, add or correct the following line to ensure the system will use SHA-512 as the hashing algorithm:

    ENCRYPT_METHOD SHA512

SRG-OS-000120-GPOS-00061

CCI-000803

The operating system must use mechanisms meeting the requirements of applicable federal laws, Executive orders, directives, policies, regulations, standards, and guidance for authentication to a cryptographic module.

Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. Operating systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general purpose computing system.

set_password_hashing_algorithm_systemauth

Set Password Hashing Algorithm in /etc/pam.d/system-auth

In `/etc/pam.d/system-auth`, the `password` section of the file controls which PAM modules execute during a password change. Set the `pam_unix.so` module in the `password` section to include the argument `sha512`, as shown below:

    password    sufficient    pam_unix.so sha512 other arguments...

This will help ensure when local users change their passwords, hashes for the new passwords will be generated using the SHA-512 algorithm. This is the default.

SRG-OS-000120-GPOS-00061

CCI-000803

The operating system must use mechanisms meeting the requirements of applicable federal laws, Executive orders, directives, policies, regulations, standards, and guidance for authentication to a cryptographic module.

Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. Operating systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general purpose computing system.

set_password_hashing_algorithm_libuserconf

Set Password Hashing Algorithm in /etc/libuser.conf

In `/etc/libuser.conf`, add or correct the following line in its `[defaults]` section to ensure the system will use the SHA-512 algorithm for password hashing:

    crypt_style = sha512

SRG-OS-000395-GPOS-00175

CCI-002891

The operating system must verify remote disconnection at the termination of nonlocal maintenance and diagnostic sessions, when used for nonlocal maintenance sessions.

If the remote connection is not closed and verified as closed, the session may remain open and be exploited by an attacker; this is referred to as a zombie session. Remote connections must be disconnected and verified as disconnected when nonlocal maintenance sessions have been terminated and are no longer available for use.

SRG-OS-000394-GPOS-00174

CCI-003123

The operating system must implement cryptographic mechanisms to protect the confidentiality of nonlocal maintenance and diagnostic communications, when used for nonlocal maintenance sessions.

Privileged access contains control and configuration information and is particularly sensitive, so additional protections are necessary. This is maintained by using cryptographic mechanisms such as encryption to protect confidentiality. Nonlocal maintenance and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the Internet) or an internal network. Local maintenance and diagnostic activities are those activities carried out by individuals physically present at the information system or information system component and not communicating across a network connection. This requirement applies to hardware/software diagnostic test equipment or tools. This requirement does not cover hardware/software components that may support information system maintenance, yet are a part of the system (e.g., the software implementing "ping," "ls," "ipconfig," or the hardware and software implementing the monitoring port of an Ethernet switch). The operating system can meet this requirement through leveraging a cryptographic module.

SRG-OS-000121-GPOS-00062

CCI-000804

The operating system must uniquely identify and must authenticate non-organizational users (or processes acting on behalf of non-organizational users).

Lack of authentication and identification enables non-organizational users to gain access to the application or possibly other information systems and provides an opportunity for intruders to compromise resources within the application or information system. Non-organizational users include all information system users other than organizational users, which include organizational employees or individuals the organization deems to have equivalent status of an employee (e.g., contractors and guest researchers). Non-organizational users shall be uniquely identified and authenticated for all accesses other than those accesses explicitly identified and documented by the organization when related to the use of anonymous access.

account_unique_name

Ensure All Accounts on the System Have Unique Names

Change usernames, or delete accounts, so each has a unique name.

SRG-OS-000393-GPOS-00173

CCI-002890

The operating system must implement cryptographic mechanisms to protect the integrity of nonlocal maintenance and diagnostic communications, when used for nonlocal maintenance sessions.

Privileged access contains control and configuration information and is particularly sensitive, so additional protections are necessary. This is maintained by using cryptographic mechanisms, such as a hash function or digital signature, to protect integrity. Nonlocal maintenance and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the Internet) or an internal network. Local maintenance and diagnostic activities are those activities carried out by individuals physically present at the information system or information system component and not communicating across a network connection. The operating system can meet this requirement through leveraging a cryptographic module. This requirement does not cover hardware/software components that may support information system maintenance, yet are a part of the system (e.g., the software implementing "ping," "ls," "ipconfig," or the hardware and software implementing the monitoring port of an Ethernet switch).

SRG-OS-000392-GPOS-00172

CCI-002884

The operating system must audit all activities performed during nonlocal maintenance and diagnostic sessions.

If events associated with nonlocal administrative access or diagnostic sessions are not logged, a major tool for assessing and investigating attacks would not be available. This requirement addresses auditing-related issues associated with maintenance tools used specifically for diagnostic and repair actions on organizational information systems. Nonlocal maintenance and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the Internet) or an internal network. Local maintenance and diagnostic activities are those activities carried out by individuals physically present at the information system or information system component and not communicating across a network connection. This requirement applies to hardware/software diagnostic test equipment or tools. This requirement does not cover hardware/software components that may support information system maintenance, yet are a part of the system, for example, the software implementing "ping," "ls," "ipconfig," or the hardware and software implementing the monitoring port of an Ethernet switch.

SRG-OS-000384-GPOS-00167

CCI-001991

The operating system, for PKI-based authentication, must implement a local cache of revocation data to support path discovery and validation in case of the inability to access revocation information via the network.

Without configuring a local cache of revocation data, there is the potential to allow access to users who are no longer authorized (users with revoked certificates).

SRG-OS-000122-GPOS-00063

CCI-001876

The operating system must provide an audit reduction capability that supports on-demand reporting requirements.

The ability to generate on-demand reports, including after the audit data has been subjected to audit reduction, greatly facilitates the organization's ability to generate incident reports as needed to better handle larger-scale or more complex security incidents. Audit reduction is a process that manipulates collected audit information and organizes such information in a summary format that is more meaningful to analysts. The report generation capability provided by the application must support on-demand (i.e., customizable, ad hoc, and as-needed) reports.

SRG-OS-000383-GPOS-00166

CCI-002007

The operating system must prohibit the use of cached authenticators after one day.

If cached authentication information is out-of-date, the validity of the authentication information may be questionable.

sssd_memcache_timeout

Configure SSSD's Memory Cache to Expire

SSSD's memory cache should be configured to set to expire records after 1 day. To configure SSSD to expire memory cache, set `memcache_timeout` to `86400` under the `[nss]` section in `/etc/sssd/sssd.conf`. For example:

    [nss]
    memcache_timeout = 86400

SRG-OS-000383-GPOS-00166

CCI-002007

The operating system must prohibit the use of cached authenticators after one day.

If cached authentication information is out-of-date, the validity of the authentication information may be questionable.

sssd_memcache_timeout

Configure SSSD's Memory Cache to Expire

SSSD's memory cache should be configured to set to expire records after 1 day. To configure SSSD to expire memory cache, set `memcache_timeout` to `86400` under the `[nss]` section in `/etc/sssd/sssd.conf`. For example:

    [nss]
    memcache_timeout = 86400

SRG-OS-000383-GPOS-00166

CCI-002007

The operating system must prohibit the use of cached authenticators after one day.

If cached authentication information is out-of-date, the validity of the authentication information may be questionable.

sssd_offline_cred_expiration

Configure SSSD to Expire Offline Credentials

SSSD should be configured to expire offline credentials after 1 day. To configure SSSD to expire offline credentials, set `offline_credentials_expiration` to `1` under the `[pam]` section in `/etc/sssd/sssd.conf`. For example:

    [pam]
    offline_credentials_expiration = 1

SRG-OS-000383-GPOS-00166

CCI-002007

The operating system must prohibit the use of cached authenticators after one day.

If cached authentication information is out-of-date, the validity of the authentication information may be questionable.

sssd_offline_cred_expiration

Configure SSSD to Expire Offline Credentials

SSSD should be configured to expire offline credentials after 1 day. To configure SSSD to expire offline credentials, set `offline_credentials_expiration` to `1` under the `[pam]` section in `/etc/sssd/sssd.conf`. For example:

    [pam]
    offline_credentials_expiration = 1

SRG-OS-000383-GPOS-00166

CCI-002007

The operating system must prohibit the use of cached authenticators after one day.

If cached authentication information is out-of-date, the validity of the authentication information may be questionable.

sssd_ssh_known_hosts_timeout

Configure SSSD to Expire SSH Known Hosts

SSSD should be configured to expire keys from known SSH hosts after 1 day. To configure SSSD to known SSH hosts, set `ssh_known_hosts_timeout` to `86400` under the `[ssh]` section in `/etc/sssd/sssd.conf`. For example:

    [ssh]
    ssh_known_hosts_timeout = 86400

SRG-OS-000380-GPOS-00165

CCI-002041

The operating system must allow the use of a temporary password for system logons with an immediate change to a permanent password.

Without providing this capability, an account may be created without a password. Non-repudiation cannot be guaranteed once an account is created if a user is not forced to change the temporary password upon initial logon. Temporary passwords are typically used to allow access when new accounts are created or passwords are changed. It is common practice for administrators to create temporary passwords for user accounts which allow the users to log on, yet force them to change the password once they have successfully authenticated.

SRG-OS-000123-GPOS-00064

CCI-001682

The information system must automatically remove or disable emergency accounts after the crisis is resolved or 72 hours.

Emergency accounts are privileged accounts that are established in response to crisis situations where the need for rapid account activation is required. Therefore, emergency account activation may bypass normal account authorization processes. If these accounts are automatically disabled, system maintenance during emergencies may not be possible, thus adversely affecting system availability. Emergency accounts are different from infrequently used accounts (i.e., local logon accounts used by the organization's system administrators when network or normal logon/access is not available). Infrequently used accounts are not subject to automatic termination dates. Emergency accounts are accounts created in response to crisis situations, usually for use by maintenance personnel. The automatic expiration or disabling time period may be extended as needed until the crisis is resolved; however, it must not be extended indefinitely. A permanent account should be established for privileged users who need long-term maintenance accounts. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements.

account_temp_expire_date

Assign Expiration Date to Temporary Accounts

In the event temporary or emergency accounts are required, configure the system to terminate them after a documented time period. For every temporary and emergency account, run the following command to set an expiration date on it, substituting `USER` and `YYYY-MM-DD` appropriately:

    $ sudo chage -E YYYY-MM-DD USER

`YYYY-MM-DD` indicates the documented expiration date for the account.

SRG-OS-000379-GPOS-00164

CCI-001967

The operating system must authenticate all endpoint devices before establishing a local, remote, and/or network connection using bidirectional authentication that is cryptographically based.

Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. Bidirectional authentication provides stronger safeguards to validate the identity of other devices for connections that are of greater risk. Bidirectional authentication solutions include, but are not limited to, IEEE 802.1x and Extensible Authentication Protocol [EAP], RADIUS server with EAP-Transport Layer Security [TLS] authentication, Kerberos, and SSL mutual authentication. A local connection is any connection with a device communicating without the use of a network. A network connection is any connection with a device that communicates through a network (e.g., local area network, wide area network, or the Internet). A remote connection is any connection with a device communicating through an external network (e.g., the Internet). Because of the challenges of applying this requirement on a large scale, organizations are encouraged to only apply this requirement to those limited number (and type) of devices that truly need to support this capability.

SRG-OS-000378-GPOS-00163 | CCI-001958 | The operating system must authenticate peripherals before establishing a connection. | Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. Peripherals include, but are not limited to, such devices as flash drives, external storage, and printers. |

SRG-OS-000125-GPOS-00065

CCI-000877

The operating system must employ strong authenticators in the establishment of nonlocal maintenance and diagnostic sessions.

If maintenance tools are used by unauthorized personnel, they may accidentally or intentionally damage or compromise the system. The act of managing systems and applications includes the ability to access sensitive application information, such as system configuration details, diagnostic information, user information, and potentially sensitive application data. Some maintenance and test tools are either standalone devices with their own operating systems or are applications bundled with an operating system. Nonlocal maintenance and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the Internet) or an internal network. Local maintenance and diagnostic activities are those activities carried out by individuals physically present at the information system or information system component and not communicating across a network connection. Typically, strong authentication requires authenticators that are resistant to replay attacks and employ multifactor authentication. Strong authenticators include, for example, PKI where certificates are stored on a token protected by a password, passphrase, or biometric.

service_telnetd_disabled

Disable telnet Service

The `telnet` service can be disabled with the following command:

    $ sudo chkconfig telnet off

SRG-OS-000377-GPOS-00162

CCI-001954

The operating system must electronically verify Personal Identity Verification (PIV) credentials.

The use of PIV credentials facilitates standardization and reduces the risk of unauthorized access. DoD has mandated the use of the CAC to support identity management and personal authentication for systems covered under Homeland Security Presidential Directive (HSPD) 12, as well as making the CAC a primary component of layered protection for national security systems.

SRG-OS-000376-GPOS-00161

CCI-001953

The operating system must accept Personal Identity Verification (PIV) credentials.

The use of PIV credentials facilitates standardization and reduces the risk of unauthorized access. DoD has mandated the use of the CAC to support identity management and personal authentication for systems covered under Homeland Security Presidential Directive (HSPD) 12, as well as making the CAC a primary component of layered protection for national security systems.

SRG-OS-000375-GPOS-00160

CCI-001948

The operating system must implement multifactor authentication for remote access to privileged accounts in such a way that one of the factors is provided by a device separate from the system gaining access.

Using an authentication device, such as a CAC or token that is separate from the information system, ensures that even if the information system is compromised, that compromise will not affect credentials stored on the authentication device. Multifactor solutions that require devices separate from information systems gaining access include, for example, hardware tokens providing time-based or challenge-response authenticators and smart cards such as the U.S. Government Personal Identity Verification card and the DoD Common Access Card. A privileged account is defined as an information system account with authorizations of a privileged user. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. This requirement only applies to components where this is specific to the function of the device or has the concept of an organizational user (e.g., VPN, proxy capability). This does not apply to authentication for the purpose of configuring the device itself (management). Requires further clarification from NIST.

SRG-OS-000374-GPOS-00159 | CCI-002039 | The operating system must require devices to re-authenticate when changing authenticators. | Without re-authentication, devices may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to change device authenticators, it is critical the device re-authenticate. |

SRG-OS-000373-GPOS-00158

CCI-002038

The operating system must require users to re-authenticate when changing authenticators.

Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to change user authenticators, it is critical the user re-authenticate.

sudo_require_authentication

Ensure Users Re-Authenticate for Privilege Escalation - sudo

The sudo `NOPASSWD` and `!authenticate` option, when specified, allows a user to execute commands using sudo without having to authenticate. This should be disabled by making sure that `NOPASSWD` and/or `!authenticate` do not exist in `/etc/sudoers` configuration file or any sudo configuration snippets in `/etc/sudoers.d/`.

SRG-OS-000126-GPOS-00066

CCI-000879

The operating system must terminate all sessions and network connections related to nonlocal maintenance when nonlocal maintenance is completed.

If a maintenance session or connection remains open after maintenance is completed, it may be hijacked by an attacker and used to compromise or damage the system. Some maintenance and test tools are either standalone devices with their own operating systems or are applications bundled with an operating system. Nonlocal maintenance and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the Internet) or an internal network. Local maintenance and diagnostic activities are those activities carried out by individuals physically present at the information system or information system component and not communicating across a network connection.

sshd_set_idle_timeout

Set SSH Idle Timeout Interval

SSH allows administrators to set an idle timeout interval. After this interval has passed, the idle user will be automatically logged out.
To set an idle timeout interval, edit the following line in `/etc/ssh/sshd_config` as follows:

    ClientAliveInterval

The timeout interval is given in seconds. To have a timeout of 15 minutes, set interval to 900.
If a shorter timeout has already been set for the login shell, that value will preempt any SSH setting made here. Keep in mind that some processes may stop SSH from correctly detecting that the user is idle.

SRG-OS-000126-GPOS-00066

CCI-000879

The operating system must terminate all sessions and network connections related to nonlocal maintenance when nonlocal maintenance is completed.

If a maintenance session or connection remains open after maintenance is completed, it may be hijacked by an attacker and used to compromise or damage the system. Some maintenance and test tools are either standalone devices with their own operating systems or are applications bundled with an operating system. Nonlocal maintenance and diagnostic activities are those activities conducted by individuals communicating through a network, either an external network (e.g., the Internet) or an internal network. Local maintenance and diagnostic activities are those activities carried out by individuals physically present at the information system or information system component and not communicating across a network connection.

sshd_set_keepalive

Set SSH Client Alive Count

To ensure the SSH idle timeout occurs precisely when the `ClientAliveCountMax` is set, edit `/etc/ssh/sshd_config` as follows:

    ClientAliveCountMax 0

SRG-OS-000373-GPOS-00157

CCI-002038

The operating system must require users to re-authenticate when changing roles.

Without re-authentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to change security roles, it is critical the user re-authenticate.

sudo_require_authentication

Ensure Users Re-Authenticate for Privilege Escalation - sudo

The sudo `NOPASSWD` and `!authenticate` option, when specified, allows a user to execute commands using sudo without having to authenticate. This should be disabled by making sure that `NOPASSWD` and/or `!authenticate` do not exist in `/etc/sudoers` configuration file or any sudo configuration snippets in `/etc/sudoers.d/`.

SRG-OS-000132-GPOS-00067

CCI-001082

The operating system must separate user functionality (including user interface services) from operating system management functionality.

Operating system management functionality includes functions necessary for administration and requires privileged user access. Allowing non-privileged users to access operating system management functionality capabilities increases the risk that non-privileged users may obtain elevated privileges. Operating system management functionality includes functions necessary to administer console, network components, workstations, or servers and typically requires privileged user access. The separation of user functionality from information system management functionality is either physical or logical and is accomplished by using different computers, different central processing units, different instances of the operating system, different network addresses, different TCP/UDP ports, virtualization techniques, combinations of these methods, or other methods, as appropriate. An example of this type of separation is observed in web administrative interfaces that use separate authentication methods for users of any other information system resources. This may include isolating the administrative interface on a different security domain and with additional access controls.

SRG-OS-000373-GPOS-00156

CCI-002038

The operating system must require users to 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.

sudo_require_authentication

Ensure Users Re-Authenticate for Privilege Escalation - sudo

The sudo `NOPASSWD` and `!authenticate` option, when specified, allows a user to execute commands using sudo without having to authenticate. This should be disabled by making sure that `NOPASSWD` and/or `!authenticate` do not exist in `/etc/sudoers` configuration file or any sudo configuration snippets in `/etc/sudoers.d/`.

SRG-OS-000370-GPOS-00155

CCI-001774

The operating system must employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs.

Utilizing a whitelist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. Verification of white-listed software occurs prior to execution or at system startup. This requirement applies to operating system programs, functions, and services designed to manage system processes and configurations (e.g., group policies).

SRG-OS-000134-GPOS-00068

CCI-001084

The operating system must isolate security functions from nonsecurity functions.

An isolation boundary provides access control and protects the integrity of the hardware, software, and firmware that perform security functions. Security functions are the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. Operating systems implement code separation (i.e., separation of security functions from nonsecurity functions) in a number of ways, including through the provision of security kernels via processor rings or processor modes. For non-kernel code, security function isolation is often achieved through file system protections that serve to protect the code on disk and address space protections that protect executing code. Developers and implementers can increase the assurance in security functions by employing well-defined security policy models; structured, disciplined, and rigorous hardware and software development techniques; and sound system/security engineering principles. Implementation may include isolation of memory space and libraries. Operating systems restrict access to security functions through the use of access control mechanisms and by implementing least privilege capabilities.

SRG-OS-000368-GPOS-00154

CCI-001764

The operating system must prevent program execution in accordance with local policies regarding software program usage and restrictions and/or rules authorizing the terms and conditions of software program usage.

Control of program execution is a mechanism used to prevent execution of unauthorized programs. Some operating systems may provide a capability that runs counter to the mission or provides users with functionality that exceeds mission requirements. This includes functions and services installed at the operating system-level. Some of the programs, installed by default, may be harmful or may not be necessary to support essential organizational operations (e.g., key missions, functions). Removal of executable programs is not always possible; therefore, establishing a method of preventing program execution is critical to maintaining a secure system baseline. Methods for complying with this requirement include restricting execution of programs in certain environments, while preventing execution in other environments; or limiting execution of certain program functionality based on organization-defined criteria (e.g., privileges, subnets, sandboxed environments, or roles).

SRG-OS-000366-GPOS-00153

CCI-001749

The operating system must prevent the installation of patches, service packs, device drivers, or operating system components without verification they have been digitally signed using a certificate that is recognized and approved by the organization.

Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor. Accordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization. Verifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This ensures the software has not been tampered with and that it has been provided by a trusted vendor. Self-signed certificates are disallowed by this requirement. The operating system should not have to verify the software again. This requirement does not mandate DoD certificates for this purpose; however, the certificate used to verify the software must be from an approved CA.

SRG-OS-000365-GPOS-00152

CCI-001814

The operating system must audit the enforcement actions used to restrict access associated with changes to the system.

Without auditing the enforcement of access restrictions against changes to the application configuration, it will be difficult to identify attempted attacks and an audit trail will not be available for forensic investigation for after-the-fact actions. Enforcement actions are the methods or mechanisms used to prevent unauthorized changes to configuration settings. Enforcement action methods may be as simple as denying access to a file based on the application of file permissions (access restriction). Audit items may consist of lists of actions blocked by access restrictions or changes identified after the fact.

SRG-OS-000138-GPOS-00069

CCI-001090

Operating systems must prevent unauthorized and unintended information transfer via shared system resources.

Preventing unauthorized information transfers mitigates the risk of information, including encrypted representations of information, produced by the actions of prior users/roles (or the actions of processes acting on behalf of prior users/roles) from being available to any current users/roles (or current processes) that obtain access to shared system resources (e.g., registers, main memory, hard disks) after those resources have been released back to information systems. The control of information in shared resources is also commonly referred to as object reuse and residual information protection. This requirement generally applies to the design of an information technology product, but it can also apply to the configuration of particular information system components that are, or use, such products. This can be verified by acceptance/validation processes in DoD or other government agencies. There may be shared resources with configurable protections (e.g., files in storage) that may be assessed on specific information system components.

SRG-OS-000142-GPOS-00071

CCI-001095

The operating system must manage excess capacity, bandwidth, or other redundancy to limit the effects of information flooding types of Denial of Service (DoS) attacks.

DoS is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity. Managing excess capacity ensures that sufficient capacity is available to counter flooding attacks. Employing increased capacity and service redundancy may reduce the susceptibility to some DoS attacks. Managing excess capacity may include, for example, establishing selected usage priorities, quotas, or partitioning.

sysctl_net_ipv4_tcp_syncookies

Configure Kernel Parameter to Use TCP Syncookies

To set the runtime status of the `net.ipv4.tcp_syncookies` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.tcp_syncookies=1

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.tcp_syncookies = 1

SRG-OS-000163-GPOS-00072

CCI-001133

The operating system must terminate all network connections associated with a communications session at the end of the session, or as follows: for in-band management sessions (privileged sessions), the session must be terminated after 10 minutes of inactivity; and for user sessions (non-privileged session), the session must be terminated after 15 minutes of inactivity, except to fulfill documented and validated mission requirements.

Terminating an idle session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle session will also free up resources committed by the managed network element. Terminating network connections associated with communications sessions includes, for example, de-allocating associated TCP/IP address/port pairs at the operating system level, and de-allocating networking assignments at the application level if multiple application sessions are using a single operating system-level network connection. This does not mean that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session.

sshd_set_idle_timeout

Set SSH Idle Timeout Interval

SSH allows administrators to set an idle timeout interval. After this interval has passed, the idle user will be automatically logged out.
To set an idle timeout interval, edit the following line in `/etc/ssh/sshd_config` as follows:

    ClientAliveInterval

The timeout interval is given in seconds. To have a timeout of 15 minutes, set interval to 900.
If a shorter timeout has already been set for the login shell, that value will preempt any SSH setting made here. Keep in mind that some processes may stop SSH from correctly detecting that the user is idle.

SRG-OS-000163-GPOS-00072

CCI-001133

The operating system must terminate all network connections associated with a communications session at the end of the session, or as follows: for in-band management sessions (privileged sessions), the session must be terminated after 10 minutes of inactivity; and for user sessions (non-privileged session), the session must be terminated after 15 minutes of inactivity, except to fulfill documented and validated mission requirements.

Terminating an idle session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle session will also free up resources committed by the managed network element. Terminating network connections associated with communications sessions includes, for example, de-allocating associated TCP/IP address/port pairs at the operating system level, and de-allocating networking assignments at the application level if multiple application sessions are using a single operating system-level network connection. This does not mean that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session.

sshd_set_keepalive

Set SSH Client Alive Count

To ensure the SSH idle timeout occurs precisely when the `ClientAliveCountMax` is set, edit `/etc/ssh/sshd_config` as follows:

    ClientAliveCountMax 0

SRG-OS-000184-GPOS-00078

CCI-001190

The operating system must fail to a secure state if system initialization fails, shutdown fails, or aborts fail.

Failure to a known safe state helps prevent systems from failing to a state that may cause loss of data or unauthorized access to system resources. Operating systems that fail suddenly and with no incorporated failure state planning may leave the system available but with a reduced security protection capability. Preserving operating system state information also facilitates system restart and return to the operational mode of the organization with less disruption to mission-essential processes. Abort refers to stopping a program or function before it has finished naturally. The term abort refers to both requested and unexpected terminations.

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000185-GPOS-00079

CCI-001199

The operating system must protect the confidentiality and integrity of all information at rest.

Information at rest refers to the state of information when it is located on a secondary storage device (e.g., disk drive and tape drive, when used for backups) within an operating system. This requirement addresses protection of user-generated data, as well as operating system-specific configuration data. Organizations may choose to employ different mechanisms to achieve confidentiality and integrity protections, as appropriate, in accordance with the security category and/or classification of the information.

encrypt_partitions

Encrypt Partitions

Red Hat Enterprise Linux 6 natively supports partition encryption through the Linux Unified Key Setup-on-disk-format (LUKS) technology. The easiest way to encrypt a partition is during installation time.
For manual installations, select the `Encrypt` checkbox during partition creation to encrypt the partition. When this option is selected the system will prompt for a passphrase to use in decrypting the partition. The passphrase will subsequently need to be entered manually every time the system boots.
For automated/unattended installations, it is possible to use Kickstart by adding the `--encrypted` and `--passphrase=` options to the definition of each partition to be encrypted. For example, the following line would encrypt the root partition:

    part / --fstype=ext3 --size=100 --onpart=hda1 --encrypted --passphrase=PASSPHRASE

Any PASSPHRASE is stored in the Kickstart in plaintext, and the Kickstart must then be protected accordingly. Omitting the `--passphrase=` option from the partition definition will cause the installer to pause and interactively ask for the passphrase during installation.
By default, the `Anaconda` installer uses `aes-xts-plain64` cipher with a minimum `512` bit key size which should be compatible with FIPS enabled.
Detailed information on encrypting partitions using LUKS or LUKS ciphers can be found on the Red Hat Documentation web site:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/chap-Security_Guide-Encryption.html#sect-Security_Guide-LUKS_Disk_Encryption

SRG-OS-000191-GPOS-00080

CCI-001233

The operating system must employ automated mechanisms to determine the state of system components with regard to flaw remediation using the following frequency: continuously, where HBSS is used; 30 days, for any additional internal network scans not covered by HBSS; and annually, for external scans by Computer Network Defense Service Provider (CNDSP).

Without the use of automated mechanisms to scan for security flaws on a continuous and/or periodic basis, the operating system or other system components may remain vulnerable to the exploits presented by undetected software flaws. To support this requirement, the operating system may have an integrated solution incorporating continuous scanning using HBSS and periodic scanning using other tools, as specified in the requirement.

security_patches_up_to_date

Ensure Software Patches Installed

If the system is joined to the Red Hat Network, a Red Hat Satellite Server, or a yum server, run the following command to install updates:

    $ sudo yum update

If the system is not configured to use one of these sources, updates (in the form of RPM packages) can be manually downloaded from the Red Hat Network and installed using `rpm`.

SRG-OS-000205-GPOS-00083

CCI-001312

The operating system must generate error messages that provide information necessary for corrective actions without revealing information that could be exploited by adversaries.

Any operating system providing too much information in error messages risks compromising the data and security of the structure, and content of error messages needs to be carefully considered by the organization. Organizations carefully consider the structure/content of error messages. The extent to which information systems are able to identify and handle error conditions is guided by organizational policy and operational requirements. Information that could be exploited by adversaries includes, for example, erroneous logon attempts with passwords entered by mistake as the username, mission/business information that can be derived from (if not stated explicitly by) information recorded, and personal information, such as account numbers, social security numbers, and credit card numbers.

service_rsyslog_enabled

Enable rsyslog Service

The `rsyslog` service provides syslog-style logging by default on Red Hat Enterprise Linux 6. The `rsyslog` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 rsyslog on

SRG-OS-000205-GPOS-00083

CCI-001312

The operating system must generate error messages that provide information necessary for corrective actions without revealing information that could be exploited by adversaries.

Any operating system providing too much information in error messages risks compromising the data and security of the structure, and content of error messages needs to be carefully considered by the organization. Organizations carefully consider the structure/content of error messages. The extent to which information systems are able to identify and handle error conditions is guided by organizational policy and operational requirements. Information that could be exploited by adversaries includes, for example, erroneous logon attempts with passwords entered by mistake as the username, mission/business information that can be derived from (if not stated explicitly by) information recorded, and personal information, such as account numbers, social security numbers, and credit card numbers.

package_rsyslog_installed

Ensure rsyslog is Installed

Rsyslog is installed by default. The `rsyslog` package can be installed with the following command:

    $ sudo yum install rsyslog

SRG-OS-000205-GPOS-00083

CCI-001312

The operating system must generate error messages that provide information necessary for corrective actions without revealing information that could be exploited by adversaries.

Any operating system providing too much information in error messages risks compromising the data and security of the structure, and content of error messages needs to be carefully considered by the organization. Organizations carefully consider the structure/content of error messages. The extent to which information systems are able to identify and handle error conditions is guided by organizational policy and operational requirements. Information that could be exploited by adversaries includes, for example, erroneous logon attempts with passwords entered by mistake as the username, mission/business information that can be derived from (if not stated explicitly by) information recorded, and personal information, such as account numbers, social security numbers, and credit card numbers.

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000206-GPOS-00084

CCI-001314

The operating system must reveal error messages only to authorized users.

Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the operating system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.

rsyslog_files_permissions

Ensure System Log Files Have Correct Permissions

The file permissions for all log files written by `rsyslog` should be set to 600, or more restrictive. These log files are determined by the second part of each Rule line in `/etc/rsyslog.conf` and typically all appear in `/var/log`. For each log file LOGFILE referenced in `/etc/rsyslog.conf`, run the following command to inspect the file's permissions:

    $ ls -l LOGFILE

If the permissions are not 600 or more restrictive, run the following command to correct this:

    $ sudo chmod 0600 LOGFILE

SRG-OS-000206-GPOS-00084

CCI-001314

The operating system must reveal error messages only to authorized users.

Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the operating system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.

rsyslog_files_ownership

Ensure Log Files Are Owned By Appropriate User

The owner of all log files written by `rsyslog` should be root. These log files are determined by the second part of each Rule line in `/etc/rsyslog.conf` and typically all appear in `/var/log`. For each log file LOGFILE referenced in `/etc/rsyslog.conf`, run the following command to inspect the file's owner:

    $ ls -l LOGFILE

If the owner is not `root`, run the following command to correct this:

    $ sudo chown root LOGFILE

SRG-OS-000206-GPOS-00084

CCI-001314

The operating system must reveal error messages only to authorized users.

Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the operating system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.

rsyslog_files_groupownership

Ensure Log Files Are Owned By Appropriate Group

The group-owner of all log files written by `rsyslog` should be root. These log files are determined by the second part of each Rule line in `/etc/rsyslog.conf` and typically all appear in `/var/log`. For each log file LOGFILE referenced in `/etc/rsyslog.conf`, run the following command to inspect the file's group owner:

    $ ls -l LOGFILE

If the owner is not `root`, run the following command to correct this:

    $ sudo chgrp root LOGFILE

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

gconf_gdm_set_login_banner_text

Set GUI Warning Banner Text

To set the text shown by the GNOME Display Manager in the login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gdm/simple-greeter/banner_message_text \
      "Text of the warning banner here"

When entering a warning banner that spans several lines, remember to begin and end the string with `"`. This command writes directly either to the `/etc/gconf/gconf.xml.mandatory/%gconf-tree.xml` if it exists or to the file `/etc/gconf/gconf.xml.mandatory/apps/gdm/simple-greeter/%gconf.xml`. Either of these files can later be edited directly if necessary.

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

gconf_gdm_set_login_banner_text

Set GUI Warning Banner Text

To set the text shown by the GNOME Display Manager in the login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gdm/simple-greeter/banner_message_text \
      "Text of the warning banner here"

When entering a warning banner that spans several lines, remember to begin and end the string with `"`. This command writes directly either to the `/etc/gconf/gconf.xml.mandatory/%gconf-tree.xml` if it exists or to the file `/etc/gconf/gconf.xml.mandatory/apps/gdm/simple-greeter/%gconf.xml`. Either of these files can later be edited directly if necessary.

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

gconf_gdm_set_login_banner_text

Set GUI Warning Banner Text

To set the text shown by the GNOME Display Manager in the login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gdm/simple-greeter/banner_message_text \
      "Text of the warning banner here"

When entering a warning banner that spans several lines, remember to begin and end the string with `"`. This command writes directly either to the `/etc/gconf/gconf.xml.mandatory/%gconf-tree.xml` if it exists or to the file `/etc/gconf/gconf.xml.mandatory/apps/gdm/simple-greeter/%gconf.xml`. Either of these files can later be edited directly if necessary.

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

gconf_gdm_set_login_banner_text

Set GUI Warning Banner Text

To set the text shown by the GNOME Display Manager in the login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gdm/simple-greeter/banner_message_text \
      "Text of the warning banner here"

When entering a warning banner that spans several lines, remember to begin and end the string with `"`. This command writes directly either to the `/etc/gconf/gconf.xml.mandatory/%gconf-tree.xml` if it exists or to the file `/etc/gconf/gconf.xml.mandatory/apps/gdm/simple-greeter/%gconf.xml`. Either of these files can later be edited directly if necessary.

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

gconf_gdm_set_login_banner_text

Set GUI Warning Banner Text

To set the text shown by the GNOME Display Manager in the login screen, run the following command:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gdm/simple-greeter/banner_message_text \
      "Text of the warning banner here"

When entering a warning banner that spans several lines, remember to begin and end the string with `"`. This command writes directly either to the `/etc/gconf/gconf.xml.mandatory/%gconf-tree.xml` if it exists or to the file `/etc/gconf/gconf.xml.mandatory/apps/gdm/simple-greeter/%gconf.xml`. Either of these files can later be edited directly if necessary.

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

banner_etc_issue

Modify the System Login Banner

To configure the system login banner:
Edit `/etc/issue`. Replace the default text with a message compliant with the local site policy or a legal disclaimer. The DoD required text is either:
`You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions:
-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.
-At any time, the USG may inspect and seize data stored on this IS.
-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.
-This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy.
-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.`
OR:
`Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.
This is a DoD interest computer system. All DoD interest computer systems and related equipment are intended for the communication, transmission, processing, and storage of official U.S. Government or other authorized information only. All DoD interest computer systems are subject to monitoring at all times to ensure proper functioning of equipment and systems including security devices and systems, to prevent unauthorized use and violations of statutes and security regulations, to deter criminal activity, and for other similar purposes. Any user of a DoD interest computer system should be aware that any information placed in the system is subject to monitoring and is not subject to any expectation of privacy.
If monitoring of this or any other DoD interest computer system reveals possible evidence of violation of criminal statutes, this evidence and any other related information, including identification information about the user, may be provided to law enforcement officials. If monitoring of this or any other DoD interest computer systems reveals violations of security regulations or unauthorized use, employees who violate security regulations or make unauthorized use of DoD interest computer systems are subject to appropriate disciplinary action.
Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.`
OR:
`I've read & consent to terms in IS user agreem't.`

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

banner_etc_issue

Modify the System Login Banner

To configure the system login banner:
Edit `/etc/issue`. Replace the default text with a message compliant with the local site policy or a legal disclaimer. The DoD required text is either:
`You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions:
-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.
-At any time, the USG may inspect and seize data stored on this IS.
-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.
-This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy.
-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.`
OR:
`Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.
This is a DoD interest computer system. All DoD interest computer systems and related equipment are intended for the communication, transmission, processing, and storage of official U.S. Government or other authorized information only. All DoD interest computer systems are subject to monitoring at all times to ensure proper functioning of equipment and systems including security devices and systems, to prevent unauthorized use and violations of statutes and security regulations, to deter criminal activity, and for other similar purposes. Any user of a DoD interest computer system should be aware that any information placed in the system is subject to monitoring and is not subject to any expectation of privacy.
If monitoring of this or any other DoD interest computer system reveals possible evidence of violation of criminal statutes, this evidence and any other related information, including identification information about the user, may be provided to law enforcement officials. If monitoring of this or any other DoD interest computer systems reveals violations of security regulations or unauthorized use, employees who violate security regulations or make unauthorized use of DoD interest computer systems are subject to appropriate disciplinary action.
Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.`
OR:
`I've read & consent to terms in IS user agreem't.`

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

banner_etc_issue

Modify the System Login Banner

To configure the system login banner:
Edit `/etc/issue`. Replace the default text with a message compliant with the local site policy or a legal disclaimer. The DoD required text is either:
`You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions:
-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.
-At any time, the USG may inspect and seize data stored on this IS.
-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.
-This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy.
-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.`
OR:
`Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.
This is a DoD interest computer system. All DoD interest computer systems and related equipment are intended for the communication, transmission, processing, and storage of official U.S. Government or other authorized information only. All DoD interest computer systems are subject to monitoring at all times to ensure proper functioning of equipment and systems including security devices and systems, to prevent unauthorized use and violations of statutes and security regulations, to deter criminal activity, and for other similar purposes. Any user of a DoD interest computer system should be aware that any information placed in the system is subject to monitoring and is not subject to any expectation of privacy.
If monitoring of this or any other DoD interest computer system reveals possible evidence of violation of criminal statutes, this evidence and any other related information, including identification information about the user, may be provided to law enforcement officials. If monitoring of this or any other DoD interest computer systems reveals violations of security regulations or unauthorized use, employees who violate security regulations or make unauthorized use of DoD interest computer systems are subject to appropriate disciplinary action.
Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.`
OR:
`I've read & consent to terms in IS user agreem't.`

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

banner_etc_issue

Modify the System Login Banner

To configure the system login banner:
Edit `/etc/issue`. Replace the default text with a message compliant with the local site policy or a legal disclaimer. The DoD required text is either:
`You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions:
-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.
-At any time, the USG may inspect and seize data stored on this IS.
-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.
-This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy.
-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.`
OR:
`Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.
This is a DoD interest computer system. All DoD interest computer systems and related equipment are intended for the communication, transmission, processing, and storage of official U.S. Government or other authorized information only. All DoD interest computer systems are subject to monitoring at all times to ensure proper functioning of equipment and systems including security devices and systems, to prevent unauthorized use and violations of statutes and security regulations, to deter criminal activity, and for other similar purposes. Any user of a DoD interest computer system should be aware that any information placed in the system is subject to monitoring and is not subject to any expectation of privacy.
If monitoring of this or any other DoD interest computer system reveals possible evidence of violation of criminal statutes, this evidence and any other related information, including identification information about the user, may be provided to law enforcement officials. If monitoring of this or any other DoD interest computer systems reveals violations of security regulations or unauthorized use, employees who violate security regulations or make unauthorized use of DoD interest computer systems are subject to appropriate disciplinary action.
Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.`
OR:
`I've read & consent to terms in IS user agreem't.`

SRG-OS-000228-GPOS-00088

CCI-001384

Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Display of a standardized and approved use notification before granting access to the publicly accessible operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't."

banner_etc_issue

Modify the System Login Banner

To configure the system login banner:
Edit `/etc/issue`. Replace the default text with a message compliant with the local site policy or a legal disclaimer. The DoD required text is either:
`You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions:
-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.
-At any time, the USG may inspect and seize data stored on this IS.
-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.
-This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy.
-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.`
OR:
`Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.
This is a DoD interest computer system. All DoD interest computer systems and related equipment are intended for the communication, transmission, processing, and storage of official U.S. Government or other authorized information only. All DoD interest computer systems are subject to monitoring at all times to ensure proper functioning of equipment and systems including security devices and systems, to prevent unauthorized use and violations of statutes and security regulations, to deter criminal activity, and for other similar purposes. Any user of a DoD interest computer system should be aware that any information placed in the system is subject to monitoring and is not subject to any expectation of privacy.
If monitoring of this or any other DoD interest computer system reveals possible evidence of violation of criminal statutes, this evidence and any other related information, including identification information about the user, may be provided to law enforcement officials. If monitoring of this or any other DoD interest computer systems reveals violations of security regulations or unauthorized use, employees who violate security regulations or make unauthorized use of DoD interest computer systems are subject to appropriate disciplinary action.
Use of this or any other DoD interest computer system constitutes consent to monitoring at all times.`
OR:
`I've read & consent to terms in IS user agreem't.`

SRG-OS-000239-GPOS-00089

CCI-001403

The operating system must audit all account modifications.

Once an attacker establishes access to a system, the attacker often attempts to create a persistent method of reestablishing access. One way to accomplish this is for the attacker to modify an existing account. Auditing account modification actions provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000240-GPOS-00090

CCI-001404

The operating system must audit all account disabling actions.

When operating system accounts are disabled, user accessibility is affected. Accounts are utilized for identifying individual users or for identifying the operating system processes themselves. In order to detect and respond to events affecting user accessibility and system processing, operating systems must audit account disabling actions and, as required, notify the appropriate individuals so they can investigate the event. Such a capability greatly reduces the risk that operating system accessibility will be negatively affected for extended periods of time and provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000241-GPOS-00091

CCI-001405

The operating system must audit all account removal actions.

When operating system accounts are removed, user accessibility is affected. Accounts are utilized for identifying individual users or for identifying the operating system processes themselves. In order to detect and respond to events affecting user accessibility and system processing, operating systems must audit account removal actions and, as required, notify the appropriate individuals so they can investigate the event. Such a capability greatly reduces the risk that operating system accessibility will be negatively affected for extended periods of time and provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000250-GPOS-00093

CCI-001453

The operating system must implement cryptography to protect the integrity of remote access sessions.

Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Remote access (e.g., RDP) is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Cryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.

sshd_use_approved_macs

Use Only Approved MACs

Limit the MACs to those hash algorithms which are FIPS-approved. The following line in `/etc/ssh/sshd_config` demonstrates use of FIPS-approved MACs:

    MACs hmac-sha2-512,hmac-sha2-256,hmac-sha1

The man page `sshd_config(5)` contains a list of supported MACs.

SRG-OS-000250-GPOS-00093

CCI-001453

The operating system must implement cryptography to protect the integrity of remote access sessions.

Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Remote access (e.g., RDP) is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Cryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.

ldap_client_start_tls

Configure LDAP Client to Use TLS For All Transactions

Configure LDAP to enforce TLS use. First, edit the file `/etc/pam_ldap.conf`, and add or correct the following lines:

    ssl start_tls

Then review the LDAP server and ensure TLS has been configured.

SRG-OS-000250-GPOS-00093

CCI-001453

The operating system must implement cryptography to protect the integrity of remote access sessions.

Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Remote access (e.g., RDP) is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Cryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.

ldap_client_tls_cacertpath

Configure Certificate Directives for LDAP Use of TLS

Ensure a copy of a trusted CA certificate has been placed in the file `/etc/pki/tls/CA/cacert.pem`. Configure LDAP to enforce TLS use and to trust certificates signed by that CA. First, edit the file `/etc/pam_ldap.conf`, and add or correct either of the following lines:

    tls_cacertdir /etc/pki/tls/CA

or

    tls_cacertfile /etc/pki/tls/CA/cacert.pem

Then review the LDAP server and ensure TLS has been configured.

SRG-OS-000254-GPOS-00095 | CCI-001464 | The operating system must initiate session audits at system start-up. | If auditing is enabled late in the start-up process, the actions of some start-up processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created. |

SRG-OS-000364-GPOS-00151

CCI-001813

The operating system must enforce access restrictions.

Failure to provide logical access restrictions associated with changes to system configuration may have significant effects on the overall security of the system. When dealing with access restrictions pertaining to change control, it should be noted that any changes to the hardware, software, and/or firmware components of the operating system can have significant effects on the overall security of the system. Accordingly, only qualified and authorized individuals should be allowed to obtain access to operating system components for the purposes of initiating changes, including upgrades and modifications. Logical access restrictions include, for example, controls that restrict access to workflow automation, media libraries, abstract layers (e.g., changes implemented into third-party interfaces rather than directly into information systems), and change windows (e.g., changes occur only during specified times, making unauthorized changes easy to discover).

SRG-OS-000255-GPOS-00096

CCI-001487

The operating system must produce audit records containing information to establish the identity of any individual or process associated with the event.

Without information that establishes the identity of the subjects (i.e., users or processes acting on behalf of users) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.

audit_rules_time_stime

Record Attempts to Alter Time Through stime

Add the following line to `/etc/audit/audit.rules` for both 32-bit and 64-bit systems:

    # audit_time_rules
    -a always,exit -F arch=b32 -S stime -k audit_time_rules

Since the 64-bit version of the "stime" system call is not defined in the audit lookup table, the corresponding "-F arch=b64" form of this rule is not expected to be defined on 64-bit systems (the aforementioned "-F arch=b32" stime rule form itself is sufficient for both 32-bit and 64-bit systems). The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000255-GPOS-00096

CCI-001487

The operating system must produce audit records containing information to establish the identity of any individual or process associated with the event.

Without information that establishes the identity of the subjects (i.e., users or processes acting on behalf of users) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.

audit_rules_time_settimeofday

Record attempts to alter time through settimeofday

On a 32-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b32 -S settimeofday -k audit_time_rules

On a 64-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b64 -S settimeofday -k audit_time_rules

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000255-GPOS-00096

CCI-001487

The operating system must produce audit records containing information to establish the identity of any individual or process associated with the event.

Without information that establishes the identity of the subjects (i.e., users or processes acting on behalf of users) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.

audit_rules_time_watch_localtime

Record Attempts to Alter the localtime File

Add the following to `/etc/audit/audit.rules`:

    -w /etc/localtime -p wa -k audit_time_rules

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport and should always be used.

SRG-OS-000255-GPOS-00096

CCI-001487

The operating system must produce audit records containing information to establish the identity of any individual or process associated with the event.

Without information that establishes the identity of the subjects (i.e., users or processes acting on behalf of users) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.

audit_rules_time_clock_settime

Record Attempts to Alter Time Through clock_settime

On a 32-bit system, add the following to `/etc/audit/audit.rules`:

    # time-change
    -a always,exit -F arch=b32 -S clock_settime -F a0=0x0 -F key=time-change

On a 64-bit system, add the following to `/etc/audit/audit.rules`:

    # time-change
    -a always,exit -F arch=b64 -S clock_settime -F a0=0x0 -F key=time-change

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000255-GPOS-00096

CCI-001487

The operating system must produce audit records containing information to establish the identity of any individual or process associated with the event.

Without information that establishes the identity of the subjects (i.e., users or processes acting on behalf of users) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.

audit_rules_time_adjtimex

Record attempts to alter time through adjtimex

On a 32-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b32 -S adjtimex -k audit_time_rules

On a 64-bit system, add the following to `/etc/audit/audit.rules`:

    # audit_time_rules
    -a always,exit -F arch=b64 -S adjtimex -k audit_time_rules

The -k option allows for the specification of a key in string form that can be used for better reporting capability through ausearch and aureport. Multiple system calls can be defined on the same line to save space if desired, but is not required. See an example of multiple combined syscalls:

    -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k audit_time_rules

SRG-OS-000255-GPOS-00096

CCI-001487

The operating system must produce audit records containing information to establish the identity of any individual or process associated with the event.

Without information that establishes the identity of the subjects (i.e., users or processes acting on behalf of users) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.

service_auditd_enabled

Enable auditd Service

The `auditd` service is an essential userspace component of the Linux Auditing System, as it is responsible for writing audit records to disk. The `auditd` service can be enabled with the following command:

    $ sudo chkconfig --level 2345 auditd on

SRG-OS-000256-GPOS-00097

CCI-001493

The operating system must protect audit tools from unauthorized access.

Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. Operating systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools and the corresponding rights the user enjoys in order to make access decisions regarding the access to 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.

rpm_verify_permissions

Verify and Correct File Permissions with RPM

The RPM package management system can check file access permissions of installed software packages, including many that are important to system security. After locating a file with incorrect permissions which can be found with

    $ rpm -Va | grep '^.M'

, run the following command to determine which package owns it:

    $ rpm -qf FILENAME

Next, run the following command to reset its permissions to the correct values:

    $ sudo rpm --setperms PACKAGENAME

SRG-OS-000257-GPOS-00098

CCI-001494

The operating system must protect audit tools from unauthorized modification.

Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. Operating systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools and the corresponding rights the user has in order to make access decisions regarding the modification 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.

rpm_verify_permissions

Verify and Correct File Permissions with RPM

The RPM package management system can check file access permissions of installed software packages, including many that are important to system security. After locating a file with incorrect permissions which can be found with

    $ rpm -Va | grep '^.M'

, run the following command to determine which package owns it:

    $ rpm -qf FILENAME

Next, run the following command to reset its permissions to the correct values:

    $ sudo rpm --setperms PACKAGENAME

SRG-OS-000257-GPOS-00098

CCI-001494

The operating system must protect audit tools from unauthorized modification.

Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. Operating systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools and the corresponding rights the user has in order to make access decisions regarding the modification 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.

rpm_verify_ownership

Verify and Correct Ownership with RPM

The RPM package management system can check file ownership permissions of installed software packages, including many that are important to system security. After locating a file with incorrect permissions, which can be found with

    rpm -Va | grep "^.....\(U\|.G\)"

run the following command to determine which package owns it:

    $ rpm -qf FILENAME

Next, run the following command to reset its permissions to the correct values:

    $ sudo rpm --setugids PACKAGENAME

SRG-OS-000258-GPOS-00099

CCI-001495

The operating system must protect audit tools from unauthorized deletion.

Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. Operating systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools and the corresponding rights the user has in order to make access decisions regarding the deletion 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.

rpm_verify_permissions

Verify and Correct File Permissions with RPM

The RPM package management system can check file access permissions of installed software packages, including many that are important to system security. After locating a file with incorrect permissions which can be found with

    $ rpm -Va | grep '^.M'

, run the following command to determine which package owns it:

    $ rpm -qf FILENAME

Next, run the following command to reset its permissions to the correct values:

    $ sudo rpm --setperms PACKAGENAME

SRG-OS-000363-GPOS-00150

CCI-001744

The operating system must notify designated personnel if baseline configurations are changed in an unauthorized manner.

Unauthorized changes to the baseline configuration could make the system vulnerable to various attacks or allow unauthorized access to the operating system. Changes to operating system configurations can have unintended side effects, some of which may be relevant to security. Detecting such changes and providing an automated response can help avoid unintended, negative consequences that could ultimately affect the security state of the operating system. The operating system's IMO/ISSO and SAs must be notified via email and/or monitoring system trap when there is an unauthorized modification of a configuration item.

SRG-OS-000362-GPOS-00149

CCI-001812

The operating system must prohibit user installation of system software without explicit privileged status.

Allowing regular users to install software, without explicit privileges, creates the risk that untested or potentially malicious software will be installed on the system. Explicit privileges (escalated or administrative privileges) provide the regular user with explicit capabilities and control that exceeds the rights of a regular user. Operating system functionality will vary, and while users are not permitted to install unapproved software, there may be instances where the organization allows the user to install approved software packages, such as from an approved software repository. The operating system or software configuration management utility must enforce control of software installation by users based upon what types of software installations are permitted (e.g., updates and security patches to existing software) and what types of installations are prohibited (e.g., software whose pedigree with regard to being potentially malicious is unknown or suspect) by the organization.

SRG-OS-000259-GPOS-00100

CCI-001499

The operating system must limit privileges to change software resident within software libraries.

If the operating system were to allow any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process. This requirement applies to operating systems with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs which execute with escalated privileges. Only qualified and authorized individuals shall be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.

file_ownership_library_dirs

Verify that Shared Library Files Have Root Ownership

System-wide shared library files, which are linked to executables during process load time or run time, are stored in the following directories by default:

    /lib
    /lib64
    /usr/lib
    /usr/lib64

Kernel modules, which can be added to the kernel during runtime, are also stored in `/lib/modules`. All files in these directories should be owned by the `root` user. If the directory, or any file in these directories, is found to be owned by a user other than root correct its ownership with the following command:

    $ sudo chown root FILE

SRG-OS-000259-GPOS-00100

CCI-001499

The operating system must limit privileges to change software resident within software libraries.

If the operating system were to allow any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process. This requirement applies to operating systems with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs which execute with escalated privileges. Only qualified and authorized individuals shall be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.

file_permissions_binary_dirs

Verify that System Executables Have Restrictive Permissions

System executables are stored in the following directories by default:

    /bin
    /sbin
    /usr/bin
    /usr/libexec
    /usr/local/bin
    /usr/local/sbin
    /usr/sbin

All files in these directories should not be group-writable or world-writable. If any file FILE in these directories is found to be group-writable or world-writable, correct its permission with the following command:

    $ sudo chmod go-w FILE

SRG-OS-000259-GPOS-00100

CCI-001499

The operating system must limit privileges to change software resident within software libraries.

If the operating system were to allow any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process. This requirement applies to operating systems with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs which execute with escalated privileges. Only qualified and authorized individuals shall be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.

file_ownership_binary_dirs

Verify that System Executables Have Root Ownership

System executables are stored in the following directories by default:

    /bin
    /sbin
    /usr/bin
    /usr/libexec
    /usr/local/bin
    /usr/local/sbin
    /usr/sbin

All files in these directories should be owned by the `root` user. If any file FILE in these directories is found to be owned by a user other than root, correct its ownership with the following command:

    $ sudo chown root FILE

SRG-OS-000259-GPOS-00100

CCI-001499

The operating system must limit privileges to change software resident within software libraries.

If the operating system were to allow any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process. This requirement applies to operating systems with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs which execute with escalated privileges. Only qualified and authorized individuals shall be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.

file_permissions_library_dirs

Verify that Shared Library Files Have Restrictive Permissions

System-wide shared library files, which are linked to executables during process load time or run time, are stored in the following directories by default:

    /lib
    /lib64
    /usr/lib
    /usr/lib64

Kernel modules, which can be added to the kernel during runtime, are stored in `/lib/modules`. All files in these directories should not be group-writable or world-writable. If any file in these directories is found to be group-writable or world-writable, correct its permission with the following command:

    $ sudo chmod go-w FILE

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

sysconfig_networking_bootproto_ifcfg

Disable DHCP Client

For each interface on the system (e.g. eth0), edit `/etc/sysconfig/network-scripts/ifcfg-interface` and make the following changes:

- Correct the BOOTPROTO line to read:

      BOOTPROTO=none

- Add or correct the following lines, substituting the appropriate values based on your site's addressing scheme:

      NETMASK=255.255.255.0
      IPADDR=192.168.1.2
      GATEWAY=192.168.1.1

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

package_dhcp_removed

Uninstall DHCP Server Package

If the system does not need to act as a DHCP server, the dhcp package can be uninstalled. The `dhcp` package can be removed with the following command:

    $ sudo yum erase dhcp

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

service_dhcpd_disabled

Disable DHCP Service

The `dhcpd` service should be disabled on any system that does not need to act as a DHCP server. The `dhcpd` service can be disabled with the following command:

    $ sudo chkconfig dhcpd off

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

tftpd_uses_secure_mode

Ensure tftp Daemon Uses Secure Mode

If running the `tftp` service is necessary, it should be configured to change its root directory at startup. To do so, ensure `/etc/xinetd.d/tftp` includes `-s` as a command line argument, as shown in the following example (which is also the default):

    server_args = -s /var/lib/tftpboot

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

service_named_disabled

Disable DNS Server

The `named` service can be disabled with the following command:

    $ sudo chkconfig named off

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

package_bind_removed

Uninstall bind Package

To remove the `bind` package, which contains the `named` service, run the following command:

    $ sudo yum erase bind

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

package_openldap-servers_removed

Uninstall openldap-servers Package

The `openldap-servers` package should be removed if not in use. Is this system the OpenLDAP server? If not, remove the package.

    $ sudo yum erase openldap-servers

The openldap-servers RPM is not installed by default on Red Hat Enterprise Linux 6 systems. It is needed only by the OpenLDAP server, not by the clients which use LDAP for authentication. If the system is not intended for use as an LDAP Server it should be removed.

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

postfix_client_configure_mail_alias

Configure System to Forward All Mail For The Root Account

Set up an alias for root that forwards to a monitored email address:

    $ sudo echo "root: " >> /etc/aliases
    $ sudo newaliases

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

service_avahi-daemon_disabled

Disable Avahi Server Software

The `avahi-daemon` service can be disabled with the following command:

    $ sudo chkconfig avahi-daemon off

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

xwindows_runlevel_setting

Disable X Windows Startup By Setting Runlevel

Setting the system's runlevel to 3 will prevent automatic startup of the X server. To do so, ensure the following line in `/etc/inittab` features a `3` as shown:

    id:3:initdefault:

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

package_xorg-x11-server-common_removed

Remove the X Windows Package Group

Removing all packages which constitute the X Window System ensures users or malicious software cannot start X. To do so, run the following command:

    $ sudo yum groupremove "X Window System"

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

ensure_logrotate_activated

Ensure Logrotate Runs Periodically

The `logrotate` utility allows for the automatic rotation of log files. The frequency of rotation is specified in `/etc/logrotate.conf`, which triggers a cron task. To configure logrotate to run daily, add or correct the following line in `/etc/logrotate.conf`:

    # rotate log files frequency
    daily

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

sysctl_net_ipv6_conf_default_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for Interfaces By Default

To set the runtime status of the `net.ipv6.conf.default.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.default.accept_source_route = 0

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

sysctl_net_ipv6_conf_all_accept_source_route

Configure Kernel Parameter for Accepting Source-Routed Packets for All Interfaces

To set the runtime status of the `net.ipv6.conf.all.accept_source_route` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.accept_source_route = 0

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

sysctl_net_ipv6_conf_all_forwarding

Disable Kernel Parameter for IPv6 Forwarding

To set the runtime status of the `net.ipv6.conf.all.forwarding` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv6.conf.all.forwarding=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv6.conf.all.forwarding = 0

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

sysctl_net_ipv4_ip_forward

Disable Kernel Parameter for IP Forwarding

To set the runtime status of the `net.ipv4.ip_forward` kernel parameter, run the following command:

    $ sudo sysctl -w net.ipv4.ip_forward=0

If this is not the system's default value, add the following line to `/etc/sysctl.conf`:

    net.ipv4.ip_forward = 0

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

no_password_auth_for_systemaccounts

Ensure that System Accounts Are Locked

Some accounts are not associated with a human user of the system, and exist to perform some administrative function. An attacker should not be able to log into these accounts.
System accounts are those user accounts with a user ID less than UID_MIN, where value of the UID_MIN directive is set in `/etc/login.defs` configuration file. In the default configuration UID_MIN is set to 500, thus system accounts are those user accounts with a user ID less than 500. If any system account SYSACCT (other than root) has an unlocked password, disable it with the command:

    $ sudo passwd -l SYSACCT

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

accounts_no_uid_except_zero

Verify Only Root Has UID 0

If any account other than root has a UID of 0, this misconfiguration should be investigated and the accounts other than root should be removed or have their UID changed.

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

gid_passwd_group_same

All GIDs referenced in /etc/passwd must be defined in /etc/group

Add a group to the system for each GID referenced without a corresponding group.

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

root_path_no_dot

Ensure that Root's Path Does Not Include Relative Paths or Null Directories

Ensure that none of the directories in root's path is equal to a single `.` character, or that it contains any instances that lead to relative path traversal, such as `..` or beginning a path without the slash (`/`) character. Also ensure that there are no "empty" elements in the path, such as in these examples:

    PATH=:/bin
    PATH=/bin:
    PATH=/bin::/sbin

These empty elements have the same effect as a single `.` character.

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

accounts_root_path_dirs_no_write

Ensure that Root's Path Does Not Include World or Group-Writable Directories

For each element in root's path, run:

    $ sudo ls -ld DIR

and ensure that write permissions are disabled for group and other.

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

accounts_umask_etc_login_defs

Ensure the Default Umask is Set Correctly in login.defs

To ensure the default umask controlled by `/etc/login.defs` is set properly, add or correct the `UMASK` setting in `/etc/login.defs` to read as follows:

    UMASK

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

accounts_umask_etc_bashrc

Ensure the Default Bash Umask is Set Correctly

To ensure the default umask for users of the Bash shell is set properly, add or correct the `umask` setting in `/etc/bashrc` to read as follows:

    umask

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

accounts_umask_etc_csh_cshrc

Ensure the Default C Shell Umask is Set Correctly

To ensure the default umask for users of the C shell is set properly, add or correct the `umask` setting in `/etc/csh.cshrc` to read as follows:

    umask

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

accounts_umask_etc_profile

Ensure the Default Umask is Set Correctly in /etc/profile

To ensure the default umask controlled by `/etc/profile` is set properly, add or correct the `umask` setting in `/etc/profile` to read as follows:

    umask

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

accounts_password_pam_maxrepeat

Set Password to Maximum of Three Consecutive Repeating Characters

The pam_cracklib module's `maxrepeat` parameter controls requirements for consecutive repeating characters. When set to a positive number, it will reject passwords which contain more than that number of consecutive characters. Add `maxrepeat=` after pam_cracklib.so to prevent a run of ( + 1) or more identical characters:

    password required pam_cracklib.so maxrepeat=

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

display_login_attempts

Set Last Login/Access Notification

To configure the system to notify users of last login/access using `pam_lastlog`, add the following line immediately after `session required pam_limits.so`:

    session       required     pam_lastlog.so showfailed

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

file_owner_etc_gshadow

Verify User Who Owns gshadow File

To properly set the owner of `/etc/gshadow`, run the command:

    $ sudo chown root /etc/gshadow

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

service_autofs_disabled

Disable the Automounter

The `autofs` daemon mounts and unmounts filesystems, such as user home directories shared via NFS, on demand. In addition, autofs can be used to handle removable media, and the default configuration provides the cdrom device as `/misc/cd`. However, this method of providing access to removable media is not common, so autofs can almost always be disabled if NFS is not in use. Even if NFS is required, it may be possible to configure filesystem mounts statically by editing `/etc/fstab` rather than relying on the automounter.
The `autofs` service can be disabled with the following command:

    $ sudo chkconfig autofs off

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

installed_OS_is_certified

The Installed Operating System Is Vendor Supported and Certified

The installed operating system must be maintained and certified by a vendor. Red Hat Enterprise Linux is supported by Red Hat, Inc. As the Red Hat Enterprise Linux vendor, Red Hat, Inc. is responsible for providing security patches as well as meeting and maintaining goverment certifications and standards.

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

gconf_gnome_disable_ctrlaltdel_reboot

Disable Ctrl-Alt-Del Reboot Key Sequence in GNOME

By default, `GNOME` will reboot the system if the `Ctrl-Alt-Del` key sequence is pressed.
To configure the system to ignore the `Ctrl-Alt-Del` key sequence from the Graphical User Interface (GUI) instead of rebooting the system, run the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type string \
      --set /apps/gnome_settings_daemon/keybindings/power ""

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

gnome_gdm_disable_guest_login

Disable GDM Guest Login

The GNOME Display Manager (GDM) can allow users to login without credentials which can be useful for public kiosk scenarios. Allowing users to login without credentials or "guest" account access has inherent security risks and should be disabled. To do disable timed logins or guest account access, set the `TimedLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    TimedLoginEnable=false

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

gconf_gnome_disable_restart_shutdown

Disable the GNOME Login Restart and Shutdown Buttons

In the default graphical environment, users logging directly into the system are greeted with a login screen that allows any user, known or unknown, the ability shutdown or restart the system. This functionality should be disabled by running the following:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_restart_buttons true

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

gnome_gdm_disable_automatic_login

Disable GDM Automatic Login

The GNOME Display Manager (GDM) can allow users to automatically login without user interaction or credentials. User should always be required to authenticate themselves to the system that they are authorized to use. To disable user ability to automatically login to the system, set the `AutomaticLoginEnable` to `false` in the `[daemon]` section in `/etc/gdm/custom.conf`. For example:

    [daemon]
    AutomaticLoginEnable=false

SRG-OS-000360-GPOS-00147

CCI-000366

The operating system must enforce dual authorization for movement and/or deletion of all audit information, when such movement or deletion is not part of an authorized automatic process.

An authorized user may intentionally or accidentally move or delete audit records without those specific actions being authorized. All bulk manipulation of audit information must be authorized via automatic processes. Any manual manipulation of audit information must require dual authorization. Dual authorization mechanisms require the approval of two authorized individuals to execute.

gconf_gdm_disable_user_list

Disable the User List

In the default graphical environment, users logging directly into the system are greeted with a login screen that displays all known users. This functionality should be disabled.
Run the following command to disable the user list:

    $ sudo gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
      --type bool \
      --set /apps/gdm/simple-greeter/disable_user_list true

SRG-OS-000266-GPOS-00101

CCI-001619

The operating system must enforce password complexity by requiring that at least one special character be used.

Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity or strength is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password complexity is one factor in determining how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised. Special characters are those characters that are not alphanumeric. Examples include: ~ ! @ # $ % ^ *.

accounts_password_pam_ocredit

Set Password Strength Minimum Special Characters

The pam_cracklib module's `ocredit=` parameter controls requirements for usage of special (or ``other'') characters in a password. When set to a negative number, any password will be required to contain that many special characters. When set to a positive number, pam_cracklib will grant +1 additional length credit for each special character. Add `ocredit=` after pam_cracklib.so to require use of a special character in passwords.

SRG-OS-000359-GPOS-00146

CCI-001890

The operating system must record time stamps for audit records that can be mapped to Coordinated Universal Time (UTC) or Greenwich Mean Time (GMT).

If time stamps are not consistently applied and there is no common time reference, it is difficult to perform forensic analysis. Time stamps generated by the operating system include date and time. Time is commonly expressed in Coordinated Universal Time (UTC), a modern continuation of Greenwich Mean Time (GMT), or local time with an offset from UTC.

SRG-OS-000269-GPOS-00103

CCI-001665

In the event of a system failure, the operating system must preserve any information necessary to determine cause of failure and any information necessary to return to operations with least disruption to mission processes.

Failure to a known state can address safety or security in accordance with the mission/business needs of the organization. Failure to a known secure state helps prevent a loss of confidentiality, integrity, or availability in the event of a failure of the information system or a component of the system. Preserving operating system state information helps to facilitate operating system restart and return to the operational mode of the organization with least disruption to mission/business processes.

SRG-OS-000358-GPOS-00145

CCI-001889

The operating system must record time stamps for audit records that meet a minimum granularity of one second for a minimum degree of precision.

Without sufficient granularity of time stamps, it is not possible to adequately determine the chronological order of records. Time stamps generated by the operating system include date and time. Granularity of time measurements refers to the degree of synchronization between information system clocks and reference clocks.

SRG-OS-000274-GPOS-00104

CCI-001683

The operating system must notify system administrators and ISSOs when accounts are created.

Once an attacker establishes access to a system, the attacker often attempts to create a persistent method of reestablishing access. One way to accomplish this is for the attacker to create a new account. Notification of account creation is one method for mitigating this risk. A comprehensive account management process will ensure an audit trail which documents the creation of operating system user accounts and notifies administrators and ISSOs that it exists. Such a process greatly reduces the risk that accounts will be surreptitiously created and provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000275-GPOS-00105

CCI-001684

The operating system must notify system administrators and ISSOs when accounts are modified.

Once an attacker establishes access to a system, the attacker often attempts to create a persistent method of reestablishing access. One way to accomplish this is for the attacker to modify an existing account. Notification of account modification is one method for mitigating this risk. A comprehensive account management process will ensure an audit trail which documents the modification of operating system user accounts and notifies the system administrator and ISSO of changes. Such a process greatly reduces the risk that accounts will be surreptitiously created and provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000276-GPOS-00106

CCI-001685

The operating system must notify system administrators and ISSOs when accounts are disabled.

When operating system accounts are disabled, user accessibility is affected. Accounts are utilized for identifying individual operating system users or for identifying the operating system processes themselves. Sending notification of account disabling events to the system administrator and ISSO is one method for mitigating this risk. Such a capability greatly reduces the risk that operating system accessibility will be negatively affected for extended periods of time and also provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000277-GPOS-00107

CCI-001686

The operating system must notify system administrators and ISSOs when accounts are removed.

When operating system accounts are removed, user accessibility is affected. Accounts are utilized for identifying individual operating system users or for identifying the operating system processes themselves. Sending notification of account removal events to the system administrator and ISSO is one method for mitigating this risk. Such a capability greatly reduces the risk that operating system accessibility will be negatively affected for extended periods of time and also provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

audit_rules_usergroup_modification

Record Events that Modify User/Group Information

Add the following to `/etc/audit/audit.rules`, in order to capture events that modify account changes:

    # audit_rules_usergroup_modification
    -w /etc/group -p wa -k audit_rules_usergroup_modification
    -w /etc/passwd -p wa -k audit_rules_usergroup_modification
    -w /etc/gshadow -p wa -k audit_rules_usergroup_modification
    -w /etc/shadow -p wa -k audit_rules_usergroup_modification
    -w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification

SRG-OS-000356-GPOS-00144

CCI-002046

The operating system must synchronize internal information system clocks to the authoritative time source when the time difference is greater than one second.

Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Synchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network. Organizations should consider setting time periods for different types of systems (e.g., financial, legal, or mission-critical systems). Organizations should also consider endpoints that may not have regular access to the authoritative time server (e.g., mobile, teleworking, and tactical endpoints). This requirement is related to the comparison done every 24 hours in SRG-OS-000355 because a comparison must be done in order to determine the time difference.

SRG-OS-000278-GPOS-00108

CCI-001496

The operating system must use cryptographic mechanisms to protect the integrity of audit tools.

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. 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. It is not uncommon for attackers to 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. To address this risk, audit tools must 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.

rpm_verify_hashes

Verify File Hashes with RPM

The RPM package management system can check the hashes of installed software packages, including many that are important to system security. Run the following command to list which files on the system have hashes that differ from what is expected by the RPM database:

    $ rpm -Va | grep '^..5'

A "c" in the second column indicates that a file is a configuration file, which may appropriately be expected to change. If the file was not expected to change, investigate the cause of the change using audit logs or other means. The package can then be reinstalled to restore the file. Run the following command to determine which package owns the file:

    $ rpm -qf FILENAME

The package can be reinstalled from a yum repository using the command:

    $ sudo yum reinstall PACKAGENAME

Alternatively, the package can be reinstalled from trusted media using the command:

    $ sudo rpm -Uvh PACKAGENAME

SRG-OS-000279-GPOS-00109

CCI-002361

The operating system must automatically terminate a user session after inactivity time-outs have expired or at shutdown.

Automatic session termination addresses the termination of user-initiated logical sessions in contrast to the termination of network connections that are associated with communications sessions (i.e., network disconnect). A logical session (for local, network, and remote access) is initiated whenever a user (or process acting on behalf of a user) accesses an organizational information system. Such user sessions can be terminated (and thus terminate user access) without terminating network sessions. Session termination terminates all processes associated with a user's logical session except those processes that are specifically created by the user (i.e., session owner) to continue after the session is terminated. Conditions or trigger events requiring automatic session termination can include, for example, organization-defined periods of user inactivity, targeted responses to certain types of incidents, and time-of-day restrictions on information system use. This capability is typically reserved for specific operating system functionality where the system owner, data owner, or organization requires additional assurance.

SRG-OS-000280-GPOS-00110

CCI-002363

The operating system must provide a logoff capability for user-initiated communications sessions when requiring user access authentication.

If a user cannot explicitly end an operating system session, the session may remain open and be exploited by an attacker; this is referred to as a zombie session. Information resources to which users gain access via authentication include, for example, local workstations and remote services. For some types of interactive sessions, including, for example, remote logon, information systems typically send logoff messages as final messages prior to terminating sessions.

SRG-OS-000281-GPOS-00111

CCI-002364

The operating system must display an explicit logoff message to users indicating the reliable termination of authenticated communications sessions.

If a user cannot explicitly end an operating system session, the session may remain open and be exploited by an attacker; this is referred to as a zombie session. Users need to be aware of whether or not the session has been terminated. Information resources to which users gain access via authentication include, for example, local workstations and remote services. Logoff messages can be displayed after authenticated sessions have been terminated. However, for some types of interactive sessions, including, for example, remote logon, information systems typically send logoff messages as final messages prior to terminating sessions.

SRG-OS-000297-GPOS-00115

CCI-002314

The operating system must control remote access methods.

Remote access services, such as those providing remote access to network devices and information systems, which lack automated control capabilities, increase risk and make remote user access management difficult at best. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Operating system functionality (e.g., RDP) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).

SRG-OS-000298-GPOS-00116

CCI-002322

The operating system must provide the capability to immediately disconnect or disable remote access to the operating system.

Without the ability to immediately disconnect or disable remote access, an attack or other compromise taking place would not be immediately stopped. Operating system remote access functionality must have the capability to immediately disconnect current users remotely accessing the information system and/or disable further remote access. The speed of disconnect or disablement varies based on the criticality of missions functions and the need to eliminate immediate or future remote access to organizational information systems. The remote access functionality (e.g., RDP) may implement features such as automatic disconnect (or user-initiated disconnect) in case of adverse information based on an indicator of compromise or attack.

SRG-OS-000299-GPOS-00117

CCI-001444

The operating system must protect wireless access to and from the system using encryption.

Allowing devices and users to connect to or from the system without first authenticating them allows untrusted access and can lead to a compromise or attack. Since wireless communications can be intercepted, it is necessary to use encryption to protect the confidentiality of information in transit. Wireless technologies include, for example, microwave, packet radio (UHF/VHF), 802.11x, and Bluetooth. Wireless networks use authentication protocols (e.g., EAP/TLS, PEAP), which provide credential protection and mutual authentication. This requirement applies to those operating systems that control wireless devices.

SRG-OS-000300-GPOS-00118

CCI-001443

The operating system must protect wireless access to the system using authentication of users and/or devices.

Allowing devices and users to connect to the system without first authenticating them allows untrusted access and can lead to a compromise or attack. Wireless technologies include, for example, microwave, packet radio (UHF/VHF), 802.11x, and Bluetooth. Wireless networks use authentication protocols (e.g., EAP/TLS, PEAP), which provide credential protection and mutual authentication. This requirement applies to those operating systems that control wireless devices.

SRG-OS-000303-GPOS-00120

CCI-002130

The operating system must audit all account enabling actions.

Once an attacker establishes access to a system, the attacker often attempts to create a persistent method of reestablishing access. One way to accomplish this is for the attacker to enable a new or disabled account. Auditing account modification actions provides logging that can be used for forensic purposes. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

SRG-OS-000304-GPOS-00121

CCI-002132

The operating system must notify system administrators and ISSOs of account enabling actions.

Once an attacker establishes access to a system, the attacker often attempts to create a persistent method of reestablishing access. One way to accomplish this is for the attacker to enable an existing disabled account. Sending notification of account enabling actions to the system administrator and ISSO is one method for mitigating this risk. Such a capability greatly reduces the risk that operating system accessibility will be negatively affected for extended periods of time and also provides logging that can be used for forensic purposes. In order to detect and respond to events that affect user accessibility and application processing, operating systems must audit account enabling actions and, as required, notify the appropriate individuals so they can investigate the event. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.

SRG-OS-000312-GPOS-00122

CCI-002165

The operating system must allow operating system admins to pass information to any other operating system admin or user.

Discretionary Access Control (DAC) is based on the notion that individual users are "owners" of objects and therefore have discretion over who should be authorized to access the object and in which mode (e.g., read or write). Ownership is usually acquired as a consequence of creating the object or via specified ownership assignment. DAC allows the owner to determine who will have access to objects they control. An example of DAC includes user-controlled file permissions. When discretionary access control policies are implemented, subjects are not constrained with regard to what actions they can take with information for which they have already been granted access. Thus, subjects that have been granted access to information are not prevented from passing (i.e., the subjects have the discretion to pass) the information to other subjects or objects. A subject that is constrained in its operation by Mandatory Access Control policies is still able to operate under the less rigorous constraints of this requirement. Thus, while Mandatory Access Control imposes constraints preventing a subject from passing information to another subject operating at a different sensitivity level, this requirement permits the subject to pass the information to any subject at the same sensitivity level. The policy is bounded by the information system boundary. Once the information is passed outside the control of the information system, additional means may be required to ensure the constraints remain in effect. While the older, more traditional definitions of discretionary access control require identity-based access control, that limitation is not required for this use of discretionary access control.

SRG-OS-000312-GPOS-00123

CCI-002165

The operating system must allow operating system admins to grant their privileges to other operating system admins.

Discretionary Access Control (DAC) is based on the notion that individual users are "owners" of objects and therefore have discretion over who should be authorized to access the object and in which mode (e.g., read or write). Ownership is usually acquired as a consequence of creating the object or via specified ownership assignment. DAC allows the owner to determine who will have access to objects they control. An example of DAC includes user-controlled file permissions. When discretionary access control policies are implemented, subjects are not constrained with regard to what actions they can take with information for which they have already been granted access. Thus, subjects that have been granted access to information are not prevented from passing (i.e., the subjects have the discretion to pass) the information to other subjects or objects. A subject that is constrained in its operation by Mandatory Access Control policies is still able to operate under the less rigorous constraints of this requirement. Thus, while Mandatory Access Control imposes constraints preventing a subject from passing information to another subject operating at a different sensitivity level, this requirement permits the subject to pass the information to any subject at the same sensitivity level. The policy is bounded by the information system boundary. Once the information is passed outside the control of the information system, additional means may be required to ensure the constraints remain in effect. While the older, more traditional definitions of discretionary access control require identity-based access control, that limitation is not required for this use of discretionary access control.

SRG-OS-000312-GPOS-00124

CCI-002165

The operating system must allow operating system admins to change security attributes on users, the operating system, or the operating systems components.

Discretionary Access Control (DAC) is based on the notion that individual users are "owners" of objects and therefore have discretion over who should be authorized to access the object and in which mode (e.g., read or write). Ownership is usually acquired as a consequence of creating the object or via specified ownership assignment. DAC allows the owner to determine who will have access to objects they control. An example of DAC includes user-controlled file permissions. When discretionary access control policies are implemented, subjects are not constrained with regard to what actions they can take with information for which they have already been granted access. Thus, subjects that have been granted access to information are not prevented from passing (i.e., the subjects have the discretion to pass) the information to other subjects or objects. A subject that is constrained in its operation by Mandatory Access Control policies is still able to operate under the less rigorous constraints of this requirement. Thus, while Mandatory Access Control imposes constraints preventing a subject from passing information to another subject operating at a different sensitivity level, this requirement permits the subject to pass the information to any subject at the same sensitivity level. The policy is bounded by the information system boundary. Once the information is passed outside the control of the information system, additional means may be required to ensure the constraints remain in effect. While the older, more traditional definitions of discretionary access control require identity-based access control, that limitation is not required for this use of discretionary access control.

SRG-OS-000324-GPOS-00125

CCI-002235

The operating system must prevent non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures.

Preventing non-privileged users from executing privileged functions mitigates the risk that unauthorized individuals or processes may gain unnecessary access to information or privileges. Privileged functions include, for example, establishing accounts, performing system integrity checks, or administering cryptographic key management activities. Non-privileged users are individuals that do not possess appropriate authorizations. Circumventing intrusion detection and prevention mechanisms or malicious code protection mechanisms are examples of privileged functions that require protection from non-privileged users.

SRG-OS-000326-GPOS-00126

CCI-002233

The operating system must prevent all software from executing at higher privilege levels than users executing the software.

In certain situations, software applications/programs need to execute with elevated privileges to perform required functions. However, if the privileges required for execution are at a higher level than the privileges assigned to organizational users invoking such applications/programs, those users are indirectly provided with greater privileges than assigned by the organizations. Some programs and processes are required to operate at a higher privilege level and therefore should be excluded from the organization-defined software list after review.

SRG-OS-000327-GPOS-00127

CCI-002234

The operating system must audit the execution of privileged functions.

Misuse of privileged functions, either intentionally or unintentionally by authorized users, or by unauthorized external entities that have compromised information system accounts, is a serious and ongoing concern and can have significant adverse impacts on organizations. Auditing the use of privileged functions is one way to detect such misuse and identify the risk from insider threats and the advanced persistent threat.

SRG-OS-000329-GPOS-00128

CCI-002238

The operating system must automatically lock an account until the locked account is released by an administrator when three unsuccessful logon attempts in 15 minutes occur.

By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-forcing, is reduced. Limits are imposed by locking the account.

SRG-OS-000337-GPOS-00129

CCI-001914

The operating system must provide the capability for assigned IMOs/ISSOs or designated SAs to change the auditing to be performed on all operating system components, based on all selectable event criteria in near real time.

If authorized individuals do not have the ability to modify auditing parameters in response to a changing threat environment, the organization may not be able to effectively respond, and important forensic information may be lost. This requirement enables organizations to extend or limit auditing as necessary to meet organizational requirements. Auditing that is limited to conserve information system resources may be extended to address certain threat situations. In addition, auditing may be limited to a specific set of events to facilitate audit reduction, analysis, and reporting.

SRG-OS-000338-GPOS-00130

CCI-001919

The operating system must provide the capability for authorized users to select a user session to capture/record or view/hear.

Without the capability to select a user session to capture/record or view/hear, investigations into suspicious or harmful events would be hampered by the volume of information captured. The volume of information captured may also adversely impact the operation of the network. Session audits may include monitoring keystrokes, screen monitoring software, remote desktop recording, screen mirroring, and recording information and/or file transfers.

SRG-OS-000339-GPOS-00131

CCI-001920

The operating system must provide the capability for authorized users to remotely view/hear, in real time, all content related to an established user session from a component separate from the operating system being monitored.

Without the capability to remotely view/hear all content related to a user session, investigations into suspicious user activity would be hampered. Real-time monitoring allows authorized personnel to take action before additional damage is done. The ability to observe user sessions as they are happening allows for interceding in ongoing events that after-the-fact review of captured content would not allow.

SRG-OS-000341-GPOS-00132

CCI-001849

The operating system must allocate audit record storage capacity to store at least one weeks worth of audit records, when audit records are not immediately sent to a central audit record storage facility.

In order to ensure operating systems have a sufficient storage capacity in which to write the audit logs, operating systems need to be able to allocate audit record storage capacity. The task of allocating audit record storage capacity is usually performed during initial installation of the operating system.

SRG-OS-000342-GPOS-00133 | CCI-001851 | The operating system must off-load audit records onto a different system or media from the system being audited. | Information stored in one location is vulnerable to accidental or incidental deletion or alteration. Off-loading is a common process in information systems with limited audit storage capacity. |
SRG-OS-000343-GPOS-00134 | CCI-001855 | The operating system must immediately notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75% of the repository maximum audit record storage capacity. | If security personnel are not notified immediately when storage volume reaches 75% utilization, they are unable to plan for audit record storage capacity expansion. |

SRG-OS-000344-GPOS-00135

CCI-001858

The operating system must provide an immediate real-time alert to the SA and ISSO, at a minimum, of all audit failure events requiring real-time alerts.

It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without a real-time alert, security personnel may be unaware of an impending failure of the audit capability and system operation may be adversely affected. Alerts provide organizations with urgent messages. Real-time alerts provide these messages immediately (i.e., the time from event detection to alert occurs in seconds or less).

SRG-OS-000348-GPOS-00136

CCI-001875

The operating system must provide an audit reduction capability that supports on-demand audit review and analysis.

The ability to perform on-demand audit review and analysis, including after the audit data has been subjected to audit reduction, greatly facilitates the organization's ability to generate incident reports, as needed, to better handle larger-scale or more complex security incidents. Audit reduction is a technique used to reduce the volume of audit records in order to facilitate a manual review. Audit reduction does not alter original audit records. The report generation capability provided by the application must support on-demand (i.e., customizable, ad hoc, and as-needed) reports.

SRG-OS-000349-GPOS-00137

CCI-001877

The operating system must provide an audit reduction capability that supports after-the-fact investigations of security incidents.

If the audit reduction capability does not support after-the-fact investigations, it is difficult to establish, correlate, and investigate the events leading up to an outage or attack or identify those responses for one. This capability is also required to comply with applicable Federal laws and DoD policies. Audit reduction capability must support after-the-fact investigations of security incidents either natively or through the use of third-party tools. This requirement is specific to operating systems with audit reduction capabilities.

SRG-OS-000350-GPOS-00138

CCI-001878

The operating system must provide a report generation capability that supports on-demand audit review and analysis.

The report generation capability must support on-demand review and analysis in order to facilitate the organization's ability to generate incident reports, as needed, to better handle larger-scale or more complex security incidents. Report generation must be capable of generating on-demand (i.e., customizable, ad hoc, and as-needed) reports. On-demand reporting allows personnel to report issues more rapidly to more effectively meet reporting requirements. Collecting log data and aggregating it to present the data in a single, consolidated report achieves this objective.

SRG-OS-000351-GPOS-00139

CCI-001879

The operating system must provide a report generation capability that supports on-demand reporting requirements.

The report generation capability must support on-demand reporting in order to facilitate the organization's ability to generate incident reports, as needed, to better handle larger-scale or more complex security incidents. Report generation must be capable of generating on-demand (i.e., customizable, ad hoc, and as-needed) reports. On-demand reporting allows personnel to report issues more rapidly to more effectively meet reporting requirements. Collecting log data and aggregating it to present the data in a single, consolidated report achieves this objective.

SRG-OS-000352-GPOS-00140

CCI-001880

The operating system must provide a report generation capability that supports after-the-fact investigations of security incidents.

If the report generation capability does not support after-the-fact investigations, it is difficult to establish, correlate, and investigate the events leading up to an outage or attack or identify those responses for one. This capability is also required to comply with applicable Federal laws and DoD policies. The report generation capability must support after-the-fact investigations of security incidents either natively or through the use of third-party tools.

SRG-OS-000353-GPOS-00141

CCI-001881

The operating system must not alter original content or time ordering of audit records when it provides an audit reduction capability.

If the audit reduction capability alters the content or time ordering of audit records, the integrity of the audit records is compromised, and the records are no longer usable for forensic analysis. Audit reduction is a process that manipulates collected audit information and organizes such information in a summary format that is more meaningful to analysts. Time ordering refers to the chronological organization of records based on time stamps. The degree of time stamp precision can affect this. This requirement is specific to operating systems providing audit reduction capabilities. The audit reduction capability can be met either natively or through the use of third-party tools.

SRG-OS-000354-GPOS-00142

CCI-001882

The operating system must not alter original content or time ordering of audit records when it provides a report generation capability.

If the report generation capability alters the content or time ordering of audit records, the integrity of the audit records is compromised, and the records are no longer usable for forensic analysis. Time ordering refers to the chronological organization of records based on time stamps. The degree of time stamp precision can affect this. This requirement is specific to operating systems providing report generation capabilities. The report generation capability can be met either natively or through the use of third-party tools.

SRG-OS-000355-GPOS-00143

CCI-001891

The operating system must, for networked systems, compare internal information system clocks at least every 24 hours with a server which is synchronized to one of the redundant United States Naval Observatory (USNO) time servers, or a time server designated for the appropriate DoD network (NIPRNet/SIPRNet), and/or the Global Positioning System (GPS).

Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate. Synchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network. Organizations should consider endpoints that may not have regular access to the authoritative time server (e.g., mobile, teleworking, and tactical endpoints).

SRG-OS-000481-GPOS-000481

CCI-002418

The operating system must protect the confidentiality and integrity of communications with wireless peripherals.

Without protection of communications with wireless peripherals, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read, altered, or used to compromise the operating system. This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with an operating system. Wireless peripherals (e.g., Wi-Fi/Bluetooth/IR Keyboards, Mice, and Pointing Devices and Near Field Communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer. Wireless peripherals must meet DoD requirements for wireless data transmission and be approved for use by the AO. Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that need to be protected, modification of communications with these wireless peripherals may be used to compromise the operating system. Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. Protecting the confidentiality and integrity of communications with wireless peripherals can be accomplished by physical means (e.g., employing physical barriers to wireless radio frequencies) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. If the wireless peripheral is only passing telemetry data, encryption of the data may not be required.

wireless_disable_interfaces

Deactivate Wireless Network Interfaces

Deactivating wireless network interfaces should prevent normal usage of the wireless capability.
First, identify the interfaces available with the command:

    $ ifconfig -a

Additionally, the following command may be used to determine whether wireless support is included for a particular interface, though this may not always be a clear indicator:

    $ iwconfig

After identifying any wireless interfaces (which may have names like `wlan0`, `ath0`, `wifi0`, `em1` or `eth0`), deactivate the interface with the command:

    $ sudo ifdown interface

These changes will only last until the next reboot. To disable the interface for future boots, remove the appropriate interface file from `/etc/sysconfig/network-scripts`:

    $ sudo rm /etc/sysconfig/network-scripts/ifcfg-interface