The macOS system must disable root logon for SSH.

STIG ID: APPL-14-001100  |  SRG: SRG-OS-000109-GPOS-00056 |  Severity: medium |  CCI: CCI-000770,CCI-001813 |  Vulnerability Id: V-259472

Vulnerability Discussion

If SSH is enabled to ensure individual accountability and prevent
unauthorized access, logging in as root via SSH must be disabled.

The macOS system must require individuals to be authenticated with an individual authenticator prior to
using a group authenticator, and administrator users must never log in directly as root.

Note: /etc/ssh/sshd_config will be automatically modified to its original state following any update or
major upgrade to the operating system.

Satisfies: SRG-OS-000109-GPOS-00056,SRG-OS-000364-GPOS-00151

Check

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

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