Plugar o pendriver é melhor do que digitar a senha

Digitar senhas é algo rotineiro para quem usa computadores, mas para muitas ocasiões isso pode ser substituído pela ação de plugar um pendrive na porta USB.Faz tempo que vejo textos comentando sobre a possibilidade de usar o pendrive como um token para autenticação ao invés de digitar a senha no Linux. Como eu achava que fosse algo macabro de ser feito nunca dei atenção ao assunto até que um dia deu vontade de experimentar.

Só um comentário inicial

Embora o texto seja longo, isso é porque eu gosto de explicar as coisas nos míiiiiiiiinimos detalhes 😉 Mas o procedimento é bem simples e fácil. O procedimento descrito a seguir foi realizado no Ubuntu Linux 8.10 (Intrepid), mas qualquer distribuição baseada em Debian funcionará da mesma forma, para outras distribuições talvez você tenha que adaptar alguma coisa, como por exemplo o aptitude seria substituído pelo yum no Fedora (acho que é isso), o arquivo common-auth, no Gentoo se chama system-auth e por ai vai.

O procedimento a seguir, embora seja feito a partir de uma janela de terminal, ou pelo modo console (CTRL-ALT-F1) é bem simples e a medida do possível vou usar ferramentas gráficas que são mais amigáveis para os iniciante, então acredito que até mesmo estes usuários poderão fazê-lo sem medo de cometer algum erro.

Baixando e instalando

Como estou usando Debian Ubuntu, a instalação consiste apenas em usar o aptitude para baixar e instalar os pacotes necessários. Caso você use uma distro não Debian você deverá usar o gerenciador de pacotes apropriado.

$sudo aptitude install pmount libpam-usb pamusb-tools

Após digitar o comando acima você será solicitado para informar a sua senha, em seguida confirmar os pacotes que serão instalados. Após alguns kilobytes baixados e outros segundos de processamento, os pacotes estarão instalados bastando agora configurar o seu sistema e associar os pendrive aos usuários.

Configurando o sistema

Agora que o pamusb está instalado precisamos configurar o sistema para permitir que os usuários que possuam um pendrive já credenciado pelo sistema (vide abaixo) possam entrar sem senha. Para tal façanha vamos ter que editar o arquivo de configuração do nosso sistema de autenticação “pam”.

A partir do terminal, ou teclando ALT-F2 digite o comando abaixo:

$ gksudo gedit /etc/pam.d/common-auth

Isso apenas abrirá o nosso editor de textos gedit que é muito mais amigável do que qualquer “vi”, “nano” etc, com privilégios adminsitrativos – essencial para editar arquivos de configuração do sistema. Mas lembre-se que se a sua distribuição usa o KDE como ambiente gráfico, ao invés do Gnome, você deverá substituir o gedit pelo kedit, bem como, ao invés de gksudo usar o ksudo.

Veja neste arquivo que você abriu, que as primeiras linhas iniciam com um símbolo “#”. Estas linhas são apenas comentários, logo abaixo delas você deverá digitar a seguinte linha:

auth sufficient pam_usb.so

Isso garantirá que o uso do pendrive é suficiente para autenticar um usuário sem requerer senha. Assegure-se que esta será a primeira linha no arquivo sem o símbolo “#”, já que para o PAM a ordem das regras é importante. Após salvar o arquivo, pode fechar o editor de textos. A partir daí seu sistema já tentará autenticar usuários que possuam um pendrive.

OBS: Se você tem vários computadores e quer autenticar por este método em todos eles, você deverá fazer este procedimento em todos eles.

Credenciando um pendrive para autenticar no sistema

Antes de dizer como fazer e bom tranquilizar que este procedimento não destrói o conteúdo do seu pendrive, embora ele crie uma pasta sem nome (.pamusb) onde armazenará arquivos de validação cada vez que você usá-lo para autenticar pela primeira vez em uma máquina, mas não se preocupe com isso também, os arquivos são minúsculos – da ordem de 1kb cada e serão apenas um por cada par usuário/máquina, ou seja se o seu pendrive só possui uns 500kb livres isso será mais do que suficiente para você autenticar em 500 computadores diferentes.

Dito isto, conecte o seu pendrive à uma porta USB disponível em seu computador e digite o seguinte comando:

$ sudo pamusb-conf --add-device NomePendrive

