Free DISA STIG and SRG Library | Vaulted

Apple OS X 10.12 Security Technical Implementation Guide

Version 1 Release 40.1
2019-01-252017-05-25
U_Apple_OS_X_10-12_STIG_V1R40-1_Manual-xccdf.xml
This Security Technical Implementation Guide is published as a tool to improve the security of Department of Defense (DoD) information systems. The requirements are derived from the National Institute of Standards and Technology (NIST) 800-53 and related documents. Comments or proposed revisions to this document should be sent via email to the following address: disa.stig_spt@mail.mil.

Compare Summary

Compare V1R4 to V1R0.1
  • All
  • Updated 0
  • Added 193
  • Removed 121

Vulnerabilities (314)

The OS X system must conceal, via the session lock, information previously visible on the display with a publicly viewable image.

Finding ID
AOSX-12-000005
Rule ID
AOSX-12-000005_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000031-GPOS-00012
CCI
CCI-000060
Target Key
(None)
Documentable
No
Discussion

A default screen saver must be configured for all users, as the screen saver will act as a session time-out lock for the system and must conceal the contents of the screen from unauthorized users. The screen saver must not display any sensitive information or reveal the contents of the locked session screen. Publicly viewable images can include static or dynamic images such as patterns used with screen savers, photographic images, solid colors, a clock, a battery life indicator, or a blank screen.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To view the currently selected screen saver for the logged-on user, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep moduleName If there is no result or defined "moduleName", this is a finding.

The OS X system must be configured to disable hot corners.

Finding ID
AOSX-12-000006
Rule ID
AOSX-12-000006_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000031-GPOS-00012
CCI
CCI-000060
Target Key
(None)
Documentable
No
Discussion

Although hot comers can be used to initiate a session lock or launch useful applications, they can also be configured to disable an automatic session lock from initiating. Such a configuration introduces the risk that a user might forget to manually lock the screen before stepping away from the computer. 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.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

To check if the system is configured to disable hot corners, run the following commands: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "wvous-bl-corner = 0;" /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "wvous-tl-corner = 0;" /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "wvous-br-corner = 0;" /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "wvous-tr-corner = 0;" If any of the commands returns no result, this is a finding.

The OS X system must be configured to prevent Apple Watch from terminating a session lock.

Finding ID
AOSX-12-000007
Rule ID
AOSX-12-000007_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000028-GPOS-00009
CCI
CCI-000056
Target Key
(None)
Documentable
No
Discussion

Users must be prompted to enter their passwords when unlocking the screen saver. The screen saver acts as a session lock and prevents unauthorized users from accessing the current user's account.

Fix Text

This setting is enforced using the "Security Privacy Policy" configuration profile.

Check Content

To check if the system is configured to prevent Apple Watch from terminating a session lock, run the following command: usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowAutoUnlock = 0;" If there is no result, this is a finding.

The OS X system must initiate a session lock after a 15-minute period of inactivity.

Finding ID
AOSX-12-000010
Rule ID
AOSX-12-000010_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000029-GPOS-00010
CCI
CCI-000057
Target Key
(None)
Documentable
No
Discussion

A screen saver must be enabled and set to require a password to unlock. The timeout should be set to 15 minutes of inactivity. This mitigates the risk that a user might forget to manually lock the screen before stepping away from the computer. 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.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the system has a configuration profile configured to enable the screen saver after a time-out period, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep idleTime The check should return a value of "900" or less for "idleTime". If it does not, this is a finding.

The OS X system must retain the session lock until the user reestablishes access using established identification and authentication procedures.

Finding ID
AOSX-12-000020
Rule ID
AOSX-12-000020_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000028-GPOS-00009
CCI
CCI-000056
Target Key
(None)
Documentable
No
Discussion

Users must be prompted to enter their passwords when unlocking the screen saver. The screen saver acts as a session lock and prevents unauthorized users from accessing the current user's account.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the system will prompt users to enter their passwords to unlock the screen saver, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep askForPassword If there is no result, or if "askForPassword" is not set to "1", this is a finding.

The OS X system must monitor remote access methods.

Finding ID
AOSX-12-000030
Rule ID
AOSX-12-000030_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000032-GPOS-00013
CCI
CCI-000067
Target Key
(None)
Documentable
No
Discussion

Remote access services, such as those providing remote access to network devices and information systems, increase risk and expose those systems to possible cyber attacks; therefore, all remote access should be closely monitored and audited. Only authorized users should be permitted to remotely access DoD non-public information systems. An attacker might attempt to log in as an authorized user through stolen credentials, unpatched exploits of the remote access service, or brute-force attempts to guess a valid username and password. If a user is attempting to log in to a system from an unusual location or at an unusual time, or if there are many failed attempts, there is a possibility that the system is the target of a cyber attack. Auditing login events mitigates this risk by recording all login attempts, successful and unsuccessful, to the system.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,lo/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To check if the audit daemon is configured to log all login events, both local and remote, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control The flag "lo" should be included in the list of flags set. If it is not, this is a finding.

The OS X system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.

Finding ID
AOSX-12-000035
Rule ID
AOSX-12-000035_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000033-GPOS-00014
CCI
CCI-000068
Target Key
(None)
Documentable
No
Discussion

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD non-public 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., Remote Desktop Protocol [RDP]), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.

Fix Text

To enable the "SSH" service, run the following command: /usr/bin/sudo /bin/launchctl enable system/com.openssh.sshd The system may need to be restarted for the update to take effect.

Check Content

For systems that allow remote access through SSH, run the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.openssh.sshd If the results do not show the following, this is a finding: "com.openssh.sshd" => false

The OS X system must implement cryptography to protect the integrity of remote access sessions.

Finding ID
AOSX-12-000040
Rule ID
AOSX-12-000040_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000250-GPOS-00093
CCI
CCI-001453
Target Key
(None)
Documentable
No
Discussion

The telnet service must be disabled, as it sends all data, including the user's password, in a clear-text form that can be easily intercepted and read. 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. Disabling telnet is one way to mitigate this risk. Authorized users should be instructed to use an alternate service that implements cryptography for remote access sessions, such as SSH.

Fix Text

To disable the telnet service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.telnetd The system may need to be restarted for the update to take effect.

Check Content

To check if the telnet service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.telnetd If the results do not show the following, this is a finding: "com.apple.telnetd" => true

The OS X system must be configured to disable rshd service.

Finding ID
AOSX-12-000050
Rule ID
AOSX-12-000050_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The "rshd" service must be disabled.

Fix Text

To disable the "rshd" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.rshd The system may need to be restarted for the update to take effect.

Check Content

To check if the "rshd" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.rshd If the results do not show the following, this is a finding: "com.apple.rshd" => true

The OS X system must enforce requirements for remote connections to the information system.

Finding ID
AOSX-12-000055
Rule ID
AOSX-12-000055_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The Screen Sharing feature allows remote users to view or control the desktop of the current user. A malicious user can take advantage of screen sharing to gain full access to the system remotely, either with stolen credentials or by guessing the username and password. Disabling Screen Sharing mitigates this risk.

Fix Text

To disable the Screen Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing The system may need to be restarted for the update to take effect.

Check Content

To check if the Screen Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.screensharing If the results do not show the following, this is a finding: "com.apple.screensharing" => true

The OS X system must be configured with Bluetooth turned off unless approved by the organization.

Finding ID
AOSX-12-000065
Rule ID
AOSX-12-000065_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The Bluetooth kernel extension must be disabled, as wireless access introduces unnecessary security risks. Disabling Bluetooth support with a configuration profile mitigates this risk.

Fix Text

This setting is enforced using the "Bluetooth Policy" configuration profile.

Check Content

If Bluetooth connectivity is required to facilitate use of approved external devices, this is not applicable. To check if Bluetooth is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableBluetooth If there is no result, or if "DisableBluetooth" is not set to "1", this is a finding.

The OS X system must be configured with Wi-Fi support software disabled.

Finding ID
AOSX-12-000070
Rule ID
AOSX-12-000070_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000481-GPOS-000481
CCI
CCI-002418
Target Key
(None)
Documentable
No
Discussion

Use of Wi-Fi to connect to unauthorized networks may facilitate the exfiltration of mission data.

Fix Text

To disable the Wi-Fi network device, run the following command: /usr/bin/sudo /usr/sbin/networksetup -setnetworkserviceenabled "Wi-Fi" off

Check Content

If the system requires Wi-Fi to connect to an authorized network, this is not applicable. To check if the Wi-Fi network device is disabled, run the following command: /usr/bin/sudo /usr/sbin/networksetup -listallnetworkservices A disabled device will have an asterisk in front of its name. If the Wi-Fi device is missing this asterisk, this is a finding.

The OS X system must be configured with Infrared [IR] support disabled.

Finding ID
AOSX-12-000075
Rule ID
AOSX-12-000075_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

IR kernel support must be disabled to prevent users from controlling the system with IR devices. By default, if IR is enabled, the system will accept IR control from any remote device.

Fix Text

To disable IR, run the following command: /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled -bool FALSE

Check Content

To check if IR support is disabled, run the following command: /usr/bin/sudo /usr/bin/defaults read /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled If the result is not "0", this is a finding.

The OS X system must be configured with automatic actions disabled for blank CDs.

Finding ID
AOSX-12-000085
Rule ID
AOSX-12-000085_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for blank CDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for blank CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.blank.cd.appeared' If this is not defined or "action" is not set to "1", this is a finding.

The OS X system must be configured with automatic actions disabled for blank DVDs.

Finding ID
AOSX-12-000090
Rule ID
AOSX-12-000090_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for blank DVDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for blank DVDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.blank.dvd.appeared' If this is not defined or "action" is not set to "1", this is a finding.

The OS X system must be configured with automatic actions disabled for music CDs.

Finding ID
AOSX-12-000095
Rule ID
AOSX-12-000095_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for music CDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for music CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.cd.music.appeared' If this is not defined or "action" is not set to "1", this is a finding.

The OS X system must be configured with automatic actions disabled for picture CDs.

Finding ID
AOSX-12-000100
Rule ID
AOSX-12-000100_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for picture CDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for picture CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.cd.picture.appeared' If this is not defined or "action" is not set to "1", this is a finding.

The OS X system must be configured with automatic actions disabled for video DVDs.

Finding ID
AOSX-12-000105
Rule ID
AOSX-12-000105_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for video DVDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for video DVDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.dvd.video.appeared' If this is not defined or "action" is not set to "1", this is a finding.

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

Finding ID
AOSX-12-000110
Rule ID
AOSX-12-000110_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000002-GPOS-00002
CCI
CCI-000016
Target Key
(None)
Documentable
No
Discussion

If temporary user accounts remain active when no longer needed or for an excessive period, these accounts may be targeted by attackers 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.

Fix Text

This setting may be enforced using a configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current policy file, substituting the correct user name in place of "username": /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 > pwpolicy.plist Open the resulting password policy file in a text editor. If other policy settings are present, and the line "<key>policyCategoryAuthentication</key>" already exists, insert the following text after the <array> tag that immediately follows it: <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime + 259299</string> <key>policyIdentifier</key> <string>Disable Temporary Account</string> </dict> At a minimum, edit the file to ensure that it contains the following text: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime + 259299</string> <key>policyIdentifier</key> <string>Disable Temporary Account</string> </dict> </array> </dict> </plist> After saving the file and exiting to the command prompt, run the following command to load the new policy file, substituting the correct user name in place of "username": /usr/bin/sudo /usr/bin/pwpolicy -u username setaccountpolicies pwpolicy.plist

Check Content

Verify if a password policy is enforced by a directory service by asking the System Administrator (SA) or Information System Security Officer (ISSO). If no policy is enforced by a directory service, a password policy can be set with the "pwpolicy" utility. The variable names may vary depending on how the policy was set. To check if the password policy is configured to disable a temporary account after 72 hours, run the following command to output the password policy to the screen, substituting the correct user name in place of username: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 If there is no output, and password policy is not controlled by a directory service, this is a finding. Otherwise, look for the line "<key>policyCategoryAuthentication</key>". In the array that follows, there should be a <dict> section that contains a check <string> that allows users to log in if "policyAttributeCurrentTime" is less than the result of adding "policyAttributeCreationTime" to 72 hours (259299 seconds). The check might use a variable defined in its "policyParameters" section. If the check does not exist or if the check adds too great an amount of time to "policyAttributeCreationTime", this is a finding.

The OS X system must automatically remove or disable emergency accounts after the crisis is resolved or within 72 hours.

Finding ID
AOSX-12-000115
Rule ID
AOSX-12-000115_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000123-GPOS-00064
CCI
CCI-001682
Target Key
(None)
Documentable
No
Discussion

Emergency administrator accounts are privileged accounts 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 administrator accounts are different from infrequently used accounts (i.e., local login accounts used by system administrators when network or normal login/access is not available). Infrequently used accounts also remain available and are not subject to automatic termination dates. However, an emergency administrator account is normally a different account created for use by vendors or system maintainers. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements.

Fix Text

To remove all "pwpolicy" settings for an emergency account, run the following command, replacing "username" with the correct value: /usr/bin/sudo /usr/bin/pwpolicy -u username clearaccountpolicies Otherwise, to change the password policy for an emergency account and only remove some policy sections, run the following command to save a copy of the current policy file for the specified username: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 > pwpolicy.plist Open the resulting password policy file in a text editor and remove any policyContent sections that would restrict the ability to log in after a certain date or amount of time. To remove the section cleanly, remove the entire text that begins with <dict>, contains the like <key>policyContent<'/key>, and ends with </dict>. After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy -u username setaccountpolicies pwpolicy.plist

Check Content

If an emergency account has been created on the system, check the expiration settings of a local account using the following command, replacing "username" with the correct value: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 If there is output, verify that the account policies do not restrict the ability to log in after a certain date or amount of time. If they do, this is a finding.

The OS X system must generate audit records for all account creations, modifications, disabling, and termination events; privileged activities or other system-level access; all kernel module load, unload, and restart actions; all program initiations; and organizationally defined events for all non-local maintenance and diagnostic sessions.

Finding ID
AOSX-12-000120
Rule ID
AOSX-12-000120_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000004-GPOS-00004
CCI
CCI-000018
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control If "ad" is not listed in the result of the check, this is a finding.

The OS X system must audit all account modifications.

Finding ID
AOSX-12-000125
Rule ID
AOSX-12-000125_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000239-GPOS-00089
CCI
CCI-001403
Target Key
(None)
Documentable
No
Discussion

Once an attacker establishes initial 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 or modify an existing one. Auditing of account creation and modification is one method for mitigating this risk. 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.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control The account modification events are logged by way of the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must audit all account disabling actions.

Finding ID
AOSX-12-000130
Rule ID
AOSX-12-000130_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000240-GPOS-00090
CCI
CCI-001404
Target Key
(None)
Documentable
No
Discussion

When operating system accounts are disabled, user accessibility is affected. The system must audit account disablement actions so that administrator users can detect and respond to such events. 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.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control The account disabling events are logged by way of the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must audit all account removal actions.

Finding ID
AOSX-12-000135
Rule ID
AOSX-12-000135_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000241-GPOS-00091
CCI
CCI-001405
Target Key
(None)
Documentable
No
Discussion

When operating system accounts are removed, user accessibility is affected. The system must audit account removal actions so that administrator users can detect and respond to such events. 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.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control The account removal events are logged by way of the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must be configured to disable SMB File Sharing unless it is required.

Finding ID
AOSX-12-000139
Rule ID
AOSX-12-000139_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

File Sharing is usually non-essential and must be disabled if not required. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the SMB File Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.smbd The system may need to be restarted for the update to take effect.

Check Content

If SMB File Sharing is required, this is not applicable. To check if the SMB File Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.smbd If the results do not show the following, this is a finding: "com.apple.smbd" => true

The OS X system must be configured to disable Apple File (AFP) Sharing.

Finding ID
AOSX-12-000140
Rule ID
AOSX-12-000140_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

File Sharing is non-essential and must be disabled. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the Apple File (AFP) Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.AppleFileServer The system may need to be restarted for the update to take effect.

Check Content

To check if the Apple File (AFP) Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.AppleFileServer If the results do not show the following, this is a finding: "com.apple.AppleFileServer" => true

The OS X system must be configured to disable the Network File System (NFS) daemon unless it is required.

Finding ID
AOSX-12-000141
Rule ID
AOSX-12-000141_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the NFS daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd The system may need to be restarted for the update to take effect.

Check Content

If the NFS daemon is required, this is not applicable. To check if the NFS daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.nfsd If the results do not show the following, this is a finding: "com.apple.nfsd" => true

The OS X system must be configured to disable the Network File System (NFS) lock daemon unless it is required.

Finding ID
AOSX-12-000142
Rule ID
AOSX-12-000142_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the NFS lock daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.lockd The system may need to be restarted for the update to take effect.

Check Content

If the NFS lock daemon is required, this is not applicable. To check if the NFS lock daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.lockd If the results do not show the following, this is a finding: "com.apple.lockd" => true

The OS X system must be configured to disable the Network File System (NFS) stat daemon unless it is required.

Finding ID
AOSX-12-000143
Rule ID
AOSX-12-000143_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the NFS stat daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.statd.notify The system may need to be restarted for the update to take effect.

Check Content

If the NFS stat daemon is required, this is not applicable. To check if the NFS stat daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.statd.notify If the results do not show the following, this is a finding: "com.apple.statd.notify" => true

The OS X system firewall must be configured with a default-deny policy.

Finding ID
AOSX-12-000155
Rule ID
AOSX-12-000155_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00231
CCI
CCI-002080
Target Key
(None)
Documentable
No
Discussion

An approved firewall must be installed and enabled to work in concert with the OS X Application Firewall. When configured correctly, firewalls protect computers from network attacks by blocking or limiting access to open network ports.

Fix Text

Install an approved HBSS or firewall solution onto the system and configure it with a "default-deny" policy.

Check Content

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved firewall is loaded on the system. The recommended system is the McAfee HBSS. If no firewall is installed on the system, this is a finding. If a firewall is installed and it is not configured with a "default-deny" policy, this is a finding.

The OS X system must generate audit records for privileged activities or other system-level access.

Finding ID
AOSX-12-000170
Rule ID
AOSX-12-000170_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000471-GPOS-00215
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Privileged activities and other system-level access are logged by way of the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via SSH.

Finding ID
AOSX-12-000187
Rule ID
AOSX-12-000187_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000023-GPOS-00006
CCI
CCI-000048
Target Key
(None)
Documentable
No
Discussion

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 login interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with DTM-08-060.

Fix Text

For systems that allow remote access through SSH, modify the "/etc/ssh/sshd_config" file to add or update the following line: Banner /etc/banner

Check Content

For systems that allow remote access through SSH, run the following command to verify that "/etc/banner" is displayed before granting access: # /usr/bin/grep Banner /etc/ssh/sshd_config If the sshd Banner configuration option does not point to "/etc/banner", this is a finding.

The OS X system must be configured so that any connection to the system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Finding ID
AOSX-12-000195
Rule ID
AOSX-12-000195_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000228-GPOS-00088
CCI
CCI-001388
Target Key
(None)
Documentable
No
Discussion

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 login interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with DTM-08-060.

Fix Text

Create an RTF file containing the required text. Name the file "PolicyBanner.rtf" or "PolicyBanner.rtfd" and place it in "/Library/Security/".

Check Content

The policy banner will show if a "PolicyBanner.rtf" or "PolicyBanner.rtfd" exists in the "/Library/Security" folder. Run this command to show the contents of that folder: /bin/ls -l /Library/Security/PolicyBanner.rtf* If neither "PolicyBanner.rtf" nor "PolicyBanner.rtfd" exists, this is a finding. The banner text of the document MUST read: "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." If the text is not worded exactly this way, this is a finding.

Any local connection to the OS X system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Finding ID
AOSX-12-000196
Rule ID
AOSX-12-000196_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000023-GPOS-00006
CCI
CCI-000048
Target Key
(None)
Documentable
No
Discussion

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 login interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with DTM-08-060.

Fix Text

Create an RTF file containing the required text. Name the file "PolicyBanner.rtf" or "PolicyBanner.rtfd" and place it in "Library/Security/".

Check Content

The policy banner will show if a "PolicyBanner.rtf" or "PolicyBanner.rtfd" exists in the "/Library/Security" folder. Run this command to show the contents of that folder: /bin/ls -l /Library/Security/PolicyBanner.rtf* If neither "PolicyBanner.rtf" nor "PolicyBanner.rtfd" exists, this is a finding. The banner text of the document MUST read: "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." If the text is not worded exactly this way, this is a finding.

The OS X system must generate audit records for DoD-defined events such as successful/unsuccessful login attempts, successful/unsuccessful direct access attempts, starting and ending time for user access, and concurrent logins to the same account from different sources.

Finding ID
AOSX-12-000200
Rule ID
AOSX-12-000200_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000470-GPOS-00214
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Login events are logged by way of the "aa" flag. If "aa" is not listed in the result of the check, this is a finding.

The OS X system must initiate session audits at system startup.

Finding ID
AOSX-12-000230
Rule ID
AOSX-12-000230_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000254-GPOS-00095
CCI
CCI-001464
Target Key
(None)
Documentable
No
Discussion

If auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only if auditing is enabled before a given process is created.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must provide audit record generation capability for DoD-defined auditable events for all operating system components.

Finding ID
AOSX-12-000240
Rule ID
AOSX-12-000240_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000062-GPOS-00031
CCI
CCI-000169
Target Key
(None)
Documentable
No
Discussion

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. DoD has defined the list of events for which the operating system will provide an audit record generation capability as the following: (i) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); (ii) Access actions, such as successful and unsuccessful login attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logins from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; (iii) All account creations, modifications, disabling, and terminations; and (iv) All kernel module load, unload, and restart actions.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must generate audit records for all account creation, modification, disabling, and termination events.

Finding ID
AOSX-12-000245
Rule ID
AOSX-12-000245_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000476-GPOS-00221
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

Account creations and account modifications such as disablement and termination can all be signs of an intrusion and should be audited. Once an attacker establishes access to a system, the attacker may attempt to create an account to reestablish access at a later time. The attacker may also attempt to modify accounts in an attempt to change an existing account's privileges or disable or delete accounts in a denial-of-service attack. Auditing of account creation, modification, disabling, and termination events mitigates this risk.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Privileged access, including the creation, modification, and deletion of local user accounts, is logged via the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X 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.

Finding ID
AOSX-12-000295
Rule ID
AOSX-12-000295_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000341-GPOS-00132
CCI
CCI-001849
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to require that records are kept for seven days or longer before deletion when there is no central audit record storage facility. When "expire-after" is set to "7d", the audit service will not delete audit logs until the log data is at least seven days old.

