Para ocultar o menu do GRUB Você precisa ter o seguinte em /etc/default/grub
GRUB_HIDDEN_TIMEOUT=1
GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_TIMEOUT=0
Isso NÃO impede que um usuário use o gerenciador de inicialização para obter acesso root ao seu sistema, já que pressionar ESC durante a inicialização fará com que o menu apareça.
Segurança do bootloader
O acesso físico fornece uma superfície de ataque muito grande para proteger. Se você quiser proteger contra os ataques fáceis que você precisa para definir uma senha na sua BIOS, evitar a inicialização de discos removíveis, proteja com senha o GRUB e coloque um bloqueio físico no gabinete do computador. Cada um destes é importante e qualquer um deles pode ser contornado facilmente a menos que você faça todos eles. Como alternativa, você pode usar a criptografia de disco completo que requer uma senha na inicialização (a segurança física ainda é importante nesse caso).
Proteção por senha do GRUB
Para proteger com senha o GRUB e impedir a modificação das configurações de inicialização (isso evita o ataque específico que você mencionou), você deve fazer o seguinte:
Execute grub2-mkpasswd-pbkdf2
para gerar um hash de senha.
Edite (ou crie) /etc/grub.d/01_users
para se parecer com o seguinte:
#!/bin/sh -e
cat <<EOF
set superusers="someuseranme"
password_pbkdf2 someusername ouput_from_grub2-mkpasswd-pbkdf2
EOF
Neste ponto, se você executar grub2-mkconfig -o /boot/grub2/grub.cfg
(ou grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
em sistemas EFI), precisará inserir o nome de usuário e a senha acima de cada inicialização. Para permitir a inicialização da entrada de menu padrão sem precisar da senha, você pode editar /etc/grub.d/10_linux
e alterar a seguinte linha:
CLASS="--class gnu-linux --class gnu --class os"
Para:
CLASS="--class gnu-linux --class gnu --class os --unrestricted"
Depois de tudo isso, execute grub2-mkconfig -o /boot/grub2/grub.cfg
e reinicialize para testar as alterações.