Substitua “NomePendrive” pelo nome que for mais conveniente para você. Este nome servirá para identificar o seu pendrive no sistema, caso você tenha que configurar o pendrive de vários usuários este nome será importante para diferenciá-los entre si e identificar cada um deles. Dê um nome amigável para que você lembre quem é quem.

Em seguida lhe será apresentada algumas informações sobre o pendrive e será pedida uma confirmação. Bastará você responder com “Y” e teclar ENTER.

OBS: Você deverá fazer esta operação para cada pendrive que você usar, não esqueça de dar um nome diferente para cada um deles, ou você poderá se confundir depois. Este procedimento também deve ser refeito cada vez que você formatar o pendrive, já que durante a formatação o serial do seu dispositivo será modificado.

Associando a conta de um usuário ao pendrive

Agora que o seu pendrive já foi configurado para ser reconhecido pelo pamusb como um dispositivo de autenticação, resta-nos informar qual/quais usuário(s) poderão usá-lo para entrar no sistema sem informar a senha. Para isso basta apenas digitar o comando abaixo:

$ pamusb-conf --add-user welrbraga

Caso você já tenha adicionado vários pendrives ao sistema (o procedimento descrito antes) você será solicitado a decidir qual será o pendrive usado por este usuário. Quando solicitado tecle Y para confirmar. Não esqueça de substituir “welrbraga” do exemplo acima pelo seu nome de login no computador.

OBS: Este procedimento deverá ser realizado para cada usuário que você deseja autenticar usando este mesmo pendrive. Por exemplo, poderíamos configurar o mesmo pendrive para que possa autenticar o usuário jose e o root, assim se o jose precisar entrar no sistema como root bastará manter o pendrive conectado. Entretanto pense na falha de segurança que você pode estar causando com isso. Imagine esse pendrive nas mãos erradas, de uma pessoa que esteja na frente do computador certo!

Testando… 1, 2, 3, testando!

Basicamente é isso e se tudo correu bem você já deve conseguir autenticar neste computador, sem informar a senha para este usuário.

Para testar basta abrir uma nova sessão de console (CTRL-ALT-F2) com este usuário, encerrar a sessão e fazer novamente o login pelo Gdm (tela de login), tentar usar o comando sudo etc. Qualquer item que necessite informar a senha do usuário (desde que sua autenticação seja baseada no mecanismo PAM) deverá logar sem pedir senha a partir daí.

Se tudo funcionou, meus parabéns, não há nada mais a ser feito!

O que mais eu preciso saber?

O básico é isso ai, mas sempre existem detalhes a serem conhecidos. Então vamos lá, caso eu tenha deixado de dizer algo mande um “alô”, ou se desejar leia o conteúdo dos links de referências no final deste texto e principalmente o guia rápido da página oficial (Quickstart guide).

Algo saiu errado

Quando eu fiz este procedimento pela primeira vez em meu notebook com Ubuntu 8.04 (Hardy Heron) tudo funcionou desta forma, foi quando eu me empolguei e configurei meu outro notebook, meu desktop em casa e no trabalho etc. Mas após tentar em um notebook com o Ubuntu 8.10 (Intrepid) eu notei que o sistema só funcionava se eu montasse o pendrive antes, ou seja o módulo pmount (que monta um dispositivo como usuário comum) não estava funcionando. A solução foi fazer o seguinte:

$ gksudo echo "/dev/sdb1" >> /etc/pmount.allow

Segundo a página de manual do pmount, este arquivo informa quais dispositivos poderão ser montados pelo usuário,  então o que eu fiz foi incluir o dispositivo /dev/sdb1 que corresponde ao meu pendrive. Bingo, era isso!

Como saber qual é o dispositivo do seu pendrive? Simples! Com o seu pendrive conectado a porta USB e montado, pela linha de comandos digite o seguinte comando:

$ df|grep /media

Desta forma todos os dispositivos montados em  “/media” serão listados e o seu pendrive é um deles. Olhe a primeira coluna que você verá o dispositivo a ser descrito no arquivo pmount.allow.

Outra coisa, segundo ainda a manpage do pmount em distribuições baseadas em Debian você deverá incluir o usuário no grupo “plugdev”. Por padrão o Ubuntu já faz isso com o usuário principal do sistema, mas se você precisa autorizar um usuário que não esteja no grupo certifique-se de fazer a inclusão com o comando:

$ gksudo adduser usuario plugdev

ou mesmo usando a ferramenta gráfica para gerenciamento de usuários e grupos que está no menu Sistema > Administração > Usuarios e Grupos. Por esta ferramenta, dê duplo-clique sobre o nome do usuário desejado e na ficha “Privilégios do usuário“, escolha o grupo plugdev (o que permite “Acessar um dispositivo externo de armazenamento automaticamente”).

Segurança acima de tudo

Antes de mais nada lembre-se que se o seu pendrive contiver autorização para acessar todos os servidores da sua rede ele será mais valioso que o pendrive idiota daquela novela estúpida (espero que ninguém me venha me criticar pela alfinetada mas é difícil qualificar alguém que perde tempo vendo estas bobagens).

Lembre-se ainda que você não deveria associar vários usuários ao mesmo dispositivo. Por exemplo se você permitir que o João, a Maria, o tunico e Pedro possam usar o mesmo dispositivo para logar nos seus sistemas, o João poderá entrar na conta da Maria, bem como na conta de qualquer um dos outros dois usuários e vice-versa.

Este pendrive deverá ser guardado com muito carinho e cuidado ou do contrário você corre o risco de abrir, não uma brecha de segurança, mas uma verdadeira cratera. Afinal a sua metodologia de segurança está deixando ser baseada no que o usuário sabe, para ser baseada no que ele tem (Veja o artigo sobre senhas seguras).

Descredenciando um usuário ou pendrive

Infelizmente não há uma interface gráfica bonitinha para facilitar a nossa vida administrando o pamusb, logo se você precisar tirar a concessão de algum usuário, ou mesmo descredenciar um pendrive, deverá “fazer isso na unha” a partir do arquivo de configuração. Como este é um arquivo em formato XML ele está bem estruturado e simples de entender. Para editá-lo use o comando:

$ gksudo gedit /etc/pamusb.conf

No caso de tirar a concessão de um usuário que, digamos, você associou ao pendrive errado, vá até a sessão <users> e procure por algo como:

<user id="welrbraga">
    <device>
        PEN-PEDRO
    </device>
</user>

Veja que o usuário “welrbraga” (primeira linha) está autorizado a entrar no sistema usando o pendrive chamado “PEN-PEDRO”. Se você quer associar ao pendrive correto, basta editar estas informações (trocar o nome do pendrive, ou do usuário pelo correto).

Se a intenção é impedir que o usuário welrbraga deixe de logar no sistema usando pendrive simplesmente exclua esta seção inteira.

Para um dispositivo que foi roubado, destruído ou mesmo formatado ser removido do sistema você deverá procurar a seção <devices>, onde terá um ou vários nós como este:

<device id="WELRBRAGA">
    <vendor>
        Kingston
    </vendor>
    <model>
        DataTraveler 2.0
    </model>
    <serial>
        Kingston_DataTraveler_2.0_00000000000000000000002D-0:0
    </serial>
    <volume_uuid>
        BFDE-9FFD
    </volume_uuid>
</device>

Esta seção descreve o pendrive em si, embora apenas a sessão <volume_uuid> seja a responsável pela validação (caso o pendrive seja formatado este valor será mudado) é sempre mais prático excluir esta sessão inteira e adicionar o pendrive novamente.

Referências

  • Mapage do comando pmount. http://manpages.ubuntu.com/manpages/intrepid/man1/pmount.html
  • Página oficial do módulo pamusb. http://pamusb.org/
  • Gustavo Lichti. Autenticação com Pendrive. http://www.lichti.eti.br/autenticacao-com-pendrive/
  • Claudemir da Luz Jr. Autenticação em Pendrive – PAM_USB. http://www.dicas-l.com.br/dicas-l/20080408.php

4 thoughts on “Plugar o pendriver é melhor do que digitar a senha”

  1. Parabéns pelo artigo, vou testar essa dica que pode me poupar alguns segundos aqui em casa. Só ficou uma duvida.

    É possivel se logar sem ter o pendrive? Usando o nome de usuário e a senha?

    Obrigado.

  2. Man ótimo post mais me diz uma coisa é possível programar um pendrive para deletar um arquivo logo que ele ser plugado no micro que usa sistema operacional windows??

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.