Fix Text

Edit the "/etc/security/audit_control" file and change the value for "expire-after" to the amount of time audit logs should be kept for the system. Use the following command to set the "expire-after" value to "7d": /usr/bin/sudo /usr/bin/sed -i.bak 's/.*expire-after.*/expire-after:7d/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

The check displays the amount of time the audit system is configured to retain audit log files. The audit system will not delete logs until the specified condition has been met. To view the current setting, run the following command: /usr/bin/sudo /usr/bin/grep ^expire-after /etc/security/audit_control If this returns no results, or does not contain "7d" or a larger value, this is a finding.

The OS X system must provide an immediate warning to the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when allocated audit record storage volume reaches 75 percent of repository maximum audit record storage capacity.

Finding ID
AOSX-12-000305
Rule ID
AOSX-12-000305_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000343-GPOS-00134
CCI
CCI-001855
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to require a minimum percentage of free disk space in order to run. This ensures that audit will notify the administrator that action is required to free up more disk space for audit logs. When "minfree" is set to 25 percent, security personnel are notified immediately when the storage volume is 75 percent full and are able to plan for audit record storage capacity expansion.

Fix Text

Edit the "/etc/security/audit_control" file and change the value for "minfree" to "25" using the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*minfree.*/minfree:25/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control file".

Check Content

The check displays the "% free" to leave available for the system. The audit system will not write logs if the volume has less than this percentage of free disk space. To view the current setting, run the following command: /usr/bin/sudo /usr/bin/grep ^minfree /etc/security/audit_control If this returns no results, or does not contain "25", this is a finding.

The OS X system must provide an immediate real-time alert to the System Administrator (SA) and Information System Security Officer (ISSO), at a minimum, of all audit failure events requiring real-time alerts.

Finding ID
AOSX-12-000310
Rule ID
AOSX-12-000310_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000344-GPOS-00135
CCI
CCI-001858
Target Key
(None)
Documentable
No
Discussion

The audit service should be configured to immediately print messages to the console or email administrator users when an auditing failure occurs. 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.

Fix Text

To make "auditd" log errors to standard error as well as "syslogd", run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/logger -p/logger -s -p/' /etc/security/audit_warn; /usr/bin/sudo /usr/sbin/audit -s

Check Content

By default, "auditd" only logs errors to "syslog". To see if audit has been configured to print error messages to the console, run the following command: /usr/bin/sudo /usr/bin/grep logger /etc/security/audit_warn If the argument "-s" is missing, or if "audit_warn" has not been otherwise modified to print errors to the console or send email alerts to the SA and ISSO, this is a finding.

The OS X system must, for networked systems, compare internal information system clocks at least every 24 hours with a server that 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).

Finding ID
AOSX-12-000330
Rule ID
AOSX-12-000330_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000355-GPOS-00143
CCI
CCI-001891
Target Key
(None)
Documentable
No
Discussion

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 of 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).

Fix Text

To enable the NTP service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.ntp.ntpd.plist To configure one or more time servers for use, edit "/etc/ntp.conf" and enter each hostname or IP address on a separate line, prefixing each one with the keyword "server".

Check Content

The Network Time Protocol (NTP) service must be enabled on all networked systems. To check if the service is running, use the following command: /usr/bin/sudo /bin/launchctl list | grep org.ntp.ntpd If nothing is returned, this is a finding. To verify that an authorized NTP server is configured, run the following command or examine "/etc/ntp.conf": /usr/bin/sudo /usr/bin/grep ^server /etc/ntp.conf Only approved time servers should be configured for use. If no server is configured, or if an unapproved time server is in use, this is a finding.

The OS X system must be configured with audit log files owned by root.

Finding ID
AOSX-12-000331
Rule ID
AOSX-12-000331_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to only be readable and writable by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that returns an incorrect owner, run the following command: /usr/bin/sudo chown root [audit log file] [audit log file] is the full path to the log file in question.

Check Content

To check the ownership of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | grep -v current The results should show the owner (third column) to be "root". If they do not, this is a finding.

The OS X system must be configured with audit log folders owned by root.

Finding ID
AOSX-12-000332
Rule ID
AOSX-12-000332_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log folder that has an incorrect owner, run the following command: /usr/bin/sudo chown root [audit log folder]

Check Content

To check the ownership of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the owner (third column) to be "root". If it does not, this is a finding.

The OS X system must be configured with audit log files group-owned by wheel.

Finding ID
AOSX-12-000333
Rule ID
AOSX-12-000333_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct group ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that returns an incorrect group owner, run the following command: /usr/bin/sudo chgrp wheel [audit log file] [audit log file] is the full path to the log file in question.

Check Content

To check the group ownership of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current The results should show the group owner (fourth column) to be "wheel". If they do not, this is a finding.

The OS X system must be configured with audit log folders group-owned by wheel.

Finding ID
AOSX-12-000334
Rule ID
AOSX-12-000334_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct group ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log folder that has an incorrect group, run the following command: /usr/bin/sudo chgrp wheel [audit log folder]

Check Content

To check the group ownership of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the group (fourth column) to be "wheel". If they do not, this is a finding.

The OS X system must be configured with audit log files set to mode 440 or less permissive.

Finding ID
AOSX-12-000335
Rule ID
AOSX-12-000335_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 440 [audit log file] [audit log file] is the full path to the log file in question.

Check Content

To check the permissions of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current The results should show the permissions (first column) to be "440" or less permissive. If they do not, this is a finding.

The OS X system must be configured with audit log folders set to mode 700 or less permissive.

Finding ID
AOSX-12-000336
Rule ID
AOSX-12-000336_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log folders with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log folders are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log folder that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 700 [audit log folder]

Check Content

To check the permissions of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the permissions (first column) to be "700" or less permissive. if they do not, this is a finding.

The OS X system must be configured so that log files must not contain access control lists (ACLs).

Finding ID
AOSX-12-000337
Rule ID
AOSX-12-000337_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that contains ACLs, run the following command: /usr/bin/sudo chmod -N [audit log file]

Check Content

To check if a log file contains ACLs, run the following commands: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current In the output from the above commands, ACLs will be listed under any file that may contain them (e.g., "0: group:admin allow list,readattr,reaadextattr,readsecurity"). If any such line exists, this is a finding.

The OS X system must be configured so that log folders must not contain access control lists (ACLs).

Finding ID
AOSX-12-000338
Rule ID
AOSX-12-000338_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log folders with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log folders are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log folder that contains ACLs, run the following command: /usr/bin/sudo chmod -N [audit log folder]

Check Content

To check if a log folder contains ACLs, run the following commands: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') In the output from the above commands, ACLs will be listed under any folder that may contain them (e.g., "0: group:admin allow list,readattr,reaadextattr,readsecurity"). If any such line exists, this is a finding.

The OS X system must have the security assessment policy subsystem enabled.

Finding ID
AOSX-12-000430
Rule ID
AOSX-12-000430_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000366-GPOS-00153
CCI
CCI-001749
Target Key
(None)
Documentable
No
Discussion

Any changes to the hardware, software, and/or firmware components of the information system and/or application can potentially have significant effects on the overall security of the system. Accordingly, software defined by the organization as critical must be signed with a certificate that is recognized and approved by the organization.

Fix Text

To enable the Security assessment policy subsystem, run the following command: /usr/bin/sudo /usr/sbin/spctl --master-enable

Check Content

To check the status of the Security assessment policy subsystem, run the following command: /usr/bin/sudo /usr/sbin/spctl --status | /usr/bin/grep enabled If nothing is returned, this is a finding.

The OS X system must limit privileges to change software resident within software libraries.

Finding ID
AOSX-12-000435
Rule ID
AOSX-12-000435_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000259-GPOS-00100
CCI
CCI-001499
Target Key
(None)
Documentable
No
Discussion

File permissions should be compared against the default set of permissions that were set at the time of the initial install. Changes to default file permissions can make the system less secure and disrupt the functionality of installed applications. Unless changes are required to harden a system, the default permissions should be kept. If the operating system were to allow any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process. Verifying that permissions remain unchanged mitigates this risk. 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 that execute with escalated privileges. Only qualified and authorized individuals must be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must have a configuration profile installed.

Finding ID
AOSX-12-000455
Rule ID
AOSX-12-000455_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Configuration settings must be verified by a centrally managed system such as an MDM to ensure they have not been changed. Configuration settings are the configurable security-related parameters of information technology products that are part of the information system. Security-related parameters are parameters impacting the security state of the system, including parameters related to meeting other security control requirements. Rather than visiting each and every system when verifying configuration changes, organizations will employ automated tools that can make changes across all systems. This greatly increases efficiency and manageability of applications in a large-scale environment.

Fix Text

Obtain a configuration profile from a DoD provider containing the configuration settings required to be applied. Refer to section 3.2 of the Overview document for information about deploying configuration profiles.

Check Content

To check if the system has a configuration profile applied, run the following command: sudo /usr/bin/profiles -H If no profiles are installed, this is a finding.

The OS X system must employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs.

Finding ID
AOSX-12-000460
Rule ID
AOSX-12-000460_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000370-GPOS-00155
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

Application Restrictions must be enabled for user accounts and configured to only allow users to execute approved applications. Using a whitelist such as Application Restrictions 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.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. Built-in applications such as FaceTime, Game Center, Mail, Contacts, Calendar, Reminders, Notes, and Messages should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable the application FaceTime.

Finding ID
AOSX-12-000475
Rule ID
AOSX-12-000475_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application FaceTime establishes connections to Apple's iCloud, despite using security controls to disable iCloud access.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if FaceTime is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "displayName = FaceTime;" If anything is returned, this is a finding. Built-in applications such as "FaceTime" should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable the application Messages.

Finding ID
AOSX-12-000490
Rule ID
AOSX-12-000490_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Messages establishes connections to Apple's iCloud, despite using security controls to disable iCloud access.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if Messages is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowChat = 0;" If anything is returned, this is a finding. Built-in applications such as Messages should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable the iCloud Calendar services.

Finding ID
AOSX-12-000505
Rule ID
AOSX-12-000505_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Calendar establishes connections to Apple's iCloud, despite using security controls to disable iCloud access.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloudCalendar is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudCalendar = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Calendar should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable the iCloud Reminders services.

Finding ID
AOSX-12-000507
Rule ID
AOSX-12-000507_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Reminders establishes connections to Apple's iCloud, despite using security controls to disable iCloud access.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloud Reminders is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudReminders = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Reminders should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable iCloud Address Book services.

Finding ID
AOSX-12-000510
Rule ID
AOSX-12-000510_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Contacts establishes connections to Apple's iCloud, despite using security controls to disable iCloud access.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloud Address Book is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudAddressBook = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Address Book should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable the Mail iCloud services.

Finding ID
AOSX-12-000515
Rule ID
AOSX-12-000515_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Mail establishes connections to Apple's iCloud, despite using security controls to disable iCloud access.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if Mail iCloud is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudMail = 0;" If nothing is returned, this is a finding. Built-in applications such as the Mail iCloud should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable the iCloud Notes services.

Finding ID
AOSX-12-000517
Rule ID
AOSX-12-000517_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Notes establishes connections to Apple's iCloud, despite using security controls to disable iCloud access.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloud Notes is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudNotes = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Notes should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

The OS X system must be configured to disable the camera.

Finding ID
AOSX-12-000518
Rule ID
AOSX-12-000518_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if the system has been configured to disable the camera, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCamera = 0;" If there is no result, this is a finding.

The OS X system must be configured to disable the system preference pane for iCloud.

Finding ID
AOSX-12-000520
Rule ID
AOSX-12-000520_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled.

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if the system has the correct setting in the configuration profile to disable access to the iCloud preference pane, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 5 'DisabledPreferencePanes' If nothing is returned, this is a finding. To check if iCloud has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep com.apple.preferences.icloud If nothing is returned, this is a finding.

The OS X system must be configured to disable the system preference pane for Internet Accounts.

Finding ID
AOSX-12-000521
Rule ID
AOSX-12-000521_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled.

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if "Internet Accounts" has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep com.apple.preferences.internetaccounts If nothing is returned, this is a finding.

The OS X system must be configured to disable the system preference pane for Siri.

Finding ID
AOSX-12-000522
Rule ID
AOSX-12-000522_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled.

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if "Siri" has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep com.apple.preference.speech If nothing is returned, this is a finding.

The OS X system must be configured to disable Siri and dictation.

Finding ID
AOSX-12-000523
Rule ID
AOSX-12-000523_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled.

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if Siri has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "IronwoodAllowed = 0;" If nothing is returned, this is a finding.

The OS X system must be configured to disable sending diagnostic and usage data to Apple.

Finding ID
AOSX-12-000530
Rule ID
AOSX-12-000530_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000096-GPOS-00050
CCI
CCI-000382
Target Key
(None)
Documentable
No
Discussion

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. Sending diagnostic and usage data to Apple must be disabled.

Fix Text

This setting is enforced using the "Security Privacy Policy" configuration profile. The setting "Send diagnostic & usage data to Apple" is found in System Preferences >> Security & Privacy >> Privacy >> Diagnostics & Usage. Uncheck the box that says "Send diagnostic & usage data to Apple." To apply the setting from the command line, run the following commands: /usr/bin/defaults read "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit /usr/bin/sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit -bool false /usr/bin/sudo /bin/chmod 644 /Library/Application\ Support/CrashReporter/DiagnosticMessagesHistory.plist /usr/bin/sudo /usr/bin/chgrp admin /Library/Application\ Support/CrashReporter/DiagnosticMessagesHistory.plist

Check Content

Sending diagnostic and usage data to Apple must be disabled. To check if a configuration profile is configured to enforce this setting, run the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep AutoSubmit If "AutoSubmit" is not set to "0", this is a finding. Alternately, the setting is found in System Preferences >> Security & Privacy >> Privacy >> Diagnostics & Usage. If the box that says "Send diagnostic & usage data to Apple" is checked, this is a finding.

The OS X system must be configured to disable the Find My Mac iCloud service.

Finding ID
AOSX-12-000531
Rule ID
AOSX-12-000531_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. Find My Mac must be disabled.

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if Find My Mac is disabled, use the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudFMM = 0;" If nothing is returned, this is a finding.

The OS X system must be configured to disable Location Services.

Finding ID
AOSX-12-000535
Rule ID
AOSX-12-000535_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. Location Services must be disabled.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile. The setting "Enable Location Services" can be found in System Preferences >> Security & Privacy >> Privacy >> Location Services. Uncheck the box that says "Enable Location Services". It can also be set with the following command: /usr/bin/sudo /usr/bin/defaults write /private/var/db/locationd/Library/Preferences/ByHost/com.apple.locationd.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57` LocationServicesEnabled -bool false

Check Content

Location Services must be disabled. To check if a configuration profile is configured to enforce this setting, run the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableLocationServices If "DisableLocationServices" is not set to "1", this is a finding. The setting is found in System Preferences >> Security & Privacy >> Privacy >> Location Services. If the box that says "Enable Location Services" is checked, this is a finding. To check if the setting was applied on the command line, run the following command: /usr/bin/sudo /usr/bin/defaults read /private/var/db/locationd/Library/Preferences/ByHost/com.apple.locationd.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57` LocationServicesEnabled If the output is "1" this is a finding.

The OS X system must be configured to disable Bonjour multicast advertising.

Finding ID
AOSX-12-000545
Rule ID
AOSX-12-000545_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. Bonjour multicast advertising must be disabled on the system.

Fix Text

To configure Bonjour to disable multicast advertising, run the following command: /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true The system will need to be restarted for the update to take effect.

Check Content

To check if Bonjour multicast advertising has been disabled, run the following command: /usr/bin/sudo /usr/bin/defaults read /Library/Preferences/com.apple.mDNSResponder | /usr/bin/grep NoMulticastAdvertisements If an error is returned, nothing is returned, or "NoMulticastAdvertisements" is not set to "1", this is a finding.

The OS X system must be configured to disable the UUCP service.

Finding ID
AOSX-12-000550
Rule ID
AOSX-12-000550_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system must not have the UUCP service active.

Fix Text

To disable the UUCP service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.uucp The system may need to be restarted for the update to take effect.

Check Content

To check if the UUCP service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.uucp If the results do not show the following, this is a finding: "com.apple.uucp" => true

The OS X system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.

Finding ID
AOSX-12-000565
Rule ID
AOSX-12-000565_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000109-GPOS-00056
CCI
CCI-000770
Target Key
(None)
Documentable
No
Discussion

Administrator users must never log in directly as root. To assure individual accountability and prevent unauthorized access, logging in as root over a remote connection must be disabled. Administrators should only run commands as root after first authenticating with their individual user names and passwords.

Fix Text

