Quando temos algum problema com o sistema (Ubuntu Linux) e o mesmo fica incapacitado de ser iniciado ou não funciona devidamente (ao ponto de impedir que o usuário, iniciando o sistema normalmente, acesse o terminal) é comum recorrermos ao modo de recuperação. Nele temos acesso a um terminal sendo executado como root, tornando possível manipularmos o sistema "livremente", de modo a aplicarmos as correções necessárias.
Certamente ele é algo útil. O problema é que, "nas mãos" de alguém mal intencionado, pode comprometer toda a segurança e integridade do sistema.
Hoje vou falar (na realidade, escrever) sobre como proteger com senha a opção do "modo de recuperação" do Ubuntu no Grub, lembrando que é válido apenas para versão 2 (Grub 2) e talvez superiores.
Para tal, primeiramente é preciso criar um "super usuário" do Grub com senha para acessar as entradas protegidas. Para fazer isso é preciso editar o arquivo "/etc/grub.d/00_header", adicionando ao seu final as seguintes linhas:
cat << EOF
set superusers="nomeDoSuperUsuario"
password nomeDoSuperUsuario senhaDoSuperUsuario
EOF
Creio que não haja muito a ser comentado sobre o caso acima... é só substituir "nomeDoSuperUsuario" e "senhaDoSuperUsuario" pelo nome de usuário e senha desejados. O único problema é que, se alguém acessar o arquivo "00_header", terá acesso a tais informações de maneira explicita. Visando evitar isso, é possível fazer uso de uma senha criptografada, assim como descrito no caso abaixo:
cat << EOF
set superusers="nomeDoSuperUsuario"
password_pbkdf2 nomeDoSuperUsuario senhaCriptografadaDoSuperUsuario
EOF
Da mesma forma que ocorre na situação anterior, basta substituir "nomeDoSuperUsuario" e "senhaCriptografadaDoSuperUsuario" pelo nome de usuário desejado e a senha criptografada.
Para gerar tal senha, é preciso executar no terminal "grub-mkpasswd-pbkdf2" que irá requisitar o password desejado, a confirmação do mesmo e, por fim, irá devolvê-lo de forma criptografada (que será utilizada no lugar de "senhaCriptografadaDoUsuario"). Aproveito para alertar que, no lucid (10.04), é meio "bugado", tendo vezes em que ele retorna a senha criptografada e vezes em que não faz o mesmo (tive de tentar várias vezes até funcionar), e também que, quando gerada, será uma sequência de caracteres bem grande (começando a partir de "grub.pbkdf2..."), mas é algo normal.
Tendo sido estas alterações feitas, agora é hora de partir para o arquivo "/etc/grub.d/10_linux". Aqui, aproximadamente na linha 72, há um trecho mais ou menos assim:
if ${recovery} ; then
title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
else
title="$(gettext_quoted "%s, with Linux %s")"
fi
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
O que é preciso fazer é deixar este bloco da seguinte forma: if ${recovery} ; then
title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
printf "menuentry '${title}' ${CLASS} --users nomeDoSuperUsuario {\n" "${os}" "${version}"
else
title="$(gettext_quoted "%s, with Linux %s")"
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
fi
Fazendo desta forma, a senha será aplicada apenas ao modo de recuperação.Perceba que a seguinte linha agora só se apresenta dentro do bloco "if .. else", não mais fora do mesmo...
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
... e que ela também sofreu uma pequena alteração, que foi destacada, caso a condição (é modo de recuperação?) seja verdadeira. if ${recovery} ; then
title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
printf "menuentry '${title}' ${CLASS} --users nomeDoSuperUsuario {\n" "${os}" "${version}"
Se a condição for falsa, ela fica inalterada (não requerendo autenticação): else
title="$(gettext_quoted "%s, with Linux %s")"
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
fi
Se tudo estiver certo até aqui, agora só resta executar o comando "update-grub"...
sudo update-grub
... e testar se as alterações estão funcionando.No menu do Grub, é só selecionar alguma opção de modo de recuperação que será exibida uma "tela preta" requisitando o usuário e, em seguida, a senha. Caso esteja tudo certo, o sistema será iniciado pelo modo escolhido, senão, aparecerá uma mensagem informando que as informações estão incorretas, pedindo que seja pressionada qualquer tecla para continuar, voltando para o menu anteriormente exibido (se alguma tecla for pressionada, é claro).
Para mais informações sobre como proteger as entradas do Grub com senha, recomendo dar uma olhada neste tópico do UbuntuForums.Org.
Novamente espero que este post tenha sido de alguma ajuda! Se houver qualquer dúvida, é só fazer uso dos comentários!
As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.
As fontes de informação utilizadas para a criação deste tópico foram este tópico do forum UbuntuForum-BR.org e este do UbuntuForum.Org.
Nenhum comentário:
Postar um comentário