Manual
do
Maker
.
com
Nada protege um sistema operacional de acesso físico, mas tem algumas formas interessantes de prover alguma segurança a mais, ou pelo menos uma segurança diferenciada, fazendo autenticação por pendrive. Em uma necessidade da empresa (entre os demais acertos de um projeto) fiz essa implementação, que evita a necessidade de digitar senha e que, teoricamente, sem o dispositivo cadastrado não se pode efetuar login. O mais interessante disso é que o pendrive pode ser utilizado normalmente, sem nenhuma limitação, pois não são gravados dados nele. Após ter feito a primeira configuração, decidi fazer um shell script para quando houver a necessidade de refazer a configuração. Nesse shell script explicarei algumas coisas em detalhes:
#!/bin/sh
#configurador do pamusb e registrador do pendrive
#By: Djames Suhanko
#primeiramente, verificar se todos os pacotes estao instalados. Se nao, instala-os PROGRAMAS_A_INSTALAR=""
dpkg -l pmount >/dev/null || PROGRAMAS_A_INSTALAR="pmount"
dpkg -l libpam-usb >/dev/null || PROGRAMAS_A_INSTALAR=$PROGRAMAS_A_INSTALAR+" libpam-usb"
dpkg -l pamusb-tools >/dev/null || PROGRAMAS_A_INSTALAR=$PROGRAMAS_A_INSTALAR+" pamusb-tools"
dpkg -l libpam-ssh >/dev/null || PROGRAMAS_A_INSTALAR=$PROGRAMAS_A_INSTALAR+" libpam-ssh"
DIALOGO=$(which dialog)
[ $(echo $DIALOGO|wc -c) -gt 2 ] || PROGRAMAS_A_INSTALAR=$PROGRAMAS_A_INSTALAR=" dialog"
[ $PROGRAMAS_A_INSTALAR = "" ] || apt-get install -y $PROGRAMAS_A_INSTALAR
#-=-=-=-=-=-=-=-=-= INICIO DA CONFIGURACAO =-=-=-=-=-=-=-=-=-=-=-#
DIALOGO=$(which dialog)
$DIALOGO --stdout --msgbox "Insira um pendrive e pressione ENTER" 5 40
sleep 4
NOME2DEVICE=""
#Essa entrada com dialog pega um nome para o dispositivo que esta conectado na usb. Serve apenas para cadastra-lo
#Pode-se cadastrar mais de 1 dispositivo no sistema.
while [ $(echo $NOME2DEVICE|wc -c) -lt 2 ]; do
NOME2DEVICE=`$DIALOGO --stdout --no-cancel --inputbox "Insira um nome para o dispositvo" 8 40`
done
echo y|pamusb-conf --add-device $NOME2DEVICE
#tambem pode-se configurar N usuarios
echo y|pamusb-conf --add-user root
echo "auth sufficient pam_usb.so log_file=/var/log/pam_usb.log" >/etc/pam.d/commom-auth
echo "auth requisite pam_unix.so nullok_secure" >>/etc/pam.d/commom-auth
#Com a linha abaixo comentada, o que nao autenticar pelo pendrive podera se autenticar por senha
#Isso foi necessario devido ao acesso remoto por ssh, mas nao havendo necessidade de conexao ssh, pode ser descomentada.
echo "#auth requisite pam_deny.so" >> /etc/pam.d/commom-auth
echo "auth optional pam_smbpass.so migrate" >> /etc/pam.d/commom-auth
echo "auth optional pam_ssh.so use_first_pass" >>/etc/pam.d/commom-auth
dialog --stdout --msgbox "O sistema ira reiniciar agora" 5 40
reboot
Depois disso, basta digitar o nome do usuário no prompt e dar enter. Se for usuário cadastrado e o pendrive (também cadastrado) estiver conectado, o login sucederá sem pedir senha. O problema de deixar o pam_deny.so comentado é que, caso esteja sem pendrive, será possível efetuar login digitando a senha duas vezes. Aí vai da necessidade.
Ou ainda... Invés de mexer no commom-auth, basta jogar essas linhas no arquivo login logo abaixo do include de commom-auth (esse arquivo também está dentro de /etc/pam.d), mas dessa vez pode-se deixar descomentado a linha do pam_deny.so
.
Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Próximo post a caminho!
Revisão: Ricardo Amaral de Andrade
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.