To ensure that "PermitRootLogin" is disabled by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/^[\#]*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

Check Content

To check if SSH has root logins enabled, run the following command: /usr/bin/sudo /usr/bin/grep ^PermitRootLogin /etc/ssh/sshd_config If there is no result, or the result is set to "yes", this is a finding.

The OS X system must implement replay-resistant authentication mechanisms for network access to privileged and non-privileged accounts.

Finding ID
AOSX-12-000570
Rule ID
AOSX-12-000570_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000112-GPOS-00057
CCI
CCI-001941
Target Key
(None)
Documentable
No
Discussion

The SSH version should be explicitly set to Version 2. Version 2 supports strong cryptography and was rewritten from scratch to resolve several weaknesses in Version 1 that make it extremely vulnerable to attackers. The weaker cryptography in Version 1 is potentially susceptible to certain forms of replay attacks. The system default is to only enable Version 2. 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.

Fix Text

To ensure that "Protocol 2" is used by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*Protocol.*/Protocol 2/' /etc/ssh/sshd_config

Check Content

To check which protocol is configured for sshd, run the following: /usr/bin/sudo /usr/bin/grep ^Protocol /etc/ssh/sshd_config If there is no result or the result is not "2", this is a finding.

The OS X system must implement replay-resistant authentication mechanisms for network access to non-privileged accounts.

Finding ID
AOSX-12-000575
Rule ID
AOSX-12-000575_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000113-GPOS-00058
CCI
CCI-001942
Target Key
(None)
Documentable
No
Discussion

The SSH version should be explicitly set to Version 2. Version 2 supports strong cryptography and was rewritten from scratch to resolve several weaknesses in Version 1 that make it extremely vulnerable to attackers. The weaker cryptography in Version 1 is potentially susceptible to certain forms of replay attacks. The system default is to only enable Version 2. 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.

Fix Text

To ensure that "Protocol 2" is used by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*Protocol.*/Protocol 2/' /etc/ssh/sshd_config

Check Content

To check which protocol is configured for sshd, run the following: /usr/bin/sudo /usr/bin/grep ^Protocol /etc/ssh/sshd_config If there is no result or the result is not "2", this is a finding.

The OS X system must enforce password complexity by requiring that at least one numeric character be used.

Finding ID
AOSX-12-000585
Rule ID
AOSX-12-000585_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000071-GPOS-00039
CCI
CCI-000194
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

This setting may be enforced using the "Password Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor. If the file does not yet contain any policy settings, replace <dict/> with <dict></dict>. Then, insert the following text after the opening <dict> tag and before the closing </dict> tag. The same text can also be used if the line "<key>policyCategoryPasswordContent</key>" is not present. <key>policyCategoryPasswordContent</key> <array> <dict> <key>policyContent</key> <string>policyAttributePassword matches '(.*[0-9].*){1,}+'</string> <key>policyIdentifier</key> <string>com.apple.policy.legacy.requiresNumeric</string> <key>policyParameters</key> <dict> <key>minimumNumericCharacters</key> <integer>1</integer> </dict> </dict> </array> If the file does contain policy settings, and the line "<key>policyCategoryPasswordContent</key>" does exist, insert the following text after the opening <array> tag that comes right after it: <dict> <key>policyContent</key> <string>policyAttributePassword matches '(.*[0-9].*){1,}+'</string> <key>policyIdentifier</key> <string>com.apple.policy.legacy.requiresNumeric</string> <key>policyParameters</key> <dict> <key>minimumNumericCharacters</key> <integer>1</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that passwords contain at least one numeric character: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep requireAlphanumeric If "requireAlphanumeric" is not set to "1" or is undefined, this is a finding. If password policy is set with the "pwpolicy utility", run the following command instead: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "<key>policyCategoryPasswordContent</key>". If it does not exist, and password policy is not controlled by a directory service, this is a finding. Otherwise, in the array section that follows it, there should be a <dict> section that contains a check <string> that "matches" the variable "policyAttributePassword" to the regular expression "(.*[0-9].*){1,}+" or to a similar expression that will ensure the password contains a character in the range 0-9 one or more times. If this check allows users to create passwords without at least one numeric character, or if no such check exists, this is a finding.

The OS X system must enforce password complexity by requiring that at least one special character be used.

Finding ID
AOSX-12-000587
Rule ID
AOSX-12-000587_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000266-GPOS-00101
CCI
CCI-001619
Target Key
(None)
Documentable
No
Discussion

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: ~ ! @ # $ % ^ *.

Fix Text

This setting may be enforced using the "Password Policy" configuration profile or by a directory service.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that passwords contain at least one special character: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep minComplexChars If "minComplexChars" is not set to "1" or is undefined, this is a finding. Run the following command to check if the system is configured to require that passwords not contain repeated sequential characters or characters in increasing and decreasing sequential order: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowSimple If "allowSimple" is not set to "0" or is undefined, this is a finding.

The OS X system must enforce a minimum 15-character password length.

Finding ID
AOSX-12-000590
Rule ID
AOSX-12-000590_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000078-GPOS-00046
CCI
CCI-000205
Target Key
(None)
Documentable
No
Discussion

The minimum password length must be set to 15 characters. 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. The use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.

Fix Text

This setting is enforced using the "Password Policy" configuration profile. Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

To check the currently applied policies for passwords and accounts, use the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep minLength The parameter minLength should be "15". If it is less than "15", this is a finding.

The OS X system must not use telnet.

Finding ID
AOSX-12-000605
Rule ID
AOSX-12-000605_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000074-GPOS-00042
CCI
CCI-000197
Target Key
(None)
Documentable
No
Discussion

The "telnet" service must be disabled as it sends all data in a clear-text form that can be easily intercepted and read. The data needs to be protected at all times during transmission, and encryption is the standard method for protecting data in transit. If the data is not encrypted during transmission, it can be plainly read (i.e., clear text) and easily compromised. Disabling telnet is one way to mitigate this risk. Administrators should be instructed to use an alternate service for remote access sessions, non-local maintenance sessions, and diagnostic communications that uses encryption, such as SSH.

Fix Text

To disable the "telnet" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.telnetd The system may need to be restarted for the update to take effect.

Check Content

To check if the "telnet" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.telnetd If the results do not show the following, this is a finding: "com.apple.telnetd" => true

The OS X system must not use unencrypted FTP.

Finding ID
AOSX-12-000606
Rule ID
AOSX-12-000606_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000074-GPOS-00042
CCI
CCI-000197
Target Key
(None)
Documentable
No
Discussion

The "ftp" service must be disabled as it sends all data in a clear-text form that can be easily intercepted and read. The data needs to be protected at all times during transmission, and encryption is the standard method for protecting data in transit. If the data is not encrypted during transmission, it can be plainly read (i.e., clear text) and easily compromised. Disabling ftp is one way to mitigate this risk. Administrators should be instructed to use an alternate service for data transmission that uses encryption, such as SFTP.

Fix Text

To disable the "ftp" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.ftpd The system may need to be restarted for the update to take effect.

Check Content

To check if the "ftp" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.ftpd If the results do not show the following, this is a finding: "com.apple.ftpd" => true

The OS X system must implement cryptographic mechanisms to protect the integrity of non-local maintenance and diagnostic communications when used for non-local maintenance sessions.

Finding ID
AOSX-12-000690
Rule ID
AOSX-12-000690_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000393-GPOS-00173
CCI
CCI-002890
Target Key
(None)
Documentable
No
Discussion

The telnet service must be disabled, as it sends all data, including the user's password, in a clear-text form that can be easily intercepted and read. 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. Disabling telnet is one way to mitigate this risk. Administrator users should be instructed to use an alternate service that implements cryptography, such as SSH.

Fix Text

To disable the telnet service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.telnetd The system may need to be restarted for the update to take effect.

Check Content

To check if the telnet service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.telnetd If the results do not show the following, this is a finding: "com.apple.telnetd" => true

The OS X system must implement cryptographic mechanisms to protect the confidentiality of non-local maintenance and diagnostic communications when used for non-local maintenance sessions.

Finding ID
AOSX-12-000691
Rule ID
AOSX-12-000691_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000394-GPOS-00174
CCI
CCI-003123
Target Key
(None)
Documentable
No
Discussion

The "telnet" service must be disabled, as it sends all data, including the user's password, in a clear text form that can be easily intercepted and read. 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. Disabling telnet is one way to mitigate this risk. Administrator users should be instructed to use an alternate service that implements cryptography such as SSH.

Fix Text

To disable the telnet service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.telnetd The system may need to be restarted for the update to take effect.

Check Content

To check if the telnet service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.telnetd If the results do not show the following, this is a finding: "com.apple.telnetd" => true

The OS X system must employ strong authenticators in the establishment of non-local maintenance and diagnostic sessions.

Finding ID
AOSX-12-000695
Rule ID
AOSX-12-000695_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000125-GPOS-00065
CCI
CCI-000877
Target Key
(None)
Documentable
No
Discussion

The telnet service must be disabled, as it sends all data, including the user's password, in a clear-text form that can be easily intercepted and read. 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. Disabling telnet is one way to mitigate this risk. Administrators should be instructed to use an alternate service for remote access sessions that uses encryption, such as SSH.

Fix Text

To disable the telnet service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.telnetd The system may need to be restarted for the update to take effect.

Check Content

To check if the telnet service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.telnetd If the results do not show the following, this is a finding: "com.apple.telnetd" => true

The OS X system must allow only applications downloaded from the App Store to run.

Finding ID
AOSX-12-000710
Rule ID
AOSX-12-000710_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000366-GPOS-00153
CCI
CCI-001749
Target Key
(None)
Documentable
No
Discussion

Gatekeeper settings must be configured correctly to only allow the system to run applications downloaded from the Mac App Store or applications signed with a valid Apple Developer ID code. Administrator users will still have the option to override these settings on a per-app basis. Gatekeeper is a security feature that ensures that applications must be digitally signed by an Apple-issued certificate in order to run. Digital signatures allow the OS X to verify that the application has not been modified by a malicious third party.

Fix Text

This setting is enforced using the "Security Privacy Policy" configuration profile.

Check Content

To verify only applications downloaded from the App Store are allowed to run, type the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep EnableAssessment If "EnableAssessment" is not set to "1", this is a finding. /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep AllowIdentifiedDevelopers If "AllowIdentifiedDevelopers" is not set to "1", this is a finding.

The OS X system must be configured so that end users cannot override Gatekeeper settings.

Finding ID
AOSX-12-000711
Rule ID
AOSX-12-000711_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Gatekeeper must be configured with a configuration profile to prevent normal users from overriding its setting. If users are allowed to disable Gatekeeper or set it to a less restrictive setting, malware could be introduced into the system. Gatekeeper is a security feature that ensures applications must be digitally signed by an Apple-issued certificate in order to run. Digital signatures allow Mac OS X to verify the application has not been modified by a malicious third party.

Fix Text

This setting is enforced using the "Security Privacy Policy" configuration profile.

Check Content

To verify the user cannot override Gatekeeper settings, type the following code: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableOverride If "DisableOverride" is not set to "1", this is a finding.

The OS X system must be configured with the SSH daemon ClientAliveInterval option set to 900 or less.

Finding ID
AOSX-12-000720
Rule ID
AOSX-12-000720_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000163-GPOS-00072
CCI
CCI-001133
Target Key
(None)
Documentable
No
Discussion

SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out login attempts. 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 or an incomplete login attempt will also free up resources committed by the managed network element.

Fix Text

To ensure that "ClientAliveInterval" is set correctly, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*ClientAliveInterval.*/ClientAliveInterval 900/' /etc/ssh/sshd_config

Check Content

The SSH daemon "ClientAliveInterval" option must be set correctly. To check the idle timeout setting for SSH sessions, run the following: /usr/bin/sudo /usr/bin/grep ^ClientAliveInterval /etc/ssh/sshd_config If the setting is not "900" or less, this is a finding.

The OS X system must be configured with the SSH daemon ClientAliveCountMax option set to 0.

Finding ID
AOSX-12-000721
Rule ID
AOSX-12-000721_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000163-GPOS-00072
CCI
CCI-001133
Target Key
(None)
Documentable
No
Discussion

SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out login attempts. 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 or an incomplete login attempt will also free up resources committed by the managed network element.

Fix Text

To ensure that the SSH idle timeout occurs precisely when the "ClientAliveCountMax" is set, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*ClientAliveCountMax.*/ClientAliveCountMax 0/' /etc/ssh/sshd_config

Check Content

The SSH daemon "ClientAliveCountMax" option must be set correctly. To verify the SSH idle timeout will occur when the "ClientAliveCountMax" is set, run the following command: /usr/bin/sudo /usr/bin/grep ^ClientAliveCountMax /etc/ssh/sshd_config If the setting is not "ClientAliveCountMax 0", this is a finding.

The OS X system must be configured with the SSH daemon LoginGraceTime set to 30 or less.

Finding ID
AOSX-12-000722
Rule ID
AOSX-12-000722_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000163-GPOS-00072
CCI
CCI-001133
Target Key
(None)
Documentable
No
Discussion

SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out login attempts. 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 or an incomplete login attempt will also free up resources committed by the managed network element.

Fix Text

To ensure that "LoginGraceTime" is configured correctly, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*LoginGraceTime.*/LoginGraceTime 30/' /etc/ssh/sshd_config

Check Content

The SSH daemon "LoginGraceTime" must be set correctly. To check the amount of time that a user can log in through SSH, run the following command: /usr/bin/sudo /usr/bin/grep ^LoginGraceTime /etc/ssh/sshd_config If the value is not set to "30" or less, this is a finding.

The OS X system must issue or obtain public key certificates under an appropriate certificate policy from an approved service provider.

Finding ID
AOSX-12-000750
Rule ID
AOSX-12-000750_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000478-GPOS-00223
CCI
CCI-002450
Target Key
(None)
Documentable
No
Discussion

DoD-approved certificates must be installed to the System Keychain so they will be available to all users. For user certificates, each organization obtains certificates from an approved, shared service provider, as required by OMB policy. For federal agencies operating a legacy public key infrastructure cross-certified with the Federal Bridge Certification Authority at medium assurance or higher, this Certification Authority will suffice. This control focuses on certificates with a visibility external to the information system and does not include certificates related to internal system operations; for example, application-specific time services.

Fix Text

Obtain the approved DOD certificates from the appropriate authority. Use Keychain Access from "/Applications/Utilities" to add certificates to the System Keychain.

Check Content

To view a list of installed certificates, run the following command: /usr/bin/sudo /usr/bin/security dump-keychain | /usr/bin/grep labl | awk -F\" '{ print $4 }' If this list does not contain approved certificates, this is a finding.

The OS X system must implement cryptographic mechanisms to protect the confidentiality and integrity of all information at rest.

Finding ID
AOSX-12-000780
Rule ID
AOSX-12-000780_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000185-GPOS-00079
CCI
CCI-001199
Target Key
(None)
Documentable
No
Discussion

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) within an organizational information system. Mobile devices, laptops, desktops, and storage devices can be lost or stolen, and the contents of their data storage (e.g., hard drives and non-volatile memory) can be read, copied, or altered. By encrypting the system hard drive, the confidentiality and integrity of any data stored on the system is ensured. FileVault Disk Encryption mitigates this risk.

Fix Text

Open System Preferences >> Security and Privacy and navigate to the "FileVault" tab. Use this panel to configure full-disk encryption. Alternately, from the command line, run the following command to enable "FileVault": /usr/bin/sudo /usr/bin/fdesetup enable After "FileVault" is initially set up, additional users can be added.

Check Content

To check if "FileVault 2" is enabled, run the following command: /usr/bin/sudo /usr/bin/fdesetup status If "FileVault" is "Off" and the device is a mobile device or the organization has determined that the drive must encrypt data at rest, this is a finding.

The OS X system must implement cryptographic mechanisms to prevent unauthorized modification of all information at rest on all operating system components.

Finding ID
AOSX-12-000785
Rule ID
AOSX-12-000785_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000404-GPOS-00183
CCI
CCI-002475
Target Key
(None)
Documentable
No
Discussion

FileVault Disk Encryption must be enabled. This ensures that any data stored on the hard drive will be protected by cryptographic means when the system is powered off, mitigating the risk of unauthorized modification of that data. 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).

Fix Text

Open System Preferences >> Security and Privacy and navigate to the "FileVault" tab. Use this panel to configure full-disk encryption. Alternately, from the command line, run the following command to enable "FileVault": /usr/bin/sudo /usr/bin/fdesetup enable After "FileVault" is initially set up, additional users can be added.

Check Content

To check if "FileVault 2" is enabled, run the following command: /usr/bin/sudo /usr/bin/fdesetup status If "FileVault" is "Off" and the device is a mobile device or the organization has determined that the drive must encrypt data at rest, this is a finding.

The OS X system must implement cryptographic mechanisms to prevent unauthorized disclosure of all information at rest on all operating system components.

Finding ID
AOSX-12-000786
Rule ID
AOSX-12-000786_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000405-GPOS-00184
CCI
CCI-002476
Target Key
(None)
Documentable
No
Discussion

FileVault Disk Encryption must be enabled. This ensures that any data stored on the hard drive will be protected by cryptographic means when the system is powered off, mitigating the risk of unauthorized disclosure of that data. 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).

Fix Text

Open System Preferences >> Security and Privacy and navigate to the "FileVault" tab. Use this panel to configure full-disk encryption. Alternately, from the command line, run the following command to enable "FileVault": /usr/bin/sudo /usr/bin/fdesetup enable After "FileVault" is initially set up, additional users can be added.

Check Content

To check if "FileVault 2" is enabled, run the following command: /usr/bin/sudo /usr/bin/fdesetup status If "FileVault" is "Off" and the device is a mobile device or the organization has determined that the drive must encrypt data at rest, this is a finding.

The OS X 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).

Finding ID
AOSX-12-000835
Rule ID
AOSX-12-000835_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000191-GPOS-00080
CCI
CCI-001233
Target Key
(None)
Documentable
No
Discussion

An approved tool for continuous network scanning must be installed and configured to run. 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.

Fix Text

Install an approved HBSS solution onto the system.

Check Content

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved tool capable of continuous scanning is loaded on the system. The recommended system is the McAfee HBSS. If no such tool is installed on the system, this is a finding.

The OS X system must restrict the ability of individuals to use USB storage devices.

Finding ID
AOSX-12-000850
Rule ID
AOSX-12-000850_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

External hard drives, such as USB, must be disabled for users. USB hard drives are a potential vector for malware and can be used to exfiltrate sensitive data if an approved data-loss prevention (DLP) solution is not installed.

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To verify external USB drives are disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 3 harddisk-external If the option "eject,alert" is not set for "harddisk-external", this is a finding.

The OS X system must be configured with the usbmuxd daemon disabled.

Finding ID
AOSX-12-000862
Rule ID
AOSX-12-000862_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Connections to unauthorized iOS devices (iPhones, iPods, and iPads) open the system to possible compromise via exfiltration of system data. Disabling the "usbmuxd" daemon blocks connections to iOS devices.

Fix Text

To disable the "usbmuxd" daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.usbmuxd The system may need to be restarted for the update to take effect.

Check Content

To check if the "usbmuxd" daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.usbmuxd If the results do not show the following, this is a finding: "com.apple.usbmuxd" => true

The OS X system must not allow an unattended or automatic login to the system.

Finding ID
AOSX-12-000925
Rule ID
AOSX-12-000925_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00229
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

When automatic logins are enabled, the default user account is automatically logged on at boot time without prompting the user for a password. Even if the screen is later locked, a malicious user would be able to reboot the computer to log in. Disabling automatic logins mitigates this risk.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the system is configured to automatically log in, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableAutoLoginClient If "com.apple.login.mcx.DisableAutoLoginClient" is not set to "1", this is a finding.

The OS X system login window must be configured to prompt for username and password, rather than show a list of users.

Finding ID
AOSX-12-000930
Rule ID
AOSX-12-000930_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00229
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The login window must be configured to prompt all users for both a username and a password. By default, the system displays a list of known users at the login screen. This gives an advantage to an attacker with physical access to the system, as the attacker would only have to guess the password for one of the listed accounts.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the login window is configured to prompt for user name and password, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep SHOWFULLNAME If there is no result, or "SHOWFULLNAME" is not set to "1", this is a finding.

The OS X firewall must have logging enabled.

Finding ID
AOSX-12-000950
Rule ID
AOSX-12-000950_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Firewall logging must be enabled. This ensures that malicious network activity will be logged to the system.

Fix Text

To enable the firewall logging, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on

Check Content

If HBSS is used, this is not applicable. To check if the OS X firewall has logging enabled, run the following command: /usr/libexec/ApplicationFirewall/socketfilterfw --getloggingmode | /usr/bin/grep on If the result does not show "on", this is a finding.

The OS X system must be configured so that Bluetooth devices are not allowed to wake the computer.

Finding ID
AOSX-12-000955
Rule ID
AOSX-12-000955_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

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 must remain in place until the user reauthenticates. No other activity aside from reauthentication must unlock the system.

Fix Text

Manually change this control on the computer by opening System Preferences >> Bluetooth. Click "Advanced" and ensure the "Allow Bluetooth devices to wake this computer" is not checked. This control is not necessary if Bluetooth has been completely disabled. The following can be run from the command line to disable "Remote Wake" for the current user: /usr/bin/defaults write /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57`.plist RemoteWakeEnabled 0

Check Content

To check if the Bluetooth Remote Wake setting is disabled, run the following two commands as the primary user: /usr/bin/defaults -currentHost read com.apple.Bluetooth RemoteWakeEnabled /usr/bin/defaults read /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | grep "Hardware UUID" | cut -c22-57`.plist RemoteWakeEnabled If there is an error or nothing is returned, or the return value is "1" for either command, this is a finding.

The OS X system must be configured with Bluetooth Sharing disabled.

Finding ID
AOSX-12-000965
Rule ID
AOSX-12-000965_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Bluetooth sharing allows users to wirelessly transmit files between the OS X and Bluetooth-enabled devices, including personally owned cellphones and tablets. A malicious user might introduce viruses or malware onto the system or extract sensitive files. Disabling Bluetooth Sharing mitigates this risk.

Fix Text

To disable Bluetooth Sharing, open System Preferences >> Sharing and uncheck the box next to "Bluetooth Sharing". This control is not necessary if Bluetooth has been completely disabled. The following can be run from the command line to disable "Bluetooth Sharing" for the current user: /usr/bin/defaults write /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57`.plist PrefKeyServicesEnabled 0

Check Content

To check if Bluetooth Sharing is enabled, open System Preferences >> Sharing and verify that "Bluetooth Sharing" is not checked "ON". If it is "ON", this is a finding. The following command can be run from the command line: /usr/bin/defaults read /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | grep "Hardware UUID" | cut -c22-57`.plist PrefKeyServicesEnabled If there is an error or nothing is returned, or the return value is "1", this is a finding.

The OS X system must be configured to disable Remote Apple Events.

Finding ID
AOSX-12-000975
Rule ID
AOSX-12-000975_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000096-GPOS-00050
CCI
CCI-000382
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. Remote Apple Events must be disabled.

Fix Text

To disable Remote Apple Events, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.AEServer The system may need to be restarted for the update to take effect.

Check Content

To check if Remote Apple Events is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.AEServer If the results do not show the following, this is a finding. "com.apple.AEServer" => true

The OS X system must be configured with the sudoers file configured to authenticate users on a per -tty basis.

Finding ID
AOSX-12-000995
Rule ID
AOSX-12-000995_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The "sudo" command must be configured to prompt for the administrator user's password at least once in each newly opened Terminal window or remote login session, as this prevents a malicious user from taking advantage of an unlocked computer or an abandoned login session to bypass the normal password prompt requirement. Without the "tty_tickets" option, all open local and remote login sessions would be authenticated to use sudo without a password for the duration of the configured password timeout window.

Fix Text

Edit the "/etc/sudoers" file to contain the line: Defaults tty_tickets This line can be placed in the defaults section or at the end of the file.

Check Content

To check if the "tty_tickets" option is set for "/usr/bin/sudo", run the following command: /usr/bin/sudo /usr/bin/grep tty_tickets /etc/sudoers If there is no result, this is a finding.

The OS X Application Firewall must be enabled.

Finding ID
AOSX-12-001080
Rule ID
AOSX-12-001080_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00232
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The Application Firewall is the built-in firewall that comes with OS X and must be enabled. 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.

Fix Text

To enable the firewall, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

Check Content

If an approved HBSS solution is installed, this is not applicable. To check if the OS X firewall has been enabled, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate If the result is "disabled", this is a finding.

The OS X system must be configured with all public directories owned by root or an application account.

Finding ID
AOSX-12-001110
Rule ID
AOSX-12-001110_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

All public directories must be owned by "root", the local admin user, or an application account. Directory owners have permission to delete any files contained in that directory, even if the files are owned by other user accounts. By setting the owner to an administrator or application account, regular users will not be permitted to delete each other's files.

Fix Text

To change the ownership of any finding, run the following command: /usr/bin/sudo find / -type d -perm +o+w -not -uid 0 -exec chown root {} \;

Check Content

To display all directories that are writable by all and not owned by "root", run the following command: /usr/bin/sudo find / -type d -perm +o+w -not -uid 0 If anything is returned, and those directories are not owned by a local admin or application account, this is a finding.

The OS X system must be configured with the finger service disabled.

Finding ID
AOSX-12-001115
Rule ID
AOSX-12-001115_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The "finger" service has had several security vulnerabilities in the past and is not a necessary service. It is disabled by default; enabling it would increase the attack surface of the system.

Fix Text

To disable the "finger" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.fingerd The system may need to be restarted for the update to take effect.

Check Content

To check if the "finger" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.fingerd If the results do not show the following, this is a finding: "com.apple.fingerd" => true

The OS X system must be configured with the sticky bit set on all public directories.

Finding ID
AOSX-12-001120
Rule ID
AOSX-12-001120_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The sticky bit must be set on all public directories, as it prevents users with write access to the directory from deleting or renaming files that belong to other users inside it.

Fix Text

Run the following command to set the "sticky bit" on all world-writable directories: /usr/bin/sudo /usr/bin/find / -type d \( -perm -0002 -a ! -perm -1000 \) -exec chmod +t {} \;

Check Content

Run the following command to view all world-writable directories that do not have the "sticky bit" set: /usr/bin/sudo /usr/bin/find / -type d \( -perm -0002 -a ! -perm -1000 \) If anything is returned, this is a finding.

The OS X system must be configured with the prompt for Apple ID and iCloud disabled.

Finding ID
AOSX-12-001125
Rule ID
AOSX-12-001125_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The prompt for Apple ID and iCloud must be disabled, as it might mislead new users into creating unwanted Apple IDs and iCloud storage accounts upon their first login.

Fix Text

This setting is enforced using the "Disable iCloud Policy" configuration profile.

Check Content

To check if the prompt for "Apple ID" and "iCloud" are disabled for new users, run the following command: /usr/bin/sudo /usr/bin/defaults read /System/Library/User\ Template/English.lproj/Library/Preferences/com.apple.SetupAssistant If there is no result, if it prints out that the domain "does not exist", or the results do not include "DidSeeCloudSetup = 1 AND LastSeenCloudProductVersion = 10.12", this is a finding.

The OS X system must be configured so that users do not have Apple IDs signed into iCloud.

Finding ID
AOSX-12-001130
Rule ID
AOSX-12-001130_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Users should not sign into iCloud, as this leads to the possibility that sensitive data could be saved to iCloud storage or that users could inadvertently introduce viruses or malware previously saved to iCloud from other systems.

Fix Text

This must be resolved manually. With the affected user logged on, open System Preferences >> iCloud. Choose "Sign Out".

Check Content

To see if any user account has configured an Apple ID for iCloud usage, run the following command: /usr/bin/sudo find /Users/ -name 'MobileMeAccounts.plist' -exec /usr/bin/defaults read '{}' \; If the results show any accounts listed, this is a finding.

The OS X system must be configured with iTunes Music Sharing disabled.

Finding ID
AOSX-12-001140
Rule ID
AOSX-12-001140_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

When iTunes Music Sharing is enabled, the computer starts a network listening service that shares the contents of the user's music collection with other users in the same subnet. Unnecessary network services should always be disabled because they increase the attack surface of the system. Disabling iTunes Music Sharing mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

To check if iTunes Music Sharing is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep disableSharedMusic If "disableSharedMusic" is not set to "1", this is a finding.

All setuid executables on the OS X system must be documented.

