ℹ️ The items you can view are limited because you do not have a subscription. Contact us at [email protected] to purchase one.
- Group Title
- SRG-OS-000033-GPOS-00014
- Group ID
- V-268438
- Rule Version
- APPL-15-000054
- Rule Title
- The macOS system must limit SSHD to FIPS-compliant connections.
- Rule ID
- SV-268438r1034254_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
If SSHD is enabled, it must be configured to limit the Ciphers, HostbasedAcceptedAlgorithms, HostKeyAlgorithms, KexAlgorithms, MACs, PubkeyAcceptedAlgorithms, CASignatureAlgorithms to algorithms that are FIPS-140 validated.
FIPS 140-2/140-3 is the current standard for validating that mechanisms used to access cryptographic modules use authentication that meets federal requirements.
Operating systems using encryption must use FIPS-validated mechanisms for authenticating to cryptographic modules.
NOTE: For more information on FIPS compliance with the version of SSHD included in the macOS, the manual page apple_ssh_and_fips has additional information.
Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000120-GPOS-00061, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000396-GPOS-00176, SRG-OS-000424-GPOS-00188, SRG-OS-000478-GPOS-00223
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to limit SSHD to FIPS-compliant connections with the following command:
fips_sshd_config=("Ciphers [email protected]" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,[email protected]" "HostKeyAlgorithms [email protected],[email protected],ecdsa-sha2-nistp256,[email protected]" "KexAlgorithms ecdh-sha2-nistp256" "MACs [email protected],hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,[email protected],[email protected]" "CASignatureAlgorithms ecdsa-sha2-nistp256,[email protected]")
total=0
for config in $fips_sshd_config; do
total=$(expr $(/usr/sbin/sshd -G | /usr/bin/grep -i -c "$config") + $total)
done
echo $total
If the result is not "7", this is a finding.
- Check System
- C-72468r1034252_chk
- Fix Reference
- F-72369r1034253_fix
- Fix Text
-
Configure the macOS system to limit SSHD to FIPS-compliant connections with the following command:
/bin/ln -fs /etc/ssh/crypto/fips.conf /etc/ssh/crypto.conf
- Identities
-
CCI-000068
Implement cryptographic mechanisms to protect the confidentiality of remote access sessions.
- 800-53 :: AC-17 (2)
- 800-53 Rev. 4 :: AC-17 (2)
- 800-53 Rev. 5 :: AC-17 (2)
- 800-53A :: AC-17 (2).1
CCI-000803Implement mechanisms for authentication to a cryptographic module that meet the requirements of applicable laws, Executive Orders, directives, policies, regulations, standards, and guidance for such authentication.
- 800-53 :: IA-7
- 800-53 Rev. 4 :: IA-7
- 800-53 Rev. 5 :: IA-7
- 800-53A :: IA-7.1
CCI-001453Implement cryptographic mechanisms to protect the integrity of remote access sessions.
- 800-53 :: AC-17 (2)
- 800-53 Rev. 4 :: AC-17 (2)
- 800-53 Rev. 5 :: AC-17 (2)
- 800-53A :: AC-17 (2).1
CCI-002421Implement cryptographic mechanisms to prevent unauthorized disclosure of information and/or detect changes to information during transmission.
- 800-53 Rev. 4 :: SC-8 (1)
- 800-53 Rev. 5 :: SC-8 (1)
CCI-002450Implement organization-defined types of cryptography for each specified cryptography use.
- 800-53 Rev. 4 :: SC-13
- 800-53 Rev. 5 :: SC-13 b
CCI-002890Implement organization-defined cryptographic mechanisms to protect the integrity of nonlocal maintenance and diagnostic communications.
- 800-53 Rev. 4 :: MA-4 (6)
- 800-53 Rev. 5 :: MA-4 (6)
CCI-003123Implement organization-defined cryptographic mechanisms to protect the confidentiality of nonlocal maintenance and diagnostic communications.
- 800-53 Rev. 4 :: MA-4 (6)
- 800-53 Rev. 5 :: MA-4 (6)
- Group Title
- SRG-OS-000033-GPOS-00014
- Group ID
- V-268439
- Rule Version
- APPL-15-000057
- Rule Title
- The macOS system must limit SSH to FIPS-compliant connections.
- Rule ID
- SV-268439r1034803_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
SSH must be configured to limit the Ciphers, HostbasedAcceptedAlgorithms, HostKeyAlgorithms, KexAlgorithms, MACs, PubkeyAcceptedAlgorithms, CASignatureAlgorithms to algorithms that are FIPS-140 validated.
FIPS 140-3 is the current standard for validating that mechanisms used to access cryptographic modules use authentication that meets federal requirements.
Operating systems using encryption must use FIPS-validated mechanisms for authenticating to cryptographic modules.
NOTE: For more information on FIPS compliance with the version of SSH included in the macOS, the manual page apple_ssh_and_fips has additional information.
Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000120-GPOS-00061, SRG-OS-000250-GPOS-00093, SRG-OS-000396-GPOS-00176, SRG-OS-000424-GPOS-00188, SRG-OS-000478-GPOS-00223
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to limit SSH to FIPS-compliant connections with the following command:
fips_ssh_config=("Ciphers [email protected]" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,[email protected]" "HostKeyAlgorithms [email protected],[email protected],ecdsa-sha2-nistp256,[email protected]" "KexAlgorithms ecdh-sha2-nistp256" "MACs [email protected],hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,[email protected],[email protected]" "CASignatureAlgorithms ecdsa-sha2-nistp256,[email protected]")
total=0
ret="pass"
for config in $fips_ssh_config; do
if [[ "$ret" == "fail" ]]; then
break
fi
for u in $(/usr/bin/dscl . list /users shell | /usr/bin/egrep -v '(^_)|(root)|(/usr/bin/false)' | /usr/bin/awk '{print $1}'); do
sshCheck=$(/usr/bin/sudo -u $u /usr/bin/ssh -G . | /usr/bin/grep -ci "$config")
if [[ "$sshCheck" == "0" ]]; then
ret="fail"
break
fi
done
done
echo $ret
If the result is not "pass", this is a finding.
- Check System
- C-72469r1034801_chk
- Fix Reference
- F-72370r1034802_fix
- Fix Text
-
Configure the macOS system to limit SSH to FIPS-compliant connections with the following command:
if [ -f /etc/ssh/crypto.conf ] && /usr/bin/grep -q "Include /etc/ssh/crypto.conf" /etc/ssh/ssh_config.d/100-macos.conf 2>/dev/null; then
/bin/ln -fs /etc/ssh/crypto/fips.conf /etc/ssh/crypto.conf
fi
include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/ssh_config | /usr/bin/tr -d '*')
fips_ssh_config=("Ciphers [email protected]" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,[email protected]" "HostKeyAlgorithms [email protected],[email protected],ecdsa-sha2-nistp256,[email protected]" "KexAlgorithms ecdh-sha2-nistp256" "MACs [email protected],hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,[email protected],[email protected]" "CASignatureAlgorithms ecdsa-sha2-nistp256,[email protected]")
for ssh_config in $fips_ssh_config; do
ssh_setting=$(echo $ssh_config | /usr/bin/cut -d " " -f1)
/usr/bin/grep -qEi "^$ssh_setting" "${include_dir}01-mscp-ssh.conf" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/" "${include_dir}01-mscp-ssh.conf" || echo "$ssh_config" >> "${include_dir}01-mscp-ssh.conf"
for u in $(/usr/bin/dscl . list /users shell | /usr/bin/egrep -v '(^_)|(root)|(/usr/bin/false)' | /usr/bin/awk '{print $1}'); do
config=$(/usr/bin/sudo -u $u /usr/bin/ssh -Gv . 2>&1)
configfiles=$(echo "$config" | /usr/bin/awk '/Reading configuration data/ {print $NF}'| /usr/bin/tr -d '\r')
configarray=( ${(f)configfiles} )
if ! echo $config | /usr/bin/grep -q -i "$ssh_config" ; then
for c in $configarray; do
if [[ "$c" == "/etc/ssh/crypto.conf" ]]; then
continue
fi
/usr/bin/sudo -u $u /usr/bin/grep -qEi "^$ssh_setting" "$c" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/I" "$c"
if [[ "$c" =~ ".ssh/config" ]]; then
if /usr/bin/grep -qEi "$ssh_setting" "$c" 2> /dev/null; then
old_file=$(cat ~$u/.ssh/config)
echo "$ssh_config" > ~$u/.ssh/config
echo "$old_file" >> ~$u/.ssh/config
fi
fi
done
fi
done
done
- Identities
-
CCI-000068
Implement cryptographic mechanisms to protect the confidentiality of remote access sessions.
- 800-53 :: AC-17 (2)
- 800-53 Rev. 4 :: AC-17 (2)
- 800-53 Rev. 5 :: AC-17 (2)
- 800-53A :: AC-17 (2).1
CCI-000803Implement mechanisms for authentication to a cryptographic module that meet the requirements of applicable laws, Executive Orders, directives, policies, regulations, standards, and guidance for such authentication.
- 800-53 :: IA-7
- 800-53 Rev. 4 :: IA-7
- 800-53 Rev. 5 :: IA-7
- 800-53A :: IA-7.1
CCI-001453Implement cryptographic mechanisms to protect the integrity of remote access sessions.
- 800-53 :: AC-17 (2)
- 800-53 Rev. 4 :: AC-17 (2)
- 800-53 Rev. 5 :: AC-17 (2)
- 800-53A :: AC-17 (2).1
CCI-002421Implement cryptographic mechanisms to prevent unauthorized disclosure of information and/or detect changes to information during transmission.
- 800-53 Rev. 4 :: SC-8 (1)
- 800-53 Rev. 5 :: SC-8 (1)
CCI-002450Implement organization-defined types of cryptography for each specified cryptography use.
- 800-53 Rev. 4 :: SC-13
- 800-53 Rev. 5 :: SC-13 b
- Group Title
- SRG-OS-000067-GPOS-00035
- Group ID
- V-268477
- Rule Version
- APPL-15-001150
- Rule Title
- The macOS system must disable password authentication for SSH.
- Rule ID
- SV-268477r1034371_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
If remote login through SSH is enabled, password-based authentication must be disabled for user login.
All users must go through multifactor authentication to prevent unauthenticated access and potential compromise to the system.
NOTE: /etc/ssh/sshd_config will be automatically modified to its original state following any update or major upgrade to the operating system.
Satisfies: SRG-OS-000067-GPOS-00035, SRG-OS-000105-GPOS-00052, SRG-OS-000106-GPOS-00053, SRG-OS-000107-GPOS-00054, SRG-OS-000108-GPOS-00055, SRG-OS-000112-GPOS-00057, SRG-OS-000125-GPOS-00065, SRG-OS-000375-GPOS-00160
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to disable password authentication for SSH with the following command:
/usr/sbin/sshd -G | /usr/bin/grep -Ec '^(passwordauthentication\s+no|kbdinteractiveauthentication\s+no)'
If the result is not "2", this is a finding.
- Check System
- C-72507r1034369_chk
- Fix Reference
- F-72408r1034370_fix
- Fix Text
-
Configure the macOS system to disable password authentication for SSH with the following command:
include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*')
if [[ -z $include_dir ]]; then
/usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config
fi
echo "passwordauthentication no" >> "${include_dir}01-mscp-sshd.conf"
echo "kbdinteractiveauthentication no" >> "${include_dir}01-mscp-sshd.conf"
for file in $(ls ${include_dir}); do
if [[ "$file" == "100-macos.conf" ]]; then
continue
fi
if [[ "$file" == "01-mscp-sshd.conf" ]]; then
break
fi
/bin/mv ${include_dir}${file} ${include_dir}20-${file}
done
- Identities
-
CCI-000186
For public key-based authentication, enforce authorized access to the corresponding private key.
- 800-53 :: IA-5 (2)
- 800-53 Rev. 4 :: IA-5 (2) (b)
- 800-53 Rev. 5 :: IA-5 (2) (a) (1)
- 800-53A :: IA-5 (2).1
CCI-000765Implement multifactor authentication for network access to privileged accounts.
- 800-53 :: IA-2 (1)
- 800-53 Rev. 4 :: IA-2 (1)
- 800-53 Rev. 5 :: IA-2 (1)
- 800-53A :: IA-2 (1).1
CCI-000766Implement multifactor authentication for network access to non-privileged accounts.
- 800-53 :: IA-2 (2)
- 800-53 Rev. 4 :: IA-2 (2)
- 800-53 Rev. 5 :: IA-2 (2)
- 800-53A :: IA-2 (2).1
CCI-000877Employ strong authentication in the establishment of nonlocal maintenance and diagnostic sessions.
- 800-53 :: MA-4 c
- 800-53 Rev. 4 :: MA-4 c
- 800-53 Rev. 5 :: MA-4 c
- 800-53A :: MA-4.1 (iv)
CCI-001941Implement replay-resistant authentication mechanisms for access to privileged accounts and/or non-privileged accounts.
- 800-53 Rev. 4 :: IA-2 (8)
- 800-53 Rev. 5 :: IA-2 (8)
CCI-004046Implement multi-factor authentication for local; network; and/or remote access to privileged accounts; and/or non-privileged accounts such that one of the factors is provided by a device separate from the system gaining access.
- 800-53 Rev. 5 :: IA-2 (6) (a)
- Group Title
- SRG-OS-000074-GPOS-00042
- Group ID
- V-268499
- Rule Version
- APPL-15-002038
- Rule Title
- The macOS system must disable Trivial File Transfer Protocol (TFTP) service.
- Rule ID
- SV-268499r1034437_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
If the system does not require TFTP support, it is nonessential and must be disabled.
The information system must be configured to provide only essential capabilities. Disabling TFTP helps prevent the unauthorized connection of devices and unauthorized transfer of information.
NOTE: TFTP service is disabled at startup by default with macOS.
Satisfies: SRG-OS-000074-GPOS-00042, SRG-OS-000080-GPOS-00048
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to disable TFTP service with the following command:
/bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.tftpd" => disabled'
If the result is not "1", this is a finding.
- Check System
- C-72529r1034435_chk
- Fix Reference
- F-72430r1034436_fix
- Fix Text
-
Configure the macOS system to disable TFTP service with the following command:
/bin/launchctl disable system/com.apple.tftpd
The system may need to be restarted for the update to take effect.
- Identities
-
CCI-000197
For password-based authentication, transmit passwords only cryptographically-protected channels.
- 800-53 :: IA-5 (1) (c)
- 800-53 Rev. 4 :: IA-5 (1) (c)
- 800-53 Rev. 5 :: IA-5 (1) (c)
- 800-53A :: IA-5 (1).1 (v)
CCI-000213Enforce approved authorizations for logical access to information and system resources in accordance with applicable access control policies.
- 800-53 :: AC-3
- 800-53 Rev. 4 :: AC-3
- 800-53 Rev. 5 :: AC-3
- 800-53A :: AC-3.1
- Group Title
- SRG-OS-000366-GPOS-00153
- Group ID
- V-268508
- Rule Version
- APPL-15-002060
- Rule Title
- The macOS system must apply gatekeeper settings to block applications from unidentified developers.
- Rule ID
- SV-268508r1034464_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
The information system implements cryptographic mechanisms to authenticate software prior to installation.
Gatekeeper settings must be configured correctly to allow the system to run only 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 to run. Digital signatures allow the macOS to verify that the application has not been modified by a malicious third party.
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to apply gatekeeper settings to block applications from unidentified developers with the following command:
/usr/sbin/spctl --status --verbose | /usr/bin/grep -c "developer id enabled"
If the result is not "1", this is a finding.
- Check System
- C-72538r1034462_chk
- Fix Reference
- F-72439r1034463_fix
- Fix Text
-
Configure the macOS system to apply gatekeeper settings to block applications from unidentified developers with the following command:
/usr/sbin/spctl --global-enable; /usr/sbin/spctl --enable
- Identities
-
CCI-003992
Prevent the installation of organization-defined software and firmware components without verification that the component has been digitally signed using a certificate that is recognized and approved by the organization.
- 800-53 Rev. 5 :: CM-14
- Group Title
- SRG-OS-000423-GPOS-00187
- Group ID
- V-268509
- Rule Version
- APPL-15-002062
- Rule Title
- The macOS system must disable Bluetooth when no approved device is connected.
- Rule ID
- SV-268509r1034467_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
The macOS system must be configured to disable Bluetooth unless an approved device is connected.
[IMPORTANT]
====
Information system security officers (ISSOs) may make the risk-based decision not to disable Bluetooth to maintain necessary functionality, but they are advised to first fully weigh the potential risks posed to their organization.
====
Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000481-GPOS-00481
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to disable Bluetooth with the following command:
/usr/bin/osascript -l JavaScript << EOS
$.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCXBluetooth')\
.objectForKey('DisableBluetooth').js
EOS
If the result is not "true", this is a finding.
- Check System
- C-72539r1034465_chk
- Fix Reference
- F-72440r1034466_fix
- Fix Text
-
Configure the macOS system to disable Bluetooth by installing the "com.apple.MCXBluetooth" configuration profile.
- Identities
-
CCI-002418
Protect the confidentiality and/or integrity of transmitted information.
- 800-53 Rev. 4 :: SC-8
- 800-53 Rev. 5 :: SC-8
- Group Title
- SRG-OS-000366-GPOS-00153
- Group ID
- V-268511
- Rule Version
- APPL-15-002064
- Rule Title
- The macOS system must enable gatekeeper.
- Rule ID
- SV-268511r1034473_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
Gatekeeper must be enabled.
Gatekeeper is a security feature that ensures that applications are digitally signed by an Apple-issued certificate before they are permitted to run. Digital signatures allow the macOS host to verify that the application has not been modified by a malicious third party.
Administrator users will still have the option to override these settings on a case-by-case basis.
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to enable gatekeeper with the following command:
/usr/sbin/spctl --status | /usr/bin/grep -c "assessments enabled"
If the result is not "1", this is a finding.
- Check System
- C-72541r1034471_chk
- Fix Reference
- F-72442r1034472_fix
- Fix Text
-
Configure the macOS system to enable gatekeeper with the following command:
/usr/sbin/spctl --global-enable
- Identities
-
CCI-003992
Prevent the installation of organization-defined software and firmware components without verification that the component has been digitally signed using a certificate that is recognized and approved by the organization.
- 800-53 Rev. 5 :: CM-14
- Group Title
- SRG-OS-000104-GPOS-00051
- Group ID
- V-268512
- Rule Version
- APPL-15-002066
- Rule Title
- The macOS system must disable unattended or automatic login to the system.
- Rule ID
- SV-268512r1034476_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
Automatic login must be disabled.
When automatic logins are enabled, the default user account is automatically logged on at boot time without prompting the user for a password. Even if the screen is later locked, a malicious user would be able to reboot the computer and find it already logged in. Disabling automatic logins mitigates this risk.
Satisfies: SRG-OS-000104-GPOS-00051, SRG-OS-000480-GPOS-00229
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to disable unattended or automatic login to the system with the following command:
/usr/bin/osascript -l JavaScript << EOS
$.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\
.objectForKey('com.apple.login.mcx.DisableAutoLoginClient').js
EOS
If the result is not "true", this is a finding.
- Check System
- C-72542r1034474_chk
- Fix Reference
- F-72443r1034475_fix
- Fix Text
-
Configure the macOS system to disable unattended or automatic login to the system by installing the "com.apple.loginwindow" configuration profile.
- Identities
-
CCI-000366
Implement the security configuration settings.
- 800-53 :: CM-6 b
- 800-53 Rev. 4 :: CM-6 b
- 800-53 Rev. 5 :: CM-6 b
- 800-53A :: CM-6.1 (iv)
CCI-000764Uniquely identify and authenticate organizational users and associate that unique identification with processes acting on behalf of those users.
- 800-53 :: IA-2
- 800-53 Rev. 4 :: IA-2
- 800-53 Rev. 5 :: IA-2
- 800-53A :: IA-2.1
- Group Title
- SRG-OS-000324-GPOS-00125
- Group ID
- V-268514
- Rule Version
- APPL-15-002069
- Rule Title
- The macOS system must require an administrator password to modify systemwide preferences.
- Rule ID
- SV-268514r1034482_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
The system must be configured to require an administrator password to modify the systemwide preferences in System Settings.
Some Preference Panes in System Settings contain settings that affect the entire system. Requiring a password to unlock these systemwide settings reduces the risk of an unauthorized user modifying system configurations.
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to require administrator privileges to modify systemwide settings with the following command:
authDBs=("system.preferences" "system.preferences.energysaver" "system.preferences.network" "system.preferences.printing" "system.preferences.sharing" "system.preferences.softwareupdate" "system.preferences.startupdisk" "system.preferences.timemachine")
result="1"
for section in ${authDBs[@]}; do
if [[ $(/usr/bin/security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath 'name(//*[contains(text(), "shared")]/following-sibling::*[1])' -) != "false" ]]; then
result="0"
fi
if [[ $(security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath '//*[contains(text(), "group")]/following-sibling::*[1]/text()' - ) != "admin" ]]; then
result="0"
fi
if [[ $(/usr/bin/security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath 'name(//*[contains(text(), "authenticate-user")]/following-sibling::*[1])' -) != "true" ]]; then
result="0"
fi
if [[ $(/usr/bin/security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath 'name(//*[contains(text(), "session-owner")]/following-sibling::*[1])' -) != "false" ]]; then
result="0"
fi
done
echo $result
If the result is not "1", this is a finding.
- Check System
- C-72544r1034480_chk
- Fix Reference
- F-72445r1034481_fix
- Fix Text
-
Configure the macOS system to require administrator privileges to modify systemwide settings with the following command:
authDBs=("system.preferences" "system.preferences.energysaver" "system.preferences.network" "system.preferences.printing" "system.preferences.sharing" "system.preferences.softwareupdate" "system.preferences.startupdisk" "system.preferences.timemachine")
for section in ${authDBs[@]}; do
/usr/bin/security -q authorizationdb read "$section" > "/tmp/$section.plist"
class_key_value=$(usr/libexec/PlistBuddy -c "Print :class" "/tmp/$section.plist" 2>&1)
if [[ "$class_key_value" == *"Does Not Exist"* ]]; then
/usr/libexec/PlistBuddy -c "Add :class string user" "/tmp/$section.plist"
else
/usr/libexec/PlistBuddy -c "Set :class user" "/tmp/$section.plist"
fi
key_value=$(/usr/libexec/PlistBuddy -c "Print :shared" "/tmp/$section.plist" 2>&1)
if [[ "$key_value" == *"Does Not Exist"* ]]; then
/usr/libexec/PlistBuddy -c "Add :shared bool false" "/tmp/$section.plist"
else
/usr/libexec/PlistBuddy -c "Set :shared false" "/tmp/$section.plist"
fi
auth_user_key=$(/usr/libexec/PlistBuddy -c "Print :authenticate-user" "/tmp/$section.plist" 2>&1)
if [[ "$auth_user_key" == *"Does Not Exist"* ]]; then
/usr/libexec/PlistBuddy -c "Add :authenticate-user bool true" "/tmp/$section.plist"
else
/usr/libexec/PlistBuddy -c "Set :authenticate-user true" "/tmp/$section.plist"
fi
session_owner_key=$(/usr/libexec/PlistBuddy -c "Print :session-owner" "/tmp/$section.plist" 2>&1)
if [[ "$session_owner_key" == *"Does Not Exist"* ]]; then
/usr/libexec/PlistBuddy -c "Add :session-owner bool false" "/tmp/$section.plist"
else
/usr/libexec/PlistBuddy -c "Set :session-owner false" "/tmp/$section.plist"
fi
group_key=$(usr/libexec/PlistBuddy -c "Print :group" "/tmp/$section.plist" 2>&1)
if [[ "$group_key" == *"Does Not Exist"* ]]; then
/usr/libexec/PlistBuddy -c "Add :group string admin" "/tmp/$section.plist"
else
/usr/libexec/PlistBuddy -c "Set :group admin" "/tmp/$section.plist"
fi
/usr/bin/security -q authorizationdb write "$section" < "/tmp/$section.plist"
done
- Identities
-
CCI-002235
Prevent non-privileged users from executing privileged functions.
- 800-53 Rev. 4 :: AC-6 (10)
- 800-53 Rev. 5 :: AC-6 (10)
- Group Title
- SRG-OS-000051-GPOS-00024
- Group ID
- V-268555
- Rule Version
- APPL-15-005001
- Rule Title
- The macOS system must ensure System Integrity Protection is enabled.
- Rule ID
- SV-268555r1034605_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
System Integrity Protection is vital to protecting the integrity of the system as it prevents malicious users and software from making unauthorized and/or unintended modifications to protected files and folders; ensures the presence of an audit record generation capability for defined auditable events for all operating system components; protects audit tools from unauthorized access, modification, and deletion; restricts the root user account and limits the actions that the root user can perform on protected parts of the macOS; and prevents nonprivileged users from granting other users direct access to the contents of their home directories and folders.
NOTE: System Integrity Protection is enabled by default in macOS.
Satisfies: SRG-OS-000051-GPOS-00024, SRG-OS-000054-GPOS-00025, SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000062-GPOS-00031, SRG-OS-000080-GPOS-00048, SRG-OS-000122-GPOS-00063, SRG-OS-000138-GPOS-00069, SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099, SRG-OS-000259-GPOS-00100, SRG-OS-000278-GPOS-00108, SRG-OS-000350-GPOS-00138
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to enable System Integrity Protection with the following command:
/usr/bin/csrutil status | /usr/bin/grep -c 'System Integrity Protection status: enabled.'
If the result is not "1", this is a finding.
- Check System
- C-72585r1034603_chk
- Fix Reference
- F-72486r1034604_fix
- Fix Text
-
Configure the macOS system to enable System Integrity Protection by booting into "Recovery" mode, launching "Terminal" from the "Utilities" menu, and running the following command:
/usr/bin/csrutil enable
- Identities
-
CCI-000154
Provide the capability to centrally review and analyze audit records from multiple components within the system.
- 800-53 :: AU-6 (4)
- 800-53 Rev. 4 :: AU-6 (4)
- 800-53 Rev. 5 :: AU-6 (4)
- 800-53A :: AU-6 (4).1
CCI-000158Provide the capability to process, sort, and search audit records for events of interest based on organization-defined audit fields within audit records.
- 800-53 :: AU-7 (1)
- 800-53 Rev. 4 :: AU-7 (1)
- 800-53 Rev. 5 :: AU-7 (1)
- 800-53A :: AU-7 (1).1
CCI-000162Protect audit information from unauthorized access.
- 800-53 :: AU-9
- 800-53 Rev. 4 :: AU-9
- 800-53 Rev. 5 :: AU-9 a
- 800-53A :: AU-9.1
CCI-000163Protect audit information from unauthorized modification.
- 800-53 :: AU-9
- 800-53 Rev. 4 :: AU-9
- 800-53 Rev. 5 :: AU-9 a
- 800-53A :: AU-9.1
CCI-000164Protect audit information from unauthorized deletion.
- 800-53 :: AU-9
- 800-53 Rev. 4 :: AU-9
- 800-53 Rev. 5 :: AU-9 a
- 800-53A :: AU-9.1
CCI-000169Provide audit record generation capability for the event types the system is capable of auditing as defined in AU-2 a. on organization-defined information system components.
- 800-53 :: AU-12 a
- 800-53 Rev. 4 :: AU-12 a
- 800-53 Rev. 5 :: AU-12 a
- 800-53A :: AU-12.1 (ii)
CCI-000213Enforce approved authorizations for logical access to information and system resources in accordance with applicable access control policies.
- 800-53 :: AC-3
- 800-53 Rev. 4 :: AC-3
- 800-53 Rev. 5 :: AC-3
- 800-53A :: AC-3.1
CCI-001090Prevent unauthorized and unintended information transfer via shared system resources.
- 800-53 :: SC-4
- 800-53 Rev. 4 :: SC-4
- 800-53 Rev. 5 :: SC-4
- 800-53A :: SC-4.1
CCI-001493Protect audit tools from unauthorized access.
- 800-53 :: AU-9
- 800-53 Rev. 4 :: AU-9
- 800-53 Rev. 5 :: AU-9 a
- 800-53A :: AU-9.1
CCI-001494Protect audit tools from unauthorized modification.
- 800-53 :: AU-9
- 800-53 Rev. 4 :: AU-9
- 800-53 Rev. 5 :: AU-9
- 800-53A :: AU-9.1
CCI-001495Protect audit tools from unauthorized deletion.
- 800-53 :: AU-9
- 800-53 Rev. 4 :: AU-9
- 800-53 Rev. 5 :: AU-9
- 800-53A :: AU-9.1
CCI-001496Implement cryptographic mechanisms to protect the integrity of audit tools.
- 800-53 :: AU-9 (3)
- 800-53 Rev. 4 :: AU-9 (3)
- 800-53 Rev. 5 :: AU-9 (3)
- 800-53A :: AU-9 (3).1
CCI-001499Limit privileges to change software resident within software libraries.
- 800-53 :: CM-5 (6)
- 800-53 Rev. 4 :: CM-5 (6)
- 800-53 Rev. 5 :: CM-5 (6)
- 800-53A :: CM-5 (6).1
CCI-001876Provide an audit reduction capability that supports on-demand reporting requirements.
- 800-53 Rev. 4 :: AU-7 a
- 800-53 Rev. 5 :: AU-7 a
CCI-001878Provide a report generation capability that supports on-demand audit review and analysis.
- 800-53 Rev. 4 :: AU-7 a
- 800-53 Rev. 5 :: AU-7 a
- Group Title
- SRG-OS-000185-GPOS-00079
- Group ID
- V-268556
- Rule Version
- APPL-15-005020
- Rule Title
- The macOS system must enforce FileVault.
- Rule ID
- SV-268556r1034608_rule
- Rule Severity
- ● High
- Rule Weight
- 10.0
- Vuln Discussion
-
The information system implements cryptographic mechanisms to protect the confidentiality and integrity of information stored on digital media during transport outside of controlled areas.
Satisfies: SRG-OS-000185-GPOS-00079, SRG-OS-000404-GPOS-00183, SRG-OS-000405-GPOS-00184
- Documentable
- False
- Check Content
-
Verify the macOS system is configured to enforce FileVault with the following command:
dontAllowDisable=$(/usr/bin/osascript -l JavaScript << EOS
$.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\
.objectForKey('dontAllowFDEDisable').js
EOS
)
fileVault=$(/usr/bin/fdesetup status | /usr/bin/grep -c "FileVault is On.")
if [[ "$dontAllowDisable" == "true" ]] && [[ "$fileVault" == 1 ]]; then
echo "1"
else
echo "0"
fi
If the result is not "1", this is a finding.
- Check System
- C-72586r1034606_chk
- Fix Reference
- F-72487r1034607_fix
- Fix Text
-
Refer to the FileVault supplemental to implement this rule.
- Identities
-
CCI-001199
Protects the confidentiality and/or integrity of organization-defined information at rest.
- 800-53 :: SC-28
- 800-53 Rev. 4 :: SC-28
- 800-53 Rev. 5 :: SC-28
- 800-53A :: SC-28.1
CCI-002475Implement cryptographic mechanisms to prevent unauthorized modification of organization-defined information when at rest on organization-defined system components.
- 800-53 Rev. 4 :: SC-28 (1)
- 800-53 Rev. 5 :: SC-28 (1)
CCI-002476Implement cryptographic mechanisms to prevent unauthorized disclosure of organization-defined information at rest on organization-defined system components.
- 800-53 Rev. 4 :: SC-28 (1)
- 800-53 Rev. 5 :: SC-28 (1)