Apple OS X 10.10 (Yosemite) Workstation Security Technical Implementation Guide

  • Version/Release: V1R5
  • Published: 2017-04-06
  • Expand All:
  • Severity:
  • Sort:
Compare

Select any two versions of this STIG to compare the individual requirements

View

Select any old version/release of this STIG to view the previous requirements

The Apple OS X 10.10 Workstation 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 e-mail to the following address: disa.stig_spt@mail.mil.
b
The operating system must initiate a session lock after a 15-minute period of inactivity.
AC-11 - Medium - CCI-000057 - V-59405 - SV-73835r2_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000057
Version
AOSX-10-000010
Vuln IDs
  • V-59405
Rule IDs
  • SV-73835r2_rule
A screensaver must be enabled and set to require a password to unlock. The timeout should be set to fifteen 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.
Checks: C-60183r1_chk

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

Fix: F-64801r2_fix

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

b
The operating system must retain the session lock until the user reestablishes access using established identification and authentication procedures.
AC-11 - Medium - CCI-000056 - V-59527 - SV-73957r2_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
AOSX-10-000020
Vuln IDs
  • V-59527
Rule IDs
  • SV-73957r2_rule
Users must be prompted to enter their passwords when unlocking the screensaver. The screensaver acts as a session lock and prevents unauthorized users from accessing the current user's account.
Checks: C-60297r1_chk

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

Fix: F-64937r2_fix

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

c
The operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions.
AC-17 - High - CCI-000068 - V-59529 - SV-73959r1_rule
RMF Control
AC-17
Severity
High
CCI
CCI-000068
Version
AOSX-10-000035
Vuln IDs
  • V-59529
Rule IDs
  • SV-73959r1_rule
The 'rexec' service must be disabled. The 'rexec' service does not implement crypto and has had several security vulnerabilities in the past. It is disabled by default; enabling it would increase the attack surface of the system. 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., RDP) thereby providing a degree of confidentiality. The encryption strength of mechanism is selected based on the security categorization of the information.
Checks: C-60299r3_chk

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

Fix: F-64939r1_fix

To disable the 'rexec' service, run the following command: sudo launchctl disable system/com.apple.rexecd The system may need to be restarted for the update to take effect.

c
The operating system must implement cryptography to protect the integrity of remote access sessions.
AC-17 - High - CCI-001453 - V-59531 - SV-73961r1_rule
RMF Control
AC-17
Severity
High
CCI
CCI-001453
Version
AOSX-10-000040
Vuln IDs
  • V-59531
Rule IDs
  • SV-73961r1_rule
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.
Checks: C-60301r5_chk

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

Fix: F-64941r1_fix

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

c
The rshd service must be disabled.
CM-7 - High - CCI-000381 - V-59533 - SV-73963r1_rule
RMF Control
CM-7
Severity
High
CCI
CCI-000381
Version
AOSX-10-000050
Vuln IDs
  • V-59533
Rule IDs
  • SV-73963r1_rule
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 cannot be disabled. The 'rshd' service must be disabled.
Checks: C-60303r2_chk

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

Fix: F-64943r1_fix

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

b
The operating system must monitor remote access methods.
AC-17 - Medium - CCI-000067 - V-59535 - SV-73965r1_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-000067
Version
AOSX-10-000030
Vuln IDs
  • V-59535
Rule IDs
  • SV-73965r1_rule
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, so 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 logon events mitigates this risk by recording all logon attempts, successful and unsuccessful, to the system.
Checks: C-60305r1_chk

To check to make sure the audit daemon is configured to log all login events, both local and remote, run the following command: sudo 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.

Fix: F-64945r1_fix

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

b
The operating system must enforce requirements for remote connections to the information system.
CM-6 - Medium - CCI-000366 - V-59537 - SV-73967r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000055
Vuln IDs
  • V-59537
Rule IDs
  • SV-73967r1_rule
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.
Checks: C-60307r2_chk

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

Fix: F-64947r1_fix

To disable the 'screen sharing' service, run the following command: sudo launchctl disable system/com.apple.screensharing The system may need to be restarted for the update to take effect.

a
The Bluetooth software driver must be removed.
CM-6 - Low - CCI-000366 - V-59539 - SV-73969r1_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
AOSX-10-000065
Vuln IDs
  • V-59539
Rule IDs
  • SV-73969r1_rule
The Bluetooth kernel extension must be removed, as wireless access introduces unnecessary security risks. Removing Bluetooth support entirely mitigates this risk.
Checks: C-60309r1_chk

If Bluetooth connectivity is required to facilitate use of approved external devices, this is not applicable. To check if there are any hardware components for Bluetooth loaded in the system, run the following command: sudo kextstat | grep -i bluetooth If there is a result, this is a finding.

Fix: F-64949r1_fix

Removing the kernel extensions for Bluetooth will remove the system's ability to load Bluetooth devices, use the following commands to remove them: sudo rm -rf /System/Library/Extensions/IOBluetoothFamily.kext /System/Library/Extensions/IOBluetoothHIDDriver.kext; sudo touch /System/Library/Extensions

b
Wi-Fi support software must be disabled.
AC-18 - Medium - CCI-001443 - V-59541 - SV-73971r1_rule
RMF Control
AC-18
Severity
Medium
CCI
CCI-001443
Version
AOSX-10-000070
Vuln IDs
  • V-59541
Rule IDs
  • SV-73971r1_rule
Use of Wi-Fi to connect to unauthorized networks may facilitate the exfiltration of mission data.
Checks: C-60311r1_chk

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: sudo 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.

Fix: F-64951r1_fix

To disable the Wi-Fi network device, run the following command: sudo networksetup -setnetworkserviceenabled 'Wi-Fi' off

b
Infrared [IR] support must be disabled.
CM-6 - Medium - CCI-000366 - V-59543 - SV-73973r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000075
Vuln IDs
  • V-59543
Rule IDs
  • SV-73973r1_rule