Finding ID
AOSX-12-001145
Rule ID
AOSX-12-001145_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Very few of the executables that come preinstalled on the OS X have the "setuid" bit set, and administrators should never add the "setuid" bit to any executable that does not already have it set by the vendor. Executables with the "setuid" bit set allow anyone that executes them to be temporarily assigned the UID of the file owner. In practice, this almost always is the root account. While some vendors depend on this file attribute for proper operation, security problems can result if "setuid" is assigned to programs allowing reading and writing of files, or shell escapes, as this could lead to unprivileged users gaining privileged access to files and directories on the system.

Fix Text

Document all of the files with the "setuid" bit set. Remove any undocumented files.

Check Content

If available, provide a list of "setuids" provided by a vendor. To list all of the files with the "setuid" bit set, run the following command to send all results to a file named "suidfilelist": /usr/bin/sudo find / -perm -4000 -exec /bin/ls -ldb {} \; > suidfilelist If any of the files listed are not documented as needing to have the "setuid" bit set by the vendor, this is a finding.

The OS X system must not accept source-routed IPv4 packets.

Finding ID
AOSX-12-001195
Rule ID
AOSX-12-001195_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

A source-routed packet attempts to specify the network path the packet should take. If the system is not configured to block the incoming source-routed packets, an attacker can redirect the system's network traffic. Configuring the system to drop incoming source-routed IPv4 packets mitigates this risk.

Fix Text

To configure the system to not accept "source-routed" packets, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.accept_sourceroute=0

Check Content

To check if the system is configured to accept "source-routed" packets, run the following command: sysctl net.inet.ip.accept_sourceroute If the value is not "0", this is a finding.

The OS X system must ignore IPv4 ICMP redirect messages.

Finding ID
AOSX-12-001200
Rule ID
AOSX-12-001200_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

ICMP redirects are broadcast to reshape network traffic. A malicious user could craft fake redirect packets and try to force all network traffic to pass through a network sniffer. If the system is not configured to ignore these packets, it could be susceptible to this kind of attack.

Fix Text

To configure the system to ignore "ICMP redirect" messages, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.icmp.drop_redirect=1

Check Content

To check if the system is configured to ignore "ICMP redirect" messages, run the following command: sysctl net.inet.icmp.drop_redirect If the value is not "1", this is a finding.

The OS X system must not have IP forwarding for IPv4 enabled.

Finding ID
AOSX-12-001205
Rule ID
AOSX-12-001205_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

IP forwarding for IPv4 must not be enabled, as only authorized systems should be permitted to operate as routers.

Fix Text

To configure the system to disable "IP forwarding", add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.forwarding=0

Check Content

To check if "IP forwarding" is enabled, run the following command: sysctl net.inet.ip.forwarding If the values are not "0", this is a finding.

The OS X system must not have IP forwarding for IPv6 enabled.

Finding ID
AOSX-12-001206
Rule ID
AOSX-12-001206_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

IP forwarding for IPv6 must not be enabled, as only authorized systems should be permitted to operate as routers.

Fix Text

To configure the system to disable "IP forwarding", add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet6.ip6.forwarding=0

Check Content

To check if "IP forwarding" is enabled, run the following command: sysctl net.inet6.ip6.forwarding If the values are not "0", this is a finding.

The OS X system must not send IPv4 ICMP redirects by default.

Finding ID
AOSX-12-001210
Rule ID
AOSX-12-001210_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

ICMP redirects are broadcast to reshape network traffic. A malicious user could use the system to send fake redirect packets and try to force all network traffic to pass through a network sniffer. Disabling ICMP redirect broadcasts mitigates this risk.

Fix Text

To configure the system to not send ICMP redirects, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.redirect=0

Check Content

To check if the system is configured to send ICMP redirects, run the following command: sysctl net.inet.ip.redirect If the values are not set to "0", this is a finding.

The OS X system must not send IPv6 ICMP redirects by default.

Finding ID
AOSX-12-001211
Rule ID
AOSX-12-001211_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

ICMP redirects are broadcast to reshape network traffic. A malicious user could use the system to send fake redirect packets and try to force all network traffic to pass through a network sniffer. Disabling ICMP redirect broadcasts mitigates this risk.

Fix Text

To configure the system to not send ICMP redirects, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet6.ip6.redirect=0

Check Content

To check if the system is configured to send ICMP redirects, run the following command: sysctl net.inet6.ip6.redirect If the values are not set to "0", this is a finding.

The OS X system must prevent local applications from generating source-routed packets.

Finding ID
AOSX-12-001215
Rule ID
AOSX-12-001215_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

A source-routed packet attempts to specify the network path that the system should take. If the system is not configured to block the sending of source-routed packets, an attacker can redirect the system's network traffic.

Fix Text

To configure the system to not forward source-routed packets, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.sourceroute=0

Check Content

To check if the system is configured to forward source-routed packets, run the following command: sysctl net.inet.ip.sourceroute If the value is not set to "0", this is a finding.

The OS X system must not process Internet Control Message Protocol [ICMP] timestamp requests.

Finding ID
AOSX-12-001220
Rule ID
AOSX-12-001220_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

ICMP timestamp requests reveal information about the system and can be used to determine which operating system is installed. Precise time data can also be used to launch time-based attacks against the system. Configuring the system to drop incoming ICMPv4 timestamp requests mitigates these risks.

Fix Text

To disable ICMP timestamp responses, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.icmp.timestamp=0

Check Content

To check if the system is configured to process ICMP timestamp requests, run the following command: sysctl net.inet.icmp.timestamp If the value is not set to "0", this is a finding.

The OS X system must have unused network devices disabled.

Finding ID
AOSX-12-001235
Rule ID
AOSX-12-001235_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

If an unused network device is left enabled, a user might be able to activate it at a later time. Unused network devices should be disabled.

Fix Text

To disable a network device, run the following command, substituting the name of the device in place of "'<networkservice>'": /usr/bin/sudo /usr/sbin/networksetup -setnetworkserviceenabled '<networkservice>' off

Check Content

To list the network devices that are enabled on the system, run the following command: /usr/bin/sudo /usr/sbin/networksetup -listallnetworkservices A disabled device will have an asterisk in front of its name. If any listed device that is not in use is missing this asterisk, this is a finding.

The OS X system must be configured to disable Internet Sharing.

Finding ID
AOSX-12-001270
Rule ID
AOSX-12-001270_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. Internet Sharing must be disabled.

Fix Text

To disable Internet Sharing, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.NetworkSharing The system may need to be restarted for the update to take effect.

Check Content

To check if Internet Sharing is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.NetworkSharing If the results do not show the following, this is a finding: "com.apple.NetworkSharing" => true

The OS X system must be configured to disable Web Sharing.

Finding ID
AOSX-12-001275
Rule ID
AOSX-12-001275_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. Web Sharing is non-essential and must be disabled.

Fix Text

To disable Web Sharing, run the following command: /usr/bin/sudo /bin/launchctl disable system/org.apache.httpd The system may need to be restarted for the update to take effect.

Check Content

To check if Web Sharing is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep org.apache.httpd If the results do not show the following, this is a finding: "org.apache.httpd" => true

The OS X system must enforce an account lockout time period of 15 minutes in which a user makes three consecutive invalid login attempts.

Finding ID
AOSX-12-001324
Rule ID
AOSX-12-001324_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000329-GPOS-00128
CCI
CCI-002238
Target Key
(None)
Documentable
No
Discussion

Setting a lockout time period of 15 minutes is an effective deterrent against brute forcing that also makes allowances for legitimate mistakes by users. When three invalid login attempts are made, the account will be locked.

Fix Text

This setting may be enforced using the "Password Policy" configuration profile or by a directory service. The following two lines within the configuration enforce lockout expiration to "15" minutes: <key>autoEnableInSeconds</key> <integer>900</integer> To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor and ensure it contains the following text after the opening <dict> tag and before the closing </dict> tag. Replace <dict/> first with <dict></dict> if necessary. <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line "<key>policyCategoryAuthentication</key>" already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system has the correct setting for the login reset timer: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep 'minutesUntilFailedLoginReset' If "minutesUntilFailedLoginReset" is not set to "15", this is a finding. If password policy is set with the "pwpolicy" utility, the variable names may vary depending on how the policy was set. To check if the password policy is configured to disable an account for 15 minutes after 3 unsuccessful login attempts, run the following command to output the password policy to the screen: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "<key>policyCategoryAuthentication</key>". If this does not exist, and password policy is not controlled by a directory service, and this is a finding. In the array that follows, there should one or more <dict> sections that describe policy checks. One should contain a <string> that allows users to log in if "policyAttributeFailedAuthentications" is less than "policyAttributeMaximumFailedAuthentications". Under policyParameters, "policyAttributeMaximumFailedAuthentications" should be set to "3". If "policyAttributeMaximumFailedAuthentications" is not set to "3", this is a finding. In the same check or in another <dict> section, there should be a <string> that allows users to log in if the "policyAttributeCurrentTime" is greater than the result of adding "15" minutes (900 seconds) to "policyAttributeLastFailedAuthenticationTime". The check might use a variable defined in its "policyParameters" section. If the check does not exist or if the check adds too great an amount of time, this is a finding.

The OS X system must enforce account lockout after the limit of three consecutive invalid login attempts by a user during a 15-minute time period.

Finding ID
AOSX-12-001325
Rule ID
AOSX-12-001325_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000021-GPOS-00005
CCI
CCI-000044
Target Key
(None)
Documentable
No
Discussion

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

Fix Text

This setting may be enforced using the "Password Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor and ensure it contains the following text after the opening <dict> tag and before the closing </dict> tag. Replace <dict/> first with <dict></dict> if necessary. <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line "<key>policyCategoryAuthentication</key>" already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line <key>policyCategoryAuthentication</key> already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration or bugs in OS X may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system has the correct setting for the number of permitted failed login attempts: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep 'maxFailedAttempts' If "maxFailedAttempts" is not set to "3", this is a finding. If password policy is set with the "pwpolicy" utility, the variable names may vary depending on how the policy was set. To check if the password policy is configured to disable an account for 15 minutes after 3 unsuccessful login attempts, run the following command to output the password policy to the screen: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "<key>policyCategoryAuthentication</key>". If this does not exist, and password policy is not controlled by a directory service, this is a finding. In the array that follows, there should be one or more <dict> sections that describe policy checks. One should contain a <string> that allows users to log in if "policyAttributeFailedAuthentications" is less than "policyAttributeMaximumFailedAuthentications". Under policyParameters, "policyAttributeMaximumFailedAuthentications" should be set to "3". If "policyAttributeMaximumFailedAuthentications" is not set to "3", this is a finding. In the same check or in another <dict> section, there should be a <string> that allows users to log in if the "policyAttributeCurrentTime" is greater than the result of adding "15" minutes (900 seconds) to "policyAttributeLastFailedAuthenticationTime". The check might use a variable defined in its policyParameters section. If the check does not exist or if the check adds too great an amount of time, this is a finding.

The OS X system must automatically lock the account until the locked account is released by an administrator when three unsuccessful login attempts in 15 minutes are exceeded.

Finding ID
AOSX-12-001326
Rule ID
AOSX-12-001326_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000329-GPOS-00128
CCI
CCI-002238
Target Key
(None)
Documentable
No
Discussion

By limiting the number of failed login attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute forcing, is reduced. Limits are imposed by locking the account. Setting a lockout expiration of 15 minutes is an effective deterrent against brute forcing that also makes allowances for legitimate mistakes by users.

Fix Text

This setting may be enforced using the "Password Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor and ensure it contains the following text after the opening <dict> tag and before the closing </dict> tag. Replace <dict/> first with <dict></dict> if necessary. <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line "<key>policyCategoryAuthentication</key>" already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration or bugs in OS X may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system has the correct setting for the number of permitted failed login attempts and the login reset timer: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep 'maxFailedAttempts\|minutesUntilFailedLoginReset' If "maxFailedAttempts" is not set to "3" and "minutesUntilFailedLoginReset" is not set to "15", this is a finding. If password policy is set with the "pwpolicy" utility, the variable names may vary depending on how the policy was set. To check if the password policy is configured to disable an account for 15 minutes after 3 unsuccessful login attempts, run the following command to output the password policy to the screen: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "<key>policyCategoryAuthentication</key>". If this does not exist, and password policy is not controlled by a directory service, this is a finding. In the array that follows, there should be one or more <dict> sections that describe policy checks. One should contain a <string> that allows users to log in if "policyAttributeFailedAuthentications" is less than "policyAttributeMaximumFailedAuthentications". Under policyParameters, "policyAttributeMaximumFailedAuthentications" should be set to "3". If "policyAttributeMaximumFailedAuthentications" is not set to "3", this is a finding. In the same check or in another <dict> section, there should be a <string> that allows users to log in if the "policyAttributeCurrentTime" is greater than the result of adding "15" minutes (900 seconds) to "policyAttributeLastFailedAuthenticationTime". The check might use a variable defined in its "policyParameters" section. If the check does not exist or if the check adds too great an amount of time, this is a finding.

The OS X system must shut down by default upon audit failure (unless availability is an overriding concern).

Finding ID
AOSX-12-001355
Rule ID
AOSX-12-001355_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000047-GPOS-00023
CCI
CCI-000140
Target Key
(None)
Documentable
No
Discussion

The audit service should shut down the computer if it is unable to audit system events. Once audit failure occurs, user and system activity is no longer recorded and malicious activity could go undetected. 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 on the nature of the failure mode. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: (i) 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. (ii) 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.

Fix Text

Edit the "/etc/security/audit_control file" and change the value for policy to include the setting "ahlt". To do this programmatically, run the following command: sudo /usr/bin/sed -i.bak '/^policy/ s/$/,ahlt/' /etc/security/audit_control; sudo /usr/sbin/audit -s

Check Content

To view the setting for the audit control system, run the following command: sudo /usr/bin/grep ^policy /etc/security/audit_control | /usr/bin/grep ahlt If there is no result, this is a finding.

The OS X system must use a DoD anti-virus program.

Finding ID
AOSX-12-001465
Rule ID
AOSX-12-001465_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

An approved anti-virus product must be installed and configured to run. Malicious software can establish a base on individual desktops and servers. Employing an automated mechanism to detect this type of software will aid in elimination of the software from the operating system.

Fix Text

Install an approved anti-virus solution onto the system.

Check Content

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved anti-virus solution is loaded on the system. The anti-virus solution may be bundled with an approved host-based security solution. If there is no local anti-virus solution installed on the system, this is a finding.

The OS X system must be configured to disable AirDrop.

Finding ID
AOSX-12-002050
Rule ID
AOSX-12-002050_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. AirDrop must be disabled.

Fix Text

Disabling AirDrop is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if AirDrop has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableAirDrop If "DisableAirDrop" is not set to "1", this is a finding.

The OS X system must be integrated into a directory services infrastructure.

Finding ID
AOSX-12-002060
Rule ID
AOSX-12-002060_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Distinct user account databases on each separate system cause problems with username and password policy enforcement. Most approved directory services infrastructure solutions allow centralized management of users and passwords.

Fix Text

Integrate the system into an existing directory services infrastructure.

Check Content

To determine if the system is integrated to a directory service, ask the System Administrator (SA) or Information System Security Officer (ISSO) or run the following command: /usr/bin/sudo dscl localhost -list . | /usr/bin/grep -vE '(Contact | Search | Local)' If nothing is returned, or if the system is not integrated into a directory service infrastructure, this is a finding.

The OS X system must generate audit records for all kernel module load, unload, and restart actions and also for all program initiations.

Finding ID
AOSX-12-002065
Rule ID
AOSX-12-002065_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000477-GPOS-00222
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

Kernel modules, called kernel extensions in the OS X, are compiled segments of code that are dynamically loaded into the kernel as required to support specific pieces of hardware or functionality. Privileged users are permitted to load or unload kernel extensions manually. An attacker might attempt to load a kernel extension that is known to be insecure to increase the attack surface of the system, or a user might plug in an unauthorized device that triggers a kernel extension to be loaded. Auditing administrative actions, which include the loading or unloading of kernel extensions, mitigates this risk.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Privileged access, including administrative use of the command line tools "kextload" and "kextunload", is logged via the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to modify security objects occur.

Finding ID
AOSX-12-002070
Rule ID
AOSX-12-002070_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000463-GPOS-00207
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

The permissions on a file establish which users are permitted to access or modify it. An attacker may attempt to change the permissions on a file to prevent legitimate users from accessing it or to grant additional access to an account the attacker controls. Auditing successful and unsuccessful attempts to modify security objects such as file permissions mitigates this risk.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Changes to file permissions are logged by way of the "fm" flag. If "fm" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to modify categories of information (e.g., classification levels) occur.

Finding ID
AOSX-12-002080
Rule ID
AOSX-12-002080_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000465-GPOS-00209
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

The permissions on a file establish which users are permitted to access or modify it. An attacker may attempt to change the permissions on a file to prevent legitimate users from accessing it or to grant additional access to an account the attacker controls. Auditing successful and unsuccessful attempts to modify security objects such as file permissions mitigates this risk.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Changes to file permissions are logged by way of the "fm" flag. If "fm" is not listed in the result of the check, this is a finding.

The OS X system must enforce a 60-day maximum password lifetime restriction.

Finding ID
AOSX-12-002085
Rule ID
AOSX-12-002085_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000076-GPOS-00044
CCI
CCI-000199
Target Key
(None)
Documentable
No
Discussion

Any password, no matter how complex, can eventually be cracked. Therefore, passwords need to be changed periodically. One method of minimizing this risk is to use complex passwords and periodically change them. 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.

Fix Text

This setting may be enforced using the "Password Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor. If the file does not yet contain any policy settings, replace <dict/> with <dict></dict>. If there already is a policy block that refers to password expiration, ensure it is set to "60" days. If the line "<key>policyCategoryPasswordChange</key>" is not present in the file, add the following text immediately after the opening <dict> tag in the file: <key>policyCategoryPasswordChange</key> <array> <dict> <key>policyContent</key> <string>policyAttributeCurrentTime > policyAttributeLastPasswordChangeTime + (policyAttributeExpiresEveryNDays * 24 * 60 * 60)</string> <key>policyIdentifier</key> <string>Password Change Interval</string> <key>policyParameters</key> <dict> <key>policyAttributeExpiresEveryNDays</key> <integer>60</integer> </dict> </dict> </array> If the line "<key>policyCategoryPasswordChange</key>" is already present in the file, the following text should be added just after the opening <array> tag that follows the line instead: <dict> <key>policyContent</key> <string>policyAttributeCurrentTime > policyAttributeLastPasswordChangeTime + (policyAttributeExpiresEveryNDays * 24 * 60 * 60)</string> <key>policyIdentifier</key> <string>Password Change Interval</string> <key>policyParameters</key> <dict> <key>policyAttributeExpiresEveryNDays</key> <integer>60</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require users to change their passwords every 60 days: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep maxPINAgeInDays If "maxPINAgeInDays" is not set to "60" or a shorter interval, or is undefined, this is a finding. If password policy is set with the "pwpolicy" utility, run the following command instead: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line <key>policyCategoryPasswordChange</key>. If it does not exist, and password policy is not controlled by a directory service, this is a finding. Otherwise, in the array section that follows it, there should be a <dict> section that contains a check <string> that compares the variable "policyAttributeLastPasswordChangeTime" to the variable "policyAttributeCurrentTime". It may contain additional variables defined in the "policyParameters" section that follows it. All comparisons are done in seconds. If this check allows users to log in with passwords older than "60" days, or if no such check exists, this is a finding.

The OS X system must prohibit password reuse for a minimum of five generations.

Finding ID
AOSX-12-002090
Rule ID
AOSX-12-002090_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000077-GPOS-00045
CCI
CCI-000200
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

This setting may be enforced using the "Password Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor. If the file does not yet contain any policy settings, replace <dict/> with <dict></dict>. If there already is a policy block that refers to password history, ensure it is set to "5". If the line "<key>policyCategoryPasswordContent</key>" is not present in the file, add the following text immediately after the opening <dict> tag in the file: <key>policyCategoryPasswordContent</key> <array> <dict> <key>policyContent</key> <string>none policyAttributePasswordHashes in policyAttributePasswordHistory</string> <key>policyIdentifier</key> <string>Password History</string> <key>policyParameters</key> <dict> <key>policyAttributePasswordHistoryDepth</key> <integer>5</integer> </dict> </dict> </array> If the line "<key>policyCategoryPasswordContent</key>" is already present in the file, the following text should be added just after the opening <array> tag that follows the line instead: <dict> <key>policyContent</key> <string>none policyAttributePasswordHashes in policyAttributePasswordHistory</string> <key>policyIdentifier</key> <string>Password History</string> <key>policyParameters</key> <dict> <key>policyAttributePasswordHistoryDepth</key> <integer>5</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

Password policy can be set with the "Password Policy" configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that users cannot reuse one of their five previously used passwords: system_profiler SPConfigurationProfileDataType | /usr/bin/grep pinHistory If "pinHistory" is not set to "5" or higher, or is undefined, this is a finding. If password policy is set with the "pwpolicy" utility, run the following command instead: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "<key>policyCategoryPasswordContent</key>". If it does not exist, and password policy is not controlled by a directory service, this is a finding. Otherwise, in the array section that follows it, there should be a <dict> section that contains a check <string> such as "<string>none policyAttributePasswordHashes in policyAttributePasswordHistory</string>". This searches for the hash of the user-entered password in the list of previous password hashes. In the "policyParameters" section that follows it, "policyAttributePasswordHistoryDepth" must be set to "5" or greater. If this parameter is not set to "5" or greater, or if no such check exists, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to delete privileges occur.

Finding ID
AOSX-12-002095
Rule ID
AOSX-12-002095_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000466-GPOS-00210
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

The permissions on a file establish which users and groups are permitted to access or modify it. An attacker may attempt to change the permissions on a file to prevent legitimate users from accessing it or to grant additional access to an account the attacker controls. Auditing successful and unsuccessful attempts to modify security objects such as file permissions mitigates this risk.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Changes to file permissions are logged by way of the "fm" flag. If "fm" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to access/modify privileges occur.

Finding ID
AOSX-12-002100
Rule ID
AOSX-12-002100_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000064-GPOS-00033
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

Frequently, an attacker that successfully gains access to a system has only gained access to an account with limited privileges, such as a guest account or a service account. The attacker must attempt to change to another user account with normal or elevated privileges in order to proceed. Auditing successful and unsuccessful attempts to switch to another user account and the escalation of privileges mitigates this risk.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo sed -i.bak '/^flags/ s/$/,lo/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control If "lo" is not listed in the result of the check, this is a finding.

