A proteção por senha no Grub 2 ainda está sendo desenvolvida e seu comportamento pode mudar em futuras atualizações.
Recursos avançados, como senhas criptografadas que foram introduzidas no Grub ainda estão sendo trabalhadas, mas funciona muito bem.
Há dois modos para se colocar a senha no GRUB 2, em texto puro e criptografada, não é necessário comentar que a senha criptografada gera uma proteção bem maior em relação a senha em texto puro. Sendo que, com a senha em texto puro, será mais facil um usuário do sistema que não deveria ter acesso a esta senha descobrí-la se acessar os arquivos de configruração do GRUB, enquanto que se a senha for criptografad, mesmo se esse usuário tiver acesso aos arquivos de configuração, ele não poderá ler a senha logo de cara.

Há dois modos para se colocar a senha no GRUB 2, em texto puro e criptografada, não é necessário comentar que a senha criptografada gera uma proteção bem maior em relação a senha em texto puro. Sendo que, com a senha em texto puro, será mais facil um usuário do sistema que não deveria ter acesso a esta senha descobrí-la se acessar os arquivos de configruração do GRUB, enquanto que se a senha for criptografad, mesmo se esse usuário tiver acesso aos arquivos de configuração, ele não poderá ler a senha logo de cara.
No GRUB2 poderá ser definido em quais entradas será solicitada a senha para acesso ao sistema. Digamos que você tem 2 sistemas instalados no seu PC, e digamos que um possui arquivos e configurações que só você poderá ter acesso, porém, há outros usuários deste PC, portanto, você poderá colocar senha somente no sistema que você pretende proteger, deixando outro sistema sem senha, ou com outra senha.
Poderá ser definido também mais de um usuário/senha para acessar o sistema, restringindo assim, quais usuários terão acesso a determinado sistema.
Obs.: O nome de usuário/senha não precisará ser o mesmo que o nome/senha de logon do sistema (Ubuntu, Debian, etc)
Como Funciona
Para habilitar a proteção por senha, deverá ser alterado os arquivos de configuração do GRUB (Leia mais sobre o GRUB).
Vamos editar os arquivos /etc/grub.d/00_header e /etc/grub.d/10_linux portanto, verifique se tem permissão necessária para editar tal arquivo.
Se o GRUB estiver configurado para incializar diretamente sem exibir o menu, e este estiver protegido por senha, será solicitada a senha logo na inicialização e o sistema não será iniciado até que seja digitada a senha correta.
Aqui está um exemplo do menu com proteção por senha habilitado:
set superusers="user1"
password user1 password1
password user2 password2
menuentry "GNU/Linux" {
set root=(hd0,1)
linux /vmlinuz
}
menuentry "Windows" --users user2 {
set root=(hd0,2)
chainloader +1
}
O user1foi definido como superuser. Este usuário poderá "bootar" qualquer item, editar qualquer linha no menu de boot.
Qualquer usuário poderá "bootar" o "GNU/Linux", pois não tem o comando --users para definir quem poderá acessar tal entrada, ou seja, se não for definido, qualquer um poderá entrar sem ser solicitada a senha.
No menu "Windows" somente o user2 poderá acessar, pois está definido com o comando --user user2.
Cuidados
Erros na criacação da senha no GRUB 2 resultará em um sistema não bootável, portanto tome cuidado ao editar estes arquivos. Para recuperar o sistema depois de uma suposta "cagada" deve-se acessar os arquivos de configuração do GRUB através de um LiveCD ou outro SO, voltar os arquivos á configuração original e tentar novamente.
Quando a proteção por senha estiver habilitada, somente o usuário definido como superuser poderá editar a entrada do menu pressionando a tecla "e" ou "c".
Configurando a senha no GRUB
Como dito acima, existem 2 tipos de senha para o GRUB, a senha em texto puro e a senha criptografada.
Vamos começar com a senha em texto puro, por ser mais fácil de de melhor entendimento.
Abra o arquivo /etc/grub.d/00_header com seu editor favorito, no meu caso, o Vim.
# vim /etc/grub.d/00_header
No final do arquivo adicione as seguintes linhas
cat << EOF
set superusers="fred"
password fred 123
EOF
Sendo que, só está configurado o usuário fred, ele é o superusuário e o unico que conseguirá acessar a entrada na qual definir-mos. Você deve alterar a opção set superusers e password de acordo com sua vontade, lembrando que no exemplo meu usuário é "fred" e a senha "123".
Poderá ser adicionado mais de um usuário, mas somente um superuser, segue o exemplo:
cat << EOF
set superusers="fred"
password fred 123
password spiderman 123
EOF
No exemplo, foi configurado que, o sistema terá 2 usuários, "fred" e "spiderman" e a senha de ambos será "123".
Feito isto, vamos configurar agora em quais entradas será solicitada senha.
Para isto, vamos abrir o /etc/grub.d/10_linux
# vim /etc/grub.d/10_linux
Agora, procure por menuentry dentro do arquivo, no vim, para os mais leigos, para fazer uma busca pelo documento basta sair da edição e apertar a tecla "/" e logo depois digitar o termo a pesquisar e enter.
Você deve procurar pela linha:
printf "menuentry '${title}' ${class} {/n" "${os}" "${version}"
Nesse ponto há uma opção interessante, se seu desejo é configurar a senha para todos os sistemas Linux do PC basta modificar essa linha deste modo:
printf "menuentry '${title}' ${class} --users fred {/n" "${os}" "${version}"
Mas digamos que queira adicionar senha somente para o modo normal, no recovery não, aí devemos apagar ou comentar esta linha (recomendo comentar) e logo acima desta linha possui o seguinte conteúdo:
if ${recovery} ; then
tittle=$(gettext_quoted "%s, with Linux %s (recovery mode)")"
else
tittle=$(gettext_quoted "%s, with Linux %s")"
fi
Modifique para:
if ${recovery} ; then
tittle=$(gettext_quoted "%s, with Linux %s (recovery mode)")"
printf "menuentry '${title}' ${class} --users fred {/n" "${os}" "${version}"
else
tittle=$(gettext_quoted "%s, with Linux %s")"
printf "menuentry '${title}' ${class} {/n" "${os}" "${version}"
fi
Neste exemplo, indicamos que somente o usuário fred poderá acessar o modo recovery e qualquer um poderá acessar a outra entrada.
Feito isto, podemos reiniciar o sistema e testar.
Adicionando senha para a entrada Windows
O método mais fácil para adicionar senha na entrada do Windows (XP, Vista, Seven, etc) é editando o arquivo:
# vim /boot/grub/grub.cfg
Procure pela linha
### BEGIN /etc/grub.d/30_os-prober ###
Logo após essa linha será exibido algo assim:
menuentry "Windows que você tem no PC ou outro SO" {
Deixe-a assim:
menuentry "Windows que você tem no PC ou outro SO" --users fred {
No caso do exemplo do usuário fred é claro.
Criptografando a Senha
O recurso de criptografar a senha é muito interessante para que outros usuários não vizualizem a senha em modo legível.
Eu percebi uma ligeira demora para a aceitação da senha criptografada em relação a senha em texto puro, mas nada absurdo, e a vantagem supera isto.
Para isto, vamos voltar lá no primeiro passo, onde configuramos a senha do usuário no arquivo 00_header
Mas antes, vamos chamar o seguinte comando para gerar a nossa senha criptografada:
# grub-mkpasswd-pbkdf2
Será solicitada a senha, e depois será gerada uma chave mais ou menos assim:
Your PBKDF2 is grub.pbkdf2.sha512.10000.1D52EC03DAC866B22D0D5CCA4250C585603D5F259244E0595AD1
509VAD58F2D75F6D76DFB2D959D3CF44D0CDDB41E1F5E11V426113622A96116CC696A05EEF.B4D566F12E566AD8D244AEA9FAEA019218DF4DD52EB511517F074DBFE623489256E878A8128A6F0AB88D61F6B4FAD6E588104AC39475DFA25F221F85A3F30750
Você deverá pegar esta chave e inserí-la no lugar da senha no arquivo /etc/grub.d/00_header
cat << EOFPara atualizar o grub.cfg devemos rodar o seguinte comando:
set superusers="fred"
password fred grub.pbkdf2.sha512.10000.1D52EC03DAC866B22D0D5CCA4250C585
603D5F259244E0595AD1509VAD58F2D75F6D76DFB2D959D3CF44D0CDDB41E1
F5E11V426113622A96116CC696A05EEF.B4D566F12E566AD8D244AEA9FAEA019
218DF4DD52EB511517F074DBFE623489256E878A8128A6F0AB88D61F6B4FAD6E
588104AC39475DFA25F221F85A3F30750
EOF
# update-grub2
E pronto, agora é só testar!
Muito legal, obrigado pelas dicas, agora posso deixar o meu GNU/Linux ainda mais seguro. valeu mesmo.
ResponderExcluir