O módulo de autenticação pamusb permite a criação de tokens de baixo custo e a ampliação da pilha de autenticação do sistema operacional, tornando-a mais flexível.
* Authentication request for user "root" (pamusb-check)
* Device "Kingston" is connected (good).
* Performing one time pad verification...
Aviso: o dispositivo /dev/sdb1 já é tratado pelo arquivo /etc/fstab, por isso o rótulo fornecido é ignorado.
* Regeneratin new pads...
* Access granted.
# pamusb-check prometeu
* No device configured for user "prometeu".
# pamusb-conf --add-user=prometeu
Which device would you like to use for authentication?
* Using "Kingston" (only option)
User: prometeu
Device: Kingston
Save to /etc/pamusb.conf?
[Y/n] Y
Done.
# pamusb-check prometeu
* Authentication request for user "prometeu" (pamusb-check)
* Device "Kingston" is connected (good).
* Performing one time pad verification...
* Regeneratin new pads...
* Access granted.
Verificando o arquivo de configuração
As operações de adição de dispositivo e cadastro de usuários criam entradas no arquivo de configuração do módulo pam-usb. Observamos as modificações acrescentadas nas seções de device e user:
# vi /etc/pamusb.conf
<?xml version="1.0" ?><!--
pamusb.conf: Configuration file for pam_usb.
<!-- Services settings (e.g. gdm, su, sudo...) -->
<services>
O arquivo de configuração, no formato xml, possui seções.
<!-- Example: Speed up hotplugging by disabling one time pads -->
<!--
<service id="pamusb-agent">
<option name="one_time_pad">false</option>
</service>
-->
<!-- Disable output for 'su' (needed for gksu) -->
<!--
<service id="su">
<option name="quiet">true</option>
</service>
-->
</services>
</configuration>
O arquivo de configuração está estruturado no formato xml. Ele possui quatro seções de gerenciamento, com tags que abrem e fecham cada seção:
<defaults></defaults>
<devices></devices>
<users></users>
<services></services>
e possui uma tag especial para comentários: <!-- -->
As configurações de aplicação geral devem ser incluídas na seção defaults e cada dispositivo, usuário ou serviço deve ser cadastrado na seção correspondente, mediante o uso das ferramentas ou por edição do arquivo.
[4] Comentário enviado por araujo_silva em 16/06/2009 - 17:20h
Valeu luiz
Testa usando os arquivos que estão no diretório do PAM (/etc/pam.d/*).
Basta incluir a linha que torna suficiente a consulta ao módulo do pam_usb. Por exemplo:
1. Incluir suporte ao serviço 'su', edite o arquivo /etc/pam.d/su e inclua as linhas de autenticação com módulo pam_usb:
auth sufficient pam_usb.so use_first_pass
session sufficient pam_usb.so use_first_pass
Ai, quando você digitar '$ su root', e o pendrive estiver conectado a senha não será solicitada.
O mesmo aplica-se a qualquer dos serviços com suporte ao uso do PAM.
[5] Comentário enviado por xpf em 16/06/2009 - 19:21h
Esta sua matéria me chamou muito a atenção pois procurava por algo similar a anos, sou novato no Linux e uso o Ubuntu 9.04 (podem chamar de linux de iniciante que eu não ligo :D), eu gostaria de saber se estes passos e comandos se aplicam da mesma forma no Ubuntu 9.04. E mais uma dúvida eu possuo um notebook com entrada para cartão de memória SD, eu gostaria de saber se posso usar no lugar de um pendrive USB um cartão SD. Para esclarecer melhor meu cartão SD quando é inserido no slot é montado automáticamente no diretório /media/MSDM, sendo que este meu SD está com o "label" MSDM.
Eu poderia usar este SD para por exemplo logar no Ubunto via GDM?
[7] Comentário enviado por araujo_silva em 16/06/2009 - 20:16h
Olha Só,
Existe mais de uma solução:
1. Usando o pam_rsa.so, que possibilita a criação de um par de chaves (uma publica e uma privada), a chave privada sendo mantida no notebook e a chave publica sendo salva no dispositivo SD;
2. Usando o pam_ssh.so pode-se gerar essas chaves e testar.
Nos dois casos, e no caso do pam_usb, os serviços podem compartilhar os módulos.
[9] Comentário enviado por xpf em 16/06/2009 - 20:49h
Obrigado, mas não é USB não.
Tive um probleminha aquí com meu pendrive, no GDM ele não está logando pelo pendrive e continuo precisando digitar a senha, mas no teste que fiz apertando Atrl+ALt+BackSpace ele loga sem precisar de senha apenas o nome do usuário é necessário. Será que é por que o pendrive não está montado na primeira inicialização?
Outro probleminha é que o Scrensaver entra quando desplugo o pen mas quando plugo novamente eu preciso digitar a senha para sair da tela de screesaver. O que será que fiz errado?
Observando o terminal com pamusb-agent aparece isto:
xpf@xpf-laptop:~$ pamusb-agent
pamusb-agent[4949]: pamusb-agent up and running.
pamusb-agent[4949]: Watching device "XPF-FLASH" for user "xpf"
pamusb-agent[4949]: Device "XPF-FLASH" has been removed, locking down user "xpf"...
pamusb-agent[4949]: Running "gnome-screensaver-command --lock"
pamusb-agent[4949]: Locked.
pamusb-agent[4949]: Device "XPF-FLASH" has been inserted. Performing verification...
pamusb-agent[4949]: Executing "/usr/bin/pamusb-check --quiet --config=/etc/pamusb.conf --service=pamusb-agent xpf"
Erro: o dispositivo /dev/sdb1 não é removível
pamusb-agent[4949]: Authentication failed for device XPF-FLASH. Keeping user "xpf" locked down.
[10] Comentário enviado por araujo_silva em 16/06/2009 - 21:18h
OK xpf
Vamos por partes:
1. O uso do Ctrl+Alt+BackSpace para autenticar no terminal é ajustado no arquivo do PAM (/etc/pam.d/login), que gerencia o login somente em modo texto;
2. O ajuste do login gráfico é feito no outro arquivo (/etc/pam.d/gdm), e tem que ter uma configuração semelhante à do login;
3. O pedido de senha é feito se o módulo pam_usb.so for o único do gerenciamento de autenticação, ou se faltar o parâmetro 'use_first_pass' que aproveita a senha entrada no módulo anterior e não solicita nova senha ao usuário;
4. Verifique que se você estiver no console, ou seja, logado no ambiente gráfico, assim que retirar o pendrive o ambiente gráfico será travado;
5. Inclua as linhas sobre autenticação na administração do gdm (/etc/pam.d/gdm), teste com as seguites linhas, e depois ajuste como lhe parecer melhor:
[11] Comentário enviado por xpf em 16/06/2009 - 22:28h
Não deu certo não. Estou postando meus arquivos:
/etc/pan.d/login
#
# The PAM configuration file for the Shadow `login' service
#
# Enforce a minimal delay in case of failure (in microseconds).
# (Replaces the `FAIL_DELAY' setting from login.defs)
# Note that other modules may require another minimal delay. (for example,
# to disable any delay, you should add the nodelay option to pam_unix)
auth optional pam_faildelay.so delay=3000000
# Outputs an issue file prior to each login prompt (Replaces the
# ISSUE_FILE option from login.defs). Uncomment for use
# auth required pam_issue.so issue=/etc/issue
# Disallows root logins except on tty's listed in /etc/securetty
# (Replaces the `CONSOLE' setting from login.defs)
auth [success=ok ignore=ignore user_unknown=ignore default=die] pam_securetty.so
# Disallows other than root logins when /etc/nologin exists
# (Replaces the `NOLOGINS_FILE' option from login.defs)
auth requisite pam_nologin.so
#aded for me for use with pan_usb
auth sufficient pam_usb.so use_first_pass
# SELinux needs to be the first session rule. This ensures that any
# lingering context has been cleared. Without out this it is possible
# that a module could execute code in the wrong domain. (When SELinux
# is disabled, this returns success.)
session required pam_selinux.so close
# This module parses environment configuration file(s)
# and also allows you to use an extended config
# file /etc/security/pam_env.conf.
#
# parsing /etc/environment needs "readenv=1"
session required pam_env.so readenv=1
# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session required pam_env.so readenv=1 envfile=/etc/default/locale
# Standard Un*x authentication.
@include common-auth
# This allows certain extra groups to be granted to a user
# based on things like time of day, tty, service, and user.
# Please edit /etc/security/group.conf to fit your needs
# (Replaces the `CONSOLE_GROUPS' option in login.defs)
auth optional pam_group.so
# Uncomment and edit /etc/security/time.conf if you need to set
# time restrainst on logins.
# (Replaces the `PORTTIME_CHECKS_ENAB' option from login.defs
# as well as /etc/porttime)
# account requisite pam_time.so
# Uncomment and edit /etc/security/access.conf if you need to
# set access limits.
# (Replaces /etc/login.access file)
# account required pam_access.so
# Sets up user limits according to /etc/security/limits.conf
# (Replaces the use of /etc/limits in old login)
session required pam_limits.so
# Prints the last login info upon succesful login
# (Replaces the `LASTLOG_ENAB' option from login.defs)
session optional pam_lastlog.so
# Prints the motd upon succesful login
# (Replaces the `MOTD_FILE' option in login.defs)
session optional pam_motd.so
# Prints the status of the user's mailbox upon succesful login
# (Replaces the `MAIL_CHECK_ENAB' option from login.defs).
#
# This also defines the MAIL environment variable
# However, userdel also needs MAIL_DIR and MAIL_FILE variables
# in /etc/login.defs to make sure that removing a user
# also removes the user's mail spool file.
# See comments in /etc/login.defs
session optional pam_mail.so standard
# Standard Un*x account and session
@include common-account
@include common-session
@include common-password
# SELinux needs to intervene at login time to ensure that the process
# starts in the proper default security context. Only sessions which are
# intended to run in the user's context should be run after this. (When
# SELinux is disabled, this returns success.)
session required pam_selinux.so open
[12] Comentário enviado por araujo_silva em 17/06/2009 - 06:26h
A configuração está funcional.
Somente para testar, faça o seguinte:
1. comente as linhas do serviço gdm (/etc/pam.d/gdm) que começam com @include:
@include common-auth
@include common-account
@include common-session
@include common-password
Você vai comentar colocando um sinal '#' antes deles, porque eles estão inserindo as configurações desses arquivos no serviço gdm;
2. Verifique se a proteção de tela está habilitada (SISTEMA/PREFERENCIA/PROTEÇÃO DE TELA);
;
3. Faça o logon normalmente e abra um terminal virtual no ambiente gráfico para ler o resultado da conecção do dispositivo usb;
4. Leia o arquivo de log para verificar o que ele está indicando:
$ tail /var/log/auth.log
Informe o resultado do arquivo de log antes e depois das auterações.
[16] Comentário enviado por araujo_silva em 17/06/2009 - 09:57h
Vamos vê xpf:
1. O sistema não está identificando usuário cadastrado para logar, inclua uma linha no arquivo do gdm, mantenha as linhas do gnome-keyring e do limits, mas inclua o pam_blue sem use_first_pass [depois nós analisaremos o porquê]:
auth requisite pam_securetty.so
auth requisite pam_nologin.so
auth sufficient pam_usb.so
auth required pam_unix.so
(Estou contando que você já cadastrou usuários válidos do sistema no pendrive e próprio pendrive, pelo retorno do log de autenticação )
Teste e verifique o retorno do log, que deve mudar.
[17] Comentário enviado por araujo_silva em 17/06/2009 - 10:02h
Vagner
O pam_usb.so é um módulo para autenticação local e o acesso pelo putty é realizado através da rede.
Se você conectar o pendrive na máquina onde o uso do pam_usb.so está cadastrado, e incluir a linha no serviço ssh (/etc/pam.d/ssh), o acesso funcionará.
De outra forma se o acesso for feito através de uma máquina virtual instalada na mesma máquina física, compartilhando os dispositivos usb, o acesso também será autorizado.
Depois veremos outros meios de autenticação via rede.
[18] Comentário enviado por xpf em 17/06/2009 - 22:30h
Obrigado pela ajuda, testei mas não funcionou, deve ser alguma etapa que fiz errado, vou fazer tudo do começo de novo para ver se consigo resolver isso. Mais uma vez obrigado pela atenção.