The OS X system must be configured with system log files owned by root and group-owned by wheel or admin.

Finding ID
AOSX-12-002105
Rule ID
AOSX-12-002105_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000206-GPOS-00084
CCI
CCI-001314
Target Key
(None)
Documentable
No
Discussion

System logs should only be readable by root or admin users. System logs frequently contain sensitive information that could be used by an attacker. Setting the correct owner mitigates this risk.

Fix Text

For any log file that returns an incorrect owner or group value, run the following command: /usr/bin/sudo chown root:wheel [log file] [log file] is the full path to the log file in question. If the file is managed by "newsyslog", find the configuration line in the directory "/etc/newsyslog.d/" or the file "/etc/newsyslog.conf" and ensure that the owner:group column is set to "root:wheel" or the appropriate service user account and group. If the file is managed by "aslmanager", find the configuration line in the directory "/etc/asl/" or the file "/etc/asl.conf" and ensure that "uid" and "gid" options are either not present or are set to a service user account and group respectively.

Check Content

Log files are controlled by "newsyslog" and "aslmanager". These commands check for log files that exist on the system and print out the log with corresponding ownership. Run them from inside "/var/log": /usr/bin/sudo stat -f '%Su:%Sg:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2> /dev/null /usr/bin/sudo stat -f '%Su:%Sg:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2> /dev/null If there are any system log files that are not owned by "root" and group-owned by "wheel" or admin, this is a finding. Service logs may be owned by the service user account or group.

The OS X system must be configured with system log files set to mode 640 or less permissive.

Finding ID
AOSX-12-002106
Rule ID
AOSX-12-002106_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000206-GPOS-00084
CCI
CCI-001314
Target Key
(None)
Documentable
No
Discussion

System logs should only be readable by root or admin users. System logs frequently contain sensitive information that could be used by an attacker. Setting the correct permissions mitigates this risk.

Fix Text

For any log file that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 640 [log file] [log file] is the full path to the log file in question. If the file is managed by "newsyslog", find the configuration line in the directory "/etc/newsyslog.d/" or the file "/etc/newsyslog.conf" and edit the mode column to be "640" or less permissive. If the file is managed by "aslmanager", find the configuration line in the directory "/etc/asl/" or the file "/etc/asl.conf" and add or edit the mode option to be "mode=0640" or less permissive.

Check Content

These commands check for log files that exist on the system and print out the log with corresponding permissions. Run them from inside "/var/log": /usr/bin/sudo stat -f '%A:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2> /dev/null /usr/bin/sudo stat -f '%A:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2> /dev/null The correct permissions on log files should be "640" or less permissive for system logs. Any file with more permissive settings is a finding.

The OS X system must be configured with access control lists (ACLs) for system log files to be set correctly.

Finding ID
AOSX-12-002107
Rule ID
AOSX-12-002107_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000206-GPOS-00084
CCI
CCI-001314
Target Key
(None)
Documentable
No
Discussion

System logs should only be readable by root or admin users. System logs frequently contain sensitive information that could be used by an attacker. Setting the correct ACLs mitigates this risk.

Fix Text

For any log file that returns an ACL, run the following command: /usr/bin/sudo chmod -N [log file] [log file] is the full path to the log file in question.

Check Content

These commands check for log files that exist on the system and print out the list of ACLs if there are any. /usr/bin/sudo ls -ld@ $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2> /dev/null /usr/bin/sudo ls -ld@ $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2> /dev/null ACLs will be listed under any file that may contain them, i.e., "0: group:admin allow list,readattr,reaadextattr,readsecurity". If any system log file contains this information, this is a finding.

The OS X system must audit the enforcement actions used to restrict access associated with changes to the system.

Finding ID
AOSX-12-002110
Rule ID
AOSX-12-002110_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000365-GPOS-00152
CCI
CCI-001814
Target Key
(None)
Documentable
No
Discussion

By auditing access restriction enforcement, changes to application and OS configuration files can be audited. Without auditing the enforcement of access restrictions, it will be difficult to identify attempted attacks and an audit trail will not be available for forensic investigation. 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.

Fix Text

To set the audit flags to the recommended setting, run the following command to add the flags "fm", "-fr", and "-fw" all at once: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm,-fr,-fw/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Enforcement actions are logged by way of the "fm" flag, which audits permission changes, and "-fr" and "-fw", which denote failed attempts to read or write to a file. If "fm", "-fr", and "-fw" are not listed in the result of the check, this is a finding.

The OS X system must audit all activities performed during non-local maintenance and diagnostic sessions.

Finding ID
AOSX-12-002115
Rule ID
AOSX-12-002115_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000392-GPOS-00172
CCI
CCI-002884
Target Key
(None)
Documentable
No
Discussion

If events associated with non-local 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. Non-local maintenance and diagnostic activities are activities conducted by individuals communicating through a network, either external (e.g., the Internet) or internal. Local maintenance and diagnostic activities are 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. It 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.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Administrative actions and changes to configuration settings are logged by way of the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must audit the execution of privileged functions.

Finding ID
AOSX-12-002120
Rule ID
AOSX-12-002120_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000327-GPOS-00127
CCI
CCI-002234
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Privileged access is logged via the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to modify privileges occur.

Finding ID
AOSX-12-002125
Rule ID
AOSX-12-002125_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000462-GPOS-00206
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

Frequently, an attacker that successfully gains access to a system has only gained access to an account with limited privileges, such as a guest account or a service account. The attacker must attempt to change to another user account with normal or elevated privileges to proceed. Auditing successful and unsuccessful attempts to switch to another user account mitigates this risk.

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo sed -i.bak '/^flags/ s/$/,lo/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Attempts to log in as another user are logged by way of the "lo" flag. If "lo" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to access/modify/delete objects, access/modify categories of information (e.g., classification levels), and delete privileges occur.

Finding ID
AOSX-12-002130
Rule ID
AOSX-12-002130_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000458-GPOS-00203
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control If "fm" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to access categories of information (e.g., classification levels) occur.

Finding ID
AOSX-12-002135
Rule ID
AOSX-12-002135_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000461-GPOS-00205
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Changes to file permissions are logged by way of the "fm" flag. If "fm" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to delete security levels occur.

Finding ID
AOSX-12-002140
Rule ID
AOSX-12-002140_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000467-GPOS-00211
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Changes to file permissions are logged by way of the "fm" flag. If "fm" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful attempts to delete security objects occur.

Finding ID
AOSX-12-002145
Rule ID
AOSX-12-002145_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000468-GPOS-00212
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Changes to file permissions are logged by way of the "fm" flag. If "fm" is not listed in the result of the check, this is a finding.

The audit system must be configured to audit the loading and unloading of dynamic kernel modules.

Finding ID
AOSX-12-002150
Rule ID
AOSX-12-002150_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000471-GPOS-00216
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Privileged access, including administrative use of the command line tools "kextload" and "kextunload", is logged via the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records showing starting and ending time for user access to the system.

Finding ID
AOSX-12-002155
Rule ID
AOSX-12-002155_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000472-GPOS-00217
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Login events are logged by way of the "aa" flag. If "aa" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when concurrent logins to the same account occur from different sources.

Finding ID
AOSX-12-002160
Rule ID
AOSX-12-002160_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000473-GPOS-00218
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Login events are logged by way of the "aa" flag. If "aa" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records when successful/unsuccessful accesses to objects occur.

Finding ID
AOSX-12-002165
Rule ID
AOSX-12-002165_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000474-GPOS-00219
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Changes to file permissions are logged by way of the "fm" flag. If "fm" is not listed in the result of the check, this is a finding.

The OS X system must generate audit records for all direct access to the information system.

Finding ID
AOSX-12-002170
Rule ID
AOSX-12-002170_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000475-GPOS-00220
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Login events are logged by way of the "aa" flag. If "aa" is not listed in the result of the check, this is a finding.

The OS X system must display the Standard Mandatory DoD Notice and Consent Banner until users acknowledge the usage conditions and take explicit actions to log in via the local console for further access.

Finding ID
AOSX-12-024007
Rule ID
AOSX-12-024007_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000024-GPOS-00007
CCI
CCI-000050
Target Key
(None)
Documentable
No
Discussion

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 login 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".

Fix Text

Create an RTF file containing the required text. Name the file "PolicyBanner.rtf" or "PolicyBanner.rtfd" and place it in "/Library/Security/".

Check Content

The policy banner will show if a "PolicyBanner.rtf" or "PolicyBanner.rtfd" exists in the "/Library/Security" folder. Run this command to show the contents of that folder: /bin/ls -l /Library/Security/PolicyBanner.rtf* If neither "PolicyBanner.rtf" nor "PolicyBanner.rtfd" exists, this is a finding. The banner text of the document MUST read: "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." If the text is not worded exactly this way, this is a finding.

The OS X system must display the Standard Mandatory DoD Notice and Consent Banner until users acknowledge the usage conditions and take explicit actions to log in via SSH for further access.

Finding ID
AOSX-12-024008
Rule ID
AOSX-12-024008_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000024-GPOS-00007
CCI
CCI-000050
Target Key
(None)
Documentable
No
Discussion

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 login 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".

Fix Text

For systems that allow remote access through SSH, modify the "/etc/ssh/sshd_config" file to add or update the following line: Banner /etc/banner

Check Content

For systems that allow remote access through SSH, run the following command to verify that "/etc/banner" is displayed before granting access: # /usr/bin/grep Banner /etc/ssh/sshd_config If the sshd Banner configuration option does not point to "/etc/banner", this is a finding.

The OS X system must be configured to lock the user session when a smart token is removed.

Finding ID
AOSX-12-030014
Rule ID
AOSX-12-030014_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000030-GPOS-00011
CCI
CCI-000058
Target Key
(None)
Documentable
No
Discussion

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 they need to temporarily vacate the immediate physical vicinity.

Fix Text

This setting is enforced using the "Security Privacy Policy" configuration profile.

Check Content

To check if support for session locking with removal of a token is enabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "tokenRemovalAction = 1;" If there is no result, this is a finding.

The OS X system must produce audit records containing information to establish what type of events occurred.

Finding ID
AOSX-12-037015
Rule ID
AOSX-12-037015_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000037-GPOS-00015
CCI
CCI-000130
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must produce audit records containing information to establish when (date and time) the events occurred.

Finding ID
AOSX-12-038016
Rule ID
AOSX-12-038016_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000038-GPOS-00016
CCI
CCI-000131
Target Key
(None)
Documentable
No
Discussion

Without establishing when events occurred, it is impossible to establish, correlate, and investigate the events leading up to an outage or attack. 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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must produce audit records containing information to establish where the events occurred.

Finding ID
AOSX-12-039017
Rule ID
AOSX-12-039017_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000039-GPOS-00017
CCI
CCI-000132
Target Key
(None)
Documentable
No
Discussion

Without establishing where events occurred, it is impossible to establish, correlate, and investigate the events leading up to an outage or attack. 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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must produce audit records containing information to establish the source of the events.

Finding ID
AOSX-12-040018
Rule ID
AOSX-12-040018_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000040-GPOS-00018
CCI
CCI-000133
Target Key
(None)
Documentable
No
Discussion

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. To compile an accurate risk assessment and provide forensic analysis, it is essential for security personnel to know the source of the event.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must produce audit records containing information to establish the outcome of the events.

Finding ID
AOSX-12-041019
Rule ID
AOSX-12-041019_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000041-GPOS-00019
CCI
CCI-000134
Target Key
(None)
Documentable
No
Discussion

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). They also provide a means to measure the impact of an event and help authorized personnel determine the appropriate response.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must generate audit records containing the full-text recording of privileged commands.

Finding ID
AOSX-12-042020
Rule ID
AOSX-12-042020_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000042-GPOS-00020
CCI
CCI-000135
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must produce audit records containing the individual identities of group account users.

Finding ID
AOSX-12-042021
Rule ID
AOSX-12-042021_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000042-GPOS-00021
CCI
CCI-000135
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must provide the capability to centrally review and analyze audit records from multiple components within the system.

Finding ID
AOSX-12-051024
Rule ID
AOSX-12-051024_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000051-GPOS-00024
CCI
CCI-000154
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must provide the capability to filter audit records for events of interest based upon all audit fields within audit records.

Finding ID
AOSX-12-054025
Rule ID
AOSX-12-054025_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000054-GPOS-00025
CCI
CCI-000158
Target Key
(None)
Documentable
No
Discussion

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 by specific information system component. This requires operating systems to provide the capability to customize audit record reports based on all available criteria.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding. System Integrity Protection status: enabled

The OS X system must use internal system clocks to generate time stamps for audit records.

Finding ID
AOSX-12-055026
Rule ID
AOSX-12-055026_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000055-GPOS-00026
CCI
CCI-000159
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must protect audit information from unauthorized modification.

Finding ID
AOSX-12-058028
Rule ID
AOSX-12-058028_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000058-GPOS-00028
CCI
CCI-000163
Target Key
(None)
Documentable
No
Discussion

If audit information is compromised, 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.

Fix Text

For any log folder that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 700 [audit log folder]

Check Content

To check the permissions of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the permissions (first column) to be "700" or less permissive. If they do not, this is a finding.

The OS X system must protect audit information from unauthorized deletion.

Finding ID
AOSX-12-059029
Rule ID
AOSX-12-059029_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000059-GPOS-00029
CCI
CCI-000164
Target Key
(None)
Documentable
No
Discussion

If audit information is compromised, 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.

Fix Text

For any log folder that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 700 [audit log folder]

Check Content

To check the permissions of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the permissions (first column) to be "700" or less permissive. If they do not, this is a finding.

The OS X system, for PKI-based authentication, must validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.

Finding ID
AOSX-12-066034
Rule ID
AOSX-12-066034_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000066-GPOS-00034
CCI
CCI-000185
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

Obtain the approved DoD certificates from the appropriate authority. Use Keychain Access from /Applications/Utilities to add certificates to the System keychain.

Check Content

To view a list of installed certificates, run the following command: /usr/bin/sudo /usr/bin/security dump-keychain | /usr/bin/grep labl | awk -F\" '{ print $4 }' If this list does not contain approved certificates, this is a finding.

The OS X system must provide an audit reduction capability that supports on-demand reporting requirements.

Finding ID
AOSX-12-122063
Rule ID
AOSX-12-122063_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000122-GPOS-00063
CCI
CCI-001876
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding. System Integrity Protection status: enabled

The OS X system must prevent unauthorized and unintended information transfer via shared system resources.

Finding ID
AOSX-12-138069
Rule ID
AOSX-12-138069_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000138-GPOS-00069
CCI
CCI-001090
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding. System Integrity Protection status: enabled

The OS X system must produce audit records containing information to establish the identity of any individual or process associated with the event.

Finding ID
AOSX-12-255096
Rule ID
AOSX-12-255096_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000255-GPOS-00096
CCI
CCI-001487
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must protect audit tools from unauthorized access.

Finding ID
AOSX-12-256097
Rule ID
AOSX-12-256097_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000256-GPOS-00097
CCI
CCI-001493
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must protect audit tools from unauthorized modification.

Finding ID
AOSX-12-257098
Rule ID
AOSX-12-257098_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000257-GPOS-00098
CCI
CCI-001494
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must protect audit tools from unauthorized deletion.

Finding ID
AOSX-12-258099
Rule ID
AOSX-12-258099_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000258-GPOS-00099
CCI
CCI-001495
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must protect wireless access to and from the system using encryption.

Finding ID
AOSX-12-299117
Rule ID
AOSX-12-299117_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000299-GPOS-00117
CCI
CCI-001444
Target Key
(None)
Documentable
No
Discussion

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), that provide credential protection and mutual authentication. This requirement applies to operating systems that control wireless devices.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must protect wireless access to the system using authentication of users and/or devices.

Finding ID
AOSX-12-300118
Rule ID
AOSX-12-300118_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000300-GPOS-00118
CCI
CCI-001443
Target Key
(None)
Documentable
No
Discussion

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), that provide credential protection and mutual authentication. This requirement applies to operating systems that control wireless devices.

Fix Text

To disable the Wi-Fi network device, run the following command: /usr/bin/sudo /usr/sbin/networksetup -setnetworkserviceenabled "Wi-Fi" off

Check Content

If the system requires Wi-Fi to connect to an authorized network, this is not applicable. To check if the Wi-Fi network device is disabled, run the following command: /usr/bin/sudo /usr/sbin/networksetup -listallnetworkservices A disabled device will have an asterisk in front of its name. If the Wi-Fi device is missing this asterisk, this is a finding.

The OS X system must audit all account enabling actions.

Finding ID
AOSX-12-303120
Rule ID
AOSX-12-303120_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000303-GPOS-00120
CCI
CCI-002130
Target Key
(None)
Documentable
No
Discussion

Once an attacker establishes initial 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 simply enable a new or disabled account. Notification of account enabling 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 System Administrators and Information System Security Officers (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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must provide an audit reduction capability that supports on-demand audit review and analysis.

Finding ID
AOSX-12-348136
Rule ID
AOSX-12-348136_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000348-GPOS-00136
CCI
CCI-001875
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must provide an audit reduction capability that supports after-the-fact investigations of security incidents.

Finding ID
AOSX-12-349137
Rule ID
AOSX-12-349137_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000349-GPOS-00137
CCI
CCI-001877
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must provide a report generation capability that supports on-demand audit review and analysis.

Finding ID
AOSX-12-350138
Rule ID
AOSX-12-350138_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000350-GPOS-00138
CCI
CCI-001878
Target Key
(None)
Documentable
No
Discussion

The report generation capability must support on-demand review and analysis 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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must provide a report generation capability that supports on-demand reporting requirements.

Finding ID
AOSX-12-351139
Rule ID
AOSX-12-351139_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000351-GPOS-00139
CCI
CCI-001879
Target Key
(None)
Documentable
No
Discussion

The report generation capability must support on-demand reporting 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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must provide a report generation capability that supports after-the-fact investigations of security incidents.

Finding ID
AOSX-12-352140
Rule ID
AOSX-12-352140_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000352-GPOS-00140
CCI
CCI-001880
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must not alter original content or time ordering of audit records when it provides an audit reduction capability.

Finding ID
AOSX-12-353141
Rule ID
AOSX-12-353141_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000353-GPOS-00141
CCI
CCI-001881
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must not alter original content or time ordering of audit records when it provides a report generation capability.

Finding ID
AOSX-12-354142
Rule ID
AOSX-12-354142_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000354-GPOS-00142
CCI
CCI-001882
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

The OS X system must synchronize internal information system clocks to the authoritative time source when the time difference is greater than one second.

Finding ID
AOSX-12-356144
Rule ID
AOSX-12-356144_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000356-GPOS-00144
CCI
CCI-002046
Target Key
(None)
Documentable
No
Discussion

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).

Fix Text

To enable the NTP service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.ntp.ntpd.plist To configure one or more time servers for use, edit "/etc/ntp.conf" and enter each hostname or IP address on a separate line, prefixing each one with the keyword "server".

Check Content

The Network Time Protocol (NTP) service must be enabled on all networked systems. To check if the service is running, use the following command: /usr/bin/sudo /bin/launchctl list | grep org.ntp.ntpd If nothing is returned, this is a finding. To verify that an authorized NTP server is configured, run the following command or examine "/etc/ntp.conf": /usr/bin/sudo /usr/bin/grep ^server /etc/ntp.conf Only approved time servers should be configured for use. If no server is configured, or if an unapproved time server is in use, this is a finding.

The OS X system must record time stamps for audit records that meet a minimum granularity of one second for a minimum degree of precision.

Finding ID
AOSX-12-358145
Rule ID
AOSX-12-358145_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000358-GPOS-00145
CCI
CCI-001889
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must record time stamps for audit records that can be mapped to Coordinated Universal Time (UTC) or Greenwich Mean Time (GMT).

Finding ID
AOSX-12-359146
Rule ID
AOSX-12-359146_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000359-GPOS-00146
CCI
CCI-001890
Target Key
(None)
Documentable
No
Discussion

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 UTC, a modern continuation of GMT, or local time with an offset from UTC.

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

The OS X system must prohibit user installation of software without explicit privileged status.

Finding ID
AOSX-12-362149
Rule ID
AOSX-12-362149_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000362-GPOS-00149
CCI
CCI-001812
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if the system is configured to prohibit user installation of software, first check to ensure the Parental Controls are enabled with the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If there is no result, this is a finding. Next, check that a blacklist has been properly configured for the user's home directories with the following command: /usr/sbin/system_profiler –xml SPConfigurationProfileDataType | /usr/bin/sed -n '/pathBlackList/,/key/p' | /usr/bin/grep "<string>/Users/</string>" If there is no result, this is a finding.

The OS X system must implement NSA-approved cryptography to protect classified information in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Finding ID
AOSX-12-396176
Rule ID
AOSX-12-396176_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000396-GPOS-00176
CCI
CCI-002450
Target Key
(None)
Documentable
No
Discussion

Use of weak or untested encryption algorithms undermines the purposes of using 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.

Fix Text

To ensure that "Protocol 2" is used by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*Protocol.*/Protocol 2/' /etc/ssh/sshd_config

Check Content

To check which protocol is configured for sshd, run the following: /usr/bin/sudo /usr/bin/grep ^Protocol /etc/ssh/sshd_config If there is no result or the result is not "2", this is a finding.

The OS X system must protect the confidentiality and integrity of transmitted information through the use of SSH.

Finding ID
AOSX-12-423187
Rule ID
AOSX-12-423187_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000423-GPOS-00187
CCI
CCI-002418
Target Key
(None)
Documentable
No
Discussion

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, logical means (cryptography) do not have to be employed, and vice versa.

Fix Text

To enable the SSH service, run the following command: /usr/bin/sudo /bin/launchctl enable system/com.openssh.sshd The system may need to be restarted for the update to take effect.

Check Content

For systems that allow remote access through SSH, run the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.openssh.sshd If the results do not show the following, this is a finding. "com.openssh.sshd" => false

The OS X 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.

Finding ID
AOSX-12-424188
Rule ID
AOSX-12-424188_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000424-GPOS-00188
CCI
CCI-002421
Target Key
(None)
Documentable
No
Discussion

Encrypting information for transmission protects information from unauthorized disclosure and modification. Cryptographic mechanisms implemented to protect information integrity include, for example, cryptographic hash functions that 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.

Fix Text

To enable the SSH service, run the following command: /usr/bin/sudo /bin/launchctl enable system/com.openssh.sshd The system may need to be restarted for the update to take effect.

Check Content

For systems that allow remote access through SSH, run the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.openssh.sshd If the results do not show the following, this is a finding. "com.openssh.sshd" => false

