Login no Ambiente de Trabalho e Autenticação de Utilizadores Linux#

Introdução#

This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and Nitrokey FIDO2.

Se quiser entrar no seu computador usando Nitrokey Pro 2, Nitrokey Storage 2 e Nitrokey Início pode visitar as instruções disponíveis `aqui <../../pro/linux/login-with-pam.html>>x id=»388»></x>>.

Requisitos#

  • Ubuntu 20.04 com o Gnome Display Manager.

  • Nitrokey FIDO2 configured following these instructions.

Instruções#

Método GUI#

  1. No canto inferior esquerdo clique em* Show Applications e digite as seguintes configurações na barra de pesquisa:

    img1
  2. Campa na barra direita para* Users`

    img2
  3. No canto esquerdo clique em* Unlock e isso iria pedir a sua palavra-passe*

    img3
  4. Select* Administrator e introduza o nome de utilizador e palavra-passe da sua escolha*

    img4
  5. A partir do momento em que termine o passo 4 deve ser feito*

    img5

Método CLI#

  1. Criar um utilizador de reserva e dar-lhe privilégios de raiz*

    Você pode fazer isso usando esses comandos:

    $ sudo adduser <backup_user>
    $ sudo usermod -aG sudo <backup_user>
    

    Caso prefira configurar o U2F para um único utilizador, e esteja bloqueado fora da sua sessão de utilizador, ainda poderá fazer o login com o <backup_user>, e prosseguir com a manutenção.

    Aviso

    O seguinte guia pode potencialmente bloqueá-lo para fora do seu computador. Você deve estar ciente desses riscos, pois é recomendável usar primeiro as instruções abaixo em um computador secundário, ou após um backup completo.

    Poderá perder o acesso aos seus dados após configurar ` módulosPAM <https://www.man7.org/linux/man-pages/man8/pam.8.html>`__.

  2. Configurar o* rules para reconhecer o Nitrokey FIDO2*

    Em /etc/udev/rules.d download `x id="39"></x>`

    $ cd /etc/udev/rules.d/
    $ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
    

    E reiniciar udev serviço

    $ sudo systemctl restart udev
    
  3. Install* libpam-u2f`

    No Ubuntu 20.04 é possível baixar diretamente libpam-u2f a partir dos repos oficiais

    $ sudo apt install libpam-u2f
    

    Nota

    Clique para mais opções

    • Alternativamente pode construir libpam-u2f de Git.

    • Para verificar se a biblioteca está devidamente instalada, digite o seguinte comando:

    $ file /lib/x86_64-linux-gnu/security/pam_u2f.so
    

    A Saída deve ser algo como o seguinte:

    /lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
    
  4. Preparar o Directório*

    Crie .config/Nitrokey/ sob o seu diretório home

    $ mkdir ~/.config/Nitrokey
    

    E ligue o seu Nitrokey FIDO2.

    Uma vez feita a preparação, podemos começar a configurar o computador para utilizar o Nitrokey FIDO2 para autenticação do 2º fator no login e sudo`.

  5. Gerar o ficheiro de configuração U2F*

    Para gerar o arquivo de configuração vamos usar o pamu2fcfg utilidade que vem com o `x id="95"></x>`. Por conveniência, escreveremos diretamente a saída do utilitário no arquivo u2f_keys sob .config/Nitrokey`. Primeiro ligue o seu Nitrokey FIDO2 (se ainda não o fez), e introduza o seguinte comando:

    $ pamu2fcfg > ~/.config/Nitrokey/u2f_keys
    

    Uma vez executado o comando acima, você precisará tocar a tecla enquanto ela pisca. Uma vez feito, pamu2fcfg irá anexar a sua saída o u2f_keys no seguinte formato:

    <username>:Zx...mw,04...0a
    

    Nota, a saída será muito mais longa, mas as partes sensíveis foram removidas aqui. Para maior segurança, e uma vez gerado o arquivo de configuração, vamos mover o diretório .config/Nitrokey sob o diretório `x id="199"></x> com este comando:

    $ sudo mv ~/.config/Nitrokey /etc
    

    Dica

    • O ficheiro em .config/Nitrokey` deve ser nomeado `x id="52"></x>`

    • É recomendável testar primeiro as instruções com um único utilizador. Para este fim o comando anterior toma a opção -u, para especificar um usuário, como no exemplo abaixo:

      $ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
      
    • Para configuração individual do usuário você deve apontar para o diretório home no próximo passo, ou não incluir a opção authfile na configuração do PAM.

  6. Backup*

    Este passo é opcional, no entanto é aconselhável ter uma Nitrokey de reserva em caso de perda, roubo ou destruição do seu FIDO Nitrokey.

    Para configurar uma chave de backup, repita o procedimento acima, e use pamu2fcfg -n`. Isto irá omitir o campo <username>`, e a saída pode ser anexada à linha com o seu <username> desta forma:

    <username>:Zx...mw,04...0a:xB...fw,04...3f
    
  7. Modificar o Módulo de Autenticação Pluggable PAM`

    O passo final é configurar os arquivos do módulo PAM em /etc/pam.d/`. Neste guia vamos modificar o arquivo common-auth uma vez que ele trata das configurações de autenticação que são comuns a todos os serviços, mas outras opções são possíveis. Você pode modificar o arquivo com o seguinte comando:

    $ cd /etc/pam.d
    $ sudo $editor common-auth
    

    And add the following lines at the top of the file:

    #Nitrokey FIDO2 config
    auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue prompt nouserok
    

    Dica

    • Como estamos usando o Mapeamento Central de Autenticação, precisamos dizer pam_u2f a localização do arquivo a ser usado com a opção authfile.

    • Se você muitas vezes esquece de inserir a chave, prompt opção make `x id="64"></x> impressão >`x id=»82»></x>`` e dá-lhe a oportunidade de inserir a Nitrokey.

    • Se você gostaria de ser solicitado a tocar a Nitrokey, cue opção fará `x id="83"></x> imprimir Please touch the device. mensagem.

    • O nouserok irá garantir que você ainda pode fazer o login usando o nome de usuário e senha, você pode querer remover isso em algum momento quando a configuração estiver funcionando e você não’não quer logins regulares baseados em nome de usuário & logins baseados em senha.

    Uma vez modificado o common-auth`, podemos salvar e sair do arquivo.

    Você pode testar a configuração digitando sudo ls no terminal. Você deve ser avisado da mensagem Please touch the device. e ter uma saída semelhante no terminal:

    nitrouser@nitrouser:~$ sudo ls
    [sudo] password for nitrouser:  Please touch the device.
    

    Você também pode testar sua configuração ao sair da sessão do usuário e fazer o login de volta. Uma tela semelhante deve ser exibida assim que você desconectar/replugar o Nitrokey FIDO2 e digitar sua senha:

    img6

Utilização#

Após a modificação do módulo PAM, você poderá testar sua configuração imediatamente, mas é recomendável reiniciar seu computador e desconectar o FIDO2 da Nitrokey.

Depois de ter testado devidamente as instruções deste guia (e configurado uma cópia de segurança), é recomendado usar ou o required` ou o `x id="142"></x> bandeira de controlo em vez de `x id="180"></x>`.

As bandeiras required e `x id="29"></x>> proporcionam um controlo de acesso mais apertado, e tornarão o FIDO2 da Nitrokey necessário para efectuar o login, e/ou utilizar o serviço configurado.