Infrared [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.
Checks: C-60313r1_chk

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

Fix: F-64953r1_fix

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

b
Automatic actions must be disabled for blank CDs.
CM-6 - Medium - CCI-000366 - V-59545 - SV-73975r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000085
Vuln IDs
  • V-59545
Rule IDs
  • SV-73975r2_rule
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.
Checks: C-60315r1_chk

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: system_profiler SPConfigurationProfileDataType | 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.

Fix: F-64955r2_fix

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

b
Automatic actions must be disabled for blank DVDs.
CM-6 - Medium - CCI-000366 - V-59547 - SV-73977r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000090
Vuln IDs
  • V-59547
Rule IDs
  • SV-73977r2_rule
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.
Checks: C-60317r1_chk

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: system_profiler SPConfigurationProfileDataType | 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.

Fix: F-64957r2_fix

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

b
Automatic actions must be disabled for music CDs.
CM-6 - Medium - CCI-000366 - V-59549 - SV-73979r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000095
Vuln IDs
  • V-59549
Rule IDs
  • SV-73979r2_rule
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.
Checks: C-60319r1_chk

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: system_profiler SPConfigurationProfileDataType | 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.

Fix: F-64959r2_fix

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

b
Automatic actions must be disabled for picture CDs.
CM-6 - Medium - CCI-000366 - V-59551 - SV-73981r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000100
Vuln IDs
  • V-59551
Rule IDs
  • SV-73981r2_rule
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.
Checks: C-60321r2_chk

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: system_profiler SPConfigurationProfileDataType | 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.

Fix: F-64961r2_fix

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

b
Automatic actions must be disabled for video DVDs.
CM-6 - Medium - CCI-000366 - V-59553 - SV-73983r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000105
Vuln IDs
  • V-59553
Rule IDs
  • SV-73983r2_rule
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.
Checks: C-60323r1_chk

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: system_profiler SPConfigurationProfileDataType | 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.

Fix: F-64963r2_fix

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

b
The operating system must automatically remove or disable temporary user accounts after 72 hours.
AC-2 - Medium - CCI-000016 - V-59555 - SV-73985r1_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-000016
Version
AOSX-10-000110
Vuln IDs
  • V-59555
Rule IDs
  • SV-73985r1_rule
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.
Checks: C-60325r2_chk

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: sudo pwpolicy -u username getaccountpolicies | tail -n +2 If there is no output, and password policy is not controlled by a directory server, 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 72hours (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.

Fix: F-64965r5_fix

This setting may be enforced using a configuration profile or by a directory server. 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: sudo 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: sudo pwpolicy -u username setaccountpolicies pwpolicy.plist

b
The operating system must be configured such that emergency administrator accounts are never automatically disabled.
AC-2 - Medium - CCI-001682 - V-59557 - SV-73987r1_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-001682
Version
AOSX-10-000115
Vuln IDs
  • V-59557
Rule IDs
  • SV-73987r1_rule
Emergency administrator accounts are privileged accounts which are established in response to crisis situations where the need for rapid account activation is required. Therefore, emergency account activation may bypass normal account authorization processes. If these accounts are automatically disabled, system maintenance during emergencies may not be possible, thus adversely affecting system availability. Emergency 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 which is 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.
Checks: C-60327r1_chk

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

Fix: F-64967r3_fix

To remove all pwpolicy settings for an emergency account, run the following command, replacing username with the correct value: sudo 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: sudo 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 on 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: sudo pwpolicy -u username setaccountpolicies pwpolicy.plist

b
The operating system must automatically audit account creation.
AC-2 - Medium - CCI-000018 - V-59559 - SV-73989r1_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-000018
Version
AOSX-10-000120
Vuln IDs
  • V-59559
Rule IDs
  • SV-73989r1_rule
Once an attacker establishes initial access to a system, the attacker often attempts to create a persistent method of re-establishing access. One way to accomplish this is for the attacker to create a new account. Auditing of account creation mitigates this risk. To address access requirements, many operating systems may be integrated with enterprise level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.
Checks: C-60329r1_chk

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

Fix: F-64969r1_fix

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

b
The operating system must automatically audit account modification.
AC-2 - Medium - CCI-001403 - V-59561 - SV-73991r1_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-001403
Version
AOSX-10-000125
Vuln IDs
  • V-59561
Rule IDs
  • SV-73991r1_rule
Once an attacker establishes initial access to a system, the attacker often attempts to create a persistent method of re-establishing 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.
Checks: C-60331r1_chk

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

Fix: F-64971r1_fix

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

b
The operating system must automatically audit account disabling actions.
AC-2 - Medium - CCI-001404 - V-59563 - SV-73993r1_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-001404
Version
AOSX-10-000130
Vuln IDs
  • V-59563
Rule IDs
  • SV-73993r1_rule
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.
Checks: C-60333r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-64973r1_fix

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

b
The operating system must automatically audit account removal actions.
AC-2 - Medium - CCI-001405 - V-59565 - SV-73995r1_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-001405
Version
AOSX-10-000135
Vuln IDs
  • V-59565
Rule IDs
  • SV-73995r1_rule
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.
Checks: C-60335r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-64975r1_fix

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

b
SMB File Sharing must be disabled unless required.
CM-7 - Medium - CCI-000381 - V-59567 - SV-73997r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000139
Vuln IDs
  • V-59567
Rule IDs
  • SV-73997r2_rule
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.
Checks: C-60337r4_chk

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

Fix: F-64977r1_fix

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

b
Apple File (AFP) Sharing must be disabled.
CM-7 - Medium - CCI-000381 - V-59569 - SV-73999r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000140
Vuln IDs
  • V-59569
Rule IDs
  • SV-73999r1_rule
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.
Checks: C-60339r2_chk

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

Fix: F-64979r1_fix

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

b
The NFS daemon must be disabled unless required.
CM-7 - Medium - CCI-000381 - V-59571 - SV-74001r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000141
Vuln IDs
  • V-59571
Rule IDs
  • SV-74001r2_rule
If the system does not require access to NFS (Network File System) file shares or is not acting as an NFS server, then 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.
Checks: C-60341r3_chk

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

Fix: F-64981r1_fix

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

b
The NFS lock daemon must be disabled unless required.
CM-7 - Medium - CCI-000381 - V-59573 - SV-74003r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000142
Vuln IDs
  • V-59573
Rule IDs
  • SV-74003r2_rule
If the system does not require access to NFS (Network File System) file shares or is not acting as an NFS server, then 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.
Checks: C-60343r3_chk

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

Fix: F-64983r1_fix

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

b
The NFS stat daemon must be disabled unless required.
CM-7 - Medium - CCI-000381 - V-59575 - SV-74005r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000143
Vuln IDs
  • V-59575
Rule IDs
  • SV-74005r2_rule
If the system does not require access to NFS (Network File System) file shares or is not acting as an NFS server, then 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.
Checks: C-60345r3_chk

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

Fix: F-64985r1_fix

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

b
The system firewall must be configured with a default-deny policy.
CM-6 - Medium - CCI-000366 - V-59577 - SV-74007r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000155
Vuln IDs
  • V-59577
Rule IDs
  • SV-74007r1_rule
An approved firewall must be installed and enabled to work in concert with the Mac OS X Application Firewall. When configured correctly, firewalls protect computers from network attacks by blocking or limiting access to open network ports.
Checks: C-60347r1_chk

The system firewall must be configured with a default-deny policy. Ask the SA or ISSO if an approved firewall is loaded on the system. The recommended system is the McAfee HBSS. If there is no firewall installed on the system, this is a finding. If there is a firewall installed and it is not configured with a default deny policy, this is a finding.

Fix: F-64987r1_fix

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

b
The operating system must generate audit records for privileged activities or other system-level access.
AU-12 - Medium - CCI-000172 - V-59579 - SV-74009r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-000170
Vuln IDs
  • V-59579
Rule IDs
  • SV-74009r1_rule
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.
Checks: C-60349r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo grep ^flags /etc/security/audit_control Privileged activities are logged by way of the 'ad' flag. If 'ad' is not listed in the result of the check, this is a finding.

Fix: F-64989r1_fix

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

a
The operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via the GUI.
AC-8 - Low - CCI-000048 - V-59581 - SV-74011r1_rule
RMF Control
AC-8
Severity
Low
CCI
CCI-000048
Version
AOSX-10-000185
Vuln IDs
  • V-59581
Rule IDs
  • SV-74011r1_rule
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.
Checks: C-60351r1_chk

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

Fix: F-64991r1_fix

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

a
The SSH banner must contain the Standard Mandatory DoD Notice and Consent Banner.
AC-8 - Low - CCI-000048 - V-59583 - SV-74013r1_rule
RMF Control
AC-8
Severity
Low
CCI
CCI-000048
Version
AOSX-10-000186
Vuln IDs
  • V-59583
Rule IDs
  • SV-74013r1_rule
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.
Checks: C-60353r1_chk

For systems that allow remote access through SSH, run the following command to ensure that /etc/banner exists: ls -l /etc/banner If /etc/banner does not exist, 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.

Fix: F-64993r1_fix

For systems that allow remote access through SSH, create a plain text file containing the required text and save it as /etc/banner.

a
The operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via SSH.
AC-8 - Low - CCI-000048 - V-59585 - SV-74015r1_rule
RMF Control
AC-8
Severity
Low
CCI
CCI-000048
Version
AOSX-10-000187
Vuln IDs
  • V-59585
Rule IDs
  • SV-74015r1_rule
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.
Checks: C-60355r1_chk

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

Fix: F-64995r1_fix

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

b
Any publically accessible connection to the operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.
AC-8 - Medium - CCI-001384 - V-59587 - SV-74017r1_rule
RMF Control
AC-8
Severity
Medium
CCI
CCI-001384
Version
AOSX-10-000195
Vuln IDs
  • V-59587
Rule IDs
  • SV-74017r1_rule
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.
Checks: C-60357r1_chk

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

Fix: F-64997r1_fix

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

b
The operating system must generate audit records when successful/unsuccessful logon attempts occur.
AU-12 - Medium - CCI-000172 - V-59589 - SV-74019r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-000200
Vuln IDs
  • V-59589
Rule IDs
  • SV-74019r1_rule
An attacker might attempt to log in as an authorized user, through stolen credentials, unpatched exploits, or brute force attempts to guess a valid username and password. If a user is attempting to log in to a system at an unusual time, or if there are many failed attempts, there is a possibility that the system is the target of an attack. Auditing logon events mitigates this risk by recording all logon attempts, successful and unsuccessful, to the system.
Checks: C-60359r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-64999r1_fix

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

b
The operating system must initiate session audits at system startup.
AU-14 - Medium - CCI-001464 - V-59591 - SV-74021r1_rule
RMF Control
AU-14
Severity
Medium
CCI
CCI-001464
Version
AOSX-10-000230
Vuln IDs
  • V-59591
Rule IDs
  • SV-74021r1_rule
If auditing is enabled late in the startup process, the actions of some start-up processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created.
Checks: C-60361r1_chk

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

Fix: F-65001r1_fix

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

b
The operating system must provide audit record generation capability for DoD-defined auditable events for all operating system components.
AU-12 - Medium - CCI-000169 - V-59593 - SV-74023r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
AOSX-10-000240
Vuln IDs
  • V-59593
Rule IDs
  • SV-74023r1_rule
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 logon attempts, privileged activities or other system level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; (iii) All account creations, modifications, disabling, and terminations; and (iv) All kernel module load, unload, and restart actions.
Checks: C-60363r1_chk

The options to configure the audit daemon are located in the /etc/security/audit_control file. To view the current settings, run the following command: sudo grep ^flags /etc/security/audit_control If the 'lo', 'ad', and 'aa' options are not set, this is a finding.

Fix: F-65003r1_fix

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

b
The operating system must generate audit records for all account creations, modifications, disabling, and termination events.
AU-12 - Medium - CCI-000172 - V-59595 - SV-74025r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-000245
Vuln IDs
  • V-59595
Rule IDs
  • SV-74025r1_rule
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.
Checks: C-60365r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65005r1_fix

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

b
The operating system must allocate audit record storage capacity to store at least one weeks worth of audit records, when audit records are not immediately sent to a central audit record storage facility.
AU-4 - Medium - CCI-001849 - V-59597 - SV-74027r1_rule
RMF Control
AU-4
Severity
Medium
CCI
CCI-001849
Version
AOSX-10-000295
Vuln IDs
  • V-59597
Rule IDs
  • SV-74027r1_rule
The audit service must be configured to require that records are kept for 7 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 7 days old.
Checks: C-60367r1_chk

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: sudo 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.

Fix: F-65007r1_fix

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': sudo sed -i.bak 's/.*expire-after.*/expire-after:7d/' /etc/security/audit_control; sudo audit -s

b
The operating system must provide an immediate warning to the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75% of repository maximum audit record storage capacity.
AU-5 - Medium - CCI-001855 - V-59599 - SV-74029r1_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-001855
Version
AOSX-10-000305
Vuln IDs
  • V-59599
Rule IDs
  • SV-74029r1_rule
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%, security personnel are notified immediately when the storage volume is 75% full and are able to plan for audit record storage capacity expansion.
Checks: C-60369r1_chk

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: sudo grep ^minfree /etc/security/audit_control If this returns no results, or does not contain 25, this is a finding.

Fix: F-65009r1_fix

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

b
The operating system must provide an immediate real-time alert to the SA and ISSO, at a minimum, of all audit failure events requiring real-time alerts.
AU-5 - Medium - CCI-001858 - V-59601 - SV-74031r1_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-001858
Version
AOSX-10-000310
Vuln IDs
  • V-59601
Rule IDs
  • SV-74031r1_rule
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.
Checks: C-60371r1_chk

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: sudo 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.

Fix: F-65011r1_fix

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

b
The operating system must, for networked systems, compare internal information system clocks at least every 24 hours with a server which is synchronized to one of the redundant United States Naval Observatory (USNO) time servers or a time server designated for the appropriate DoD network (NIPRNet/SIPRNet), and/or the Global Positioning System (GPS).
AU-8 - Medium - CCI-001891 - V-59603 - SV-74033r1_rule
RMF Control
AU-8
Severity
Medium
CCI
CCI-001891
Version
AOSX-10-000330
Vuln IDs
  • V-59603
Rule IDs
  • SV-74033r1_rule
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).
Checks: C-60373r1_chk

The Network Time Protocol (NTP) service must be enabled on all networked systems. To check if the service is running, use the following command: sudo launchctl list | grep org.ntp.ntpd If nothing is returned, this is a finding. To ensure that an authorized NTP server is configured, run the following command or examine /etc/ntp.conf: sudo 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.

Fix: F-65013r1_fix

To enable the NTP service, run the following command: sudo 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".

b
Audit log files must be owned by root.
AU-9 - Medium - CCI-000162 - V-59607 - SV-74037r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000331
Vuln IDs
  • V-59607
Rule IDs
  • SV-74037r1_rule
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 only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60377r1_chk

To check the ownership of the audit log files, run the following command: sudo ls -le $(sudo 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 not, this is a finding.

Fix: F-65017r1_fix

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

b
Audit log files must be group-owned by wheel.
AU-9 - Medium - CCI-000162 - V-59609 - SV-74039r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000333
Vuln IDs
  • V-59609
Rule IDs
  • SV-74039r1_rule
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 only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60379r1_chk

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

Fix: F-65019r1_fix

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

b
Audit log folders must be group-owned by wheel.
AU-9 - Medium - CCI-000162 - V-59611 - SV-74041r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000334
Vuln IDs
  • V-59611
Rule IDs
  • SV-74041r1_rule
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 only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60381r1_chk

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

Fix: F-65021r1_fix

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

b
Audit log files must be mode 440 or less permissive.
AU-9 - Medium - CCI-000162 - V-59613 - SV-74043r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000335
Vuln IDs
  • V-59613
Rule IDs
  • SV-74043r1_rule
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 only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60383r1_chk

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

Fix: F-65023r1_fix

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

b
Audit log folders must have mode 700 or less permissive.
AU-9 - Medium - CCI-000162 - V-59615 - SV-74045r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000336
Vuln IDs
  • V-59615
Rule IDs
  • SV-74045r1_rule
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 about users. If log folders are set to only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60385r1_chk

To check the permissions of the audit log folder, run the following command: sudo ls -lde $(sudo 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 not, this is a finding.

Fix: F-65025r1_fix

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

b
Log files must not contain ACLs.
AU-9 - Medium - CCI-000162 - V-59617 - SV-74047r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000337
Vuln IDs
  • V-59617
Rule IDs
  • SV-74047r1_rule
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 only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60387r1_chk

To check if a log file contains ACLs, run the following commands: sudo ls -le $(sudo grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | 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.

Fix: F-65027r1_fix

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

b
Log folders must not contain ACLs.
AU-9 - Medium - CCI-000162 - V-59619 - SV-74049r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000338
Vuln IDs
  • V-59619
Rule IDs
  • SV-74049r1_rule
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 about users. If log folders are set to only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60389r1_chk

To check if a log folder contains ACLs, run the following commands: sudo ls -lde $(sudo 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.

Fix: F-65029r1_fix

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

c
The Security assessment policy subsystem must be enabled.
CM-5 - High - CCI-001749 - V-59621 - SV-74051r1_rule
RMF Control
CM-5
Severity
High
CCI
CCI-001749
Version
AOSX-10-000430
Vuln IDs
  • V-59621
Rule IDs
  • SV-74051r1_rule
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 software must be signed with a certificate that is recognized and approved by the organization.
Checks: C-60391r1_chk

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

Fix: F-65031r1_fix

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

b
The operating system must limit privileges to change software resident within software libraries.
CM-5 - Medium - CCI-001499 - V-59623 - SV-74053r1_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001499
Version
AOSX-10-000435
Vuln IDs
  • V-59623
Rule IDs
  • SV-74053r1_rule
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, then 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 which execute with escalated privileges. Only qualified and authorized individuals shall be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.
Checks: C-60393r1_chk

To check the permissions and ownership of the system files and make sure they haven't changed from the original installation, run the following command: sudo diskutil verifyPermissions / Any results indicating User/Group/Permissions differ, this is a finding.

Fix: F-65033r1_fix

To correct ownership and permissions of files found in the check, run the following command: sudo diskutil repairPermissions /

b
A configuration profile must be installed.
CM-6 - Medium - CCI-000366 - V-59625 - SV-74055r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000455
Vuln IDs
  • V-59625
Rule IDs
  • SV-74055r1_rule
Configuration settings must be verified by a centrally managed system such as an MDM to ensure that 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 those 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.
Checks: C-60395r1_chk

To check if the computer has a configuration profile applied to the workstation, run the following command: sudo profiles -H If there are no profiles installed, this is a finding.

Fix: F-65035r1_fix

Obtain a configuration profile from an MDM or trusted provider containing the configuration settings required to be applied.

b
The operating system must employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs.
CM-7 - Medium - CCI-001774 - V-59627 - SV-74057r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-001774
Version
AOSX-10-000460
Vuln IDs
  • V-59627
Rule IDs
  • SV-74057r2_rule
Application Restrictions must be enabled for user accounts and configured to only allow users to execute approved applications. Utilizing 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.
Checks: C-60397r1_chk

To check if there is a configuration policy defined for Application Restrictions, run the following command: sudo profiles -Pv | grep 'Application Restrictions' If nothing is returned, this is a finding.

Fix: F-65037r2_fix

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

a
The application FaceTime must be removed.
CM-7 - Low - CCI-000381 - V-59629 - SV-74059r1_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-000475
Vuln IDs
  • V-59629
Rule IDs
  • SV-74059r1_rule
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 cannot be disabled. The application FaceTime must be removed.
Checks: C-60399r1_chk

To check for the existence of FaceTime, run the following command: ls -ald /Applications/FaceTime.app If anything is returned, this is a finding.

Fix: F-65039r1_fix

To remove FaceTime, run the following command: sudo rm -Rf /Applications/FaceTime.app

a
The application Game Center must be removed.
CM-7 - Low - CCI-000381 - V-59631 - SV-74061r1_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-000480
Vuln IDs
  • V-59631
Rule IDs
  • SV-74061r1_rule
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 cannot be disabled.
Checks: C-60401r1_chk

To check for the existence of Game Center, run the following command: ls -ald /Applications/Game\ Center.app If anything is returned, this is a finding.

Fix: F-65041r1_fix

To remove Game Center, run the following command: sudo rm -Rf /Applications/Game\ Center.app

a
The application Messages must be removed.
CM-7 - Low - CCI-000381 - V-59633 - SV-74063r1_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-000490
Vuln IDs
  • V-59633
Rule IDs
  • SV-74063r1_rule
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 cannot be disabled. The application Messages must be removed.
Checks: C-60403r1_chk

To check for the existence of Messages, run the following command: ls -ald /Applications/Messages.app If anything is returned, this is a finding.

Fix: F-65043r1_fix

To remove Messages, run the following command: sudo rm -Rf /Applications/Messages.app

a
The application Calendar must be removed.
CM-7 - Low - CCI-000381 - V-59635 - SV-74065r1_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-000505
Vuln IDs
  • V-59635
Rule IDs
  • SV-74065r1_rule
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 cannot be disabled. The application Calendar must be removed.
Checks: C-60405r1_chk

To check for the existence of the Calendar application run the following command: ls -ald /Applications/Calendar.app If anything is returned, this is a finding.

Fix: F-65045r1_fix

To remove Calendar, run the following command: sudo rm -Rf /Applications/Calendar.app

a
The application Reminders must be removed.
CM-7 - Low - CCI-000381 - V-59637 - SV-74067r1_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-000507
Vuln IDs
  • V-59637
Rule IDs
  • SV-74067r1_rule
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 cannot be disabled. The application Reminders must be removed.
Checks: C-60407r1_chk

To check for the existence of the Reminders application run the following command: ls -ald /Applications/Reminders.app If anything is returned, this is a finding.

Fix: F-65047r1_fix

To remove Reminders, run the following command: sudo rm -Rf /Applications/Reminders.app

a
The application Contacts must be removed.
CM-7 - Low - CCI-000381 - V-59639 - SV-74069r1_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-000510
Vuln IDs
  • V-59639
Rule IDs
  • SV-74069r1_rule
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 cannot be disabled. The application Contacts must be removed.
Checks: C-60409r1_chk

To check for the existence of Contacts, run the following command: ls -ald /Applications/Contacts.app If anything is returned, this is a finding.

Fix: F-65049r1_fix

To remove Contacts run the following command: sudo rm -Rf /Applications/Contacts.app

a
The application Mail must be removed.
CM-7 - Low - CCI-000381 - V-59641 - SV-74071r1_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-000515
Vuln IDs
  • V-59641
Rule IDs
  • SV-74071r1_rule
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 cannot be disabled. The application Mail must be removed.
Checks: C-60411r1_chk

To check for the existence of Mail, run the following command: ls -ald /Applications/Mail.app If anything is returned, this is a finding.

Fix: F-65051r1_fix

To remove Mail run the following command: sudo rm -Rf /Applications/Mail.app

b
Audit log folders must be owned by root.
AU-9 - Medium - CCI-000162 - V-59643 - SV-74073r1_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-10-000332
Vuln IDs
  • V-59643
Rule IDs
  • SV-74073r1_rule
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 only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-60413r1_chk

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

Fix: F-65053r1_fix

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

b
The system preference panel iCloud must be removed.
CM-7 - Medium - CCI-000381 - V-59645 - SV-74075r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000520
Vuln IDs
  • V-59645
Rule IDs
  • SV-74075r1_rule
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 cannot be disabled. The system preference panel iCloud must be removed.
Checks: C-60415r1_chk

The system preference panel iCloud must be removed or disabled along with the Internet Accounts preference pane in a configuration profile. To check for the existence of the iCloud preference panel, run the following command: ls -ld /System/Library/PreferencePanes/iCloudPref.prefPane If anything is returned, and access to the iCloud and Internet Accounts preference panes have not been disabled with a configuration profile, this is a finding.

Fix: F-65055r1_fix

Either disable access to the iCloud and Internet Accounts preference panes through a configuration profile or run the following command to remove the iCloud panel: sudo rm -rf /System/Library/PreferencePanes/iCloudPref.prefPane

b
Sending diagnostic and usage data to Apple must be disabled.
CM-7 - Medium - CCI-000382 - V-59647 - SV-74077r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000382
Version
AOSX-10-000530
Vuln IDs
  • V-59647
Rule IDs
  • SV-74077r2_rule
In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Sending diagnostic and usage data to Apple must be disabled.
Checks: C-60417r5_chk

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

Fix: F-65057r7_fix

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. This setting can be enforced using the "Security Privacy Policy" configuration profile.

b
Find My Mac must be disabled.
CM-7 - Medium - CCI-000381 - V-59649 - SV-74079r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000531
Vuln IDs
  • V-59649
Rule IDs
  • SV-74079r1_rule
In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Find My Mac must be disabled.
Checks: C-60419r3_chk

To check if the 'Find My Mac' service is disabled, use the following command: sudo launchctl print-disabled system | grep com.apple.findmymacd If the results do not show the following: "com.apple.findmymacd" =&gt; true this is a finding.

Fix: F-65059r1_fix

To disable the 'Find My Mac' service, run the following command: sudo launchctl disable system/com.apple.findmymacd The system may need to be restarted for the update to take effect.

b
Find My Mac messenger must be disabled.
CM-7 - Medium - CCI-000381 - V-59651 - SV-74081r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000532
Vuln IDs
  • V-59651
Rule IDs
  • SV-74081r1_rule
In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Find My Mac messenger must be disabled.
Checks: C-60421r2_chk

To check if the 'Find My Mac messenger' service is disabled, use the following command: sudo launchctl print-disabled system | grep com.apple.findmymacmessenger If the results do not show the following: "com.apple.findmymacmessenger" =&gt; true this is a finding.

Fix: F-65061r1_fix

To disable the 'Find My Mac messenger' service, run the following command: sudo launchctl disable system/com.apple.findmymacmessenger The system may need to be restarted for the update to take effect.

b
Location Services must be disabled.
CM-7 - Medium - CCI-000381 - V-59653 - SV-74083r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000535
Vuln IDs
  • V-59653
Rule IDs
  • SV-74083r2_rule
In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Location Services must be disabled.
Checks: C-60423r6_chk

Location Services must be disabled. The setting is found in System Preferences &gt;&gt; Security &amp; Privacy &gt;&gt; Privacy &gt;&gt; Location Services. If the box that says 'Enable Location Services' is checked, this is a finding. To check if a configuration profile is configured to enforce this setting, run the following command: sudo system_profiler SPConfigurationProfileDataType | grep DisableLocationServices If DisableLocationServices is not set to '1', this is a finding.

Fix: F-65063r5_fix

The setting "Enable Location Services" is found in System Preferences >> Security & Privacy >> Privacy >> Location Services. Uncheck the box that says 'Enable Location Services'. This setting can be enforced using the "Security Privacy Policy" configuration profile.

b
Bonjour multicast advertising must be disabled on the system.
CM-7 - Medium - CCI-000381 - V-59655 - SV-74085r2_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000545
Vuln IDs
  • V-59655
Rule IDs
  • SV-74085r2_rule
In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Bonjour multicast advertising must be disabled on the system.
Checks: C-60425r2_chk

Bonjour multicast advertising must be disabled on the system. To check if multicast advertisements have been disabled, run the following command: sudo defaults read /System/Library/LaunchDaemons/com.apple.mDNSResponder | grep NoMulticastAdvertisements If nothing is returned, this is a finding.

Fix: F-65065r2_fix

To configure Bonjour to disable multicast advertising, run the following command: sudo /usr/libexec/PlistBuddy -c "Add :ProgramArguments:2 string '-NoMulticastAdvertisements'" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

b
The UUCP service must be disabled.
CM-7 - Medium - CCI-000381 - V-59657 - SV-74087r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-000550
Vuln IDs
  • V-59657
Rule IDs
  • SV-74087r1_rule
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 cannot be disabled. The system must not have the UUCP service active.
Checks: C-60427r2_chk

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

Fix: F-65067r1_fix

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

b
The operating system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.
IA-2 - Medium - CCI-000770 - V-59659 - SV-74089r1_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-000770
Version
AOSX-10-000565
Vuln IDs
  • V-59659
Rule IDs
  • SV-74089r1_rule
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.
Checks: C-60429r1_chk

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

Fix: F-65069r1_fix

In order to make sure that PermitRootLogin is disabled by sshd, run the following command: sudo sed -i.bak 's/^[\#]*PermitRootLogin.*/PermitRootLogin no/' /etc/sshd_config

b
The operating system must implement replay-resistant authentication mechanisms for network access to privileged accounts.
IA-2 - Medium - CCI-001941 - V-59663 - SV-74093r1_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-001941
Version
AOSX-10-000570
Vuln IDs
  • V-59663
Rule IDs
  • SV-74093r1_rule
The SSH Version should be explicitly set to Version 2. Version 2 supports strong crypto and was rewritten from scratch to resolve several weaknesses in Version 1 that make it extremely vulnerable to attackers. The weaker crypto 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.
Checks: C-60433r1_chk

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

Fix: F-65073r1_fix

In order to make sure that 'Protocol 2' is used by sshd, run the following command: sudo sed -i.bak 's/.*Protocol.*/Protocol 2/' /etc/sshd_config

b
The operating system must implement replay-resistant authentication mechanisms for network access to non-privileged accounts.
IA-2 - Medium - CCI-001942 - V-59665 - SV-74095r1_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-001942
Version
AOSX-10-000575
Vuln IDs
  • V-59665
Rule IDs
  • SV-74095r1_rule
The SSH Version should be explicitly set to Version 2. Version 2 supports strong crypto and was rewritten from scratch to resolve several weaknesses in Version 1 that make it extremely vulnerable to attackers. The weaker crypto 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.
Checks: C-60435r1_chk

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

Fix: F-65075r1_fix

In order to make sure that 'Protocol 2' is used by sshd, run the following command: sudo sed -i.bak 's/.*Protocol.*/Protocol 2/' /etc/sshd_config

b
Operating systems must enforce password complexity by requiring that at least one numeric character be used.
IA-5 - Medium - CCI-000194 - V-59667 - SV-74097r2_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000194
Version
AOSX-10-000585
Vuln IDs
  • V-59667
Rule IDs
  • SV-74097r2_rule
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 determine 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.
Checks: C-60437r2_chk

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: system_profiler SPConfigurationProfileDataType | 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: sudo pwpolicy getaccountpolicies Look for the line &lt;key&gt;policyCategoryPasswordContent&lt;/key&gt;. If it does not exist, and password policy is not controlled by a directory server, this is a finding. Otherwise, in the array section that follows it, there should be a &lt;dict&gt; section that contains a check &lt;string&gt; 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.

Fix: F-65077r6_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory server. To set the password policy without a configuration profile, run the following command to save a copy of the current pwpolicy account policy file: sudo 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: sudo 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.

b
The operating system must enforce a minimum 15-character password length.
IA-5 - Medium - CCI-000205 - V-59669 - SV-74099r2_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000205
Version
AOSX-10-000590
Vuln IDs
  • V-59669
Rule IDs
  • SV-74099r2_rule
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.
Checks: C-60439r1_chk

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

Fix: F-65079r2_fix

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.

c
The operating system must transmit only cryptographically-protected passwords.
IA-5 - High - CCI-000197 - V-59671 - SV-74101r1_rule
RMF Control
IA-5
Severity
High
CCI
CCI-000197
Version
AOSX-10-000605
Vuln IDs
  • V-59671
Rule IDs
  • SV-74101r1_rule
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.
Checks: C-60441r2_chk

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

Fix: F-65081r1_fix

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

c
Operating systems used for non-local maintenance sessions must implement cryptographic mechanisms to protect the integrity of non-local maintenance and diagnostic communications.
MA-4 - High - CCI-002890 - V-59673 - SV-74103r1_rule
RMF Control
MA-4
Severity
High
CCI
CCI-002890
Version
AOSX-10-000690
Vuln IDs
  • V-59673
Rule IDs
  • SV-74103r1_rule
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.
Checks: C-60443r2_chk

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

Fix: F-65083r1_fix

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

c
Operating systems used for non-local maintenance sessions must implement cryptographic mechanisms to protect the confidentiality of non-local maintenance and diagnostic communications.
MA-4 - High - CCI-003123 - V-59675 - SV-74105r1_rule
RMF Control
MA-4
Severity
High
CCI
CCI-003123
Version
AOSX-10-000691
Vuln IDs
  • V-59675
Rule IDs
  • SV-74105r1_rule
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.
Checks: C-60445r2_chk

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

Fix: F-65085r1_fix

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

c
The operating system must employ strong authenticators in the establishment of non-local maintenance and diagnostic sessions.
MA-4 - High - CCI-000877 - V-59677 - SV-74107r1_rule
RMF Control
MA-4
Severity
High
CCI
CCI-000877
Version
AOSX-10-000695
Vuln IDs
  • V-59677
Rule IDs
  • SV-74107r1_rule
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.
Checks: C-60447r2_chk

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

Fix: F-65087r1_fix

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

b
The system must allow only applications downloaded from the App Store to run.
CM-5 - Medium - CCI-001749 - V-59679 - SV-74109r2_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001749
Version
AOSX-10-000710
Vuln IDs
  • V-59679
Rule IDs
  • SV-74109r2_rule
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 Mac OS X to verify that the application has not been modified by a malicious third party.
Checks: C-60449r1_chk

To check to make sure only applications downloaded from the App Store are allowed to run, type the following code: system_profiler SPConfigurationProfileDataType | grep AllowIdentifiedDevelopers If 'AllowIdentifiedDevelopers' is not set to '1', this is a finding.

Fix: F-65089r2_fix

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

b
End users must not be able to override Gatekeeper settings.
CM-6 - Medium - CCI-000366 - V-59681 - SV-74111r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000711
Vuln IDs
  • V-59681
Rule IDs
  • SV-74111r2_rule
Gatekeeper must be configured with a configuration profile in order to prevent normal users from overriding its setting. If users are allowed to disable Gatekeeper or set it to a less restrictive setting, then it is possible that malware could be introduced into the system. 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 Mac OS X to verify that the application has not been modified by a malicious third party.
Checks: C-60451r1_chk

To check to make sure the user cannot override Gatekeeper settings, type the following code: system_profiler SPConfigurationProfileDataType | grep DisableOverride If DisableOverride is not set to '1', this is a finding.

Fix: F-65091r2_fix

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

b
The SSH daemon ClientAliveInterval option must be set correctly.
SC-10 - Medium - CCI-001133 - V-59683 - SV-74113r1_rule
RMF Control
SC-10
Severity
Medium
CCI
CCI-001133
Version
AOSX-10-000720
Vuln IDs
  • V-59683
Rule IDs
  • SV-74113r1_rule
SSH should be configured to log users out after a 15 minute interval of inactivity and to only wait 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.
Checks: C-60453r1_chk

The SSH daemon ClientAliveInterval option must be set correctly. To check the idle timeout setting for SSH sessions, run the following: sudo grep ^ClientAliveInterval /etc/sshd_config If the setting is not '600', this is a finding.

Fix: F-65093r1_fix

In order to make sure that ClientAliveInterval is set correctly, run the following command: sudo sed -i.bak 's/.*ClientAliveInterval.*/ClientAliveInterval 600/' /etc/sshd_config

b
The SSH daemon ClientAliveCountMax option must be set correctly.
SC-10 - Medium - CCI-001133 - V-59685 - SV-74115r1_rule
RMF Control
SC-10
Severity
Medium
CCI
CCI-001133
Version
AOSX-10-000721
Vuln IDs
  • V-59685
Rule IDs
  • SV-74115r1_rule
SSH should be configured to log users out after a 15 minute interval of inactivity and to only wait 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.
Checks: C-60455r1_chk

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

Fix: F-65095r1_fix

In order to make sure that the SSH idle timeout occurs precisely when the 'ClientAliveCountMax' is set, run the following command: sudo sed -i.bak 's/.*ClientAliveCountMax.*/ClientAliveCountMax 0/' /etc/sshd_config

b
The SSH daemon LoginGraceTime must be set correctly.
SC-10 - Medium - CCI-001133 - V-59687 - SV-74117r1_rule
RMF Control
SC-10
Severity
Medium
CCI
CCI-001133
Version
AOSX-10-000722
Vuln IDs
  • V-59687
Rule IDs
  • SV-74117r1_rule
SSH should be configured to log users out after a 15 minute interval of inactivity and to only wait 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.
Checks: C-60457r1_chk

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

Fix: F-65097r1_fix

In order to make sure that LoginGraceTime is configured correctly, run the following command: sudo sed -i.bak 's/.*LoginGraceTime.*/LoginGraceTime 30/' /etc/sshd_config

b
The operating system must issue or obtain public key certificates under an appropriate certificate policy from an approved service provider.
SC-13 - Medium - CCI-002450 - V-59689 - SV-74119r1_rule
RMF Control
SC-13
Severity
Medium
CCI
CCI-002450
Version
AOSX-10-000750
Vuln IDs
  • V-59689
Rule IDs
  • SV-74119r1_rule
DoD-approved certificates must be installed to the System Keychain so that they will be available to all users. For user certificates, each organization attains 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.
Checks: C-60459r2_chk

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

Fix: F-65099r1_fix

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

b
The operating system must protect the confidentiality and integrity of all information at rest.
SC-28 - Medium - CCI-001199 - V-59691 - SV-74121r1_rule
RMF Control
SC-28
Severity
Medium
CCI
CCI-001199
Version
AOSX-10-000780
Vuln IDs
  • V-59691
Rule IDs
  • SV-74121r1_rule
FileVault Disk Encryption must be enabled. By encrypting the system hard drive, the confidentiality and integrity of any data stored on the system is ensured. 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 either lost or stolen, and the contents of their data storage (e.g., hard drives and non-volatile memory) can be read, copied, or altered. FileVault Disk Encryption mitigates this risk.
Checks: C-60461r1_chk

To check if FileVault 2 is enabled, run the following command: sudo fdesetup status If FileVault is 'Off' and the device is a laptop, this is a finding.

Fix: F-65101r3_fix

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: sudo fdesetup enable After FileVault is initially set up, additional users can be added.

b
The operating system must implement cryptographic mechanisms to prevent unauthorized modification of all information at rest on organization-defined information system components.
SC-28 - Medium - CCI-002475 - V-59693 - SV-74123r1_rule
RMF Control
SC-28
Severity
Medium
CCI
CCI-002475
Version
AOSX-10-000785
Vuln IDs
  • V-59693
Rule IDs
  • SV-74123r1_rule
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).
Checks: C-60463r1_chk

To check if FileVault 2 is enabled, run the following command: sudo fdesetup status If FileVault is 'Off', and the device is a laptop, this is a finding.

Fix: F-65103r3_fix

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: sudo fdesetup enable After FileVault is initially set up, additional users can be added.

b
The operating system must implement cryptographic mechanisms to prevent unauthorized disclosure of all information at rest on organization-defined information system components.
SC-28 - Medium - CCI-002476 - V-59695 - SV-74125r1_rule
RMF Control
SC-28
Severity
Medium
CCI
CCI-002476
Version
AOSX-10-000786
Vuln IDs
  • V-59695
Rule IDs
  • SV-74125r1_rule
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).
Checks: C-60465r1_chk

To check if FileVault 2 is enabled, run the following command: sudo fdesetup status If FileVault is 'Off', and the device is a laptop, this is a finding.

Fix: F-65105r3_fix

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: sudo fdesetup enable After FileVault is initially set up, additional users can be added.

b
The operating system must employ automated mechanisms to determine the state of system components with regard to flaw remediation using the following frequency: continuously, where HBSS is used; 30 days, for any additional internal network scans not covered by HBSS; and annually, for external scans by Computer Network Defense Service Provider (CNDSP).
SI-2 - Medium - CCI-001233 - V-59697 - SV-74127r1_rule
RMF Control
SI-2
Severity
Medium
CCI
CCI-001233
Version
AOSX-10-000835
Vuln IDs
  • V-59697
Rule IDs
  • SV-74127r1_rule
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.
Checks: C-60467r1_chk

Ask the SA or 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.

Fix: F-65107r1_fix

Install an approved HBSS solution onto the system.

b
The operating system must restrict the ability of individuals to use USB storage devices.
CM-6 - Medium - CCI-000366 - V-59699 - SV-74129r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000850
Vuln IDs
  • V-59699
Rule IDs
  • SV-74129r2_rule
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.
Checks: C-60469r1_chk

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

Fix: F-65109r2_fix

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

b
The usbmuxd daemon must be disabled.
CM-6 - Medium - CCI-000366 - V-59701 - SV-74131r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000862
Vuln IDs
  • V-59701
Rule IDs
  • SV-74131r2_rule
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.
Checks: C-60471r1_chk

To check the status of the usbmuxd daemon, run the following command: sudo launchctl list | grep usbmuxd If there is any output, this is a finding.

Fix: F-65111r2_fix

To disable the usbmuxd daemon, run the following command: sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.usbmuxd.plist

b
The operating system must not allow an unattended or automatic logon to the system.
CM-6 - Medium - CCI-000366 - V-59703 - SV-74133r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000925
Vuln IDs
  • V-59703
Rule IDs
  • SV-74133r2_rule
When automatic logins are enabled, the default user account is automatically logged in 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 in order to log in. Disabling automatic logins mitigates this risk.
Checks: C-60473r1_chk

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

Fix: F-65113r2_fix

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

b
The login window must be configured to prompt for username and password, rather than show a list of users.
CM-6 - Medium - CCI-000366 - V-59705 - SV-74135r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000930
Vuln IDs
  • V-59705
Rule IDs
  • SV-74135r2_rule
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.
Checks: C-60475r1_chk

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

Fix: F-65115r2_fix

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

b
The OS X firewall must have logging enabled.
CM-6 - Medium - CCI-000366 - V-59707 - SV-74137r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000950
Vuln IDs
  • V-59707
Rule IDs
  • SV-74137r1_rule
Firewall logging must be enabled. This ensures that malicious network activity will be logged to the system.
Checks: C-60477r1_chk

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 | grep on If the result does not show 'on', this is a finding.

Fix: F-65117r1_fix

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

b
Bluetooth devices must not be allowed to wake the computer.
CM-6 - Medium - CCI-000366 - V-59709 - SV-74139r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000955
Vuln IDs
  • V-59709
Rule IDs
  • SV-74139r1_rule
Bluetooth devices must not be allowed to wake the computer. If Bluetooth is not required, turn it off. If Bluetooth is necessary, disable allowing Bluetooth devices to wake the computer.
Checks: C-60479r1_chk

To check if this setting is disabled run the following command as the primary user: defaults -currentHost read com.apple.Bluetooth RemoteWakeEnabled If the return value is '1', this is a finding.

Fix: F-65119r3_fix

This control needs to be manually changed on the computer by opening System Preferences >> Bluetooth, Click Advanced, and make sure the 'Allow Bluetooth devices to wake this computer' is not checked.

b
Bluetooth Sharing must be disabled.
CM-6 - Medium - CCI-000366 - V-59711 - SV-74141r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-000965
Vuln IDs
  • V-59711
Rule IDs
  • SV-74141r1_rule
Bluetooth sharing allows users to wirelessly transmit files between Mac OS X and Bluetooth-enabled devices, including personally owned cell phones and tablets. A malicious user might introduce viruses or malware onto the system or extract sensitive files. Disabling Bluetooth Sharing mitigates this risk.
Checks: C-60481r3_chk

To check if Bluetooth Sharing is enabled, open up System Preferences-&gt;Sharing and verify that 'Bluetooth Sharing' is not checked 'ON'. If it is 'ON', this is a finding.

Fix: F-65121r2_fix

To disable Bluetooth Sharing, open System Preferences->Sharing and uncheck the box next to Bluetooth Sharing.

b
Remote Apple Events must be disabled.
CM-7 - Medium - CCI-000382 - V-59713 - SV-74143r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000382
Version
AOSX-10-000975
Vuln IDs
  • V-59713
Rule IDs
  • SV-74143r1_rule
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 cannot be disabled. Remote Apple Events must be disabled.
Checks: C-60483r3_chk

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

Fix: F-65123r1_fix

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

c
The sudoers file must be configured to authenticate users on a per-tty basis.
CM-6 - High - CCI-000366 - V-59715 - SV-74145r1_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
AOSX-10-000995
Vuln IDs
  • V-59715
Rule IDs
  • SV-74145r1_rule
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.
Checks: C-60485r1_chk

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

Fix: F-65125r1_fix

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.

b
The root account must be the only account having a UID of 0.
CM-6 - Medium - CCI-000366 - V-59721 - SV-74151r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001065
Vuln IDs
  • V-59721
Rule IDs
  • SV-74151r1_rule
The built-in root account is disabled by default and administrator users are required to use sudo to run a process with the UID '0'. If another account with UID '0' exists, this is a sign of a network intrusion or a malicious user that is attempting to circumvent security controls.
Checks: C-60491r1_chk

To list all of the accounts with a UID of '0', run this command: sudo dscl . -list /Users UniqueID | grep -w 0 | wc -l If the result is not '1', this is a finding.

Fix: F-65131r1_fix

Investigate as to why any additional accounts were set up with a UID of '0'. Remove any invalid accounts.

a
Finder must be set to always empty Trash securely.
CM-6 - Low - CCI-000366 - V-59723 - SV-74153r2_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
AOSX-10-001075
Vuln IDs
  • V-59723
Rule IDs
  • SV-74153r2_rule
Finder must be configured to always empty Trash securely in order to prevent data recovery tools from accessing the deleted files. Files emptied from the Trash by normal means are still present on the hard drive and can be recovered up until the moment the system overwrites that particular location on disk. A malicious user with physical access to a system could take advantage of this property to access potentially sensitive files that the normal system owner or user assumed was safely deleted. Configuring Finder to always empty trash securely mitigates this risk.
Checks: C-60493r1_chk

To check that the finder will only present the option to securely empty trash run the following command as the primary user: system_profiler SPConfigurationProfileDataType | grep EmptyTrashSecurely If 'EmptyTrashSecurely' is not set to '1' or there is no result, this is a finding.

Fix: F-65133r2_fix

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

b
The application firewall must be enabled.
CM-6 - Medium - CCI-000366 - V-59725 - SV-74155r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001080
Vuln IDs
  • V-59725
Rule IDs
  • SV-74155r1_rule
The Application Firewall is the built-in firewall that comes with Mac 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.
Checks: C-60495r1_chk

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

Fix: F-65135r1_fix

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

b
All public directories must be owned by root or an application account.
CM-6 - Medium - CCI-000366 - V-59727 - SV-74157r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001110
Vuln IDs
  • V-59727
Rule IDs
  • SV-74157r1_rule
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.
Checks: C-60497r1_chk

To display all directories that are writable by all and not owned by root, run the following command: 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.

Fix: F-65137r1_fix

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

b
The finger service must be disabled.
CM-6 - Medium - CCI-000366 - V-59729 - SV-74159r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001115
Vuln IDs
  • V-59729
Rule IDs
  • SV-74159r1_rule
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.
Checks: C-60499r3_chk

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

Fix: F-65139r1_fix

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

b
The sticky bit must be set on all public directories.
CM-6 - Medium - CCI-000366 - V-59731 - SV-74161r2_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001120
Vuln IDs
  • V-59731
Rule IDs
  • SV-74161r2_rule
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.
Checks: C-60501r2_chk

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

Fix: F-65141r1_fix

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

b
The prompt for Apple ID and iCloud must be disabled.
CM-6 - Medium - CCI-000366 - V-59733 - SV-74163r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001125
Vuln IDs
  • V-59733
Rule IDs
  • SV-74163r1_rule
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 log on.
Checks: C-60503r1_chk

To check if the prompt for Apple ID and iCloud are disabled for new users, run the following command: sudo 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.10', this is a finding.

Fix: F-65143r1_fix

To ensure that the prompt for Apple ID and iCloud is disabled, run the following commands: sudo defaults write /System/Library/User\ Template/English.lproj/Library/Preferences/com.apple.SetupAssistant DidSeeCloudSetup -bool TRUE; sudo defaults write /System/Library/User\ Template/English.lproj/Library/Preferences/com.apple.SetupAssistant LastSeenCloudProductVersion '10.10'

b
Users must not have Apple IDs signed into iCloud.
CM-6 - Medium - CCI-000366 - V-59735 - SV-74165r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001130
Vuln IDs
  • V-59735
Rule IDs
  • SV-74165r1_rule
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.
Checks: C-60505r1_chk

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

Fix: F-65145r5_fix

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

a
iTunes Music Sharing must be disabled.
CM-6 - Low - CCI-000366 - V-59737 - SV-74167r2_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
AOSX-10-001140
Vuln IDs
  • V-59737
Rule IDs
  • SV-74167r2_rule
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.
Checks: C-60507r1_chk

To check if the iTunes music sharing is disabled, run the following command: system_profiler SPConfigurationProfileDataType | grep disableSharedMusic If 'disableSharedMusic' is not set to '1', this is a finding.

Fix: F-65147r2_fix

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

b
All setuid executables on the system must be vendor-supplied.
CM-6 - Medium - CCI-000366 - V-59739 - SV-74169r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001145
Vuln IDs
  • V-59739
Rule IDs
  • SV-74169r1_rule
Very few of the executables that come preinstalled on Mac 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.
Checks: C-60509r2_chk

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.: sudo find / -perm -4000 -exec ls -ldb {} \; &gt; 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.

Fix: F-65149r1_fix

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

b
The system must not accept source-routed IPv4 packets.
CM-6 - Medium - CCI-000366 - V-59741 - SV-74171r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001195
Vuln IDs
  • V-59741
Rule IDs
  • SV-74171r1_rule
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.
Checks: C-60511r1_chk

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.

Fix: F-65151r1_fix

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

b
The system must ignore IPv4 ICMP redirect messages.
CM-6 - Medium - CCI-000366 - V-59743 - SV-74173r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001200
Vuln IDs
  • V-59743
Rule IDs
  • SV-74173r1_rule
ICMP redirects are broadcast in order 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.
Checks: C-60513r1_chk

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.

Fix: F-65153r1_fix

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

b
IP forwarding for IPv4 must not be enabled.
CM-6 - Medium - CCI-000366 - V-59745 - SV-74175r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001205
Vuln IDs
  • V-59745
Rule IDs
  • SV-74175r1_rule
IP forwarding for IPv4 must not be enabled, as only authorized systems should be permitted to operate as routers.
Checks: C-60515r1_chk

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.

Fix: F-65155r1_fix

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

b
IP forwarding for IPv6 must not be enabled.
CM-6 - Medium - CCI-000366 - V-59747 - SV-74177r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001206
Vuln IDs
  • V-59747
Rule IDs
  • SV-74177r1_rule
IP forwarding for IPv6 must not be enabled, as only authorized systems should be permitted to operate as routers.
Checks: C-60517r1_chk

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.

Fix: F-65157r1_fix

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

b
The system must not send IPv4 ICMP redirects by default.
CM-6 - Medium - CCI-000366 - V-59749 - SV-74179r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001210
Vuln IDs
  • V-59749
Rule IDs
  • SV-74179r1_rule
ICMP redirects are broadcast in order 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.
Checks: C-60519r1_chk

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.

Fix: F-65159r1_fix

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

b
The system must not send IPv6 ICMP redirects by default.
CM-6 - Medium - CCI-000366 - V-59751 - SV-74181r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001211
Vuln IDs
  • V-59751
Rule IDs
  • SV-74181r1_rule
ICMP redirects are broadcast in order 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.
Checks: C-60521r1_chk

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.

Fix: F-65161r2_fix

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

b
The system must prevent local applications from generating source-routed packets.
CM-6 - Medium - CCI-000366 - V-59753 - SV-74183r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001215
Vuln IDs
  • V-59753
Rule IDs
  • SV-74183r1_rule
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.
Checks: C-60523r1_chk

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.

Fix: F-65163r1_fix

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

b
The system must not process Internet Control Message Protocol [ICMP] timestamp requests.
CM-6 - Medium - CCI-000366 - V-59755 - SV-74185r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001220
Vuln IDs
  • V-59755
Rule IDs
  • SV-74185r1_rule
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.
Checks: C-60525r1_chk

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.

Fix: F-65165r1_fix

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

b
Unused network devices must be disabled.
CM-6 - Medium - CCI-000366 - V-59757 - SV-74187r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001235
Vuln IDs
  • V-59757
Rule IDs
  • SV-74187r1_rule
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.
Checks: C-60527r1_chk

To list the network devices that are enabled on the system, run the following command: sudo 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.

Fix: F-65167r2_fix

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

b
Secure virtual memory must be used.
CM-6 - Medium - CCI-000366 - V-59761 - SV-74191r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-001260
Vuln IDs
  • V-59761
Rule IDs
  • SV-74191r1_rule
Secure virtual memory must be enabled. Secure virtual memory ensures that data in memory is encrypted when it is swapped to disk. This prevents users and applications from accessing potentially sensitive information, such as user names and passwords, from the swap space on the hard drive.
Checks: C-60531r1_chk

To check if the system is using secure virtual memory run the following command: sysctl vm.swapusage If the result does not show '(encrypted)', this is a finding.

Fix: F-65171r1_fix

To ensure secure virtual memory is secure, run the following command: sudo defaults write /Library/Preferences/com.apple.virtualMemory DisableEncryptedSwap -bool FALSE

b
Internet Sharing must be disabled.
CM-7 - Medium - CCI-000381 - V-59763 - SV-74193r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-001270
Vuln IDs
  • V-59763
Rule IDs
  • SV-74193r1_rule
In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Internet Sharing must be disabled.
Checks: C-60533r2_chk

To check if the 'Internet Sharing' service is disabled, use the following command: sudo launchctl print-disabled system | grep com.apple.NetworkSharing If the results do not show the following: "com.apple.NetworkSharing" =&gt; true this is a finding.

Fix: F-65173r1_fix

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

b
The operating system must enforce account lockout after the limit of three consecutive invalid logon attempts by a user during a 15 minute time period.
AC-7 - Medium - CCI-000044 - V-59765 - SV-74195r2_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
AOSX-10-001325
Vuln IDs
  • V-59765
Rule IDs
  • SV-74195r2_rule
By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute forcing, is reduced. Limits are imposed by locking the account.
Checks: C-60535r3_chk

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 logon attempts: system_profiler SPConfigurationProfileDataType | 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 logon attempts, run the following command to output the password policy to the screen: sudo pwpolicy getaccountpolicies Look for the line '&lt;key&gt;policyCategoryAuthentication&lt;/key&gt;'. If this does not exist, and password policy is not controlled by a directory server, this is a finding. In the array that follows, there should one or more &lt;dict&gt; sections that describe policy checks. One should contain a &lt;string&gt; that allows users to log on 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 &lt;dict&gt; section, there should be a &lt;string&gt; that allows users to log on 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.

Fix: F-65175r7_fix

To set the password policy without a configuration profile, run the following command to save a copy of the current pwpolicy account policy file: sudo 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: sudo 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: sudo 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.

b
The operating system must automatically lock the account until the locked account is released by an administrator when three unsuccessful logon attempts in 15 minutes are exceeded.
AC-7 - Medium - CCI-002238 - V-59767 - SV-74197r2_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-002238
Version
AOSX-10-001326
Vuln IDs
  • V-59767
Rule IDs
  • SV-74197r2_rule
By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute forcing, is reduced. Limits are imposed by locking the account. Setting a lockout expiration of 15 minutes is an effective deterrent against brute forcing that also makes allowances for legitimate mistakes by users.
Checks: C-60537r3_chk

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 logon attempts and the logon reset timer: system_profiler SPConfigurationProfileDataType | 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 logon attempts, run the following command to output the password policy to the screen: sudo pwpolicy getaccountpolicies Look for the line '&lt;key&gt;policyCategoryAuthentication&lt;/key&gt;'. If this does not exist, and password policy is not controlled by a directory server, this is a finding. In the array that follows, there should be one or more &lt;dict&gt; sections that describe policy checks. One should contain a &lt;string&gt; that allows users to log on 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 &lt;dict&gt; section, there should be a &lt;string&gt; that allows users to log on 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.

Fix: F-65177r6_fix

To set the password policy without a configuration profile, run the following command to save a copy of the current pwpolicy account policy file: sudo 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: sudo 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.

b
The operating system must shut down by default upon audit failure (unless availability is an overriding concern).
AU-5 - Medium - CCI-000140 - V-59769 - SV-74199r1_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-000140
Version
AOSX-10-001355
Vuln IDs
  • V-59769
Rule IDs
  • SV-74199r1_rule
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 upon the nature of the failure mode. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: (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.
Checks: C-60539r1_chk

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

Fix: F-65179r1_fix

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

c
The operating system must employ automated mechanisms to detect the presence of unauthorized software on organizational information systems and notify designated organizational officials in accordance with the organization-defined frequency.
CM-6 - High - CCI-000366 - V-59785 - SV-74215r1_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
AOSX-10-001465
Vuln IDs
  • V-59785
Rule IDs
  • SV-74215r1_rule
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.
Checks: C-60541r1_chk

Ask the SA or 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.

Fix: F-65195r1_fix

Install an approved anti-virus solution onto the system.

a
AirDrop must be disabled.
CM-7 - Low - CCI-000381 - V-59787 - SV-74217r2_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-10-002050
Vuln IDs
  • V-59787
Rule IDs
  • SV-74217r2_rule
In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. AirDrop must be disabled.
Checks: C-60543r2_chk

AirDrop must be disabled. To check if AirDrop has been disabled, run the following command: sudo system_profiler SPConfigurationProfileDataType | grep DisableAirDrop If DisableAirDrop is not set to '1', this is a finding.

Fix: F-65197r2_fix

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

b
All users must use PKI authentication for login and privileged access.
CM-6 - Medium - CCI-000366 - V-59789 - SV-74219r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-002055
Vuln IDs
  • V-59789
Rule IDs
  • SV-74219r1_rule
Password-based authentication has become a prime target for malicious actors. Multifactor authentication using PKI technologies mitigates most, if not all, risks associated with traditional password use. (Use of username and password for last-resort emergency access to a system for maintenance is acceptable, however.)
Checks: C-60545r1_chk

Ask the SA or ISSO if an approved PKI authentication solution is implemented on the system for user logins and privileged access. If a non-emergency account can log into the system or gain privileged access without a smart card, this is a finding.

Fix: F-65199r1_fix

Implement PKI authentication using approved third-party PKI tools, to integrate with an existing directory services infrastructure or local password database, where no directory services infrastructure exists.

b
The system must be integrated into a directory services infrastructure.
CM-6 - Medium - CCI-000366 - V-59791 - SV-74221r1_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-10-002060
Vuln IDs
  • V-59791
Rule IDs
  • SV-74221r1_rule
Distinct user account databases on each separate system cause problems with username and password policy enforcement. Most approved directory services infrastructure solutions, such as Active Directory, allow centralized management of users and passwords.
Checks: C-60547r1_chk

To determine if the system is integrated to a directory server, ask the SA or ISSO or run the following command: sudo dscl localhost -list . | 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.

Fix: F-65201r1_fix

Integrate the system into an existing directory services infrastructure, such as Active Directory.

b
The operating system must generate audit records for all kernel module load, unload, and restart actions, and also for all program initiations.
AU-12 - Medium - CCI-000172 - V-59793 - SV-74223r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-002065
Vuln IDs
  • V-59793
Rule IDs
  • SV-74223r1_rule
Kernel modules, called kernel extensions in Mac 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 then triggers a kernel extension to be loaded. Auditing administrative actions, which include the loading or unloading of kernel extensions, mitigates this risk.
Checks: C-60549r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65203r1_fix

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

b
The operating system must generate audit records when successful/unsuccessful attempts to modify security objects occur.
AU-12 - Medium - CCI-000172 - V-59795 - SV-74225r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-002070
Vuln IDs
  • V-59795
Rule IDs
  • SV-74225r1_rule
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.
Checks: C-60551r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65205r1_fix

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

b
The operating system must generate audit records when successful/unsuccessful attempts to modify security levels occur.
AU-12 - Medium - CCI-000172 - V-59797 - SV-74227r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-002075
Vuln IDs
  • V-59797
Rule IDs
  • SV-74227r1_rule
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.
Checks: C-60553r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65207r1_fix

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

b
The operating system must generate audit records when successful/unsuccessful attempts to modify categories of information (e.g., classification levels) occur.
AU-12 - Medium - CCI-000172 - V-59799 - SV-74229r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-002080
Vuln IDs
  • V-59799
Rule IDs
  • SV-74229r1_rule
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.
Checks: C-60555r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65209r1_fix

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

b
Operating systems must enforce a 60-day maximum password lifetime restriction.
IA-5 - Medium - CCI-000199 - V-59801 - SV-74231r2_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000199
Version
AOSX-10-002085
Vuln IDs
  • V-59801
Rule IDs
  • SV-74231r2_rule
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.
Checks: C-60557r3_chk

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: system_profiler SPConfigurationProfileDataType | 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: sudo pwpolicy getaccountpolicies Look for the line &lt;key&gt;policyCategoryPasswordChange&lt;/key&gt;. If it does not exist, and password policy is not controlled by a directory server, this is a finding. Otherwise, in the array section that follows it, there should be a &lt;dict&gt; section that contains a check &lt;string&gt; 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.

Fix: F-65211r5_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory server. To set the password policy without a configuration profile, run the following command to save a copy of the current pwpolicy account policy file: sudo 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: sudo 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.

b
The operating system must prohibit password reuse for a minimum of five generations.
IA-5 - Medium - CCI-000200 - V-59803 - SV-74233r2_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000200
Version
AOSX-10-002090
Vuln IDs
  • V-59803
Rule IDs
  • SV-74233r2_rule
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.
Checks: C-60559r3_chk

Password policy can be set with the "Passcode 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 | 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: sudo pwpolicy getaccountpolicies Look for the line &lt;key&gt;policyCategoryPasswordContent&lt;/key&gt;. If it does not exist, and password policy is not controlled by a directory server, this is a finding. Otherwise, in the array section that follows it, there should be a &lt;dict&gt; section that contains a check &lt;string&gt; such as '&lt;string&gt;none policyAttributePasswordHashes in policyAttributePasswordHistory&lt;/string&gt;'. 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.

Fix: F-65213r3_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory server. To set the password policy without a configuration profile, run the following command to save a copy of the current pwpolicy account policy file: sudo 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: sudo 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.

b
The operating system must generate audit records when successful/unsuccessful attempts to delete privileges occur.
AU-12 - Medium - CCI-000172 - V-59805 - SV-74235r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-002095
Vuln IDs
  • V-59805
Rule IDs
  • SV-74235r1_rule
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.
Checks: C-60561r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65215r1_fix

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

b
The operating system must generate audit records when successful/unsuccessful attempts to access privileges occur.
AU-12 - Medium - CCI-000172 - V-59807 - SV-74237r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-002100
Vuln IDs
  • V-59807
Rule IDs
  • SV-74237r1_rule
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 elevate privileges mitigates this risk.
Checks: C-60563r1_chk

The options to configure the audit daemon are located in the /etc/security/audit_control file. To view the current settings, run the following command: sudo grep ^flags /etc/security/audit_control If the 'lo', 'ad', and 'aa' options are not set, this is a finding.

Fix: F-65217r1_fix

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

b
System log files must be owned by root and group-owned by wheel or admin.
SI-11 - Medium - CCI-001314 - V-59809 - SV-74239r1_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
AOSX-10-002105
Vuln IDs
  • V-59809
Rule IDs
  • SV-74239r1_rule
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.
Checks: C-60565r3_chk

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: sudo stat -f '%Su:%Sg:%N' $(grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2&gt; /dev/null sudo stat -f '%Su:%Sg:%N' $(grep -e '^&gt;' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2&gt; /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.

Fix: F-65219r1_fix

For any log file that returns an incorrect owner or group value, run the following command: 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.

b
System log files must be mode 640 or less permissive.
SI-11 - Medium - CCI-001314 - V-59811 - SV-74241r1_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
AOSX-10-002106
Vuln IDs
  • V-59811
Rule IDs
  • SV-74241r1_rule
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.
Checks: C-60567r2_chk

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: sudo stat -f '%A:%N' $(grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2&gt; /dev/null sudo stat -f '%A:%N' $(grep -e '^&gt;' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2&gt; /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.

Fix: F-65221r1_fix

For any log file that returns an incorrect permission value, run the following command: 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.

b
ACLs for system log files must be set correctly.
SI-11 - Medium - CCI-001314 - V-59813 - SV-74243r1_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
AOSX-10-002107
Vuln IDs
  • V-59813
Rule IDs
  • SV-74243r1_rule
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.
Checks: C-60569r3_chk

These commands check for log files that exist on the system and print out the list of ACLs if there are any. sudo ls -ld@ $(grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2&gt; /dev/null sudo ls -ld@ $(grep -e '^&gt;' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2&gt; /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.

Fix: F-65223r1_fix

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

b
The operating system must audit the enforcement actions used to restrict access associated with changes to the system.
CM-5 - Medium - CCI-001814 - V-59815 - SV-74245r1_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001814
Version
AOSX-10-002110
Vuln IDs
  • V-59815
Rule IDs
  • SV-74245r1_rule
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.
Checks: C-60571r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65225r1_fix

To make sure the appropriate flags are enabled for auditing, run the following command to add 'fm', '-fr', and '-fw' at the same time: sudo sed -i.bak '/^flags/ s/$/,fm,-fr,-fw/' /etc/security/audit_control; sudo audit -s A text editor may also be used to implement the required updates to the /etc/security/audit_control file.

b
Operating systems sessions must audit non-local maintenance and diagnostic sessions organization-defined audit events.
MA-4 - Medium - CCI-002884 - V-59817 - SV-74247r1_rule
RMF Control
MA-4
Severity
Medium
CCI
CCI-002884
Version
AOSX-10-002115
Vuln IDs
  • V-59817
Rule IDs
  • SV-74247r1_rule
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 those activities conducted by individuals communicating through a network, either an external network (e.g., the Internet) or an internal network. Local maintenance and diagnostic activities are those activities carried out by individuals physically present at the information system or information system component and not communicating across a network connection. This requirement applies to hardware/software diagnostic test equipment or tools. This requirement does not cover hardware/software components that may support information system maintenance, yet are a part of the system, for example, the software implementing "ping", "ls", "ipconfig", or the hardware and software implementing the monitoring port of an Ethernet switch.
Checks: C-60573r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65227r1_fix

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

b
The operating system must audit the execution of privileged functions.
AC-6 - Medium - CCI-002234 - V-59819 - SV-74249r1_rule
RMF Control
AC-6
Severity
Medium
CCI
CCI-002234
Version
AOSX-10-002120
Vuln IDs
  • V-59819
Rule IDs
  • SV-74249r1_rule
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.
Checks: C-60575r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65229r1_fix

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

b
The operating system must generate audit records when successful/unsuccessful attempts to modify privileges occur.
AU-12 - Medium - CCI-000172 - V-59821 - SV-74251r1_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-10-002125
Vuln IDs
  • V-59821
Rule IDs
  • SV-74251r1_rule
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 mitigates this risk.
Checks: C-60577r1_chk

In order to view the currently configured flags for the audit daemon, run the following command: sudo 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.

Fix: F-65231r1_fix

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

b
The operating system must enforce an account lockout time period of 15 minutes in which three consecutive invalid logon attempts by a user are made.
AC-7 - Medium - CCI-002238 - V-59823 - SV-74253r2_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-002238
Version
AOSX-10-001324
Vuln IDs
  • V-59823
Rule IDs
  • SV-74253r2_rule
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 logon attempts are made, the account will be locked.
Checks: C-60579r3_chk

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 logon reset timer: system_profiler SPConfigurationProfileDataType | 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 logon attempts, run the following command to output the password policy to the screen: sudo pwpolicy getaccountpolicies Look for the line '&lt;key&gt;policyCategoryAuthentication&lt;/key&gt;'. If this does not exist, and password policy is not controlled by a directory server, this is a finding. In the array that follows, there should one or more &lt;dict&gt; sections that describe policy checks. One should contain a &lt;string&gt; that allows users to log on 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 &lt;dict&gt; section, there should be a &lt;string&gt; that allows users to log on 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.

Fix: F-65233r7_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory server. 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: sudo 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: sudo 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.

b
Web Sharing must be disabled.
CM-7 - Medium - CCI-000381 - V-59825 - SV-74255r1_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-10-001275
Vuln IDs
  • V-59825
Rule IDs
  • SV-74255r1_rule
Web 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.
Checks: C-60581r2_chk

To check if the 'Web Sharing' service is disabled, use the following command: sudo launchctl print-disabled system | grep org.apache.httpd If the results do not show the following: "org.apache.httpd" =&gt; true this is a finding.

Fix: F-65235r1_fix

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

a
The operating system must conceal, via the session lock, information previously visible on the display with a publicly viewable image.
AC-11 - Low - CCI-000060 - V-60389 - SV-74819r2_rule
RMF Control
AC-11
Severity
Low
CCI
CCI-000060
Version
AOSX-10-000005
Vuln IDs
  • V-60389
Rule IDs
  • SV-74819r2_rule
A default screensaver must be configured for all users, as the screensaver will act as a session time-out lock for the system and must be one that conceals the contents of the screen from unauthorized users. The screensaver 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.
Checks: C-61317r1_chk

To view the currently selected screen saver for the logged in user, run the following command: system_profiler SPConfigurationProfileDataType | grep moduleName If there is no result or defined moduleName, this is a finding.

Fix: F-66011r2_fix

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