The OS X system must maintain the confidentiality and integrity of information during preparation for transmission.

Finding ID
AOSX-12-425189
Rule ID
AOSX-12-425189_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000425-GPOS-00189
CCI
CCI-002420
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the SSH service, run the following command: /usr/bin/sudo /bin/launchctl enable system/com.openssh.sshd The system may need to be restarted for the update to take effect.

Check Content

For systems that allow remote access through SSH, run the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.openssh.sshd If the results do not show the following, this is a finding. "com.openssh.sshd" => false

The OS X system must maintain the confidentiality and integrity of information during reception.

Finding ID
AOSX-12-426190
Rule ID
AOSX-12-426190_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000426-GPOS-00190
CCI
CCI-002422
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

To enable the SSH service, run the following command: /usr/bin/sudo /bin/launchctl enable system/com.openssh.sshd The system may need to be restarted for the update to take effect.

Check Content

For systems that allow remote access through SSH, run the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.openssh.sshd If the results do not show the following, this is a finding: "com.openssh.sshd" => false

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

Finding ID
AOSX-12-480228
Rule ID
AOSX-12-480228_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00228
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

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

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

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

Finding ID
AOSX-12-480230
Rule ID
AOSX-12-480230_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00230
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

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

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding: System Integrity Protection status: enabled

Removed

V-75945

The OS X system must conceal, via the session lock, information previously visible on the display with a publicly viewable image.

Finding ID
AOSX-12-000005
Rule ID
SV-90633r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000031-GPOS-00012
CCI
CCI-000060
Target Key
(None)
Documentable
No
Discussion

A default screen saver must be configured for all users, as the screen saver will act as a session time-out lock for the system and must conceal the contents of the screen from unauthorized users. The screen saver must not display any sensitive information or reveal the contents of the locked session screen. Publicly viewable images can include static or dynamic images such as patterns used with screen savers, photographic images, solid colors, a clock, a battery life indicator, or a blank screen.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To view the currently selected screen saver for the logged-on user, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep loginWindowModulePath If there is no result or defined "loginWindowModulePath", this is a finding.

Removed

V-75947

The OS X system must be configured to disable hot corners.

Finding ID
AOSX-12-000006
Rule ID
SV-90635r2_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000031-GPOS-00012
CCI
CCI-000060
Target Key
(None)
Documentable
No
Discussion

Although hot comers can be used to initiate a session lock or launch useful applications, they can also be configured to disable an automatic session lock from initiating. Such a configuration introduces the risk that a user might forget to manually lock the screen before stepping away from the computer. 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.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

To check if the system is configured to disable hot corners, run the following commands: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep '"wvous-bl-corner = 0;"' /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep '"wvous-tl-corner = 0;"' /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep '"wvous-br-corner = 0;"' /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep '"wvous-tr-corner = 0;"' If any of the commands returns no result, this is a finding.

Removed

V-75949

The OS X system must be configured to prevent Apple Watch from terminating a session lock.

Finding ID
AOSX-12-000007
Rule ID
SV-90637r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000028-GPOS-00009
CCI
CCI-000056
Target Key
(None)
Documentable
No
Discussion

Users must be prompted to enter their passwords when unlocking the screen saver. The screen saver acts as a session lock and prevents unauthorized users from accessing the current user's account.

Fix Text

This setting is enforced using the "Security Privacy Policy" configuration profile.

Check Content

To check if the system is configured to prevent Apple Watch from terminating a session lock, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowAutoUnlock = 0;" If there is no result, this is a finding.

Removed

V-75951

The OS X system must initiate a session lock after a 15-minute period of inactivity.

Finding ID
AOSX-12-000010
Rule ID
SV-90639r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000029-GPOS-00010
CCI
CCI-000057
Target Key
(None)
Documentable
No
Discussion

A screen saver must be enabled and set to require a password to unlock. The timeout should be set to 15 minutes of inactivity. This mitigates the risk that a user might forget to manually lock the screen before stepping away from the computer. 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.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the system has a configuration profile configured to enable the screen saver after a time-out period, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep idleTime The check should return a value of "900" or less for "idleTime". If it does not, this is a finding.

Removed

V-75953

The OS X system must retain the session lock until the user reestablishes access using established identification and authentication procedures.

Finding ID
AOSX-12-000020
Rule ID
SV-90641r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000028-GPOS-00009
CCI
CCI-000056
Target Key
(None)
Documentable
No
Discussion

Users must be prompted to enter their passwords when unlocking the screen saver. The screen saver acts as a session lock and prevents unauthorized users from accessing the current user's account.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the system will prompt users to enter their passwords to unlock the screen saver, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep askForPassword If there is no result, or if "askForPassword" is not set to "1", this is a finding.

Removed

V-75955

The OS X system must initiate the session lock no more than five seconds after a screen saver is started.

Finding ID
AOSX-12-000025
Rule ID
SV-90643r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000028-GPOS-00009
CCI
CCI-000056
Target Key
(None)
Documentable
No
Discussion

A screen saver must be enabled and set to require a password to unlock. An excessive grace period impacts the ability for a session to be truly locked, requiring authentication to unlock.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the system will prompt users to enter their passwords to unlock the screen saver, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep askForPasswordDelay If there is no result, or if "askForPasswordDelay" is not set to "5.0" or less, this is a finding.

Removed

V-75957

The OS X system must monitor remote access methods and generate audit records when successful/unsuccessful attempts to access/modify privileges occur.

Finding ID
AOSX-12-000030
Rule ID
SV-90645r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000032-GPOS-00013
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

Frequently, an attacker that successfully gains access to a system has only gained access to an account with limited privileges, such as a guest account or a service account. The attacker must attempt to change to another user account with normal or elevated privileges in order to proceed. Auditing successful and unsuccessful attempts to switch to another user account and the escalation of privileges mitigates this risk. Satisfies: SRG-OS-000032-GPOS-00013, SRG-OS-000064-GPOS-00033, SRG-OS-000462-GPOS-00206

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo sed -i.bak '/^flags/ s/$/,lo/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Attempts to log in as another user are logged by way of the "lo" flag. If "lo" is not listed in the result of the check, this is a finding.

Removed

V-75959

The OS X system must implement DoD-approved encryption to protect the confidentiality and integrity of remote access sessions including transmitted data and data during preparation for transmission.

Finding ID
AOSX-12-000035
Rule ID
SV-90647r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000033-GPOS-00014
CCI
CCI-002422
Target Key
(None)
Documentable
No
Discussion

Without confidentiality and integrity protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD non-public 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., Remote Desktop Protocol [RDP]), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information. Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190

Fix Text

To enable the SSH service, run the following command: /usr/bin/sudo /bin/launchctl enable system/com.openssh.sshd The system may need to be restarted for the update to take effect.

Check Content

For systems that allow remote access through SSH, run the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.openssh.sshd If the results do not show the following, this is a finding. "com.openssh.sshd" => false

Removed

V-75961

The OS X system must be configured to disable rshd service.

Finding ID
AOSX-12-000050
Rule ID
SV-90649r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The "rshd" service must be disabled.

Fix Text

To disable the "rshd" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.rshd The system may need to be restarted for the update to take effect.

Check Content

To check if the "rshd" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.rshd If the results do not show the following, this is a finding: "com.apple.rshd" => true

Removed

V-75963

The OS X system must enforce requirements for remote connections to the information system.

Finding ID
AOSX-12-000055
Rule ID
SV-90651r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The Screen Sharing feature allows remote users to view or control the desktop of the current user. A malicious user can take advantage of screen sharing to gain full access to the system remotely, either with stolen credentials or by guessing the username and password. Disabling Screen Sharing mitigates this risk.

Fix Text

To disable the Screen Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing The system may need to be restarted for the update to take effect.

Check Content

To check if the Screen Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.screensharing If the results do not show the following, this is a finding: "com.apple.screensharing" => true

Removed

V-75965

The OS X system must be configured with Bluetooth turned off unless approved by the organization.

Finding ID
AOSX-12-000065
Rule ID
SV-90653r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The Bluetooth kernel extension must be disabled, as wireless access introduces unnecessary security risks. Disabling Bluetooth support with a configuration profile mitigates this risk.

Fix Text

This setting is enforced using the "Bluetooth Policy" configuration profile.

Check Content

If Bluetooth connectivity is required to facilitate use of approved external devices, this is not applicable. To check if Bluetooth is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableBluetooth If there is no result, or if "DisableBluetooth" is not set to "1", this is a finding.

Removed

V-75967

The OS X system must be configured with Wi-Fi support software disabled.

Finding ID
AOSX-12-000070
Rule ID
SV-90655r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000300-GPOS-00118
CCI
CCI-002418
Target Key
(None)
Documentable
No
Discussion

Use of Wi-Fi to connect to unauthorized networks may facilitate the exfiltration of mission data. Satisfies: SRG-OS-000300-GPOS-00118, SRG-OS-000480-GPOS-00227

Fix Text

To disable the Wi-Fi network device, run the following command: /usr/bin/sudo /usr/sbin/networksetup -setnetworkserviceenabled "Wi-Fi" off

Check Content

If the system requires Wi-Fi to connect to an authorized network, this is not applicable. To check if the Wi-Fi network device is disabled, run the following command: /usr/bin/sudo /usr/sbin/networksetup -listallnetworkservices A disabled device will have an asterisk in front of its name. If the Wi-Fi device is missing this asterisk, this is a finding.

Removed

V-75969

The OS X system must be configured with Infrared [IR] support disabled.

Finding ID
AOSX-12-000075
Rule ID
SV-90657r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

IR kernel support must be disabled to prevent users from controlling the system with IR devices. By default, if IR is enabled, the system will accept IR control from any remote device.

Fix Text

To disable IR, run the following command: /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled -bool FALSE

Check Content

To check if IR support is disabled, run the following command: /usr/bin/sudo /usr/bin/defaults read /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled If the result is not "0", this is a finding.

Removed

V-75971

The OS X system must be configured with automatic actions disabled for blank CDs.

Finding ID
AOSX-12-000085
Rule ID
SV-90659r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for blank CDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for blank CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.blank.cd.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Removed

V-75973

The OS X system must be configured with automatic actions disabled for blank DVDs.

Finding ID
AOSX-12-000090
Rule ID
SV-90661r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for blank DVDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for blank DVDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.blank.dvd.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Removed

V-75975

The OS X system must be configured with automatic actions disabled for music CDs.

Finding ID
AOSX-12-000095
Rule ID
SV-90663r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for music CDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for music CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.cd.music.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Removed

V-75977

The OS X system must be configured with automatic actions disabled for picture CDs.

Finding ID
AOSX-12-000100
Rule ID
SV-90665r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for picture CDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for picture CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.cd.picture.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Removed

V-75979

The OS X system must be configured with automatic actions disabled for video DVDs.

Finding ID
AOSX-12-000105
Rule ID
SV-90667r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for video DVDs mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for video DVDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.dvd.video.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Removed

V-75981

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

Finding ID
AOSX-12-000110
Rule ID
SV-90669r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000002-GPOS-00002
CCI
CCI-000016
Target Key
(None)
Documentable
No
Discussion

If temporary user accounts remain active when no longer needed or for an excessive period, these accounts may be targeted by attackers 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.

Fix Text

This setting may be enforced using a configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current policy file, substituting the correct user name in place of "username": /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 > pwpolicy.plist Open the resulting password policy file in a text editor. If other policy settings are present, and the line "<key>policyCategoryAuthentication</key>" already exists, insert the following text after the <array> tag that immediately follows it: <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime + 259299</string> <key>policyIdentifier</key> <string>Disable Temporary Account</string> </dict> At a minimum, edit the file to ensure that it contains the following text: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime + 259299</string> <key>policyIdentifier</key> <string>Disable Temporary Account</string> </dict> </array> </dict> </plist> After saving the file and exiting to the command prompt, run the following command to load the new policy file, substituting the correct user name in place of "username": /usr/bin/sudo /usr/bin/pwpolicy -u username setaccountpolicies pwpolicy.plist

Check Content

Verify if a password policy is enforced by a directory service by asking the System Administrator (SA) or Information System Security Officer (ISSO). If no policy is enforced by a directory service, a password policy can be set with the "pwpolicy" utility. The variable names may vary depending on how the policy was set. To check if the password policy is configured to disable a temporary account after 72 hours, run the following command to output the password policy to the screen, substituting the correct user name in place of username: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 If there is no output, and password policy is not controlled by a directory service, this is a finding. Otherwise, look for the line "<key>policyCategoryAuthentication</key>". In the array that follows, there should be a <dict> section that contains a check <string> that allows users to log in if "policyAttributeCurrentTime" is less than the result of adding "policyAttributeCreationTime" to 72 hours (259299 seconds). The check might use a variable defined in its "policyParameters" section. If the check does not exist or if the check adds too great an amount of time to "policyAttributeCreationTime", this is a finding.

Removed

V-75983

The OS X system must automatically remove or disable emergency accounts after the crisis is resolved or within 72 hours.

Finding ID
AOSX-12-000115
Rule ID
SV-90671r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000123-GPOS-00064
CCI
CCI-001682
Target Key
(None)
Documentable
No
Discussion

Emergency administrator accounts are privileged accounts 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 administrator accounts are different from infrequently used accounts (i.e., local logon accounts used by system administrators when network or normal logon/access is not available). Infrequently used accounts also remain available and are not subject to automatic termination dates. However, an emergency administrator account is normally a different account created for use by vendors or system maintainers. To address access requirements, many operating systems can be integrated with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements.

Fix Text

To remove all "pwpolicy" settings for an emergency account, run the following command, replacing "username" with the correct value: /usr/bin/sudo /usr/bin/pwpolicy -u username clearaccountpolicies Otherwise, to change the password policy for an emergency account and only remove some policy sections, run the following command to save a copy of the current policy file for the specified username: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 > pwpolicy.plist Open the resulting password policy file in a text editor and remove any policyContent sections that would restrict the ability to log in after a certain date or amount of time. To remove the section cleanly, remove the entire text that begins with <dict>, contains the like <key>policyContent<'/key>, and ends with </dict>. After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy -u username setaccountpolicies pwpolicy.plist

Check Content

If an emergency account has been created on the system, check the expiration settings of a local account using the following command, replacing "username" with the correct value: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 If there is output, verify that the account policies do not restrict the ability to log in after a certain date or amount of time. If they do, this is a finding.

Removed

V-75985

The OS X system must generate audit records for all account creations, modifications, disabling, and termination events; privileged activities or other system-level access; all kernel module load, unload, and restart actions; all program initiations; and organizationally defined events for all non-local maintenance and diagnostic sessions.

Finding ID
AOSX-12-000120
Rule ID
SV-90673r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000004-GPOS-00004
CCI
CCI-002884
Target Key
(None)
Documentable
No
Discussion

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). Satisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000327-GPOS-00127, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000476-GPOS-00221, SRG-OS-000477-GPOS-00222

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Administrative and Privileged access, including administrative use of the command line tools "kextload" and "kextunload" and changes to configuration settings are logged by way of the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

Removed

V-75987

The OS X system must be configured to disable SMB File Sharing unless it is required.

Finding ID
AOSX-12-000139
Rule ID
SV-90675r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

File Sharing is usually non-essential and must be disabled if not required. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the SMB File Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.smbd The system may need to be restarted for the update to take effect.

Check Content

If SMB File Sharing is required, this is not applicable. To check if the SMB File Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.smbd If the results do not show the following, this is a finding: "com.apple.smbd" => true

Removed

V-75989

The OS X system must be configured to disable Apple File (AFP) Sharing.

Finding ID
AOSX-12-000140
Rule ID
SV-90677r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

File Sharing is non-essential and must be disabled. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the Apple File (AFP) Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.AppleFileServer The system may need to be restarted for the update to take effect.

Check Content

To check if the Apple File (AFP) Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.AppleFileServer If the results do not show the following, this is a finding: "com.apple.AppleFileServer" => true

Removed

V-75991

The OS X system must be configured to disable the Network File System (NFS) daemon unless it is required.

Finding ID
AOSX-12-000141
Rule ID
SV-90679r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the NFS daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd The system may need to be restarted for the update to take effect.

Check Content

If the NFS daemon is required, this is not applicable. To check if the NFS daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.nfsd If the results do not show the following, this is a finding: "com.apple.nfsd" => true

Removed

V-75993

The OS X system must be configured to disable the Network File System (NFS) lock daemon unless it is required.

Finding ID
AOSX-12-000142
Rule ID
SV-90681r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the NFS lock daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.lockd The system may need to be restarted for the update to take effect.

Check Content

If the NFS lock daemon is required, this is not applicable. To check if the NFS lock daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.lockd If the results do not show the following, this is a finding: "com.apple.lockd" => true

Removed

V-75995

The OS X system must be configured to disable the Network File System (NFS) stat daemon unless it is required.

Finding ID
AOSX-12-000143
Rule ID
SV-90683r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.

Fix Text

To disable the NFS stat daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.statd.notify The system may need to be restarted for the update to take effect.

Check Content

If the NFS stat daemon is required, this is not applicable. To check if the NFS stat daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.statd.notify If the results do not show the following, this is a finding: "com.apple.statd.notify" => true

Removed

V-75997

The OS X system firewall must be configured with a default-deny policy.

Finding ID
AOSX-12-000155
Rule ID
SV-90685r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00231
CCI
CCI-002080
Target Key
(None)
Documentable
No
Discussion

An approved firewall must be installed and enabled to work in concert with the OS X Application Firewall. When configured correctly, firewalls protect computers from network attacks by blocking or limiting access to open network ports.

Fix Text

Install an approved HBSS or firewall solution onto the system and configure it with a "default-deny" policy.

Check Content

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved firewall is loaded on the system. The recommended system is the McAfee HBSS. If no firewall is installed on the system, this is a finding. If a firewall is installed and it is not configured with a "default-deny" policy, this is a finding.

Removed

V-75999

The OS X system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the operating system.

Finding ID
AOSX-12-000186
Rule ID
SV-90687r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000023-GPOS-00006
CCI
CCI-000048
Target Key
(None)
Documentable
No
Discussion

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 DTM-08-060.

Fix Text

Create a text file containing the required DoD text. Name the file "banner" and place it in "/etc/".

Check Content

Verify the operating system displays the Standard Mandatory DoD Notice and Consent Banner before granting access to the operating system. Check to see if the operating system has the correct text listed in the "/etc/banner" file with the following command: # more /etc/banner The command should return the following text: "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." If the operating system does not display a graphical logon banner or the banner does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding. If the text in the "/etc/banner" file does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding.

Removed

V-76001

The OS X system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via SSH.

Finding ID
AOSX-12-000187
Rule ID
SV-90689r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000023-GPOS-00006
CCI
CCI-000050
Target Key
(None)
Documentable
No
Discussion

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 DTM-08-060. Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000024-GPOS-00007

Fix Text

For systems that allow remote access through SSH, modify the "/etc/ssh/sshd_config" file to add or update the following line: Banner /etc/banner

Check Content

For systems that allow remote access through SSH, run the following command to verify that "/etc/banner" is displayed before granting access: # /usr/bin/grep Banner /etc/ssh/sshd_config If the sshd Banner configuration option does not point to "/etc/banner", this is a finding.

Removed

V-76003

The OS X system must be configured so that any connection to the system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.

Finding ID
AOSX-12-000195
Rule ID
SV-90691r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000023-GPOS-00006
CCI
CCI-001388
Target Key
(None)
Documentable
No
Discussion

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 DTM-08-060. Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000024-GPOS-00007, SRG-OS-000228-GPOS-00088

Fix Text

Create an RTF file containing the required text. Name the file "PolicyBanner.rtf" or "PolicyBanner.rtfd" and place it in "/Library/Security/".

Check Content

The policy banner will show if a "PolicyBanner.rtf" or "PolicyBanner.rtfd" exists in the "/Library/Security" folder. Run this command to show the contents of that folder: /bin/ls -l /Library/Security/PolicyBanner.rtf* If neither "PolicyBanner.rtf" nor "PolicyBanner.rtfd" exists, this is a finding. The banner text of the document MUST read: "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." If the text is not worded exactly this way, this is a finding.

Removed

V-76005

The OS X system must generate audit records for DoD-defined events such as successful/unsuccessful logon attempts, successful/unsuccessful direct access attempts, starting and ending time for user access, and concurrent logons to the same account from different sources.

Finding ID
AOSX-12-000200
Rule ID
SV-90693r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000470-GPOS-00214
CCI
CCI-000172
Target Key
(None)
Documentable
No
Discussion

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). Satisfies: SRG-OS-000470-GPOS-00214, SRG-OS-000472-GPOS-00217, SRG-OS-000473-GPOS-00218, SRG-OS-000475-GPOS-00220

Fix Text

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Logon events are logged by way of the "aa" flag. If "aa" is not listed in the result of the check, this is a finding.

Removed

V-76007

The OS X system must initiate session audits at system startup, using internal clocks with time stamps for audit records that meet a minimum granularity of one second and can be mapped to Coordinated Universal Time (UTC) or Greenwich Mean Time (GMT), in order to generate audit records containing information to establish what type of events occurred, the identity of any individual or process associated with the event, including individual identities of group account users, establish where the events occurred, source of the event, and outcome of the events including all account enabling actions, full-text recording of privileged commands, and information about the use of encryption for access wireless access to and from the system.

Finding ID
AOSX-12-000230
Rule ID
SV-90695r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000037-GPOS-00015
CCI
CCI-002130
Target Key
(None)
Documentable
No
Discussion

Without establishing what type of events occurred, when they occurred, and by whom 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. Satisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000038-GPOS-00016, SRG-OS-000039-GPOS-00017, SRG-OS-000040-GPOS-00018, SRG-OS-000041-GPOS-00019, SRG-OS-000042-GPOS-00020, SRG-OS-000042-GPOS-00021, SRG-OS-000055-GPOS-00026, SRG-OS-000254-GPOS-00095, SRG-OS-000255-GPOS-00096, SRG-OS-000255-GPOS-00096, SRG-OS-000299-GPOS-00117, SRG-OS-000303-GPOS-00120, SRG-OS-000358-GPOS-00145, SRG-OS-000359-GPOS-00146

Fix Text

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

Check Content

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

Removed

V-76009

The OS X system must enable System Integrity Protection.

Finding ID
AOSX-12-000240
Rule ID
SV-90697r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000051-GPOS-00024
CCI
CCI-001882
Target Key
(None)
Documentable
No
Discussion

