Apple macOS 14 (Sonoma) Security Technical Implementation Guide
Pick two releases to diff their requirements.
Open a previous version of this STIG.
Digest of Updates No substantive changes
Comparison against the immediately-prior release (V1R1). Rule matching uses the Group Vuln ID. Content-change detection compares the rule’s description, check, and fix text after stripping inline markup — cosmetic-only edits aren’t flagged.
No substantive changes detected against the previous release. 159 rules matched cleanly.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-14-000001
- Vuln IDs
-
- V-259418
- Rule IDs
-
- SV-259418r940876_rule
Checks: C-63157r940874_chk
Verify the macOS system is configured to prevent Apple Watch from terminating a session lock with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAutoUnlock').js EOS If the result is not "false", this is a finding.
Fix: F-63065r940875_fix
Configure the macOS system to prevent Apple Watch from terminating a session lock by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-14-000002
- Vuln IDs
-
- V-259419
- Rule IDs
-
- SV-259419r940879_rule
Checks: C-63158r940877_chk
Verify the macOS system is configured to prompt users to enter a password to unlock the screen saver with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.screensaver')\ .objectForKey('askForPassword').js EOS If the result is not "true", this is a finding.
Fix: F-63066r940878_fix
Configure the macOS system to prompt users to enter a password to unlock the screen saver by installing the "com.apple.screensaver" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-14-000003
- Vuln IDs
-
- V-259420
- Rule IDs
-
- SV-259420r940882_rule
Checks: C-63159r940880_chk
Verify the macOS system is configured to initiate a session lock within five seconds of the screen saver starting with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let delay = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.screensaver')\ .objectForKey('askForPasswordDelay')) if ( delay <= 5 ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-63067r940881_fix
Configure the macOS system to initiate a session lock within five seconds of the screen saver starting by installing the "com.apple.screensaver" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000058
- Version
- APPL-14-000005
- Vuln IDs
-
- V-259421
- Rule IDs
-
- SV-259421r940885_rule
Checks: C-63160r940883_chk
Verify the macOS system is configured to lock the user session when a smart token is removed with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('tokenRemovalAction').js EOS If the result is not "1", this is a finding.
Fix: F-63068r940884_fix
Configure the macOS system to lock the user session when a smart token is removed by installing the "com.apple.security.smartcard" configuration profile. Note: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000060
- Version
- APPL-14-000007
- Vuln IDs
-
- V-259422
- Rule IDs
-
- SV-259422r940888_rule
Checks: C-63161r940886_chk
Verify the macOS system is configured to disable hot corners with the following command: /usr/bin/profiles -P -o stdout | /usr/bin/grep -Ec '"wvous-bl-corner" = 0|"wvous-br-corner" = 0|"wvous-tl-corner" = 0|"wvous-tr-corner" = 0' If the result is not "4", this is a finding.
Fix: F-63069r940887_fix
Configure the macOS system to disable hot corners by installing the "com.apple.ManagedClient.preferences" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000057
- Version
- APPL-14-000009
- Vuln IDs
-
- V-259423
- Rule IDs
-
- SV-259423r940891_rule
Checks: C-63162r940889_chk
Verify the macOS system is configured to prevent AdminHostInfo from being available at LoginWindow with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectIsForcedForKey('AdminHostInfo') EOS If the result is not "false", this is a finding.
Fix: F-63070r940890_fix
Configure the macOS system to prevent AdminHostInfo from being available at LoginWindow by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- AC-2
- Severity
- M
- CCI
- CCI-000016
- Version
- APPL-14-000012
- Vuln IDs
-
- V-259424
- Rule IDs
-
- SV-259424r940894_rule
Checks: C-63163r940892_chk
Verify if a password policy is enforced by a directory service by asking the system administrator (SA) or information system security officer (ISSO). If no policy is enforced by a directory service, a password policy can be set with the "pwpolicy" utility. The variable names may vary depending on how the policy was set. If there are no temporary or emergency accounts defined on the system, this is Not Applicable. To check if the password policy is configured to disable a temporary or emergency account after 72 hours, run the following command to output the password policy to the screen, substituting the correct user name in place of username: /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 If there is no output, and password policy is not controlled by a directory service, this is a finding. Otherwise, look for the line "<key>policyCategoryAuthentication</key>". In the array that follows, there should be a <dict> section that contains a check <string> that allows users to log in if "policyAttributeCurrentTime" is less than the result of adding "policyAttributeCreationTime" to 72 hours (259299 seconds). The check might use a variable defined in its "policyParameters" section. If the check does not exist or if the check adds too great an amount of time to "policyAttributeCreationTime", this is a finding.
Fix: F-63071r940893_fix
This setting may be enforced using local policy or by a directory service. To set local policy to disable a temporary or emergency user, create a plain text file containing the following: <dict> <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime+259299</string> <key>policyIdentifier</key> <string>Disable Tmp Accounts </string> </dict> </array> </dict> 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" and the path to the file in place of "/path/to/file". /usr/bin/pwpolicy -u username setaccountpolicies /path/to/file
- RMF Control
- AU-8
- Severity
- M
- CCI
- CCI-001891
- Version
- APPL-14-000014
- Vuln IDs
-
- V-259425
- Rule IDs
-
- SV-259425r940897_rule
Checks: C-63164r940895_chk
Verify the macOS system is configured to enforce time synchronization with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.timed')\ .objectForKey('TMAutomaticTimeOnlyEnabled').js EOS If the result is not "true", this is a finding.
Fix: F-63072r940896_fix
Configure the macOS system to enforce time synchronization by installing the "com.apple.timed" configuration profile.
- RMF Control
- SI-2
- Severity
- M
- CCI
- CCI-001233
- Version
- APPL-14-000015
- Vuln IDs
-
- V-259426
- Rule IDs
-
- SV-259426r940900_rule
Checks: C-63165r940898_chk
Verify the macOS system is configured with automated mechanisms to determine the state of system components. Ask the system administrator (SA) or information system security officer (ISSO) if the approved endpoint security solution is loaded on the system. If the installed components of the endpoint security solution are not at the DOD-approved minimal versions, this is a finding.
Fix: F-63073r940899_fix
Install the approved endpoint security solution onto the system.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-000016
- Vuln IDs
-
- V-259427
- Rule IDs
-
- SV-259427r940903_rule
Checks: C-63166r940901_chk
Verify the macOS system is configured to integrate into a directory service with the following command: /usr/bin/dscl localhost -list . \| /usr/bin/grep -qvE '(Contact\|Search\|Local\|^$)'; /bin/echo $? If the result is not "0", this is a finding.
Fix: F-63074r940902_fix
Configure the macOS system to integrate into an existing directory services infrastructure.
- RMF Control
- AC-7
- Severity
- M
- CCI
- CCI-000044
- Version
- APPL-14-000022
- Vuln IDs
-
- V-259428
- Rule IDs
-
- SV-259428r940906_rule
Checks: C-63167r940904_chk
Verify the macOS system is configured to limit consecutive failed log on attempts to three with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeMaximumFailedAuthentications"]/following-sibling::integer[1]/text()' - | /usr/bin/awk '{ if ($1 <= 3) {print "yes"} else {print "no"}}' If the result is not "yes", this is a finding.
Fix: F-63075r940905_fix
Configure the macOS system to limit consecutive failed log on attempts to three by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile or by a directory service.
- RMF Control
- AC-8
- Severity
- M
- CCI
- CCI-000048
- Version
- APPL-14-000023
- Vuln IDs
-
- V-259429
- Rule IDs
-
- SV-259429r940909_rule
Checks: C-63168r940907_chk
Verify the macOS system is configured to display the Standard Mandatory DOD Notice and Consent Banner before granting remote access to the operating system. Verify the operating system has the correct text listed in the "/etc/banner" file with the following command: /usr/bin/more /etc/banner The command must return the following text: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." If the operating system does not display a logon banner before granting remote access or the banner does not match the Standard Mandatory DOD Notice and Consent Banner, this is a finding. If the text in the "/etc/banner" file does not match the Standard Mandatory DOD Notice and Consent Banner, this is a finding.
Fix: F-63076r940908_fix
Configure the macOS system to display the Standard Mandatory DOD Notice and Consent Banner before granting remote access to the operating system by creating a text file containing the required DOD text. Name the file "banner" and place it in "/etc/".
- RMF Control
- AC-8
- Severity
- M
- CCI
- CCI-000048
- Version
- APPL-14-000024
- Vuln IDs
-
- V-259430
- Rule IDs
-
- SV-259430r940912_rule
Checks: C-63169r940910_chk
Verify the macOS system is configured to display the contents of "/etc/banner" before granting access to the system with the following command: /usr/sbin/sshd -G | /usr/bin/grep -c "^banner /etc/banner" If the command does not return "1", this is a finding.
Fix: F-63077r940911_fix
Configure the macOS system to display the contents of "/etc/banner" before granting access to the system by creating a plain text file in the /private/etc/ssh/sshd_config.d/ directory containing the following: banner /etc/banner
- RMF Control
- AC-8
- Severity
- M
- CCI
- CCI-000048
- Version
- APPL-14-000025
- Vuln IDs
-
- V-259431
- Rule IDs
-
- SV-259431r940915_rule
Checks: C-63170r940913_chk
Verify the macOS system is configured to display a policy banner with the following command: /bin/ls -ld /Library/Security/PolicyBanner.rtf* | /usr/bin/wc -l | /usr/bin/tr -d ' ' If "PolicyBanner.rtfd" does not exist, this is a finding. If the permissions for "PolicyBanner.rtfd" are not "644", 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-63078r940914_fix
Configure the macOS system to display a policy banner by creating an RTF file containing the required text. Name the file "PolicyBanner.rtfd" and place it in "/Library/Security/". Update the permissions of the "/Library/Security/PolicyBanner.rtfd" file with the following command: /usr/bin/sudo /bin/chmod 644 /Library/Security/PolicyBanner.rtfd
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-000030
- Vuln IDs
-
- V-259432
- Rule IDs
-
- SV-259432r940918_rule
Checks: C-63171r940916_chk
Verify the macOS system is configured without ACLs applied to log files with the following command: /bin/ls -le $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{print $1}' | /usr/bin/grep -c ":" If the result is not "0", this is a finding.
Fix: F-63079r940917_fix
Configure the macOS system without ACLs applied to log files with the following command: /bin/chmod -RN /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-000031
- Vuln IDs
-
- V-259433
- Rule IDs
-
- SV-259433r940921_rule
Checks: C-63172r940919_chk
Verify the macOS system is configured without ACLs applied to log folders with the following command: /bin/ls -lde /var/audit | /usr/bin/awk '{print $1}' | /usr/bin/grep -c ":" If the result is not "0", this is a finding.
Fix: F-63080r940920_fix
Configure the macOS system without ACLs applied to log folders with the following command: /bin/chmod -N /var/audit
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-000033
- Vuln IDs
-
- V-259434
- Rule IDs
-
- SV-259434r940924_rule
Checks: C-63173r940922_chk
Verify the macOS system is configured to disable filevault automatic login with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectForKey('DisableFDEAutoLogin').js EOS If the result is not "true", this is a finding.
Fix: F-63081r940923_fix
Configure the macOS system to disable filevault automatic login by installing the "com.apple.loginwindow" configuration profile. Note: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-14-000051
- Vuln IDs
-
- V-259435
- Rule IDs
-
- SV-259435r940927_rule
Checks: C-63174r940925_chk
Verify the macOS system is configured to set the SSHD ClientAliveInterval to 900 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/clientaliveinterval/{print $2}' If the result is not "900", this is a finding.
Fix: F-63082r940926_fix
Configure the macOS system to set the SSHD ClientAliveInterval to 900 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 /usr/bin/grep -qxF 'clientaliveinterval 900' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "clientaliveinterval 900" >> "${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
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-14-000052
- Vuln IDs
-
- V-259436
- Rule IDs
-
- SV-259436r940930_rule
Checks: C-63175r940928_chk
Verify the macOS system is configured to set the SSHD ClientAliveCountMax to 1 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/clientalivecountmax/{print $2}' If the result is not "1", this is a finding.
Fix: F-63083r940929_fix
Configure the macOS system to set the SSHD ClientAliveCountMax to 1 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 /usr/bin/grep -qxF 'clientalivecountmax 1' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "clientalivecountmax 1" >> "${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
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-14-000053
- Vuln IDs
-
- V-259437
- Rule IDs
-
- SV-259437r940933_rule
Checks: C-63176r940931_chk
Verify the macOS system is configured to set Login Grace Time to 30 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/logingracetime/{print $2}' If the result is not "30", this is a finding.
Fix: F-63084r940932_fix
Configure the macOS system to set Login Grace Time to 30 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 /usr/bin/grep -qxF 'logingracetime 30' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "logingracetime 30" >> "${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
- RMF Control
- AC-17
- Severity
- H
- CCI
- CCI-000068
- Version
- APPL-14-000054
- Vuln IDs
-
- V-259438
- Rule IDs
-
- SV-259438r945374_rule
Checks: C-63177r945373_chk
Verify the macOS system is configured to limit SSHD to FIPS-compliant connections with the following command: fips_sshd_config=("Ciphers aes128-gcm@openssh.com" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com" "HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com" "KexAlgorithms ecdh-sha2-nistp256" "MACs hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com" "CASignatureAlgorithms ecdsa-sha2-nistp256") 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.
Fix: F-63085r945374_fix
Configure the macOS system to limit SSHD to FIPS-compliant connections with the following command: fips_sshd_config="Ciphers aes128-gcm@openssh.com HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com KexAlgorithms ecdh-sha2-nistp256 MACs hmac-sha2-256 PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com CASignatureAlgorithms ecdsa-sha2-nistp256" /bin/echo "${fips_sshd_config}" > /etc/ssh/sshd_config.d/fips_sshd_config
- RMF Control
- AC-17
- Severity
- H
- CCI
- CCI-000068
- Version
- APPL-14-000057
- Vuln IDs
-
- V-259439
- Rule IDs
-
- SV-259439r945376_rule
Checks: C-63178r945375_chk
Verify the macOS system is configured to limit SSH to FIPS-compliant connections with the following command: fips_ssh_config="Host * Ciphers aes128-gcm@openssh.com HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com KexAlgorithms ecdh-sha2-nistp256 MACs hmac-sha2-256 PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com CASignatureAlgorithms ecdsa-sha2-nistp256" /usr/bin/grep -c "$fips_ssh_config" /etc/ssh/ssh_config.d/fips_ssh_config If the result is not "8", this is a finding.
Fix: F-63086r945376_fix
Configure the macOS system to limit SSH to FIPS-compliant connections with the following command: fips_ssh_config="Host * Ciphers aes128-gcm@openssh.com HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com KexAlgorithms ecdh-sha2-nistp256 MACs hmac-sha2-256 PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com CASignatureAlgorithms ecdsa-sha2-nistp256" /bin/echo "${fips_ssh_config}" > /etc/ssh/ssh_config.d/fips_ssh_config
- RMF Control
- AC-7
- Severity
- M
- CCI
- CCI-000044
- Version
- APPL-14-000060
- Vuln IDs
-
- V-259440
- Rule IDs
-
- SV-259440r940942_rule
Checks: C-63179r940940_chk
Verify the macOS system is configured to set account lockout time to 15 minutes with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="autoEnableInSeconds"]/following-sibling::integer[1]/text()' - | /usr/bin/awk '{ if ($1/60 >= 15 ) {print "yes"} else {print "no"}}' If the result is not "yes", this is a finding.
Fix: F-63087r940941_fix
Configure the macOS system to set account lockout time to 15 minutes by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile or by a directory service.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000057
- Version
- APPL-14-000070
- Vuln IDs
-
- V-259441
- Rule IDs
-
- SV-259441r940945_rule
Checks: C-63180r940943_chk
Verify the macOS system is configured to initiate the screen saver timeout after 15 minutes of inactivity with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let timeout = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.screensaver')\ .objectForKey('idleTime')) if ( timeout <= 900 ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-63088r940944_fix
Configure the macOS system to initiate the screen saver after 15 minutes of inactivity by installing the "com.apple.screensaver" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-000080
- Vuln IDs
-
- V-259442
- Rule IDs
-
- SV-259442r940948_rule
Checks: C-63181r940946_chk
Verify the macOS system is configured to enable SSH server for remote access sessions with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.openssh.sshd" => enabled' If the result is not "1", this is a finding.
Fix: F-63089r940947_fix
Configure the macOS system to enable SSH server for remote access sessions with the following command: /bin/launchctl enable system/com.openssh.sshd
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- APPL-14-000090
- Vuln IDs
-
- V-259443
- Rule IDs
-
- SV-259443r943108_rule
Checks: C-63182r943106_chk
Verify the macOS system is configured to disable login to other user's active and locked sessions with the following command: /usr/bin/security authorizationdb read system.login.screensaver 2>&1 | /usr/bin/grep -c '<string>authenticate-session-owner</string>' If the result is not "1", this is a finding.
Fix: F-63090r943107_fix
Configure the macOS system to disable login to other user's active and locked sessions with the following command: /usr/bin/security authorizationdb write system.login.screensaver "authenticate-session-owner"
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- APPL-14-000100
- Vuln IDs
-
- V-259444
- Rule IDs
-
- SV-259444r940954_rule
Checks: C-63183r940952_chk
Verify the macOS system is configured to disable root login with the following command: /usr/bin/dscl . -read /Users/root UserShell 2>&1 | /usr/bin/grep -c "/usr/bin/false" If the result is not "1", this is a finding.
Fix: F-63091r940953_fix
Configure the macOS system to disable root login with the following command: /usr/bin/dscl . -create /Users/root UserShell /usr/bin/false
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-14-000110
- Vuln IDs
-
- V-259445
- Rule IDs
-
- SV-259445r940957_rule
Checks: C-63184r940955_chk
Verify the macOS system is configured to set the SSH ServerAliveInterval option set to 900 with the following command: ret="pass" for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do sshCheck=$(/usr/bin/sudo -u $u /usr/bin/ssh -G . | /usr/bin/grep -c "^serveraliveinterval 900") if [[ "$sshCheck" == "0" ]]; then ret="fail" break fi done /bin/echo $ret If the result is not "pass", this is a finding.
Fix: F-63092r940956_fix
Configure the macOS system to set the SSH ServerAliveInterval option set to 900 with the following command: for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do config=$(/usr/bin/sudo -u $u /usr/bin/ssh -Gv . 2>&1 | /usr/bin/awk '/Reading configuration data/ {print $NF}'| /usr/bin/tr -d '\r') configarray=( ${(f)config} ) for c in $configarray; do /usr/bin/sudo -u $u /usr/bin/grep -q '^ServerAliveInterval' "$c" && /usr/bin/sed -i '' 's/.*ServerAliveInterval.*/ServerAliveInterval 900/' "$c" || /bin/echo 'ServerAliveInterval 900' >> "$c" done done
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-14-000120
- Vuln IDs
-
- V-259446
- Rule IDs
-
- SV-259446r940960_rule
Checks: C-63185r940958_chk
Verify the macOS system is configured to set the SSHD Channel Timeout to 900 with the following command: /usr/sbin/sshd -G | /usr/bin/awk -F "=" '/channeltimeout session:*/{print $2}' If the result is not "900", this is a finding.
Fix: F-63093r940959_fix
Configure the macOS system to set the SSHD Channel Timeout to 900 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 /usr/bin/grep -qxF 'channeltimeout session:*=900' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "channeltimeout session:*=900" >> "${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
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-14-000130
- Vuln IDs
-
- V-259447
- Rule IDs
-
- SV-259447r940963_rule
Checks: C-63186r940961_chk
Verify the macOS system is configured to set the SSHD unused connection timeout to 900 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/unusedconnectionetimeout/{print $2}' If the result is not "900", this is a finding.
Fix: F-63094r940962_fix
Configure the macOS system to set the SSHD unused connection timeout to 900 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 /usr/bin/grep -qxF 'unusedconnectionetimeout 900' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "unusedconnectionetimeout 900" >> "${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
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-14-000140
- Vuln IDs
-
- V-259448
- Rule IDs
-
- SV-259448r940966_rule
Checks: C-63187r940964_chk
Verify the macOS system is configured to set SSH Active Server Alive Maximum to 0 with the following command: ret="pass" for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do sshCheck=$(/usr/bin/sudo -u $u /usr/bin/ssh -G . | /usr/bin/grep -c "^serveralivecountmax 0") if [[ "$sshCheck" == "0" ]]; then ret="fail" break fi done /bin/echo $ret If the result is not "pass", this is a finding.
Fix: F-63095r940965_fix
Configure the macOS system to set SSH Active Server Alive Maximum to 0 with the following command: for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do config=$(/usr/bin/sudo -u $u /usr/bin/ssh -Gv . 2>&1 | /usr/bin/awk '/Reading configuration data/ {print $NF}'| /usr/bin/tr -d '\r') configarray=( ${(f)config} ) for c in $configarray; do /usr/bin/sudo -u $u /usr/bin/grep -q '^ServerAliveCountMax' "$c" && /usr/bin/sed -i '' 's/.*ServerAliveCountMax.*/ServerAliveCountMax 0/' "$c" || /bin/echo 'ServerAliveCountMax 0' >> "$c" done done
- RMF Control
- AC-12
- Severity
- M
- CCI
- CCI-002361
- Version
- APPL-14-000160
- Vuln IDs
-
- V-259449
- Rule IDs
-
- SV-259449r940969_rule
Checks: C-63188r940967_chk
Verify the macOS system is configured to enforce auto logout after 86400 seconds of inactivity with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('.GlobalPreferences')\ .objectForKey('com.apple.autologout.AutoLogOutDelay').js EOS If the result is not "86400", this is a finding.
Fix: F-63096r940968_fix
Configure the macOS system to enforce auto logout after 86400 seconds of inactivity by installing the "com.apple.GlobalPreferences" configuration profile.
- RMF Control
- AU-8
- Severity
- M
- CCI
- CCI-001891
- Version
- APPL-14-000170
- Vuln IDs
-
- V-259450
- Rule IDs
-
- SV-259450r940972_rule
Checks: C-63189r940970_chk
Verify the macOS system is configured to use an authorized time server with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('timeServer').js EOS If the result is not an authoritative time server which is synchronized with redundant United States Naval Observatory (USNO) time servers as designated for the appropriate DoD network, this is a finding.
Fix: F-63097r940971_fix
Configure the macOS system to use an authorized time server by installing the "com.apple.MCX" configuration profile.
- RMF Control
- AU-8
- Severity
- M
- CCI
- CCI-001891
- Version
- APPL-14-000180
- Vuln IDs
-
- V-259451
- Rule IDs
-
- SV-259451r940975_rule
Checks: C-63190r940973_chk
Verify the macOS system is configured to enable time synchronization daemon with the following command: /bin/launchctl list | /usr/bin/grep -c com.apple.timed If the result is not "1", this is a finding.
Fix: F-63098r940974_fix
Configure the macOS system to enable time synchronization daemon with the following command: /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.timed.plist
- RMF Control
- AC-2
- Severity
- M
- CCI
- CCI-000018
- Version
- APPL-14-001001
- Vuln IDs
-
- V-259452
- Rule IDs
-
- SV-259452r940978_rule
Checks: C-63191r940976_chk
Verify the macOS system is configured to audit privileged access with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec 'ad' If "ad" is not listed in the output, this is a finding.
Fix: F-63099r940977_fix
Configure the macOS system to audit privileged access with the following command: /usr/bin/grep -qE "^flags.*[^-]ad" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.
- RMF Control
- AC-17
- Severity
- M
- CCI
- CCI-000067
- Version
- APPL-14-001002
- Vuln IDs
-
- V-259453
- Rule IDs
-
- SV-259453r940981_rule
Checks: C-63192r940979_chk
Verify the macOS system is configured to audit all log on and log out events with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '^lo' If the result is not "1", this is a finding.
Fix: F-63100r940980_fix
Configure the macOS system to audit all log on and log out events with the following command: /usr/bin/grep -qE "^flags.*[^-]lo" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,lo/' /etc/security/audit_control; /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000130
- Version
- APPL-14-001003
- Vuln IDs
-
- V-259454
- Rule IDs
-
- SV-259454r940984_rule
Checks: C-63193r940982_chk
Verify the macOS system is configured to enable the auditd service with the following command: LAUNCHD_RUNNING=$(/bin/launchctl list | /usr/bin/grep -c com.apple.auditd) if [[ $LAUNCHD_RUNNING == 1 ]] && [[ -e /etc/security/audit_control ]]; then echo "pass" else echo "fail" fi If the result is not "pass", this is a finding.
Fix: F-63101r940983_fix
Configure the macOS system to enable the auditd service with the following command: LAUNCHD_RUNNING=$(/bin/launchctl list | /usr/bin/grep -c com.apple.auditd) if [[ ! $LAUNCHD_RUNNING == 1 ]]; then /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist fi if [[ ! -e /etc/security/audit_control ]] && [[ -e /etc/security/audit_control.example ]];then /bin/cp /etc/security/audit_control.example /etc/security/audit_control else /usr/bin/touch /etc/security/audit_control fi
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000140
- Version
- APPL-14-001010
- Vuln IDs
-
- V-259455
- Rule IDs
-
- SV-259455r940987_rule
Checks: C-63194r940985_chk
Verify the macOS system is configured to shut down upon audit failure with the following command: /usr/bin/awk -F':' '/^policy/ {print $NF}' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec 'ahlt' If the result is not "1", this is a finding.
Fix: F-63102r940986_fix
Configure the macOS system to shut down upon audit failure with the following command: /usr/bin/sed -i.bak 's/^policy.*/policy: ahlt,argv/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001012
- Vuln IDs
-
- V-259456
- Rule IDs
-
- SV-259456r940990_rule
Checks: C-63195r940988_chk
Verify the macOS system is configured with audit log files owned by root with the following command: /bin/ls -n $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{s+=$3} END {print s}' If the result is not "0", this is a finding.
Fix: F-63103r940989_fix
Configure the macOS system with audit log files owned by root with the following command: /usr/sbin/chown -R root /var/audit/*
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001013
- Vuln IDs
-
- V-259457
- Rule IDs
-
- SV-259457r940993_rule
Checks: C-63196r940991_chk
Verify the macOS system is configured with audit log folders owned by root with the following command: /bin/ls -dn $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{print $3}' If the result is not "0", this is a finding.
Fix: F-63104r940992_fix
Configure the macOS system with audit log folders owned by root with the following command: /usr/sbin/chown root /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001014
- Vuln IDs
-
- V-259458
- Rule IDs
-
- SV-259458r940996_rule
Checks: C-63197r940994_chk
Verify the macOS system is configured with audit log files group-owned by wheel with the following command: /bin/ls -n $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{s+=$4} END {print s}' If the result is not "0", this is a finding.
Fix: F-63105r940995_fix
Configure the macOS system with audit log files group-owned by wheel with the following command: /usr/bin/chgrp -R wheel /var/audit/*
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001015
- Vuln IDs
-
- V-259459
- Rule IDs
-
- SV-259459r940999_rule
Checks: C-63198r940997_chk
Verify the macOS system is configured with audit log folders group-owned by wheel with the following command: /bin/ls -dn $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{print $4}' If the result is not "0", this is a finding.
Fix: F-63106r940998_fix
Configure the macOS system with audit log folders group-owned by wheel with the following command: /usr/bin/chgrp wheel /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001016
- Vuln IDs
-
- V-259460
- Rule IDs
-
- SV-259460r941002_rule
Checks: C-63199r941000_chk
Verify the macOS system is configured with audit log files set to mode 440 or less with the following command: /bin/ls -l $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '!/-r--r-----|current|total/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-63107r941001_fix
Configure the macOS system with audit log files set to mode 440 with the following command: /bin/chmod 440 /var/audit/*
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001017
- Vuln IDs
-
- V-259461
- Rule IDs
-
- SV-259461r941005_rule
Checks: C-63200r941003_chk
Verify the macOS system is configured with audit log folders set to mode 700 or less permissive with the following command: /usr/bin/stat -f %A $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') If the result is not a mode of 700 or less permissive, this is a finding.
Fix: F-63108r941004_fix
Configure the macOS system with audit log folders set to mode 700 with the following command: /bin/chmod 700 /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001020
- Vuln IDs
-
- V-259462
- Rule IDs
-
- SV-259462r941008_rule
Checks: C-63201r941006_chk
Verify the macOS system is configured to audit all deletions of object attributes with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-fd' If the result is not "1", this is a finding.
Fix: F-63109r941007_fix
Configure the macOS system to audit all deletions of object attributes with the following command: /usr/bin/grep -qE "^flags.*-fd" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-fd/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001021
- Vuln IDs
-
- V-259463
- Rule IDs
-
- SV-259463r941011_rule
Checks: C-63202r941009_chk
Verify the macOS system is configured to audit all changes of object attributes with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '^fm' If the result is not "1", this is a finding.
Fix: F-63110r941010_fix
Configure the macOS system to audit all changes of object attributes with the following command: /usr/bin/grep -qE "^flags.*fm" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001022
- Vuln IDs
-
- V-259464
- Rule IDs
-
- SV-259464r941014_rule
Checks: C-63203r941012_chk
Verify the macOS system is configured to audit all failed read actions on the system with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-fr' If the result is not "1", this is a finding.
Fix: F-63111r941013_fix
Configure the macOS system to audit all failed read actions on the system with the following command: /usr/bin/grep -qE "^flags.*-fr" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-fr/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001023
- Vuln IDs
-
- V-259465
- Rule IDs
-
- SV-259465r941017_rule
Checks: C-63204r941015_chk
Verify the macOS system is configured to audit all failed write actions on the system with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-fw' If the result is not "1", this is a finding.
Fix: F-63112r941016_fix
Configure the macOS system to audit all failed write actions on the system with the following command: /usr/bin/grep -qE "^flags.*-fw" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-fw/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000172
- Version
- APPL-14-001024
- Vuln IDs
-
- V-259466
- Rule IDs
-
- SV-259466r941020_rule
Checks: C-63205r941018_chk
Verify the macOS system is configured to audit all failed program execution on the system with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-ex' If the result is not "1", this is a finding.
Fix: F-63113r941019_fix
Configure the macOS system to audit all failed program execution on the system with the following command: /usr/bin/grep -qE "^flags.*-ex" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-ex/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-4
- Severity
- L
- CCI
- CCI-001849
- Version
- APPL-14-001029
- Vuln IDs
-
- V-259467
- Rule IDs
-
- SV-259467r941023_rule
Checks: C-63206r941021_chk
Verify the macOS system is configured audit retention to seven days with the following command: /usr/bin/awk -F: '/expire-after/{print $2}' /etc/security/audit_control If the result is not "7d", this is a finding.
Fix: F-63114r941022_fix
Configure the macOS system to set audit retention to seven days with the following command: /usr/bin/sed -i.bak 's/^expire-after.*/expire-after:7d/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000139
- Version
- APPL-14-001030
- Vuln IDs
-
- V-259468
- Rule IDs
-
- SV-259468r941026_rule
Checks: C-63207r941024_chk
Verify the macOS system is configured to require a minimum of 25 percent free disk space for audit record storage with the following command: /usr/bin/awk -F: '/^minfree/{print $2}' /etc/security/audit_control If the result is not "25", this is a finding.
Fix: F-63115r941025_fix
Configure the macOS system to require a minimum of 25 percent free disk space for audit record storage with the following command: /usr/bin/sed -i.bak 's/.*minfree.*/minfree:25/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000140
- Version
- APPL-14-001031
- Vuln IDs
-
- V-259469
- Rule IDs
-
- SV-259469r941029_rule
Checks: C-63208r941027_chk
Verify the macOS system is configured to produce audit failure notification with the following command: /usr/bin/grep -c "logger -s -p" /etc/security/audit_warn If the result is not "1", this is a finding.
Fix: F-63116r941028_fix
Configure the macOS system to produce audit failure notification with the following command: /usr/bin/sed -i.bak 's/logger -p/logger -s -p/' /etc/security/audit_warn; /usr/sbin/audit -s
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000172
- Version
- APPL-14-001044
- Vuln IDs
-
- V-259470
- Rule IDs
-
- SV-259470r941032_rule
Checks: C-63209r941030_chk
Verify the macOS system is configured to audit logon events with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec 'aa' If the result is not "1", this is a finding.
Fix: F-63117r941031_fix
Configure the macOS system to audit logon events with the following command: /usr/bin/grep -qE "^flags.*[^-]aa" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000185
- Version
- APPL-14-001060
- Vuln IDs
-
- V-259471
- Rule IDs
-
- SV-259471r941035_rule
Checks: C-63210r941033_chk
Verify the macOS system is configured to check the revocation status of user certificates with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('checkCertificateTrust').js EOS If the result is not "2", this is a finding.
Fix: F-63118r941034_fix
Configure the macOS system to check the revocation status of user certificates by installing the "com.apple.security.smartcard" configuration profile. Note: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000770
- Version
- APPL-14-001100
- Vuln IDs
-
- V-259472
- Rule IDs
-
- SV-259472r941038_rule
Checks: C-63211r941036_chk
Verify the macOS system is configured to disable root login for SSH with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/permitrootlogin/{print $2}' If the result is not "no", this is a finding.
Fix: F-63119r941037_fix
Configure the macOS system to disable root login 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 /usr/bin/grep -qxF 'permitrootlogin no' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "permitrootlogin 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
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001110
- Vuln IDs
-
- V-259473
- Rule IDs
-
- SV-259473r941041_rule
Checks: C-63212r941039_chk
Verify the macOS system is configured with the audit_control group to wheel with the following command: /bin/ls -dn /etc/security/audit_control | /usr/bin/awk '{print $4}' If the result is not "0", this is a finding.
Fix: F-63120r941040_fix
Configure the macOS system with the audit_control group to wheel with the following command: /usr/bin/chgrp wheel /etc/security/audit_control
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001120
- Vuln IDs
-
- V-259474
- Rule IDs
-
- SV-259474r941044_rule
Checks: C-63213r941042_chk
Verify the macOS system is configured with the audit_control owner to root with the following command: /bin/ls -dn /etc/security/audit_control | /usr/bin/awk '{print $3}' If the result is not "0", this is a finding.
Fix: F-63121r941043_fix
Configure the macOS system with the audit_control owner to root with the following command: /usr/sbin/chown root /etc/security/audit_control
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001130
- Vuln IDs
-
- V-259475
- Rule IDs
-
- SV-259475r941047_rule
Checks: C-63214r941045_chk
Verify the macOS system is configured audit_control to mode 440 or less with the following command: /bin/ls -l /etc/security/audit_control | /usr/bin/awk '!/-r--[r-]-----|current|total/{print $1}' | /usr/bin/wc -l | /usr/bin/xargs If the results are not "0", this is a finding.
Fix: F-63122r941046_fix
Configure the macOS system with the audit_control to mode 440 with the following command: /bin/chmod 440 /etc/security/audit_control
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-14-001140
- Vuln IDs
-
- V-259476
- Rule IDs
-
- SV-259476r941050_rule
Checks: C-63215r941048_chk
Verify the macOS system is configured without ACLs applied to audit_control with the following command: /bin/ls -le /etc/security/audit_control | /usr/bin/awk '{print $1}' | /usr/bin/grep -c ":" If the result is not "0", this is a finding.
Fix: F-63123r941049_fix
Configure the macOS system without ACLs applied to audit_control with the following command: /bin/chmod -N /etc/security/audit_control
- RMF Control
- IA-5
- Severity
- H
- CCI
- CCI-000186
- Version
- APPL-14-001150
- Vuln IDs
-
- V-259477
- Rule IDs
-
- SV-259477r941053_rule
Checks: C-63216r941051_chk
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.
Fix: F-63124r941052_fix
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
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002001
- Vuln IDs
-
- V-259478
- Rule IDs
-
- SV-259478r941056_rule
Checks: C-63217r941054_chk
Verify the macOS system is configured to disable Server Message Block sharing with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.smbd" => disabled' If the result is not "1", this is a finding.
Fix: F-63125r941055_fix
Configure the macOS system to disable Server Message Block sharing with the following command: /bin/launchctl disable system/com.apple.smbd The system may need to be restarted for the update to take effect.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002003
- Vuln IDs
-
- V-259479
- Rule IDs
-
- SV-259479r941059_rule
Checks: C-63218r941057_chk
Verify the macOS system is configured to disable network file system service with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.nfsd" => disabled' If the result is not "1", this is a finding.
Fix: F-63126r941058_fix
Configure the macOS system to disable network file system service with the following command: /bin/launchctl disable system/com.apple.nfsd The system may need to be restarted for the update to take effect.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002004
- Vuln IDs
-
- V-259480
- Rule IDs
-
- SV-259480r941062_rule
Checks: C-63219r941060_chk
Verify the macOS system is configured to disable Location Services with the following command: /usr/bin/sudo -u _locationd /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.locationd')\ .objectForKey('LocationServicesEnabled').js EOS If the result is not "false", this is a finding.
Fix: F-63127r941061_fix
Configure the macOS system to disable Location Services with the following command: /usr/bin/defaults write /var/db/locationd/Library/Preferences/ByHost/com.apple.locationd LocationServicesEnabled -bool false; /bin/launchctl kickstart -k system/com.apple.locationd The system may need to be restarted for the update to take effect.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002005
- Vuln IDs
-
- V-259481
- Rule IDs
-
- SV-259481r941065_rule
Checks: C-63220r941063_chk
Verify the macOS system is configured to disable Bonjour multicast with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.mDNSResponder')\ .objectForKey('NoMulticastAdvertisements').js EOS If the result is not "true", this is a finding.
Fix: F-63128r941064_fix
Configure the macOS system to disable Bonjour multicast by installing the "com.apple.mDNSResponder" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002006
- Vuln IDs
-
- V-259482
- Rule IDs
-
- SV-259482r941068_rule
Checks: C-63221r941066_chk
Verify the macOS system is configured to disable Unix-to-Unix copy protocol service with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.uucp" => disabled' If the result is not "1", this is a finding.
Fix: F-63129r941067_fix
Configure the macOS system to disable Unix-to-Unix copy protocol service with the following command: /bin/launchctl disable system/com.apple.uucp The system may need to be restarted for the update to take effect.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002007
- Vuln IDs
-
- V-259483
- Rule IDs
-
- SV-259483r941071_rule
Checks: C-63222r941069_chk
Verify the macOS system is configured to disable Internet Sharing with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('forceInternetSharingOff').js EOS If the result is not "true", this is a finding.
Fix: F-63130r941070_fix
Configure the macOS system to disable Internet Sharing by installing the "com.apple.MCX" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002008
- Vuln IDs
-
- V-259484
- Rule IDs
-
- SV-259484r941074_rule
Checks: C-63223r941072_chk
Verify the macOS system is configured to disable the built-in web server with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"org.apache.httpd" => disabled' If the result is not "1", this is a finding.
Fix: F-63131r941073_fix
Configure the macOS system to disable the built-in web server with the following command: /bin/launchctl disable system/org.apache.httpd The system may need to be restarted for the update to take effect.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002009
- Vuln IDs
-
- V-259485
- Rule IDs
-
- SV-259485r941077_rule
Checks: C-63224r941075_chk
Verify the macOS system is configured to disable AirDrop with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAirDrop').js EOS If the result is not "false", this is a finding.
Fix: F-63132r941076_fix
Configure the macOS system to disable AirDrop by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002010
- Vuln IDs
-
- V-259486
- Rule IDs
-
- SV-259486r945377_rule
Checks: C-63225r941078_chk
Verify the macOS system is configured to disable FaceTime.app with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('familyControlsEnabled')) let pathlist = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('pathBlackList').js for ( let app in pathlist ) { if ( ObjC.unwrap(pathlist[app]) == "/Applications/FaceTime.app" && pref1 == true ){ return("true") } } return("false") } EOS If the result is not "true", this is a finding.
Fix: F-63133r941079_fix
Configure the macOS system to disable FaceTime.app by installing the "com.apple.applicationaccess.new" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002012
- Vuln IDs
-
- V-259487
- Rule IDs
-
- SV-259487r941083_rule
Checks: C-63226r941081_chk
Verify the macOS system is configured to disable iCloud Calendar services with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudCalendar').js EOS If the result is not "false", this is a finding.
Fix: F-63134r941082_fix
Configure the macOS system to disable iCloud Calendar services by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002013
- Vuln IDs
-
- V-259488
- Rule IDs
-
- SV-259488r941086_rule
Checks: C-63227r941084_chk
Verify the macOS system is configured to disable iCloud Reminders with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudReminders').js EOS If the result is not "false", this is a finding.
Fix: F-63135r941085_fix
Configure the macOS system to disable iCloud Reminders by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002014
- Vuln IDs
-
- V-259489
- Rule IDs
-
- SV-259489r941089_rule
Checks: C-63228r941087_chk
Verify the macOS system is configured to disable iCloud Address Book with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudAddressBook').js EOS If the result is not "false", this is a finding.
Fix: F-63136r941088_fix
Configure the macOS system to disable iCloud Address Book by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002015
- Vuln IDs
-
- V-259490
- Rule IDs
-
- SV-259490r941092_rule
Checks: C-63229r941090_chk
Verify the macOS system is configured to disable iCloud Mail with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudMail').js EOS If the result is not "false", this is a finding.
Fix: F-63137r941091_fix
Configure the macOS system to disable iCloud Mail by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002016
- Vuln IDs
-
- V-259491
- Rule IDs
-
- SV-259491r941095_rule
Checks: C-63230r941093_chk
Verify the macOS system is configured to disable iCloud Notes with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudNotes').js EOS If the result is not "false", this is a finding.
Fix: F-63138r941094_fix
Configure the macOS system to disable iCloud Notes by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002017
- Vuln IDs
-
- V-259492
- Rule IDs
-
- SV-259492r941098_rule
Checks: C-63231r941096_chk
Verify the macOS system is configured to disable the camera with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCamera').js EOS If the result is not "false", this is a finding.
Fix: F-63139r941097_fix
Configure the macOS system to disable the camera by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002020
- Vuln IDs
-
- V-259493
- Rule IDs
-
- SV-259493r941101_rule
Checks: C-63232r941099_chk
Verify the macOS system is configured to disable Siri with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAssistant').js EOS If the result is not "false", this is a finding.
Fix: F-63140r941100_fix
Configure the macOS system to disable Siri by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-14-002021
- Vuln IDs
-
- V-259494
- Rule IDs
-
- SV-259494r941104_rule
Checks: C-63233r941102_chk
Verify the macOS system is configured to disable sending diagnostic and usage data to Apple with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SubmitDiagInfo')\ .objectForKey('AutoSubmit').js let pref2 = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowDiagnosticSubmission').js if ( pref1 == false && pref2 == false ){ return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-63141r941103_fix
Configure the macOS system to disable sending diagnostic and usage data to Apple by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002022
- Vuln IDs
-
- V-259495
- Rule IDs
-
- SV-259495r941107_rule
Checks: C-63234r941105_chk
Verify the macOS system is configured to disable Remote Apple Events with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.AEServer" => disabled' If the result is not "1", this is a finding.
Fix: F-63142r941106_fix
Configure the macOS system to disable Remote Apple Events with the following commands: /usr/sbin/systemsetup -setremoteappleevents off /bin/launchctl disable system/com.apple.AEServer Note: Systemsetup with -setremoteappleevents flag will fail unless Full Disk Access to systemsetup or its parent process is granted. This requires supervision.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002035
- Vuln IDs
-
- V-259496
- Rule IDs
-
- SV-259496r941110_rule
Checks: C-63235r941108_chk
Verify the macOS system is configured to disable Apple ID setup during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipCloudSetup').js EOS If the result is not "true", this is a finding.
Fix: F-63143r941109_fix
Configure the macOS system to disable Apple ID setup during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002036
- Vuln IDs
-
- V-259497
- Rule IDs
-
- SV-259497r941113_rule
Checks: C-63236r941111_chk
Verify the macOS system is configured to disable Privacy Setup services during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipPrivacySetup').js EOS If the result is not "true", this is a finding.
Fix: F-63144r941112_fix
Configure the macOS system to disable Privacy Setup services during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002037
- Vuln IDs
-
- V-259498
- Rule IDs
-
- SV-259498r941116_rule
Checks: C-63237r941114_chk
Verify the macOS system is configured to disable iCloud Storage Setup during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipiCloudStorageSetup').js EOS If the result is not "true", this is a finding.
Fix: F-63145r941115_fix
Configure the macOS system to disable iCloud Storage Setup during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- IA-5
- Severity
- H
- CCI
- CCI-000197
- Version
- APPL-14-002038
- Vuln IDs
-
- V-259499
- Rule IDs
-
- SV-259499r941119_rule
Checks: C-63238r941117_chk
Verify the macOS system is configured to disable trivial file transfer protocol 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.
Fix: F-63146r941118_fix
Configure the macOS system to disable trivial file transfer protocol 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.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002039
- Vuln IDs
-
- V-259500
- Rule IDs
-
- SV-259500r941122_rule
Checks: C-63239r941120_chk
Verify the macOS system is configured to disable Siri Setup during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipSiriSetup').js EOS If the result is not "true", this is a finding.
Fix: F-63147r941121_fix
Configure the macOS system to disable Siri Setup during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002040
- Vuln IDs
-
- V-259501
- Rule IDs
-
- SV-259501r941125_rule
Checks: C-63240r941123_chk
Verify the macOS system is configured to disable iCloud Keychain synchronization with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudKeychainSync').js EOS If the result is not "false", this is a finding.
Fix: F-63148r941124_fix
Configure the macOS system to disable iCloud Keychain synchronization by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002041
- Vuln IDs
-
- V-259502
- Rule IDs
-
- SV-259502r941128_rule
Checks: C-63241r941126_chk
Verify the macOS system is configured to disable iCloud Document synchronization with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudDocumentSync').js EOS If the result is not "false", this is a finding.
Fix: F-63149r941127_fix
Configure the macOS system to disable iCloud Document synchronization by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002042
- Vuln IDs
-
- V-259503
- Rule IDs
-
- SV-259503r941131_rule
Checks: C-63242r941129_chk
Verify the macOS system is configured to disable iCloud Bookmarks with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudBookmarks').js EOS If the result is not "false", this is a finding.
Fix: F-63150r941130_fix
Configure the macOS system to disable iCloud Bookmarks by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002043
- Vuln IDs
-
- V-259504
- Rule IDs
-
- SV-259504r941134_rule
Checks: C-63243r941132_chk
Verify the macOS system is configured to disable the iCloud Photo Library with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudPhotoLibrary').js EOS If the result is not "false", this is a finding.
Fix: F-63151r941133_fix
Configure the macOS system to disable the iCloud Photo Library by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002050
- Vuln IDs
-
- V-259505
- Rule IDs
-
- SV-259505r941137_rule
Checks: C-63244r941135_chk
Verify the macOS system is configured to disable Screen Sharing and Apple Remote Desktop with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.screensharing" => disabled' If the result is not "1", this is a finding.
Fix: F-63152r941136_fix
Configure the macOS system to disable Screen Sharing and Apple Remote Desktop with the following command: /bin/launchctl disable system/com.apple.screensharing The system may need to be restarted for the update to take effect. Note: This will apply to the whole system.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002051
- Vuln IDs
-
- V-259506
- Rule IDs
-
- SV-259506r941140_rule
Checks: C-63245r941138_chk
Verify the macOS system is configured to disable the TouchID System Settings pane with the following command: /usr/bin/profiles show -output stdout-xml | /usr/bin/xmllint --xpath '//key[text()="DisabledSystemSettings"]/following-sibling::*[1]' - | /usr/bin/grep -c "com.apple.Touch-ID-Settings.extension" If the result is not "1", this is a finding.
Fix: F-63153r941139_fix
Configure the macOS system to disable the TouchID System Settings pane by installing the "com.apple.systempreferences" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002052
- Vuln IDs
-
- V-259507
- Rule IDs
-
- SV-259507r941143_rule
Checks: C-63246r941141_chk
Verify the macOS system is configured to disable the System Settings pane for Wallet and Apple Pay with the following command: /usr/bin/profiles show -output stdout-xml | /usr/bin/xmllint --xpath '//key[text()="DisabledSystemSettings"]/following-sibling::*[1]' - | /usr/bin/grep -c "com.apple.WalletSettingsExtension" If the result is not "1", this is a finding.
Fix: F-63154r941142_fix
Configure the macOS system to disable the System Settings pane for Wallet and Apple Pay by installing the "com.apple.systempreferences" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002053
- Vuln IDs
-
- V-259508
- Rule IDs
-
- SV-259508r941146_rule
Checks: C-63247r941144_chk
Verify the macOS system is configured to disable the system settings pane for Siri with the following command: /usr/bin/profiles show -output stdout-xml | /usr/bin/xmllint --xpath '//key[text()="DisabledSystemSettings"]/following-sibling::*[1]' - | /usr/bin/grep -c com.apple.Siri-Settings.extension If the result is not "1", this is a finding.
Fix: F-63155r941145_fix
Configure the macOS system to disable the system settings pane for Siri by installing the "com.apple.systempreferences" configuration profile.
- RMF Control
- CM-5
- Severity
- H
- CCI
- CCI-001749
- Version
- APPL-14-002060
- Vuln IDs
-
- V-259509
- Rule IDs
-
- SV-259509r941149_rule
Checks: C-63248r941147_chk
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.
Fix: F-63156r941148_fix
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
- RMF Control
- SC-8
- Severity
- H
- CCI
- CCI-002418
- Version
- APPL-14-002062
- Vuln IDs
-
- V-259510
- Rule IDs
-
- SV-259510r941152_rule
Checks: C-63249r941150_chk
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.
Fix: F-63157r941151_fix
Configure the macOS system to disable Bluetooth by installing the "com.apple.MCXBluetooth" configuration profiles.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001813
- Version
- APPL-14-002063
- Vuln IDs
-
- V-259511
- Rule IDs
-
- SV-259511r941155_rule
Checks: C-63250r941153_chk
Verify the macOS system is configured to disable the guest account with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('DisableGuestAccount')) let pref2 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('EnableGuestAccount')) if ( pref1 == true && pref2 == false ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-63158r941154_fix
Configure the macOS system to disable the guest account by installing the "com.apple.MCX" configuration profile.
- RMF Control
- CM-5
- Severity
- H
- CCI
- CCI-001749
- Version
- APPL-14-002064
- Vuln IDs
-
- V-259512
- Rule IDs
-
- SV-259512r941158_rule
Checks: C-63251r941156_chk
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.
Fix: F-63159r941157_fix
Configure the macOS system to enable gatekeeper with the following command: /usr/sbin/spctl --global-enable
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-002066
- Vuln IDs
-
- V-259513
- Rule IDs
-
- SV-259513r941161_rule
Checks: C-63252r941159_chk
Verify the macOS system is configured to disable unattended or automatic logon 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.
Fix: F-63160r941160_fix
Configure the macOS system to disable unattended or automatic logon to the system by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-002068
- Vuln IDs
-
- V-259514
- Rule IDs
-
- SV-259514r941164_rule
Checks: C-63253r941162_chk
Verify the macOS system is configured so that permissions are set correctly on user home directories with the following command: /usr/bin/find /System/Volumes/Data/Users -mindepth 1 -maxdepth 1 -type d ! \( -perm 700 -o -perm 711 \) | /usr/bin/grep -v "Shared" | /usr/bin/grep -v "Guest" | /usr/bin/wc -l | /usr/bin/xargs If the result is not "0", this is a finding.
Fix: F-63161r941163_fix
Configure the macOS system to set the appropriate permissions for each user on the system with the following command: IFS=$'\n' for userDirs in $( /usr/bin/find /System/Volumes/Data/Users -mindepth 1 -maxdepth 1 -type d ! \( -perm 700 -o -perm 711 \) | /usr/bin/grep -v "Shared" | /usr/bin/grep -v "Guest" ); do /bin/chmod og-rwx "$userDirs" done unset IFS
- RMF Control
- AC-6
- Severity
- H
- CCI
- CCI-002235
- Version
- APPL-14-002069
- Vuln IDs
-
- V-259515
- Rule IDs
-
- SV-259515r941167_rule
Checks: C-63254r941165_chk
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 done echo $result If the result is not "1", this is a finding.
Fix: F-63162r941166_fix
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" 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 /usr/bin/security -q authorizationdb write "$section" < "/tmp/$section.plist" done
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002080
- Vuln IDs
-
- V-259516
- Rule IDs
-
- SV-259516r941170_rule
Checks: C-63255r941168_chk
Verify the macOS system is configured to disable Airplay Receiver with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAirPlayIncomingRequests').js EOS If the result is not "false", this is a finding.
Fix: F-63163r941169_fix
Configure the macOS system to disable Airplay Receiver by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-14-002090
- Vuln IDs
-
- V-259517
- Rule IDs
-
- SV-259517r941173_rule
Checks: C-63256r941171_chk
Verify the macOS system is configured to disable TouchID for unlocking the device with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowFingerprintForUnlock').js EOS If the result is not "false", this is a finding.
Fix: F-63164r941172_fix
Configure the macOS system to disable TouchID for unlocking the device by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002100
- Vuln IDs
-
- V-259518
- Rule IDs
-
- SV-259518r941176_rule
Checks: C-63257r941174_chk
Verify the macOS system is configured to disable media sharing with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.preferences.sharing.SharingPrefsExtension')\ .objectForKey('homeSharingUIStatus')) let pref2 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.preferences.sharing.SharingPrefsExtension')\ .objectForKey('legacySharingUIStatus')) let pref3 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.preferences.sharing.SharingPrefsExtension')\ .objectForKey('mediaSharingUIStatus')) if ( pref1 == 0 && pref2 == 0 && pref3 == 0 ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-63165r941175_fix
Configure the macOS system to disable media sharing by installing the "com.apple.preferences.sharing.SharingPrefsExtension" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-002110
- Vuln IDs
-
- V-259519
- Rule IDs
-
- SV-259519r941179_rule
Checks: C-63258r941177_chk
Verify the macOS system is configured to disable Bluetooth sharing with the following command: /usr/bin/sudo -u "$CURRENT_USER" /usr/bin/defaults -currentHost read com.apple.Bluetooth PrefKeyServicesEnabled If the result is not "0", this is a finding.
Fix: F-63166r941178_fix
Configure the macOS system to disable Bluetooth sharing with the following command: /usr/bin/sudo -u "$CURRENT_USER" /usr/bin/defaults -currentHost write com.apple.Bluetooth PrefKeyServicesEnabled -bool false
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002120
- Vuln IDs
-
- V-259520
- Rule IDs
-
- SV-259520r941182_rule
Checks: C-63259r941180_chk
Verify the macOS system is configured to disable account modification with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAccountModification').js EOS If the result is not "false", this is a finding.
Fix: F-63167r941181_fix
Configure the macOS system to disable account modification by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002130
- Vuln IDs
-
- V-259521
- Rule IDs
-
- SV-259521r941185_rule
Checks: C-63260r941183_chk
Verify the macOS system is configured to disable CD/DVD Sharing with the following command: /usr/bin/pgrep -q ODSAgent; /bin/echo $? If the result is not "1", this is a finding.
Fix: F-63168r941184_fix
Configure the macOS system to disable CD/DVD Sharing with the following command: /bin/launchctl unload /System/Library/LaunchDaemons/com.apple.ODSAgent.plist
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002140
- Vuln IDs
-
- V-259522
- Rule IDs
-
- SV-259522r941188_rule
Checks: C-63261r941186_chk
Verify the macOS system is configured to disable content caching service with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowContentCaching').js EOS If the result is not "false", this is a finding.
Fix: F-63169r941187_fix
Configure the macOS system to disable content caching service by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002150
- Vuln IDs
-
- V-259523
- Rule IDs
-
- SV-259523r941191_rule
Checks: C-63262r941189_chk
Verify the macOS system is configured to disable iCloud desktop and document folder synchronization with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudDesktopAndDocuments').js EOS If the result is not "false", this is a finding.
Fix: F-63170r941190_fix
Configure the macOS system to disable iCloud desktop and document folder synchronization by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002160
- Vuln IDs
-
- V-259524
- Rule IDs
-
- SV-259524r941194_rule
Checks: C-63263r941192_chk
Verify the macOS system is configured to disable iCloud Game Center with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowGameCenter').js EOS If the result is not "false", this is a finding.
Fix: F-63171r941193_fix
Configure the macOS system to disable iCloud Game Center by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002170
- Vuln IDs
-
- V-259525
- Rule IDs
-
- SV-259525r941197_rule
Checks: C-63264r941195_chk
Verify the macOS system is configured to disable the iCloud Private Relay with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudPrivateRelay').js EOS If the result is not "false", this is a finding.
Fix: F-63172r941196_fix
Configure the macOS system to disable the iCloud Private Relay by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002180
- Vuln IDs
-
- V-259526
- Rule IDs
-
- SV-259526r941200_rule
Checks: C-63265r941198_chk
Verify the macOS system is configured to disable Find My service with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowFindMyDevice')) let pref2 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowFindMyFriends')) let pref3 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.icloud.managed')\ .objectForKey('DisableFMMiCloudSetting')) if ( pref1 == false && pref2 == false && pref3 == true ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-63173r941199_fix
Configure the macOS system to disable Find My service by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002190
- Vuln IDs
-
- V-259527
- Rule IDs
-
- SV-259527r941203_rule
Checks: C-63266r941201_chk
Verify the macOS system is configured to disable password autofill with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowPasswordAutoFill').js EOS If the result is not "false", this is a finding.
Fix: F-63174r941202_fix
Configure the macOS system to disable password autofill by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002200
- Vuln IDs
-
- V-259528
- Rule IDs
-
- SV-259528r941206_rule
Checks: C-63267r941204_chk
Verify the macOS system is configured to disable personalized advertising with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowApplePersonalizedAdvertising').js EOS If the result is not "false", this is a finding.
Fix: F-63175r941205_fix
Configure the macOS system to disable personalized advertising by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002210
- Vuln IDs
-
- V-259529
- Rule IDs
-
- SV-259529r941209_rule
Checks: C-63268r941207_chk
Verify the macOS system is configured to disable sending Siri and Dictation information to Apple with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.assistant.support')\ .objectForKey('Siri Data Sharing Opt-In Status').js EOS If the result is not "2", this is a finding.
Fix: F-63176r941208_fix
Configure the macOS system to disable sending Siri and Dictation information to Apple by installing the "com.apple.assistant.support" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002220
- Vuln IDs
-
- V-259530
- Rule IDs
-
- SV-259530r941212_rule
Checks: C-63269r941210_chk
For Intel-based systems, this is not applicable. Verify the macOS system is configured to enforce on device dictation with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('forceOnDeviceOnlyDictation').js EOS If the result is not "true", this is a finding.
Fix: F-63177r941211_fix
Configure the macOS system to enforce on device dictation by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002230
- Vuln IDs
-
- V-259531
- Rule IDs
-
- SV-259531r941215_rule
Checks: C-63270r941213_chk
For Apple Silicon-based systems, this is not applicable. Verify the macOS system is configured to disable dictation with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowDictation').js EOS If the result is not "false", this is a finding.
Fix: F-63178r941214_fix
Configure the macOS system to disable dictation by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002240
- Vuln IDs
-
- V-259532
- Rule IDs
-
- SV-259532r941218_rule
Checks: C-63271r941216_chk
Verify the macOS system is configured to disable Printer Sharing with the following command: /usr/sbin/cupsctl | /usr/bin/grep -c "_share_printers=0" If the result is not "1", this is a finding.
Fix: F-63179r941217_fix
Configure the macOS system to disable Printer Sharing with the following commands: /usr/sbin/cupsctl --no-share-printers /usr/bin/lpstat -p | awk '{print $2}'| /usr/bin/xargs -I{} lpadmin -p {} -o printer-is-shared=false
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002250
- Vuln IDs
-
- V-259533
- Rule IDs
-
- SV-259533r941221_rule
Checks: C-63272r941219_chk
Verify the macOS system is configured to disable Remote Management with the following command: /usr/libexec/mdmclient QuerySecurityInfo | /usr/bin/grep -c "RemoteDesktopEnabled = 0" If the result is not "1", this is a finding.
Fix: F-63180r941220_fix
Configure the macOS system to disable Remote Management with the following commands: /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002260
- Vuln IDs
-
- V-259534
- Rule IDs
-
- SV-259534r941224_rule
Checks: C-63273r941222_chk
Verify the macOS system is configured to disable the Bluetooth system settings pane with the following command: /usr/bin/profiles show -output stdout-xml | /usr/bin/xmllint --xpath '//key[text()="DisabledSystemSettings"]/following-sibling::*[1]' - | /usr/bin/grep -c com.apple.BluetoothSettings If the result is not "1", this is a finding.
Fix: F-63181r941223_fix
Configure the macOS system to disable the Bluetooth system settings pane by installing the "com.apple.systempreferences" configuration profiles.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-002270
- Vuln IDs
-
- V-259535
- Rule IDs
-
- SV-259535r941227_rule
Checks: C-63274r941225_chk
Verify the macOS system is configured to disable iCloud Freeform services with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudFreeform').js EOS If the result is not "false", this is a finding.
Fix: F-63182r941226_fix
Configure the macOS system to disable iCloud Freeform services by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- SC-23
- Severity
- M
- CCI
- CCI-002470
- Version
- APPL-14-003001
- Vuln IDs
-
- V-259536
- Rule IDs
-
- SV-259536r941230_rule
Checks: C-63275r941228_chk
Verify the macOS system is configured to issue or obtain public key certificates from an approved service provider with the following command: /usr/bin/security dump-keychain /Library/Keychains/System.keychain | /usr/bin/awk -F'"' '/labl/ {print $4}' If the result does not contain a list of approved certificate authorities, this is a finding.
Fix: F-63183r941229_fix
Configure the macOS system to issue or obtain public key certificates from an approved service provider by obtaining the approved certificates from the appropriate authority and install them to the System Keychain.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000194
- Version
- APPL-14-003007
- Vuln IDs
-
- V-259537
- Rule IDs
-
- SV-259537r941233_rule
Checks: C-63276r941231_chk
Verify the macOS system is configured to require passwords contain a minimum of one numeric character with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyIdentifier"]/following-sibling::*[1]/text()' - | /usr/bin/grep "requireAlphanumeric" -c If the result is not "1", this is a finding.
Fix: F-63184r941232_fix
Configure the macOS system to require passwords contain a minimum of one numeric character by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000199
- Version
- APPL-14-003008
- Vuln IDs
-
- V-259538
- Rule IDs
-
- SV-259538r941236_rule
Checks: C-63277r941234_chk
Verify the macOS system is configured to restrict maximum password lifetime to 60 days with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeExpiresEveryNDays"]/following-sibling::*[1]/text()' - If the result is not "60" or less, this is a finding.
Fix: F-63185r941235_fix
Configure the macOS system to restrict maximum password lifetime to 60 days by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000200
- Version
- APPL-14-003009
- Vuln IDs
-
- V-259539
- Rule IDs
-
- SV-259539r941239_rule
Checks: C-63278r941237_chk
Verify the macOS system is configured to prohibit password reuse for a minimum of five generations with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributePasswordHistoryDepth"]/following-sibling::*[1]/text()' - | /usr/bin/awk '{ if ($1 >= 5 ) {print "yes"} else {print "no"}}' If the result is not "yes", this is a finding.
Fix: F-63186r941238_fix
Configure the macOS system to prohibit password reuse for five generations by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000205
- Version
- APPL-14-003010
- Vuln IDs
-
- V-259540
- Rule IDs
-
- SV-259540r941242_rule
Checks: C-63279r941240_chk
Verify the macOS system is configured to enforce a minimum 14-character password length with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath 'boolean(//*[contains(text(),"policyAttributePassword matches '\''.{14,}'\''")])' - If the result is not "true", this is a finding.
Fix: F-63187r941241_fix
Configure the macOS system to enforce a 14-character password length by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-001619
- Version
- APPL-14-003011
- Vuln IDs
-
- V-259541
- Rule IDs
-
- SV-259541r941245_rule
Checks: C-63280r941243_chk
Verify the macOS system is configured to require passwords contain a minimum of one special character with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath 'boolean(//*[contains(text(),"policyAttributePassword matches '\''(.*[^a-zA-Z0-9].*){1,}'\''")])' - If the result is not "true", this is a finding.
Fix: F-63188r941244_fix
Configure the macOS system to require passwords contain a minimum of one special character by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- IA-6
- Severity
- M
- CCI
- CCI-000206
- Version
- APPL-14-003012
- Vuln IDs
-
- V-259542
- Rule IDs
-
- SV-259542r941248_rule
Checks: C-63281r941246_chk
Verify the macOS system is configured to disable password hints with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectForKey('RetriesUntilHint').js EOS If the result is not "0", this is a finding.
Fix: F-63189r941247_fix
Configure the macOS system to disable password hints by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-003013
- Vuln IDs
-
- V-259543
- Rule IDs
-
- SV-259543r941251_rule
Checks: C-63282r941249_chk
For Apple Silicon systems, this is not applicable. Verify the macOS system is configured with a firmware password with the following command: /usr/sbin/firmwarepasswd -check | /usr/bin/grep -c "Password Enabled: Yes" If the result is not "1", this is a finding.
Fix: F-63190r941250_fix
Configure the macOS system with a firmware password with the following command: /usr/sbin/firmwarepasswd -setpasswd Note: If firmware password or passcode is forgotten, the only way to reset the forgotten password is through a machine-specific binary generated and provided by Apple. Users must schedule a support call and provide proof of purchase before the firmware binary will be generated.
- RMF Control
- IA-6
- Severity
- M
- CCI
- CCI-000206
- Version
- APPL-14-003014
- Vuln IDs
-
- V-259544
- Rule IDs
-
- SV-259544r941254_rule
Checks: C-63283r941252_chk
Verify the macOS system is configured to remove password hints from user accounts with the following command: /usr/bin/dscl . -list /Users hint | /usr/bin/awk '{print $2}' | /usr/bin/wc -l | /usr/bin/xargs If the result is not "0", this is a finding.
Fix: F-63191r941253_fix
Configure the macOS system to remove password hints from user accounts with the following command: for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do /usr/bin/dscl . -delete /Users/$u hint done
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000186
- Version
- APPL-14-003020
- Vuln IDs
-
- V-259545
- Rule IDs
-
- SV-259545r941257_rule
Checks: C-63284r941255_chk
Verify the macOS system is configured to enforce multifactor authentication with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('enforceSmartCard').js EOS If the result is not "true", this is a finding.
Fix: F-63192r941256_fix
Configure the macOS system to enforce multifactor authentication by installing the "com.apple.security.smartcard" configuration profile. Note: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000187
- Version
- APPL-14-003030
- Vuln IDs
-
- V-259546
- Rule IDs
-
- SV-259546r941260_rule
Checks: C-63285r941258_chk
Verify the macOS system is configured to allow smart card authentication with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('allowSmartCard').js EOS If the result is not "true", this is a finding.
Fix: F-63193r941259_fix
Configure the macOS system to enforce multifactor authentication by installing the "com.apple.security.smartcard" configuration profile. Note: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000765
- Version
- APPL-14-003050
- Vuln IDs
-
- V-259547
- Rule IDs
-
- SV-259547r941263_rule
Checks: C-63286r941261_chk
Verify the macOS system is configured to enforce multifactor authentication for login with the following command: /usr/bin/grep -Ec '^(auth\s+sufficient\s+pam_smartcard.so|auth\s+required\s+pam_deny.so)' /etc/pam.d/login If the result is not "2", this is a finding.
Fix: F-63194r941262_fix
Configure the macOS system to enforce multifactor authentication for login with the following commands: /bin/cat > /etc/pam.d/login << LOGIN_END # login: auth account password session auth sufficient pam_smartcard.so auth optional pam_krb5.so use_kcminit auth optional pam_ntlm.so try_first_pass auth optional pam_mount.so try_first_pass auth required pam_opendirectory.so try_first_pass auth required pam_deny.so account required pam_nologin.so account required pam_opendirectory.so password required pam_opendirectory.so session required pam_launchd.so session required pam_uwtmp.so session optional pam_mount.so LOGIN_END /bin/chmod 644 /etc/pam.d/login /usr/sbin/chown root:wheel /etc/pam.d/login
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000765
- Version
- APPL-14-003051
- Vuln IDs
-
- V-259548
- Rule IDs
-
- SV-259548r941266_rule
Checks: C-63287r941264_chk
Verify the macOS system is configured to enforce multifactor authentication for the su command with the following command: /usr/bin/grep -Ec '^(auth\s+sufficient\s+pam_smartcard.so|auth\s+required\s+pam_rootok.so)' /etc/pam.d/su If the result is not "2", this is a finding.
Fix: F-63195r941265_fix
Configure the macOS system to enforce multifactor authentication for the su command with the following commands: /bin/cat > /etc/pam.d/su << SU_END # su: auth account password session auth sufficient pam_smartcard.so auth required pam_rootok.so auth required pam_group.so no_warn group=admin,wheel ruser root_only fail_safe account required pam_permit.so account required pam_opendirectory.so no_check_shell password required pam_opendirectory.so session required pam_launchd.so SU_END # Fix new file ownership and permissions /bin/chmod 644 /etc/pam.d/su /usr/sbin/chown root:wheel /etc/pam.d/su
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000765
- Version
- APPL-14-003052
- Vuln IDs
-
- V-259549
- Rule IDs
-
- SV-259549r941269_rule
Checks: C-63288r941267_chk
Verify the macOS system is configured to enforce multifactor authentication for privilege escalation through the sudo command with the following command: /usr/bin/grep -Ec '^(auth\s+sufficient\s+pam_smartcard.so|auth\s+required\s+pam_deny.so)' /etc/pam.d/sudo If the result is not "2", this is a finding.
Fix: F-63196r941268_fix
Configure the macOS system to enforce multifactor authentication for privilege escalation through the sudo command with the following commands: /bin/cat > /etc/pam.d/sudo << SUDO_END # sudo: auth account password session auth sufficient pam_smartcard.so auth required pam_opendirectory.so auth required pam_deny.so account required pam_permit.so password required pam_deny.so session required pam_permit.so SUDO_END /bin/chmod 444 /etc/pam.d/sudo /usr/sbin/chown root:wheel /etc/pam.d/sudo
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- APPL-14-003060
- Vuln IDs
-
- V-259550
- Rule IDs
-
- SV-259550r941272_rule
Checks: C-63289r941270_chk
Verify the macOS system is configured to require passwords contain a minimum of one lowercase character and one uppercase character with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath 'boolean(//*[contains(text(),"policyAttributePassword matches '\''.*[A-Z]{1,}[a-z]{1,}.*'\''")])' - If the result is not "true", this is a finding.
Fix: F-63197r941271_fix
Configure the macOS system to require at least one lowercase character and one uppercase character in password complexity by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000198
- Version
- APPL-14-003070
- Vuln IDs
-
- V-259551
- Rule IDs
-
- SV-259551r941275_rule
Checks: C-63290r941273_chk
Verify the macOS system is configured to set minimum password lifetime to 24 hours with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeMinimumLifetimeHours"]/following-sibling::integer[1]/text()' - | /usr/bin/awk '{ if ($1 >= 24 ) {print "yes"} else {print "no"}}' If the result is not "yes", this is a finding.
Fix: F-63198r941274_fix
Configure the macOS system to set minimum password lifetime to 24 hours. This setting may be enforced using local policy or by a directory service. To set local policy to require a minimum password lifetime, edit the current password policy to contain the following <dict> within the "policyCategoryPasswordContent": [source,xml] ---- <dict> <key>policyContent</key> <string>policyAttributeLastPasswordChangeTime < policyAttributeCurrentTime - (policyAttributeMinimumLifetimeHours * 60 * 60)</string> <key>policyIdentifier</key> <string>Minimum Password Lifetime</string> <key>policyParameters</key> <dict> <key>policyAttributeMinimumLifetimeHours</key> <integer>24</integer> </dict> </dict> ---- After saving the file and exiting to the command prompt, run the following command to load the new policy file, substituting the path to the file in place of "$pwpolicy_file". [source,bash] ---- /usr/bin/pwpolicy setaccountpolicies $pwpolicy_file ---- Note: Refer to the password policy supplemental on more information on how to implement password policies on macOS.
- RMF Control
- IA-4
- Severity
- M
- CCI
- CCI-000795
- Version
- APPL-14-003080
- Vuln IDs
-
- V-259552
- Rule IDs
-
- SV-259552r941278_rule
Checks: C-63291r941276_chk
Verify the macOS system is configured to disable accounts after 35 days of inactivity with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeInactiveDays"]/following-sibling::integer[1]/text()' - If the result is not "35", this is a finding.
Fix: F-63199r941277_fix
Configure the macOS system to disable accounts after 35 days of inactivity with the following command: This setting may be enforced using local policy or by a directory service. To set local policy to disable an inactive user after 35 days, edit the current password policy to contain the following <dict> within the "policyCategoryAuthentication": [source,xml] ---- <dict> <key>policyContent</key> <string>policyAttributeLastAuthenticationTime > policyAttributeCurrentTime - (policyAttributeInactiveDays * 24 * 60 * 60)</string> <key>policyIdentifier</key> <string>Inactive Account</string> <key>policyParameters</key> <dict> <key>policyAttributeInactiveDays</key> <integer>35</integer> </dict> </dict> ---- After saving the file and exiting to the command prompt, run the following command to load the new policy file, substituting the path to the file in place of "$pwpolicy_file". [source,bash] ---- /usr/bin/pwpolicy setaccountpolicies $pwpolicy_file ---- Note: Refer to the password policy supplemental on more information on how to implement password policies on macOS.
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-14-004001
- Vuln IDs
-
- V-259553
- Rule IDs
-
- SV-259553r941281_rule
Checks: C-63292r941279_chk
Verify the macOS system is configured with Apple System Log files owned by root and group to wheel with the following command: /usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk '!/^root:wheel:/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-63200r941280_fix
Configure the macOS system with Apple System Log files owned by root and group to wheel with the following command: /usr/sbin/chown root:wheel $(/usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk '!/^root:wheel:/{print $1}' | /usr/bin/awk -F":" '!/^root:wheel:/{print $3}')
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-14-004002
- Vuln IDs
-
- V-259554
- Rule IDs
-
- SV-259554r941284_rule
Checks: C-63293r941282_chk
Verify the macOS system is configured with Apple System Log files to mode 640 or less permissive with the following command: /usr/bin/stat -f '%A:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk '!/640/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-63201r941283_fix
Configure the macOS system with Apple System Log files to mode 640 with the following command: /bin/chmod 640 $(/usr/bin/stat -f '%A:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk -F":" '!/640/{print $2}')
- RMF Control
- IA-11
- Severity
- M
- CCI
- CCI-002038
- Version
- APPL-14-004022
- Vuln IDs
-
- V-259555
- Rule IDs
-
- SV-259555r941287_rule
Checks: C-63294r941285_chk
Verify the macOS system requires reauthentication when using the "sudo" command to elevate privileges with the following command: /usr/bin/sudo /usr/bin/sudo -V | /usr/bin/grep -c "Authentication timestamp timeout: 0.0 minutes" If the result is not "1", this is a finding.
Fix: F-63202r941286_fix
Configure the macOS system to require reauthentication when using "sudo" with the following command: /usr/bin/find /etc/sudoers* -type f -exec sed -i '' '/timestamp_timeout/d' '{}' \; /bin/echo "Defaults timestamp_timeout=0" >> /etc/sudoers.d/mscp
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-14-004030
- Vuln IDs
-
- V-259556
- Rule IDs
-
- SV-259556r941290_rule
Checks: C-63295r941288_chk
Verify the macOS system is configured with system log files owned by root and group to wheel with the following command: /usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk '!/^root:wheel:/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-63203r941289_fix
Configure the macOS system with system log files owned by root and group to wheel with the following command: /usr/sbin/chown root:wheel $(/usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk -F":" '!/^root:wheel:/{print $3}')
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-14-004040
- Vuln IDs
-
- V-259557
- Rule IDs
-
- SV-259557r941293_rule
Checks: C-63296r941291_chk
Verify the macOS system is configured with system log files set to mode 640 or less permissive with the following command: /usr/bin/stat -f '%A:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk '!/640/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-63204r941292_fix
Configure the macOS system with system log files set to mode 640 or less permissive with the following command: /bin/chmod 640 $(/usr/bin/stat -f '%A:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk '!/640/{print $1}' | awk -F":" '!/640/{print $2}')
- RMF Control
- AU-4
- Severity
- L
- CCI
- CCI-001849
- Version
- APPL-14-004050
- Vuln IDs
-
- V-259558
- Rule IDs
-
- SV-259558r941296_rule
Checks: C-63297r941294_chk
Verify the macOS system is configured with install.log retention to 365 with the following command: /usr/sbin/aslmanager -dd 2>&1 | /usr/bin/awk '/\/var\/log\/install.log/ {count++} /Processing module com.apple.install/,/Finished/ { for (i=1;i<=NR;i++) { if ($i == "TTL" && $(i+2) >= 365) { ttl="True" }; if ($i == "MAX") {max="True"}}} END{if (count > 1) { print "Multiple config files for /var/log/install, manually remove"} else if (ttl != "True") { print "TTL not configured" } else if (max == "True") { print "Max Size is configured, must be removed" } else { print "Yes" }}' If the result is not "yes", this is a finding.
Fix: F-63205r941295_fix
Configure the macOS system with install.log retention to 365 with the following command: /usr/bin/sed -i '' "s/\* file \/var\/log\/install.log.*/\* file \/var\/log\/install.log format='\$\(\(Time\)\(JZ\)\) \$Host \$\(Sender\)\[\$\(PID\\)\]: \$Message' rotate=utc compress file_max=50M size_only ttl=365/g" /etc/asl/com.apple.install Note: If there are multiple configuration files in /etc/asl that are set to process the file /var/log/install.log, these files will have to be manually removed.
- RMF Control
- IA-11
- Severity
- M
- CCI
- CCI-002038
- Version
- APPL-14-004060
- Vuln IDs
-
- V-259559
- Rule IDs
-
- SV-259559r941299_rule
Checks: C-63298r941297_chk
Verify the macOS system is configured with sudoers timestamp type with the following command: /usr/bin/sudo /usr/bin/sudo -V | /usr/bin/awk -F": " '/Type of authentication timestamp record/{print $2}' If the result is not "tty", this is a finding.
Fix: F-63206r941298_fix
Configure the macOS system with sudoers timestamp type with the following command: /usr/bin/find /etc/sudoers* -type f -exec sed -i '' '/timestamp_type/d; /!tty_tickets/d' '{}' \;
- RMF Control
- AU-6
- Severity
- H
- CCI
- CCI-000154
- Version
- APPL-14-005001
- Vuln IDs
-
- V-259560
- Rule IDs
-
- SV-259560r941302_rule
Checks: C-63299r941300_chk
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. /usr/bin/grep -c "logger -s -p" /etc/security/audit_warn If the result is not "1", this is a finding.
Fix: F-63207r941301_fix
Configure the macOS system to enable "System Integrity Protection" by booting into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable
- RMF Control
- SC-28
- Severity
- H
- CCI
- CCI-001199
- Version
- APPL-14-005020
- Vuln IDs
-
- V-259561
- Rule IDs
-
- SV-259561r941305_rule
Checks: C-63300r941303_chk
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.
Fix: F-63208r941304_fix
Note: Refer to the FileVault supplemental to implement this rule.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-005050
- Vuln IDs
-
- V-259562
- Rule IDs
-
- SV-259562r941308_rule
Checks: C-63301r941306_chk
Verify the macOS system is configured to enable the application firewall with the following command: profile="$(/usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.firewall')\ .objectForKey('EnableFirewall').js EOS )" plist="$(/usr/bin/defaults read /Library/Preferences/com.apple.alf globalstate 2>/dev/null)" if [[ "$profile" == "true" ]] && [[ "$plist" =~ [1,2] ]]; then echo "true" else echo "false" fi If the result is not "true", this is a finding.
Fix: F-63209r941307_fix
Configure the macOS system to enable the application firewall with the following command: /usr/bin/defaults write /Library/Preferences/com.apple.alf globalstate -int 1
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- APPL-14-005052
- Vuln IDs
-
- V-259563
- Rule IDs
-
- SV-259563r941311_rule
Checks: C-63302r941309_chk
Verify the macOS system is configured to prompt for username and password at the login window with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectForKey('SHOWFULLNAME').js EOS If the result is not "true", this is a finding.
Fix: F-63210r941310_fix
Configure the macOS system to prompt for username and password at the logon window by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-005054
- Vuln IDs
-
- V-259564
- Rule IDs
-
- SV-259564r941314_rule
Checks: C-63303r941312_chk
Verify the macOS system is configured to disable TouchID prompt during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipTouchIDSetup').js EOS If the result is not "true", this is a finding.
Fix: F-63211r941313_fix
Configure the macOS system to disable TouchID prompt during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-005055
- Vuln IDs
-
- V-259565
- Rule IDs
-
- SV-259565r941317_rule
Checks: C-63304r941315_chk
Verify the macOS system is configured to disable Screen Time prompt during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipScreenTime').js EOS If the result is not "true", this is a finding.
Fix: F-63212r941316_fix
Configure the macOS system to disable Screen Time prompt during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-005056
- Vuln IDs
-
- V-259566
- Rule IDs
-
- SV-259566r941320_rule
Checks: C-63305r941318_chk
Verify the macOS system is configured to disable Unlock with Apple Watch during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipUnlockWithWatch').js EOS If the result is not "true", this is a finding.
Fix: F-63213r941319_fix
Configure the macOS system to disable Unlock with Apple Watch during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-005058
- Vuln IDs
-
- V-259567
- Rule IDs
-
- SV-259567r941323_rule
Checks: C-63306r941321_chk
Verify the macOS system is configured to disable handoff with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowActivityContinuation').js EOS If the result is not "false", this is a finding.
Fix: F-63214r941322_fix
Configure the macOS system to disable handoff by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-005060
- Vuln IDs
-
- V-259568
- Rule IDs
-
- SV-259568r941326_rule
Checks: C-63307r941324_chk
Verify the macOS system is configured to disable proximity-based password sharing requests with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowPasswordProximityRequests').js EOS If the result is not "false", this is a finding.
Fix: F-63215r941325_fix
Configure the macOS system to disable proximity-based password sharing requests by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-14-005061
- Vuln IDs
-
- V-259569
- Rule IDs
-
- SV-259569r941329_rule
Checks: C-63308r941327_chk
Verify the macOS system is configured to disable Erase Content and Settings with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowEraseContentAndSettings').js EOS If the result is not "false", this is a finding.
Fix: F-63216r941328_fix
Configure the macOS system to disable Erase Content and Settings by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-14-005070
- Vuln IDs
-
- V-259570
- Rule IDs
-
- SV-259570r941332_rule
Checks: C-63309r941330_chk
Verify the macOS system is configured to enable authenticated root with the following command: /usr/bin/csrutil authenticated-root | /usr/bin/grep -c 'enabled' If the result is not "1", this is a finding.
Fix: F-63217r941331_fix
Configure the macOS system to enable authenticated root with the following command: /usr/bin/csrutil authenticated-root enable Note: To reenable "Authenticated Root", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the command.
- RMF Control
- CM-11
- Severity
- M
- CCI
- CCI-001812
- Version
- APPL-14-005080
- Vuln IDs
-
- V-259571
- Rule IDs
-
- SV-259571r941335_rule
Checks: C-63310r941333_chk
Verify the macOS system is configured to prohibit user installation of software into /users/ with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('familyControlsEnabled')) let pathlist = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('pathBlackList').js for ( let app in pathlist ) { if ( ObjC.unwrap(pathlist[app]) == "/Users/" && pref1 == true ){ return("true") } } return("false") } EOS If the result is not "true", this is a finding.
Fix: F-63218r941334_fix
Configure the macOS system to prohibit user installation of software into /users/ by installing the "com.apple.applicationaccess.new" configuration profile.
- RMF Control
- IA-3
- Severity
- M
- CCI
- CCI-001958
- Version
- APPL-14-005090
- Vuln IDs
-
- V-259572
- Rule IDs
-
- SV-259572r941338_rule
Checks: C-63311r941336_chk
Verify the macOS system is configured to authorize USB devices before allowing connection with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowUSBRestrictedMode')) if ( pref1 == false ) { return("false") } else { return("true") } } EOS If the result is not "true", this is a finding.
Fix: F-63219r941337_fix
Configure the macOS system to authorize USB devices before allowing connection by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- SI-6
- Severity
- M
- CCI
- CCI-002696
- Version
- APPL-14-005100
- Vuln IDs
-
- V-259573
- Rule IDs
-
- SV-259573r941341_rule
Checks: C-63312r941339_chk
Verify the macOS system is configured to ensure secure boot level set to full using the following command: /usr/libexec/mdmclient QuerySecurityInfo | /usr/bin/grep -c "SecureBootLevel = full" If the result is not "1", this is a finding.
Fix: F-63220r941340_fix
Configure the macOS system to ensure secure boot level set to full by booting into Recovery Mode and enable Full Secure Boot.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-005110
- Vuln IDs
-
- V-259574
- Rule IDs
-
- SV-259574r941344_rule
Checks: C-63313r941342_chk
Verify the macOS system is configured to enforce enrollment in mobile device management with the following command: /usr/bin/profiles status -type enrollment | /usr/bin/awk -F: '/MDM enrollment/ {print $2}' | /usr/bin/grep -c "Yes (User Approved)" If the result is not "1", this is a finding.
Fix: F-63221r941343_fix
Configure the macOS system by ensuring that system is enrolled via UAMDM.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-005120
- Vuln IDs
-
- V-259575
- Rule IDs
-
- SV-259575r941347_rule
Checks: C-63314r941345_chk
For non-Apple Silicon systems, this is not applicable. Verify the macOS system is configured with recovery lock with the following command: /usr/libexec/mdmclient QuerySecurityInfo | /usr/bin/grep -c "IsRecoveryLockEnabled = 1" If the result is not "1", this is a finding.
Fix: F-63222r941346_fix
Configure the macOS system with recovery lock with the SetRecoveryLock command. This can be used to set a Recovery Lock password and must be from the MDM.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-14-005130
- Vuln IDs
-
- V-259576
- Rule IDs
-
- SV-259576r941350_rule
Checks: C-63315r941348_chk
Verify the macOS system is configured to enforce installation of XProtect Remediator and Gatekeeper updates automatically with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SoftwareUpdate')\ .objectForKey('ConfigDataInstall').js EOS If the result is not "true", this is a finding.
Fix: F-63223r941349_fix
Configure the macOS system to enforce installation of XProtect Remediator and Gatekeeper updates automatically by installing the "com.apple.SoftwareUpdate" configuration profile.