Infra - Linux

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.

por Alessandro de Oliveira Faria



Introdução: Autenticação Biométrica e o usuário root

Autenticação biométrica

As maneiras de autenticação de identidade podem ser realizadas através da apresentação de algo que o usuário saiba, através de algo sobre a posse do usuário (token) ou através de uma característica física mensurável.

O uso da biometria como método de autenticação é uma realidade em diversos segmentos mercadológicos. A tecnologia está tornando-se tão comum como as senhas e códigos PIN, porém sem a necessidade de memorização de código e preocupação com a facilidade da dedução ou quebra por tentativas computacionais.

A biometria é uma característica do indivíduo que está sempre consigo, diferente dos tokens identificadores que necessitam de transporte, assim desta maneira, sendo facilmente roubados ou esquecidos, não apresentando uma maneira eficaz de controlar quem exatamente está apresentando determinado identificador.

A biometria exige a presença do usuário no ponto de identificação devido a sua base em características fisiológicas, o que aumenta a garantia de sucesso, credibilidade e segurança no momento da identificação.

O usuário root e administração do sistema

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

O sistema operacional GNU/Linux entende o usuário root como uma conta especial, ou seja, se o usuário em questão possuir o UID igual a 0, o mesmo terá poderes para alterar qualquer configuração do sistema.

Tanto poder deve somente ser utilizado nas tarefas onde usuários convencionais não possuem privilégios para tal situação. Logado como usuário convencional não é possível causar danos acidentalmente ao sistema operacional.

Portanto devemos atribuir uma senha de difícil dedução, assim evitando/facilitando o acesso a pessoas indevidas ao usuário root. Também é recomendável alterar a senha periodicamente, existem diversos utilitários para geração aleatória de senhas fortes (mais de 8 caracteres, letras maiúsculas, minúsculas e números).

O su e o comando sudo

Em diversas situações precisamos executar uma tarefa ou comando permitido apenas ao usuário root. Um opção eficaz e segura é utilizar o comando su ou sudo.

Ao digitar o comando su no terminal, será solicitada a senha do usuário root. Logo a seguir todas as operações podem ser efetuadas como usuário administrador. Ao término basta executar o comando exit e voltaremos a operar com o login utilizado anteriormente.

O comando sudo é um recurso similar, porém interessante e mais abrangente, pois é possível definir quais usuários poder utilizá-lo. Detalhes sobre o comando SU/SUDO não são o escopo deste texto, sendo assim sugiro algumas pesquisas na internet para mais informações.

A biblioteca fprint

O pacote fprint é o sonho de todo desenvolvedor de código aberto. O kit de integração permite o desenvolvimento de processos de identificação e verificação de impressões digitais. Um dos pontos fortes nesta solução open source é a compatibilidade com diversos modelos de sensores disponíveis no mercado.



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--helpDisplay 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.
Alessandro de Oliveira Faria

Alessandro de Oliveira Faria - Sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software nas mais diversas linguagens e plataforma, levando o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.