Manual

do

Maker

.

com

Autenticação por pendrive com PAM

Autenticação por pendrive com PAM

Autenticação por pendrive

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

E a autenticação por pendrive...

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

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.