documentation_complete: true


title: 'Set the Boot Loader Admin Username to a Non-Default Value'

description: |-
    The grub2 boot loader should have a superuser account and password
    protection enabled to protect boot-time settings.
    <br /><br />
    To maximize the protection, select a password-protected superuser account with unique name, and modify the
    <tt>/etc/grub.d/01_users</tt> configuration file to reflect the account name change.
    <br /><br />
    Do not to use common administrator account names like root,
    admin, or administrator for the grub2 superuser account.
    <br /><br />
    Change the superuser to a different username (The default is 'root').
    <pre>$ sed -i 's/\(set superusers=\).*/\1"&lt;unique user ID&gt;"/g' /etc/grub.d/01_users</pre>
    The line mentioned above must be followed by the line
    <pre>export superusers</pre>
    so that the <tt>superusers</tt> is honored.
    <br /><br />
    Once the superuser account has been added,
    update the
    <tt>grub.cfg</tt> file by running:
    {{%- if "rhel" in product %}}
    <pre>grub2-mkconfig -o /boot/grub2/grub.cfg</pre>
    {{%- else %}}
    <pre>{{{ grub_command("update") }}}</pre>
    {{%- endif %}}

rationale: |-
    Having a non-default grub superuser username makes password-guessing attacks less effective.

severity: high

identifiers:
    cce@rhcos4: CCE-83582-7
    cce@rhel8: CCE-83561-1
    cce@rhel9: CCE-87370-3
    cce@rhel10: CCE-89960-9

references:
    cis-csc: 1,11,12,14,15,16,18,3,5
    cobit5: DSS05.02,DSS05.04,DSS05.05,DSS05.07,DSS05.10,DSS06.03,DSS06.06,DSS06.10
    cui: 3.4.5
    hipaa: 164.308(a)(1)(ii)(B),164.308(a)(7)(i),164.308(a)(7)(ii)(A),164.310(a)(1),164.310(a)(2)(i),164.310(a)(2)(ii),164.310(a)(2)(iii),164.310(b),164.310(c),164.310(d)(1),164.310(d)(2)(iii)
    isa-62443-2009: 4.3.3.2.2,4.3.3.5.1,4.3.3.5.2,4.3.3.5.3,4.3.3.5.4,4.3.3.5.5,4.3.3.5.6,4.3.3.5.7,4.3.3.5.8,4.3.3.6.1,4.3.3.6.2,4.3.3.6.3,4.3.3.6.4,4.3.3.6.5,4.3.3.6.6,4.3.3.6.7,4.3.3.6.8,4.3.3.6.9,4.3.3.7.1,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4
    isa-62443-2013: 'SR 1.1,SR 1.10,SR 1.11,SR 1.12,SR 1.13,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.6,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 2.2,SR 2.3,SR 2.4,SR 2.5,SR 2.6,SR 2.7'
    iso27001-2013: A.18.1.4,A.6.1.2,A.7.1.1,A.9.1.2,A.9.2.1,A.9.2.2,A.9.2.3,A.9.2.4,A.9.2.6,A.9.3.1,A.9.4.1,A.9.4.2,A.9.4.3,A.9.4.4,A.9.4.5
    nist: CM-6(a)
    nist-csf: PR.AC-1,PR.AC-4,PR.AC-6,PR.AC-7,PR.PT-3
    srg: SRG-OS-000080-GPOS-00048
    stigid@ol7: OL07-00-010483
    stigid@ol8: OL08-00-010149

ocil_clause: 'superuser account is not set or is set to root, admin, administrator or any other existing user name'

ocil: |-
    To verify the boot loader superuser account has been set, run the following
    command:
    <pre>sudo grep -A1 "superusers" {{{ grub2_boot_path }}}/grub.cfg</pre>
    The output should show the following:
    <pre>set superusers="<b>superusers-account</b>"
    export superusers</pre>
    where superusers-account is the actual account name different from common names like root,
    admin, or administrator and different from any other existing user name.

warnings:
    - general: |-
        To prevent hard-coded admin usernames, automatic remediation of this control is not available. Remediation
        must be automated as a component of machine provisioning, or followed manually as outlined above.

        Also, do NOT manually add the superuser account and password to the
        <tt>grub.cfg</tt> file as the grub2-mkconfig command overwrites this file.


fixtext: |-
    Configure {{{ full_name }}} to have a unique username for the grub superuser account.

    Edit the "/etc/grub.d/01_users" file and add or modify the following lines in the "### BEGIN /etc/grub.d/01_users ###" section:

    set superusers="superusers-account"
    export superusers

    Once the superuser account has been added, update the grub.cfg file by running:

    {{%- if "rhel" in product %}}
    <pre>grub2-mkconfig -o /boot/grub2/grub.cfg</pre>
    {{%- else %}}
    <pre>{{{ grub_command("update") }}}</pre>
    {{%- endif %}}

srg_requirement: '{{{ full_name }}} systems booted with a BIOS must require a unique superusers name upon booting into single-user and maintenance modes.'