The System Integrity Protection is vital to prevent unauthorized and unintended information transfer via shared system resources, protect audit tools from unauthorized access, modification, and deletion, limit privileges to change software resident within software libraries, limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders. SIP also ensures the presence of an audit record generation capability for DoD-defined auditable events for all operating system components, supports on-demand and after-the-fact reporting requirements, does not alter original content or time ordering of audit records, and does not alter original content or time ordering of audit records. Satisfies: SRG-OS-000051-GPOS-00024, SRG-OS-000054-GPOS-00025, SRG-OS-000062-GPOS-00031, SRG-OS-000122-GPOS-00063, SRG-OS-000138-GPOS-00069, SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099, SRG-OS-000259-GPOS-00100, SRG-OS-000348-GPOS-00136, SRG-OS-000349-GPOS-00137, SRG-OS-000350-GPOS-00138, SRG-OS-000351-GPOS-00139, SRG-OS-000352-GPOS-00140, SRG-OS-000353-GPOS-00141, SRG-OS-000354-GPOS-00142, SRG-OS-000480-GPOS-00228, SRG-OS-000480-GPOS-00230

Fix Text

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

Check Content

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding. System Integrity Protection status: enabled

Removed

V-76011

The OS X 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.

Finding ID
AOSX-12-000295
Rule ID
SV-90699r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000341-GPOS-00132
CCI
CCI-001849
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to require that records are kept for seven days or longer before deletion when there is no central audit record storage facility. When "expire-after" is set to "7d", the audit service will not delete audit logs until the log data is at least seven days old.

Fix Text

Edit the "/etc/security/audit_control" file and change the value for "expire-after" to the amount of time audit logs should be kept for the system. Use the following command to set the "expire-after" value to "7d": /usr/bin/sudo /usr/bin/sed -i.bak 's/.*expire-after.*/expire-after:7d/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

Check Content

The check displays the amount of time the audit system is configured to retain audit log files. The audit system will not delete logs until the specified condition has been met. To view the current setting, run the following command: /usr/bin/sudo /usr/bin/grep ^expire-after /etc/security/audit_control If this returns no results, or does not contain "7d" or a larger value, this is a finding.

Removed

V-76013

The OS X system must provide an immediate warning to the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when allocated audit record storage volume reaches 75 percent of repository maximum audit record storage capacity.

Finding ID
AOSX-12-000305
Rule ID
SV-90701r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000343-GPOS-00134
CCI
CCI-001855
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to require a minimum percentage of free disk space in order to run. This ensures that audit will notify the administrator that action is required to free up more disk space for audit logs. When "minfree" is set to 25 percent, security personnel are notified immediately when the storage volume is 75 percent full and are able to plan for audit record storage capacity expansion.

Fix Text

Edit the "/etc/security/audit_control" file and change the value for "minfree" to "25" using the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*minfree.*/minfree:25/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control file".

Check Content

The check displays the "% free" to leave available for the system. The audit system will not write logs if the volume has less than this percentage of free disk space. To view the current setting, run the following command: /usr/bin/sudo /usr/bin/grep ^minfree /etc/security/audit_control If this returns no results, or does not contain "25", this is a finding.

Removed

V-76015

The OS X system must provide an immediate real-time alert to the System Administrator (SA) and Information System Security Officer (ISSO), at a minimum, of all audit failure events requiring real-time alerts.

Finding ID
AOSX-12-000310
Rule ID
SV-90703r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000344-GPOS-00135
CCI
CCI-001858
Target Key
(None)
Documentable
No
Discussion

The audit service should be configured to immediately print messages to the console or email administrator users when an auditing failure occurs. 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.

Fix Text

To make "auditd" log errors to standard error as well as "syslogd", run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/logger -p/logger -s -p/' /etc/security/audit_warn; /usr/bin/sudo /usr/sbin/audit -s

Check Content

By default, "auditd" only logs errors to "syslog". To see if audit has been configured to print error messages to the console, run the following command: /usr/bin/sudo /usr/bin/grep logger /etc/security/audit_warn If the argument "-s" is missing, or if "audit_warn" has not been otherwise modified to print errors to the console or send email alerts to the SA and ISSO, this is a finding.

Removed

V-76017

The OS X system must, for networked systems, compare internal information system clocks at least every 24 hours with a server that 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).

Finding ID
AOSX-12-000330
Rule ID
SV-90705r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000355-GPOS-00143
CCI
CCI-002046
Target Key
(None)
Documentable
No
Discussion

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 of 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). Satisfies: SRG-OS-000355-GPOS-00143, SRG-OS-000356-GPOS-00144

Fix Text

To enable the NTP service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.ntp.ntpd.plist To configure one or more time servers for use, edit "/etc/ntp.conf" and enter each hostname or IP address on a separate line, prefixing each one with the keyword "server".

Check Content

The Network Time Protocol (NTP) service must be enabled on all networked systems. To check if the service is running, use the following command: /usr/bin/sudo /bin/launchctl list | grep org.ntp.ntpd If nothing is returned, this is a finding. To verify that an authorized NTP server is configured, run the following command or examine "/etc/ntp.conf": /usr/bin/sudo /usr/bin/grep ^server /etc/ntp.conf Only approved time servers should be configured for use. If no server is configured, or if an unapproved time server is in use, this is a finding.

Removed

V-76019

The OS X system must be configured with audit log files owned by root.

Finding ID
AOSX-12-000331
Rule ID
SV-90707r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to only be readable and writable by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that returns an incorrect owner, run the following command: /usr/bin/sudo chown root [audit log file] [audit log file] is the full path to the log file in question.

Check Content

To check the ownership of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | grep -v current The results should show the owner (third column) to be "root". If they do not, this is a finding.

Removed

V-76021

The OS X system must be configured with audit log folders owned by root.

Finding ID
AOSX-12-000332
Rule ID
SV-90709r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log folder that has an incorrect owner, run the following command: /usr/bin/sudo chown root [audit log folder]

Check Content

To check the ownership of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the owner (third column) to be "root". If it does not, this is a finding.

Removed

V-76023

The OS X system must be configured with audit log files group-owned by wheel.

Finding ID
AOSX-12-000333
Rule ID
SV-90711r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct group ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that returns an incorrect group owner, run the following command: /usr/bin/sudo chgrp wheel [audit log file] [audit log file] is the full path to the log file in question.

Check Content

To check the group ownership of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current The results should show the group owner (fourth column) to be "wheel". If they do not, this is a finding.

Removed

V-76025

The OS X system must be configured with audit log folders group-owned by wheel.

Finding ID
AOSX-12-000334
Rule ID
SV-90713r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct group ownership to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log folder that has an incorrect group, run the following command: /usr/bin/sudo chgrp wheel [audit log folder]

Check Content

To check the group ownership of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the group (fourth column) to be "wheel". If they do not, this is a finding.

Removed

V-76027

The OS X system must be configured with audit log files set to mode 440 or less permissive.

Finding ID
AOSX-12-000335
Rule ID
SV-90715r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 440 [audit log file] [audit log file] is the full path to the log file in question.

Check Content

To check the permissions of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current The results should show the permissions (first column) to be "440" or less permissive. If they do not, this is a finding.

Removed

V-76029

The OS X system must be configured with audit log folders set to mode 700 or less permissive.

Finding ID
AOSX-12-000336
Rule ID
SV-90717r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000164
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log folders with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log folders are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029

Fix Text

For any log folder that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 700 [audit log folder]

Check Content

To check the permissions of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the permissions (first column) to be "700" or less permissive. If they do not, this is a finding.

Removed

V-76031

The OS X system must be configured so that log files must not contain access control lists (ACLs).

Finding ID
AOSX-12-000337
Rule ID
SV-90719r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log files with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log file that contains ACLs, run the following command: /usr/bin/sudo chmod -N [audit log file]

Check Content

To check if a log file contains ACLs, run the following commands: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current In the output from the above commands, ACLs will be listed under any file that may contain them (e.g., "0: group:admin allow list,readattr,reaadextattr,readsecurity"). If any such line exists, this is a finding.

Removed

V-76033

The OS X system must be configured so that log folders must not contain access control lists (ACLs).

Finding ID
AOSX-12-000338
Rule ID
SV-90721r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000057-GPOS-00027
CCI
CCI-000162
Target Key
(None)
Documentable
No
Discussion

The audit service must be configured to create log folders with the correct permissions to prevent normal users from reading audit logs. Audit logs contain sensitive data about the system and users. If log folders are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.

Fix Text

For any log folder that contains ACLs, run the following command: /usr/bin/sudo chmod -N [audit log folder]

Check Content

To check if a log folder contains ACLs, run the following commands: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') In the output from the above commands, ACLs will be listed under any folder that may contain them (e.g., "0: group:admin allow list,readattr,reaadextattr,readsecurity"). If any such line exists, this is a finding.

Removed

V-76035

The OS X system must have the security assessment policy subsystem enabled.

Finding ID
AOSX-12-000430
Rule ID
SV-90723r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000366-GPOS-00153
CCI
CCI-001749
Target Key
(None)
Documentable
No
Discussion

Any changes to the hardware, software, and/or firmware components of the information system and/or application can potentially have significant effects on the overall security of the system. Accordingly, software defined by the organization as critical must be signed with a certificate that is recognized and approved by the organization.

Fix Text

To enable the Security assessment policy subsystem, run the following command: /usr/bin/sudo /usr/sbin/spctl --master-enable

Check Content

To check the status of the Security assessment policy subsystem, run the following command: /usr/bin/sudo /usr/sbin/spctl --status | /usr/bin/grep enabled If nothing is returned, this is a finding.

Removed

V-76037

The OS X system must be configured to disable the application FaceTime.

Finding ID
AOSX-12-000475
Rule ID
SV-90725r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application FaceTime establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if FaceTime is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "displayName = FaceTime;" If anything is returned, this is a finding. Built-in applications such as "FaceTime" should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

Removed

V-76039

The OS X system must be configured to disable the application Messages.

Finding ID
AOSX-12-000490
Rule ID
SV-90727r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Messages establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if Messages is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowChat = 0;" If anything is returned, this is a finding. Built-in applications such as Messages should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

Removed

V-76041

The OS X system must be configured to disable the iCloud Calendar services.

Finding ID
AOSX-12-000505
Rule ID
SV-90729r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Calendar establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloudCalendar is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudCalendar = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Calendar should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

Removed

V-76043

The OS X system must be configured to disable the iCloud Reminders services.

Finding ID
AOSX-12-000507
Rule ID
SV-90731r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Reminders establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloud Reminders is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudReminders = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Reminders should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

Removed

V-76045

The OS X system must be configured to disable iCloud Address Book services.

Finding ID
AOSX-12-000510
Rule ID
SV-90733r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Contacts establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloud Address Book is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudAddressBook = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Address Book should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

Removed

V-76047

The OS X system must be configured to disable the Mail iCloud services.

Finding ID
AOSX-12-000515
Rule ID
SV-90735r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Mail establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if Mail iCloud is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudMail = 0;" If nothing is returned, this is a finding. Built-in applications such as the Mail iCloud should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

Removed

V-76049

The OS X system must be configured to disable the iCloud Notes services.

Finding ID
AOSX-12-000517
Rule ID
SV-90737r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The application Notes establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if there is a configuration policy defined for "Application Restrictions", run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "familyControlsEnabled = 1;" If nothing is returned, this is a finding. To check if iCloud Notes is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudNotes = 0;" If nothing is returned, this is a finding. Built-in applications such as iCloud Notes should be evaluated against mission needs and should only appear in the list of allowed applications if specifically required.

Removed

V-76051

The OS X system must be configured to disable the camera.

Finding ID
AOSX-12-000518
Rule ID
SV-90739r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Applications Restrictions Policy" configuration profile.

Check Content

To check if the system has been configured to disable the camera, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCamera = 0;" If there is no result, this is a finding.

Removed

V-76053

The OS X system must be configured to disable the system preference pane for iCloud.

Finding ID
AOSX-12-000520
Rule ID
SV-90741r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if the system has the correct setting in the configuration profile to disable access to the iCloud preference pane, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 5 'DisabledPreferencePanes' If nothing is returned, this is a finding. To check if iCloud has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep com.apple.preferences.icloud If nothing is returned, this is a finding.

Removed

V-76055

The OS X system must be configured to disable the system preference pane for Internet Accounts.

Finding ID
AOSX-12-000521
Rule ID
SV-90743r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if "Internet Accounts" has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep com.apple.preferences.internetaccounts If nothing is returned, this is a finding.

Removed

V-76057

The OS X system must be configured to disable the system preference pane for Siri.

Finding ID
AOSX-12-000522
Rule ID
SV-90745r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if "Siri" has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep com.apple.preference.speech If nothing is returned, this is a finding.

Removed

V-76059

The OS X system must be configured to disable Siri and dictation.

Finding ID
AOSX-12-000523
Rule ID
SV-90747r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system preference panel's iCloud and Internet Accounts must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if Siri and dictation has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "IronwoodAllowed = 0;" If nothing is returned, this is a finding.

Removed

V-76061

The OS X system must be configured to disable sending diagnostic and usage data to Apple.

Finding ID
AOSX-12-000530
Rule ID
SV-90749r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000096-GPOS-00050
CCI
CCI-000382
Target Key
(None)
Documentable
No
Discussion

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. Sending diagnostic and usage data to Apple must be disabled.

Fix Text

This setting is enforced using the "Security and Privacy Policy" configuration profile. The setting "Send diagnostic & usage data to Apple" is found in System Preferences >> Security & Privacy >> Privacy >> Diagnostics & Usage. Uncheck the box that says "Send diagnostic & usage data to Apple." To apply the setting from the command line, run the following commands: /usr/bin/defaults read "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit /usr/bin/sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit -bool false /usr/bin/sudo /bin/chmod 644 /Library/Application\ Support/CrashReporter/DiagnosticMessagesHistory.plist /usr/bin/sudo /usr/bin/chgrp admin /Library/Application\ Support/CrashReporter/DiagnosticMessagesHistory.plist

Check Content

Sending diagnostic and usage data to Apple must be disabled. To check if a configuration profile is configured to enforce this setting, run the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep AutoSubmit If "AutoSubmit" is not set to "0", this is a finding. Alternately, the setting is found in System Preferences >> Security & Privacy >> Privacy >> Diagnostics & Usage. If the box that says "Send diagnostic & usage data to Apple" is checked, this is a finding.

Removed

V-76063

The OS X system must be configured to disable the Find My Mac iCloud service.

Finding ID
AOSX-12-000531
Rule ID
SV-90751r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-001774
Target Key
(None)
Documentable
No
Discussion

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. Find My Mac must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

To check if Find My Mac is disabled, use the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowCloudFMM = 0;" If nothing is returned, this is a finding.

Removed

V-76065

The OS X system must be configured to disable Location Services.

Finding ID
AOSX-12-000535
Rule ID
SV-90753r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. Location Services must be disabled.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile. The setting "Enable Location Services" can be found in System Preferences >> Security & Privacy >> Privacy >> Location Services. Uncheck the box that says "Enable Location Services". It can also be set with the following command: /usr/bin/sudo /usr/bin/defaults write /private/var/db/locationd/Library/Preferences/ByHost/com.apple.locationd.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57` LocationServicesEnabled -bool false

Check Content

Location Services must be disabled. To check if a configuration profile is configured to enforce this setting, run the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableLocationServices If "DisableLocationServices" is not set to "1", this is a finding. The setting is found in System Preferences >> Security & Privacy >> Privacy >> Location Services. If the box that says "Enable Location Services" is checked, this is a finding. To check if the setting was applied on the command line, run the following command: /usr/bin/sudo /usr/bin/defaults read /private/var/db/locationd/Library/Preferences/ByHost/com.apple.locationd.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57` LocationServicesEnabled If the output is "1" this is a finding.

Removed

V-76067

The OS X system must be configured to disable Bonjour multicast advertising.

Finding ID
AOSX-12-000545
Rule ID
SV-90755r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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. Bonjour multicast advertising must be disabled on the system.

Fix Text

To configure Bonjour to disable multicast advertising, run the following command: /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true The system will need to be restarted for the update to take effect.

Check Content

To check if Bonjour multicast advertising has been disabled, run the following command: /usr/bin/sudo /usr/bin/defaults read /Library/Preferences/com.apple.mDNSResponder | /usr/bin/grep NoMulticastAdvertisements If an error is returned, nothing is returned, or "NoMulticastAdvertisements" is not set to "1", this is a finding.

Removed

V-76069

The OS X system must be configured to disable the UUCP service.

Finding ID
AOSX-12-000550
Rule ID
SV-90757r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000095-GPOS-00049
CCI
CCI-000381
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. The system must not have the UUCP service active.

Fix Text

To disable the UUCP service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.uucp The system may need to be restarted for the update to take effect.

Check Content

To check if the UUCP service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.uucp If the results do not show the following, this is a finding: "com.apple.uucp" => true

Removed

V-76071

The OS X system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.

Finding ID
AOSX-12-000565
Rule ID
SV-90759r2_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000109-GPOS-00056
CCI
CCI-000770
Target Key
(None)
Documentable
No
Discussion

Administrator users must never log in directly as root. To assure individual accountability and prevent unauthorized access, logging in as root over a remote connection must be disabled. Administrators should only run commands as root after first authenticating with their individual user names and passwords.

Fix Text