Se você precisar de mais informações sobre Bandeiras de Controle na linha de configuração PAM, você pode ver a última seção deste guia para entender a diferença, e as implicações do uso de cada uma delas.

Módulos PAM#

Existem vários arquivos de módulos PAM que podem ser modificados de acordo com suas necessidades:

  • Ao modificar /etc/pam.d/common-auth arquivo, você poderá usar o Nitrokey FIDO para autenticação do 2º fator para login gráfico e sudo`. Nota: common-auth` deve ser modificado adicionando a linha de configuração adicional no final do ficheiro.

  • Se você deseja usar a autenticação FIDO U2F apenas para o login gráfico do Gnome, você pode preferir modificar a/etc/pam.d/gdm-password`

  • Alternativamente você pode simplesmente modificar o arquivo /etc/pam.d/sudo se você desejar usar o comando sudo.

Bandeiras de controlo#

No passo 7 usamos a bandeira de controle sufficient para determinar o comportamento do módulo PAM quando a Nitrokey está conectada ou não. No entanto, é possível alterar este comportamento usando os seguintes flags de controle:

  • required`: Esta é a bandeira mais crítica. O resultado do módulo deve ser bem sucedido para que a autenticação continue. Esta bandeira pode bloqueá-lo fora do seu computador se você não tiver acesso à Nitrokey.

  • requisite`: Similar a required` contudo, no caso de um módulo específico retornar uma falha, o controle é diretamente retornado para a aplicação, ou para a pilha superior do PAM. Esta bandeira também pode bloqueá-lo para fora do seu computador se não tiver acesso à Nitrokey.

  • sufficient`: O resultado do módulo é ignorado se falhar. A bandeira sufficient` considerada segura para fins de teste.

  • optional`: O sucesso ou fracasso deste módulo só é importante se for o único módulo na pilha associado a este tipo de serviço+. A bandeira optional` é considerada segura para uso em testes.

Aviso

  • Se required ou requisite estiver definido, a falha da autenticação U2F causará uma falha da autenticação geral. A falha irá ocorrer quando o Nitrokey FIDO configurado não estiver ligado, perdido ou destruído.

  • Você perderá o acesso ao seu computador se você configurou mal o módulo PAM e usou o required ou requisite bandeiras.

  • Você também perderá a capacidade de usar sudo se você configurar o Mapeamento Central de Autenticação e usou a required ou `x id="125"></x> bandeiras.