Biometria: Transforme-se no usuário root com sua impressão digital

O comando su/sudo no sistema operacional GNU/Linux atribui ao usuário os poderes de administrador do sistema. Neste documento veremos como elevar a segurança incluindo a tecnologia biométrica de impressão digital junto à senha para obter poderes administrativos.

[ Hits: 30.276 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 07/07/2009 | Blog: http://assuntonerd.com.br


Download e instalação



Abaixo os links para download do código-fonte, pacotes para o openSUSE e Ubuntu. Neste documento trabalharemos a partir da compilação do código fonte para compatibilizar o máximo possível as instruções para qualquer distribuição Linux.

Código fonte (utilizado neste documento): libfprint-0.0.6.tar.bz2 (fontes da biblioteca)

Após o download devemos descompactar/extrair os arquivos fonte. Utilize o comando "tar -jxvf" como abaixo. Entre na pasta criada pelo comando tar (libfprint-0.0.6) e execute o comando "./configure" para configurar as diretivas de compilação para o seu ambiente.

tar -jxvf libfprint-0.0.6.tar.bz2
$ cd libfprint-0.0.6
$ ./configure


Execute o convencional o comando "make" para efetuar a compilação na íntegra do código-fonte, a seguir transforme-se em super-usuário (root) para efetuar a instalação da biblioteca através do comando "make install" seguido do "ldconfig", conforme as instruções abaixo.

make
$ su

Senha:
# make install
# ldconfig


Instalando a autenticação biométrica:

pam_fprint é o módulo biométrico que trabalha em conjunto com a biblioteca de autenticação PAM (Pluggable Authentication Modules). Sua base tecnológica é a biblioteca fprint, que compilamos e instalamos anteriormente. O pacote pam_fprint utiliza as funções biométricas para processar e verificar a autenticação do usuário.

Dando continuidade ao trabalho, efetue o download, descompacte, compile e instale o pacote pam_fprint seguindo as instruções abaixo:

wget http://ufpr.dl.sourceforge.net/sourceforge/fprint/pam_fprint-0.2.tar.bz2
tar -jxvf pam_fprint-0.2.tar.bz2
$ cd pam_fprint-0.2
$ ./configure
$ make
$ sudo make install


Integrando a biometria ao comando su:

Para finalizar, devemos apenas modificar o arquivo de configuração do comando su (utilizado para obter os direitos do usuário root) , localizado em /etc/pam.d/su. A seguir o conteúdo deste arquivo, com as alterações necessárias para tornar obrigatória a autenticação biométrica durante o comando su no sistema GNU/Linux. Reparem na utilização do modo REQUISITE de autenticação. Maiores informações, sugiro a leitura de documentação do PAM.

#%PAM-1.0
auth     sufficient     pam_rootok.so
auth     include        common-auth
auth     requisite      pam_fprint.so
account  include        common-account
password include        common-password
session  include        common-session
session  optional       pam_xauth.so

O próximo passo é efetuar o cadastramento biométrico da sua impressão digital. Se concluído com sucesso esta tarefa, no próximo login o usuário, além da senha, deverá fornecer a sua impressão digital para ter acesso ao sistema.

O programa pam_fprint_enroll é responsável pelo cadastramento das impressões digitais. Para entender melhor a sintaxe, digite "pam_fprint_enroll --help" e constataremos que devemos informar o número correspondente ao dedo utilizado para cadastro.

# pam_fprint_enroll --help
Usage: ./pam_fprint_enroll options
   -h      --help                  Display this usage information.
   -f      --enroll-finger index   Enroll finger with index.

  Valid indexes are:
   1 - Left Thumb
   2 - Left Index Finger
   3 - Left Middle Finger
   4 - Left Ring Finger
   5 - Left Little Finger
   6 - Right Thumb
   7 - Right Index Finger
   8 - Right Middle Finger
   9 - Right Ring Finger
   10 - Right Little Finger

No meu caso utilizei o número 7 representando o dedo indicador da mão direita. Ao executar o programa, pressione a tecla [ENTER] e encoste o dedo no leitor de impressão digital. Pronto! Nesta fase, ao efetuar o login, o seu sistema operacional solicitará a senha seguida da autenticação biométrica.

# pam_fprint_enroll --enroll-finger 7
This program will enroll your finger, unconditionally overwriting any selected print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C

Found device claimed by Digital Persona U.are.U 4000/4000B driver
Opened device. It's now time to enroll your finger.

You will need to successfully scan your Right Index Finger 1 times to complete the process.

Scan your finger now.
Enroll complete!
Enrollment completed!

Se tudo estiver funcionando corretamente, após o comando su será solicitada a autenticação biométrica e a senha de root. Ou seja, implementamos uma terceira camada de autenticação com a impressão digital do usuário. A seguir o vídeo apresenta a tecnologia open source fprint (leitura de impressão digital) integrado ao comando SU na plataforma Linux. A biblioteca fprint proporciona inúmeros recursos além dos mencionados neste documento, para um estudo detalhado sobre o assunto, sugiro algumas leituras como o artigo fprint: Biometria livre completa e total, e também no site oficial do projeto.
Página anterior    

Páginas do artigo
   1. Introdução: Autenticação Biométrica e o usuário root
   2. Download e instalação
Outros artigos deste autor

Permitindo o uso da internet usando o login do SAMBA

GAMBAS: A definitiva resposta open-source ao Microsoft Visual Basic

Compilador Clipper open-source, compile sem problemas os sistemas .PRG no Linux!

IBM Omni Find Yahoo: Um mecanismo de busca corporativa em seu servidor

Instalando o Android 5.0 Lollipop e suas novidades

Leitura recomendada

O software livre e as novas oportunidades

Usando e abusando do Zypper

Criação de DVDs com o videotrans

Dukto - Transferindo arquivos entre computadores conectados à mesma rede

Gerenciamento de Lan House com Main Control System

  
Comentários
[1] Comentário enviado por removido em 07/07/2009 - 15:56h

Como sempre um ótimo artigo.

[2] Comentário enviado por sandromt em 07/07/2009 - 16:38h

Parabéns por mais essa artigo, quando se ler Biometria no VOL ja se sabe que é o Cabelo com seus projetos excelentes....valeu!!!!!!!!

[3] Comentário enviado por asdf2 em 07/07/2009 - 16:51h

ficou muito massa, vale 10, foi pro favoritos.

[4] Comentário enviado por araujo_silva em 07/07/2009 - 19:00h

Parabéns pela sua, sempre muito importante, contribuição ao nosso aprendizado.

Abraços,

Lourival

[5] Comentário enviado por chmod000 em 08/07/2009 - 14:37h

Mais um excelente artigo de nosso amigo.

Seria interessante uma lista (ou alguns exemplos) de dispositivos compatíveis disponíveis no mercado.

Grande abraço.

chmod000

[6] Comentário enviado por hendrigo em 08/07/2009 - 17:19h

vc sabe como ficaria uma implementação de biometria com OpenLDAP?

[7] Comentário enviado por tjpp em 08/07/2009 - 17:31h

Eu tentei usar o fprint no leitor do meu notebook. Eu achei a margem de acertos pequena. Depois instalei o thinkfinger em um Lenovo e a margem de acerto era bem maior. Uma diferença chama a atenção: o thinkfinger pede que passe o dedo três vezes (pelo menos) para registrar e o fprint apenas uma. Para mim, a diferença é óbvia, mas não sei porque ninguém mais se interessou por isto.

Só para registrar, nos 30 únicos minutos em que usei o Vista, o leitor funcionava perfeitamente (lá também pedia o cadastramento em três vezes).

[8] Comentário enviado por Teixeira em 09/07/2009 - 07:13h

Mais uma vez o cabelo nos surpreende com um ótimo artigo. Parabéns!

[9] Comentário enviado por ebernardino em 17/07/2009 - 11:15h

Espero que este tutorial ajude também. Segue Link: http://ostrecosdeti.com.br/wordpress/2008/11/12/instalando-o-leitor-biometrico-dos-notebooks-hp-pavi...

[10] Comentário enviado por gregory em 27/07/2009 - 18:13h

não esta dando certo instalar a biblioteca.

apos o comando ./configure ele checa varias coisas e quando chega para chegar a libusb aparece essa mensagem:

checking for LIBUSB... configure: error: Package requirements ("libusb") were not met:

No package 'libusb' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBUSB_CFLAGS
and LIBUSB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.


onde pego essa lib?

obrigado

[11] Comentário enviado por gregory em 27/07/2009 - 18:20h

com o comando yum install libusb aparece a seguinte mensagem:

Configurando o processo de instalação
O pacote libusb-0.1.12-21.fc11.i586 já está instalado em sua última versão

[12] Comentário enviado por ZiroCool em 02/08/2009 - 00:17h

Quando executo o ./configure, tenho a seguinte mensagem de erro:

checking security/pam_modules.h usability... no
checking security/pam_modules.h presence... no
checking for security/pam_modules.h... no
configure: error: PAM headers missing


Não tá achando os arquivos de cabeçalho no arquivo disponibilizado no artigo. =/

[13] Comentário enviado por meken em 23/02/2011 - 17:42h

O meu Está aparecendo essa mensagem de erro após o comando Make, Estou usando Slackware 13.1

[email protected]:/usr/src/panfprint/pam_fprint-0.2# make
Making all in src
make[1]: Entering directory `/usr/src/panfprint/pam_fprint-0.2/src'
gcc -I/usr/local/include/libfprint -g -O2 -o pam_fprint_enroll pam_fprint_enroll-pam_fprint_enroll.o -L/usr/local/lib -lfprint
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPathStart'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetViewbox'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetFont'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetStrokeColor'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawColor'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPopPattern'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetFillPatternURL'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetStrokeDashArray'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawAllocateWand'
/usr/lib/libMagickCore.so.3: undefined reference to `PushDrawingWand'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPathClose'
/usr/lib/libMagickCore.so.3: undefined reference to `PixelSetRedQuantum'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawScale'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetTextUnderColor'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawLine'
/usr/lib/libMagickCore.so.3: undefined reference to `PopDrawingWand'
/usr/lib/libMagickCore.so.3: undefined reference to `DestroyPixelWand'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetFontSize'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawTranslate'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPathMoveToAbsolute'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawAnnotation'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetStrokeAntialias'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPushDefs'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPathFinish'
/usr/lib/libMagickCore.so.3: undefined reference to `DestroyMagickWand'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawRoundRectangle'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPopDefs'
/usr/lib/libMagickCore.so.3: undefined reference to `PixelSetQuantumColor'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetFillColor'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawComposite'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetClipPath'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawRender'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawEllipse'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawComment'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPathLineToAbsolute'
/usr/lib/libMagickCore.so.3: undefined reference to `PixelSetBlueQuantum'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetStrokeLineJoin'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPushPattern'
/usr/lib/libMagickCore.so.3: undefined reference to `PixelSetColor'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPushClipPath'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetStrokeLineCap'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawArc'
/usr/lib/libMagickCore.so.3: undefined reference to `NewMagickWandFromImage'
/usr/lib/libMagickCore.so.3: undefined reference to `PixelSetOpacityQuantum'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPopClipPath'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetClipRule'
/usr/lib/libMagickCore.so.3: undefined reference to `NewPixelWand'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawRotate'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawRectangle'
/usr/lib/libMagickCore.so.3: undefined reference to `DestroyDrawingWand'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetStrokeWidth'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawPathEllipticArcAbsolute'
/usr/lib/libMagickCore.so.3: undefined reference to `DrawSetStrokePatternURL'
/usr/lib/libMagickCore.so.3: undefined reference to `PixelSetGreenQuantum'
collect2: ld returned 1 exit status
make[1]: *** [pam_fprint_enroll] Error 1
make[1]: Leaving directory `/usr/src/panfprint/pam_fprint-0.2/src'
make: *** [all-recursive] Error 1
[email protected]:/usr/src/panfprint/pam_fprint-0.2#


Contribuir com comentário