To ensure that "PermitRootLogin" is disabled by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak ‘' 's/^[\#]*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

Check Content

To check if SSH has root logins enabled, run the following command: /usr/bin/sudo /usr/bin/grep ^PermitRootLogin /etc/ssh/sshd_config If there is no result, or the result is set to "yes", this is a finding.

Removed

V-76073

The OS X system must implement NSA-approved cryptography to protect classified information in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.

Finding ID
AOSX-12-000570
Rule ID
SV-90761r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000112-GPOS-00057
CCI
CCI-002450
Target Key
(None)
Documentable
No
Discussion

Use of weak or untested encryption algorithms undermines the purposes of using 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. Satisfies: SRG-OS-000112-GPOS-00057, SRG-OS-000113-GPOS-00058, SRG-OS-000396-GPOS-00176

Fix Text

To ensure that "Protocol 2" is used by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*Protocol.*/Protocol 2/' /etc/ssh/sshd_config

Check Content

To check which protocol is configured for sshd, run the following: /usr/bin/sudo /usr/bin/grep ^Protocol /etc/ssh/sshd_config If there is no result or the result is not "Protocol 2", this is a finding.

Removed

V-76075

The OS X system must enforce password complexity by requiring that at least one numeric character be used.

Finding ID
AOSX-12-000585
Rule ID
SV-90763r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000071-GPOS-00039
CCI
CCI-000194
Target Key
(None)
Documentable
No
Discussion

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.

Fix Text

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor. If the file does not yet contain any policy settings, replace <dict/> with <dict></dict>; then insert the following text after the opening <dict> tag and before the closing </dict> tag. The same text can also be used if the line "<key>policyCategoryPasswordContent</key>" is not present. <key>policyCategoryPasswordContent</key> <array> <dict> <key>policyContent</key> <string>policyAttributePassword matches '(.*[0-9].*){1,}+'</string> <key>policyIdentifier</key> <string>com.apple.policy.legacy.requiresNumeric</string> <key>policyParameters</key> <dict> <key>minimumNumericCharacters</key> <integer>1</integer> </dict> </dict> </array> If the file does contain policy settings, and the line "<key>policyCategoryPasswordContent</key>" does exist, insert the following text after the opening <array> tag that comes right after it: <dict> <key>policyContent</key> <string>policyAttributePassword matches '(.*[0-9].*){1,}+'</string> <key>policyIdentifier</key> <string>com.apple.policy.legacy.requiresNumeric</string> <key>policyParameters</key> <dict> <key>minimumNumericCharacters</key> <integer>1</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that passwords contain at least one numeric character: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep requireAlphanumeric If "requireAlphanumeric" is not set to "1" or is undefined, this is a finding. If password policy is set with the "pwpolicy utility", run the following command instead: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "<key>policyCategoryPasswordContent</key>". If it does not exist, and password policy is not controlled by a directory service, this is a finding. Otherwise, in the array section that follows it, there should be a <dict> section that contains a check <string> that "matches" the variable "policyAttributePassword" to the regular expression "(.*[0-9].*){1,}+" or to a similar expression that will ensure the password contains a character in the range 0-9 one or more times. If this check allows users to create passwords without at least one numeric character, or if no such check exists, this is a finding.

Removed

V-76077

The OS X system must enforce password complexity by requiring that at least one special character be used.

Finding ID
AOSX-12-000587
Rule ID
SV-90765r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000266-GPOS-00101
CCI
CCI-001619
Target Key
(None)
Documentable
No
Discussion

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: ~ ! @ # $ % ^ *.

Fix Text

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service.

Check Content

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that passwords contain at least one special character: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep minComplexChars If "minComplexChars" is not set to "1" or is undefined, this is a finding. Run the following command to check if the system is configured to require that passwords not contain repeated sequential characters or characters in increasing and decreasing sequential order: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowSimple If "allowSimple" is not set to "0" or is undefined, this is a finding.

Removed

V-76079

The OS X system must enforce a minimum 15-character password length.

Finding ID
AOSX-12-000590
Rule ID
SV-90767r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000078-GPOS-00046
CCI
CCI-000205
Target Key
(None)
Documentable
No
Discussion

The minimum password length must be set to 15 characters. 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. The use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.

Fix Text

This setting is enforced using the "Passcode Policy" configuration profile. Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

Check Content

To check the currently applied policies for passwords and accounts, use the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep minLength The parameter minLength should be "15". If it is less than "15", this is a finding.

Removed

V-76081

The OS X system must not use telnet.

Finding ID
AOSX-12-000605
Rule ID
SV-90769r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000074-GPOS-00042
CCI
CCI-003123
Target Key
(None)
Documentable
No
Discussion

The "telnet" service must be disabled as it sends all data in a clear-text form that can be easily intercepted and read. The data needs to be protected at all times during transmission, and encryption is the standard method for protecting data in transit. If the data is not encrypted during transmission, it can be plainly read (i.e., clear text) and easily compromised. Disabling telnet is one way to mitigate this risk. Administrators should be instructed to use an alternate service for remote access sessions, non-local maintenance sessions, and diagnostic communications that uses encryption, such as SSH. Satisfies: SRG-OS-000074-GPOS-00042, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174

Fix Text

To disable the "telnet" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.telnetd The system may need to be restarted for the update to take effect.

Check Content

To check if the "telnet" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.telnetd If the results do not show the following, this is a finding: "com.apple.telnetd" => true

Removed

V-76083

The OS X system must not use unencrypted FTP.

Finding ID
AOSX-12-000606
Rule ID
SV-90771r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000074-GPOS-00042
CCI
CCI-000197
Target Key
(None)
Documentable
No
Discussion

The "ftp" service must be disabled as it sends all data in a clear-text form that can be easily intercepted and read. The data needs to be protected at all times during transmission, and encryption is the standard method for protecting data in transit. If the data is not encrypted during transmission, it can be plainly read (i.e., clear text) and easily compromised. Disabling ftp is one way to mitigate this risk. Administrators should be instructed to use an alternate service for data transmission that uses encryption, such as SFTP.

Fix Text

To disable the "ftp" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.ftpd The system may need to be restarted for the update to take effect.

Check Content

To check if the "ftp" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.ftpd If the results do not show the following, this is a finding: "com.apple.ftpd" => true

Removed

V-76085

The OS X system must allow only applications downloaded from the App Store to run.

Finding ID
AOSX-12-000710
Rule ID
SV-90773r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000366-GPOS-00153
CCI
CCI-001749
Target Key
(None)
Documentable
No
Discussion

Gatekeeper settings must be configured correctly to only allow the system to run applications downloaded from the Mac App Store or applications signed with a valid Apple Developer ID code. Administrator users will still have the option to override these settings on a per-app basis. Gatekeeper is a security feature that ensures that applications must be digitally signed by an Apple-issued certificate in order to run. Digital signatures allow the OS X to verify that the application has not been modified by a malicious third party.

Fix Text

This setting is enforced using the "Security and Privacy Policy" configuration profile.

Check Content

To verify only applications downloaded from the App Store are allowed to run, type the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep EnableAssessment If "EnableAssessment" is not set to "1", this is a finding. /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep AllowIdentifiedDevelopers If "AllowIdentifiedDevelopers" is not set to "1", this is a finding.

Removed

V-76087

The OS X system must be configured so that end users cannot override Gatekeeper settings.

Finding ID
AOSX-12-000711
Rule ID
SV-90775r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Gatekeeper must be configured with a configuration profile to prevent normal users from overriding its setting. If users are allowed to disable Gatekeeper or set it to a less restrictive setting, malware could be introduced into the system. Gatekeeper is a security feature that ensures applications must be digitally signed by an Apple-issued certificate in order to run. Digital signatures allow Mac OS X to verify the application has not been modified by a malicious third party.

Fix Text

This setting is enforced using the "Security and Privacy Policy" configuration profile.

Check Content

To verify the user cannot override Gatekeeper settings, type the following code: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableOverride If "DisableOverride" is not set to "1", this is a finding.

Removed

V-76089

The OS X system must be configured with the SSH daemon ClientAliveInterval option set to 900 or less.

Finding ID
AOSX-12-000720
Rule ID
SV-90777r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000163-GPOS-00072
CCI
CCI-001133
Target Key
(None)
Documentable
No
Discussion

SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out logon attempts. 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 or an incomplete logon attempt will also free up resources committed by the managed network element.

Fix Text

To ensure that "ClientAliveInterval" is set correctly, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*ClientAliveInterval.*/ClientAliveInterval 900/' /etc/ssh/sshd_config

Check Content

The SSH daemon "ClientAliveInterval" option must be set correctly. To check the idle timeout setting for SSH sessions, run the following: /usr/bin/sudo /usr/bin/grep ^ClientAliveInterval /etc/ssh/sshd_config If the setting is not "900" or less, this is a finding.

Removed

V-76091

The OS X system must be configured with the SSH daemon ClientAliveCountMax option set to 0.

Finding ID
AOSX-12-000721
Rule ID
SV-90779r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000163-GPOS-00072
CCI
CCI-001133
Target Key
(None)
Documentable
No
Discussion

SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out logon attempts. 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 or an incomplete logon attempt will also free up resources committed by the managed network element.

Fix Text

To ensure that the SSH idle timeout occurs precisely when the "ClientAliveCountMax" is set, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*ClientAliveCountMax.*/ClientAliveCountMax 0/' /etc/ssh/sshd_config

Check Content

The SSH daemon "ClientAliveCountMax" option must be set correctly. To verify the SSH idle timeout will occur when the "ClientAliveCountMax" is set, run the following command: /usr/bin/sudo /usr/bin/grep ^ClientAliveCountMax /etc/ssh/sshd_config If the setting is not "ClientAliveCountMax 0", this is a finding.

Removed

V-76093

The OS X system must be configured with the SSH daemon LoginGraceTime set to 30 or less.

Finding ID
AOSX-12-000722
Rule ID
SV-90781r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000163-GPOS-00072
CCI
CCI-001133
Target Key
(None)
Documentable
No
Discussion

SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out logon attempts. 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 or an incomplete logon attempt will also free up resources committed by the managed network element.

Fix Text

To ensure that "LoginGraceTime" is configured correctly, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*LoginGraceTime.*/LoginGraceTime 30/' /etc/ssh/sshd_config

Check Content

The SSH daemon "LoginGraceTime" must be set correctly. To check the amount of time that a user can log on through SSH, run the following command: /usr/bin/sudo /usr/bin/grep ^LoginGraceTime /etc/ssh/sshd_config If the value is not set to "30" or less, this is a finding.

Removed

V-76095

The OS X system must issue or obtain public key certificates under an appropriate certificate policy from an approved service provider.

Finding ID
AOSX-12-000750
Rule ID
SV-90783r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000066-GPOS-00034
CCI
CCI-002450
Target Key
(None)
Documentable
No
Discussion

DoD-approved certificates must be installed to the System Keychain so they will be available to all users. For user certificates, each organization obtains certificates from an approved, shared service provider, as required by OMB policy. For federal agencies operating a legacy public key infrastructure cross-certified with the Federal Bridge Certification Authority at medium assurance or higher, this Certification Authority will suffice. This control focuses on certificates with a visibility external to the information system and does not include certificates related to internal system operations; for example, application-specific time services. Satisfies: SRG-OS-000066-GPOS-00034, SRG-OS-000478-GPOS-00223

Fix Text

Obtain the approved DOD certificates from the appropriate authority. Use Keychain Access from "/Applications/Utilities" to add certificates to the System Keychain.

Check Content

To view a list of installed certificates, run the following command: /usr/bin/sudo /usr/bin/security dump-keychain | /usr/bin/grep labl | awk -F\" '{ print $4 }' If this list does not contain approved certificates, this is a finding.

Removed

V-76097

The OS X system must implement cryptographic mechanisms to protect the confidentiality and integrity of all information at rest.

Finding ID
AOSX-12-000780
Rule ID
SV-90785r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000185-GPOS-00079
CCI
CCI-002476
Target Key
(None)
Documentable
No
Discussion

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) within an organizational information system. Mobile devices, laptops, desktops, and storage devices can be lost or stolen, and the contents of their data storage (e.g., hard drives and non-volatile memory) can be read, copied, or altered. By encrypting the system hard drive, the confidentiality and integrity of any data stored on the system is ensured. FileVault Disk Encryption mitigates this risk. Satisfies: SRG-OS-000185-GPOS-00079, SRG-OS-000404-GPOS-00183, SRG-OS-000405-GPOS-00184

Fix Text

Open System Preferences >> Security and Privacy and navigate to the "FileVault" tab. Use this panel to configure full-disk encryption. Alternately, from the command line, run the following command to enable "FileVault": /usr/bin/sudo /usr/bin/fdesetup enable After "FileVault" is initially set up, additional users can be added.

Check Content

To check if "FileVault 2" is enabled, run the following command: /usr/bin/sudo /usr/bin/fdesetup status If "FileVault" is "Off" and the device is a mobile device or the organization has determined that the drive must encrypt data at rest, this is a finding.

Removed

V-76099

The OS X 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).

Finding ID
AOSX-12-000835
Rule ID
SV-90787r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000191-GPOS-00080
CCI
CCI-001233
Target Key
(None)
Documentable
No
Discussion

An approved tool for continuous network scanning must be installed and configured to run. 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.

Fix Text

Install an approved HBSS solution onto the system.

Check Content

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved tool capable of continuous scanning is loaded on the system. The recommended system is the McAfee HBSS. If no such tool is installed on the system, this is a finding.

Removed

V-76101

The OS X system must restrict the ability of individuals to use USB storage devices.

Finding ID
AOSX-12-000850
Rule ID
SV-90789r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

External hard drives, such as USB, must be disabled for users. USB hard drives are a potential vector for malware and can be used to exfiltrate sensitive data if an approved data-loss prevention (DLP) solution is not installed.

Fix Text

This setting is enforced using the "Restrictions Policy" configuration profile.

Check Content

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To verify external USB drives are disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 3 harddisk-external If the option "eject,alert" is not set for "harddisk-external", this is a finding.

Removed

V-76103

The OS X system must be configured with the usbmuxd daemon disabled.

Finding ID
AOSX-12-000862
Rule ID
SV-90791r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Connections to unauthorized iOS devices (iPhones, iPods, and iPads) open the system to possible compromise via exfiltration of system data. Disabling the "usbmuxd" daemon blocks connections to iOS devices.

Fix Text

To disable the "usbmuxd" daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.usbmuxd The system may need to be restarted for the update to take effect.

Check Content

To check if the "usbmuxd" daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.usbmuxd If the results do not show the following, this is a finding: "com.apple.usbmuxd" => true

Removed

V-76105

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

Finding ID
AOSX-12-000925
Rule ID
SV-90793r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00229
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

When automatic logons are enabled, the default user account is automatically logged on at boot time without prompting the user for a password. Even if the screen is later locked, a malicious user would be able to reboot the computer to log on. Disabling automatic logons mitigates this risk.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the system is configured to automatically log on, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableAutoLoginClient If "com.apple.login.mcx.DisableAutoLoginClient" is not set to "1", this is a finding.

Removed

V-76107

The OS X system logon window must be configured to prompt for username and password, rather than show a list of users.

Finding ID
AOSX-12-000930
Rule ID
SV-90795r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00229
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The logon window must be configured to prompt all users for both a username and a password. By default, the system displays a list of known users at the logon screen. This gives an advantage to an attacker with physical access to the system, as the attacker would only have to guess the password for one of the listed accounts.

Fix Text

This setting is enforced using the "Login Window Policy" configuration profile.

Check Content

To check if the logon window is configured to prompt for user name and password, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep SHOWFULLNAME If there is no result, or "SHOWFULLNAME" is not set to "1", this is a finding.

Removed

V-76109

The OS X firewall must have logging enabled.

Finding ID
AOSX-12-000950
Rule ID
SV-90797r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Firewall logging must be enabled. This ensures that malicious network activity will be logged to the system.

Fix Text

To enable the firewall logging, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on

Check Content

If HBSS is used, this is not applicable. To check if the OS X firewall has logging enabled, run the following command: /usr/libexec/ApplicationFirewall/socketfilterfw --getloggingmode | /usr/bin/grep on If the result does not show "on", this is a finding.

Removed

V-76111

The OS X system must be configured so that Bluetooth devices are not allowed to wake the computer.

Finding ID
AOSX-12-000955
Rule ID
SV-90799r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

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 must remain in place until the user reauthenticates. No other activity aside from reauthentication must unlock the system.

Fix Text

Manually change this control on the computer by opening System Preferences >> Bluetooth. Click "Advanced" and ensure the "Allow Bluetooth devices to wake this computer" is not checked. This control is not necessary if Bluetooth has been completely disabled. The following can be run from the command line to disable "Remote Wake" for the current user: /usr/bin/defaults write /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57`.plist RemoteWakeEnabled 0

Check Content

To check if the Bluetooth Remote Wake setting is disabled, run the following two commands as the primary user: /usr/bin/defaults -currentHost read com.apple.Bluetooth RemoteWakeEnabled /usr/bin/defaults read /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | grep "Hardware UUID" | cut -c22-57`.plist RemoteWakeEnabled If there is an error or nothing is returned, or the return value is "1" for either command, this is a finding.

Removed

V-76113

The OS X system must be configured with Bluetooth Sharing disabled.

Finding ID
AOSX-12-000965
Rule ID
SV-90801r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Bluetooth sharing allows users to wirelessly transmit files between the OS X and Bluetooth-enabled devices, including personally owned cellphones and tablets. A malicious user might introduce viruses or malware onto the system or extract sensitive files. Disabling Bluetooth Sharing mitigates this risk.

Fix Text

To disable Bluetooth Sharing, open System Preferences >> Sharing and uncheck the box next to "Bluetooth Sharing". This control is not necessary if Bluetooth has been completely disabled. The following can be run from the command line to disable "Bluetooth Sharing" for the current user: /usr/bin/defaults write /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57`.plist PrefKeyServicesEnabled 0

Check Content

To check if Bluetooth Sharing is enabled, open System Preferences >> Sharing and verify that "Bluetooth Sharing" is not checked "ON". If it is "ON", this is a finding. The following command can be run from the command line: /usr/bin/defaults read /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | grep "Hardware UUID" | cut -c22-57`.plist PrefKeyServicesEnabled If there is an error or nothing is returned, or the return value is "1", this is a finding.

Removed

V-76115

The OS X system must be configured to disable Remote Apple Events.

Finding ID
AOSX-12-000975
Rule ID
SV-90803r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000096-GPOS-00050
CCI
CCI-000382
Target Key
(None)
Documentable
No
Discussion

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 that cannot be disabled. Remote Apple Events must be disabled.

Fix Text

To disable Remote Apple Events, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.AEServer The system may need to be restarted for the update to take effect.

Check Content

To check if Remote Apple Events is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.AEServer If the results do not show the following, this is a finding. "com.apple.AEServer" => true

Removed

V-76117

The OS X system must be configured with the sudoers file configured to authenticate users on a per -tty basis.

Finding ID
AOSX-12-000995
Rule ID
SV-90805r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The "sudo" command must be configured to prompt for the administrator user's password at least once in each newly opened Terminal window or remote logon session, as this prevents a malicious user from taking advantage of an unlocked computer or an abandoned logon session to bypass the normal password prompt requirement. Without the "tty_tickets" option, all open local and remote logon sessions would be authenticated to use sudo without a password for the duration of the configured password timeout window.

Fix Text

Edit the "/etc/sudoers" file to contain the line: Defaults tty_tickets This line can be placed in the defaults section or at the end of the file.

Check Content

To check if the "tty_tickets" option is set for "/usr/bin/sudo", run the following command: /usr/bin/sudo /usr/bin/grep tty_tickets /etc/sudoers If there is no result, this is a finding.

Removed

V-76119

The OS X Application Firewall must be enabled.

Finding ID
AOSX-12-001080
Rule ID
SV-90807r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00232
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The Application Firewall is the built-in firewall that comes with OS X and must be enabled. 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.

Fix Text

To enable the firewall, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

Check Content

If an approved HBSS solution is installed, this is not applicable. To check if the OS X firewall has been enabled, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate If the result is "disabled", this is a finding.

Removed

V-76121

The OS X system must be configured with all public directories owned by root or an application account.

Finding ID
AOSX-12-001110
Rule ID
SV-90809r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

All public directories must be owned by "root", the local admin user, or an application account. Directory owners have permission to delete any files contained in that directory, even if the files are owned by other user accounts. By setting the owner to an administrator or application account, regular users will not be permitted to delete each other's files.

Fix Text

To change the ownership of any finding, run the following command: /usr/bin/sudo find / -type d -perm +o+w -not -uid 0 -exec chown root {} \;

Check Content

To display all directories that are writable by all and not owned by "root", run the following command: /usr/bin/sudo find / -type d -perm +o+w -not -uid 0 If anything is returned, and those directories are not owned by root or application account, this is a finding.

Removed

V-76123

The OS X system must be configured with the finger service disabled.

Finding ID
AOSX-12-001115
Rule ID
SV-90811r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The "finger" service has had several security vulnerabilities in the past and is not a necessary service. It is disabled by default; enabling it would increase the attack surface of the system.

Fix Text

To disable the "finger" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.fingerd The system may need to be restarted for the update to take effect.

Check Content

To check if the "finger" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.fingerd If the results do not show the following, this is a finding: "com.apple.fingerd" => true

Removed

V-76125

The OS X system must be configured with the sticky bit set on all public directories.

Finding ID
AOSX-12-001120
Rule ID
SV-90813r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The sticky bit must be set on all public directories, as it prevents users with write access to the directory from deleting or renaming files that belong to other users inside it.

Fix Text

Run the following command to set the "sticky bit" on all world-writable directories: /usr/bin/sudo /usr/bin/find / -type d \( -perm -0002 -a ! -perm -1000 \) -exec chmod +t {} \;

Check Content

Run the following command to view all world-writable directories that do not have the "sticky bit" set: /usr/bin/sudo /usr/bin/find / -type d \( -perm -0002 -a ! -perm -1000 \) If anything is returned, this is a finding.

Removed

V-76127

The OS X system must be configured with the prompt for Apple ID and iCloud disabled.

Finding ID
AOSX-12-001125
Rule ID
SV-90815r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

The prompt for Apple ID and iCloud must be disabled, as it might mislead new users into creating unwanted Apple IDs and iCloud storage accounts upon their first logon.

Fix Text

This setting is enforced using the "Disable iCloud Policy" configuration profile.

Check Content

To check if the prompt for "Apple ID" and "iCloud" are disabled for new users, run the following command: /usr/bin/sudo /usr/bin/defaults read /System/Library/User\ Template/English.lproj/Library/Preferences/com.apple.SetupAssistant If there is no result, if it prints out that the domain "does not exist", or the results do not include "DidSeeCloudSetup = 1 AND LastSeenCloudProductVersion = 10.12", this is a finding.

Removed

V-76129

The OS X system must be configured so that users do not have Apple IDs signed into iCloud.

Finding ID
AOSX-12-001130
Rule ID
SV-90817r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Users should not sign into iCloud, as this leads to the possibility that sensitive data could be saved to iCloud storage or that users could inadvertently introduce viruses or malware previously saved to iCloud from other systems.

Fix Text

This must be resolved manually. With the affected user logged on, open System Preferences >> iCloud. Choose "Sign Out".

Check Content

To see if any user account has configured an Apple ID for iCloud usage, run the following command: /usr/bin/sudo find /Users/ -name 'MobileMeAccounts.plist' -exec /usr/bin/defaults read '{}' \; If the results show any accounts listed, this is a finding.

Removed

V-76131

The OS X system must be configured with iTunes Music Sharing disabled.

Finding ID
AOSX-12-001140
Rule ID
SV-90819r1_rule
Severity
Cat III
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

When iTunes Music Sharing is enabled, the computer starts a network listening service that shares the contents of the user's music collection with other users in the same subnet. Unnecessary network services should always be disabled because they increase the attack surface of the system. Disabling iTunes Music Sharing mitigates this risk.

Fix Text

This setting is enforced using the "Custom Policy" configuration profile.

Check Content

To check if iTunes Music Sharing is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep disableSharedMusic If "disableSharedMusic" is not set to "1", this is a finding.

Removed

V-76133

All setuid executables on the OS X system must be documented.

Finding ID
AOSX-12-001145
Rule ID
SV-90821r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

Very few of the executables that come preinstalled on the OS X have the "setuid" bit set, and administrators should never add the "setuid" bit to any executable that does not already have it set by the vendor. Executables with the "setuid" bit set allow anyone that executes them to be temporarily assigned the UID of the file owner. In practice, this almost always is the root account. While some vendors depend on this file attribute for proper operation, security problems can result if "setuid" is assigned to programs allowing reading and writing of files, or shell escapes, as this could lead to unprivileged users gaining privileged access to files and directories on the system.

Fix Text

Document all of the files with the "setuid" bit set. Remove any undocumented files.

Check Content

If available, provide a list of "setuids" provided by a vendor. To list all of the files with the "setuid" bit set, run the following command to send all results to a file named "suidfilelist": /usr/bin/sudo find / -perm -4000 -exec /bin/ls -ldb {} \; > suidfilelist If any of the files listed are not documented as needing to have the "setuid" bit set by the vendor, this is a finding.

Removed

V-76135

The OS X system must ignore IPv4 ICMP redirect messages.

Finding ID
AOSX-12-001200
Rule ID
SV-90823r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

ICMP redirects are broadcast to reshape network traffic. A malicious user could craft fake redirect packets and try to force all network traffic to pass through a network sniffer. If the system is not configured to ignore these packets, it could be susceptible to this kind of attack.

Fix Text

To configure the system to ignore "ICMP redirect" messages, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.icmp.drop_redirect=1

Check Content

To check if the system is configured to ignore "ICMP redirect" messages, run the following command: sysctl net.inet.icmp.drop_redirect If the value is not "1", this is a finding.

Removed

V-76137

The OS X system must not have IP forwarding for IPv4 enabled.

Finding ID
AOSX-12-001205
Rule ID
SV-90825r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

IP forwarding for IPv4 must not be enabled, as only authorized systems should be permitted to operate as routers.

Fix Text

To configure the system to disable "IP forwarding", add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.forwarding=0

Check Content

To check if "IP forwarding" is enabled, run the following command: sysctl net.inet.ip.forwarding If the values are not "0", this is a finding.

Removed

V-76139

The OS X system must not have IP forwarding for IPv6 enabled.

Finding ID
AOSX-12-001206
Rule ID
SV-90827r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

IP forwarding for IPv6 must not be enabled, as only authorized systems should be permitted to operate as routers.

Fix Text

To configure the system to disable "IP forwarding", add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet6.ip6.forwarding=0

Check Content

To check if "IP forwarding" is enabled, run the following command: sysctl net.inet6.ip6.forwarding If the values are not "0", this is a finding.

Removed

V-76141

The OS X system must not send IPv4 ICMP redirects by default.

Finding ID
AOSX-12-001210
Rule ID
SV-90829r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

ICMP redirects are broadcast to reshape network traffic. A malicious user could use the system to send fake redirect packets and try to force all network traffic to pass through a network sniffer. Disabling ICMP redirect broadcasts mitigates this risk.

Fix Text

To configure the system to not send ICMP redirects, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.redirect=0

Check Content

To check if the system is configured to send ICMP redirects, run the following command: sysctl net.inet.ip.redirect If the values are not set to "0", this is a finding.

Removed

V-76143

The OS X system must not send IPv6 ICMP redirects by default.

Finding ID
AOSX-12-001211
Rule ID
SV-90831r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-OS-000480-GPOS-00227
CCI
CCI-000366
Target Key
(None)
Documentable
No
Discussion

ICMP redirects are broadcast to reshape network traffic. A malicious user could use the system to send fake redirect packets and try to force all network traffic to pass through a network sniffer. Disabling ICMP redirect broadcasts mitigates this risk.

Fix Text

To configure the system to not send ICMP redirects, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet6.ip6.redirect=0