Autenticação por pendrive com PAM

Autenticação por pendrive
Autenticação por pendrive

Autenticação por pendrive

Nada proteje 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 teóricamente, 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 usuario 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. Ai 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 newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

 

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “Autenticação por pendrive com PAM

Deixe uma resposta