Protegendo BIOS e o GRUB2

Versão em vídeo desta seção pode estar disponível no canal do Guia Foca no YouTube: OpenSCAP e validação de conteúdo SCA.

Senha no GRUB2

A proteção de senha do grub2 pode ser utilizada para:

  1. Proteger todas as entradas de menu

  2. Específicas entradas

  3. Para usuários específicos, por exemplo, o usuário Gleydson pode acessar o Linux, mas não o Windows no modo de recuperação, que é acessível pela Michelle

Para adicionar a proteção de boot no Grub, você tem as seguintes opções:

  • O administrador deve ativar a proteção de senha manualmente editando os arquivos de configuação do grub

  • Usuários e senhas devem ser identificados no arquivo /etc/grub.d/00_header ou outro arquivo de script do Grub.

  • A proteção de entradas específicas deve ser identificada em um dos arquivos abaixo: a - editando scripts em /etc/grub.d/10_linux e 30_os-prober b - Editando o aruivo de configuração customizado criado pelo usuário c - Um dos métodos acima fazem o grub automaticamente adicionar o requisito de senha se o update-grub for rodado d - Se o arquivo grub.cfg for editado diretamente. A proteção de senha será perdida quando o update-grub rodar

  • Se qualquer forma de proteção de senha do grub2 for ativada. O nome e senha de superusuario serao requeridos para ter acesso a linha de comando do grub2 e modos de edição de menu

  • O username e senha pode ser diferente do login/senha de sistema

  • Até que a encriptação do grub2 seja usada, a senha é armazenada em texto plano em um arquivo legível, o ideal é ativar a encriptação de arquivo.

Protegendo opçoes do prompt do Grub2

Para proteção contra a entrada do menu de edição e uso de opções como single user, etc, no grub 0.97 crie uma senha com grub-md5-crypt e então use a opção no grub.cfg:

password --md5 hash_do_grub-md5-crypt

Desta forma, o sistema sempre lhe pedirá uma senha quando acessar o menu de edição do grub.

Protegendo o sistema com senha de boot do Grub

Esta instruções são válidas para a versão 2 do Grub. Antes mesmo do sistema sistema operacional ser carregado, o Grub2 permite acesso aos arquivos armazenados no sistema de arquivos. Usuários sem permissão de root podem acessar arquivos do Linux no qual nâo deveriam ter acesso, assim que o Grub carregar. Para bloquear este tipo de acesso e evitar que os usuários iniciem certos sistemas operacionais, defina uma senha de boot.

OBS: Com o uso de senha, a splash screen tradicional não é mostrada.

O procedimento para gerar é o seguinte:

  1. Entre como root

  2. Encripte a senha usando grub2-mkpasswd-pbkdf2:

    grub2-mkpasswd-pbkdf2
    Password: ****
    Reenter password: ****
    PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.3CA4611006FE96BC22..
     

  3. Cole a string encriptada gerada no arquivo /etc/grub.d/40_custom junto com o comando set superusers. As linhas comentadas devem ser mantidas no inicio do aquivo, pois são usadas pelos scripts de manutenção de arquivos do grub:

    set superusers="root"
    password_pbkdf2 root grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A
    export superusers
    

    Para definir a senha em texto plano (não recomendável) a entrada a seguir pode ser usada:

    password root senha1234
    

  4. Execute em seguida: grub2-mkconfig -o /boot/grub2/grub.cfg

Agora reinicie a máquina. Após o reboot, você será perguntardo pelo usuário e senha para tentar iniciar qualquer entrada no menu. Caso as credenciais estiverem corretas, o sistema inicializará a entrada selecionada do menu.

Protegendo entradas de menus do Grub

As entradas menuentry do Grub podem ser protegidas com os seguintes parâmetros:

  1. A presença de --unrestricted desativa a proteção de senha

  2. A presença de --users ativa a proteção de senha para usuários específicos, por exemplo: --users "Jane" - autoriza o superusuario e "Jane" --users Jane,Sergio - autoriza o superusuario e "Jane" e "Sergio".

Seguem mais exemplos de sintaxe no menu do Grub2:

# Todos os usuários (nenhuma proteção)
menuentry 'Ubuntu, with Linux 3.6.0-14-generic' --class ubuntu -class os --unrestricted {

# Somente superusuário:
menuentry 'Ubuntu, with Linux 3.6.0-14-generic' --class ubuntu -class os --users "" {

# Superuser e gleydson:
menuentry 'Ubuntu, with Linux 3.6.0-14-generic' --class ubuntu -class os --users gleydson {

# Superuser, gleydson, foca:
menuentry 'Ubuntu, with Linux 3.2.0-24-generic' --class ubuntu -class os --users gleydson,foca {

Protegendo a partição de recuperação do Windows

Note que este método somente funciona se o Grub2 identificar uma partição de recovery do Windows:

1 - Determine a partição recovery do Window. altere sdXY para os valores corretos
2 - No 30_os-prober:

Altere a entrada no menu de:

menuentry "${LONGNAME} (on ${DEVICE})" --class windows --class os {

Para

if [ ${DEVICE} = "/dev/sdXY" ]; then
menuentry "${LONGNAME} (on ${DEVICE})" --users "" {
else
menuentry "${LONGNAME} (on ${DEVICE})" {
fi

Finalmente, execute o update-grub para atualizar o /boot/grub/grub.cfg.