Login no Ambiente de Trabalho e Autenticação de Utilizadores Linux¶
Compatible Nitrokeys |
|||||||
|---|---|---|---|---|---|---|---|
✓ active |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
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 compatible Nitrokeys.
You will set up your Nitrokey as a second factor for authentication. This means you will need your usual login method (likely your password) and your Nitrokey to login.
Se, em vez disso, quiser utilizar a sua Nitrokey como método de início de sessão alternativo (palavra-passe OU Nitrokey), consulte Método de autenticação alternativo depois de concluir o guia principal.
If you want to login to you computer using Nitrokey Pro 2, Nitrokey Storage 2 and Nitrokey Start you can visit the instructions available here.
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>`__.
Requisitos¶
Ubuntu 24.04 with Gnome Display Manager (GDM).
Instruções¶
Criar um utilizador de reserva e dar-lhe privilégios de raiz*
$ 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.Install*
libpam-u2f`On Ubuntu 24.04 it is possible to download directly
libpam-u2ffrom the official repos$ sudo apt install libpam-u2f
Nota
Alternativamente pode construir
libpam-u2fde 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
Gerar o ficheiro de configuração U2F*
To generate the configuration file we will use the
pamu2fcfgutility. First plug your Nitrokey (if you did not already), and enter the following command:$ pamu2fcfg > ~/u2f_keys
Once you run the command above, you will need to touch the device while it flashes. Once done,
pamu2fcfgwill append its output theu2f_keysfile in the format:<username>:KeyHandle,PublicKey,flags
This will look something like the following:
nitrouser:fS6vQ9uWa0VizcczyZ/bvk5kcQJkIJOC/21/e7dXFe/fnONSL705EkeiUpZpL/3seAWL/qW4/mqb0/WtiZoP/NOLTRM4EEAg1ANLsfYgSzRd/AjsW3z8kJwgckbvwDUyB90ByR09XtBhuE41vMsEk6J+9CS0+ZuPSB0KXRG7z2yZpQLldjE/ijsdIdd8Ct2oXSiZ/zTb/t5kRafNJVkp=,Oo4U9XvIhI9r0WNnvoMwG5/pbgwYd4GMCYEinhWcsI2hKUebYj92JOxDsSa3zd2A9OB0ofXgB16FD2naev3YmLch==,es256,+presence
Note que esta saída não foi gerada diretamente por
pamu2fcfge não contém informação sensível. O seu objetivo é apenas mostrar o formato e o comprimento esperados da saída.Dica
The file must be named
u2f_keysRecomenda-se que comece por testar as instruções com um único utilizador. A configuração de outros utilizadores será acrescentada na secção 7.
Setting up a backup Nitrokey
This step is optional, however it is advised to have a second Nitrokey as backup in the case of loss, theft or destruction of your primary Nitrokey.
To set up a backup key, repeat the procedure above, and use
pamu2fcfg -nlike this:$ pamu2fcfg -n >> ~/u2f_keys
This will omit the
<username>field, and the output is appended to the line with your<username>, this will look something like this:<username>:Zx...mw,04...0a:xB...fw,es256,+presence:04...3f,es256,+presence
Securing the config file
Para maior segurança, após a geração do ficheiro de configuração, vamos mover o ficheiro gerado
~/u2f_keyspara/etc/Nitrokey/e alterar as permissões de acesso utilizando estes comandos:$ sudo mkdir /etc/Nitrokey $ sudo mv ~/u2f_keys /etc/Nitrokey/ $ sudo chmod 644 /etc/Nitrokey/u2f_keys
Modificar o Módulo de Autenticação Pluggable
PAM`Configure os arquivos do módulo PAM em
/etc/pam.d/. Esta é uma fase de testes - o passo 8 aplicará a configuração assim que você confirmar que ela funciona.In this guide we will modify the
common-authfile as it handles the authentication settings which are common to all services, other options are described in PAM Modules. You can modify the file with the following command:$ sudo editor /etc/pam.d/common-auth
Add the following line at the bottom of the file:
#Nitrokey config auth sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
Dica
Estamos a utilizar suficiente para testar e mudaremos para necessário na etapa 8.
Como estamos usando o Mapeamento Central de Autenticação, precisamos dizer
pam_u2fa localização do arquivo a ser usado com a opçãoauthfile.If you often forget to insert the key,
promptoption makespam_u2fprintInsert your U2F device, then press ENTER.and give you a chance to insert the Nitrokey.If you would like to be prompted to touch the Nitrokey,
cueoption will makepam_u2fprintPlease touch the device.message. You can change the message in[cue_prompt=Please touch the device.].
Nota
Porquê a colocação inferior? O PAM processa os módulos de cima para baixo. Colocar a configuração U2F na parte inferior garante que a autenticação por senha seja verificada primeiro, criando um fluxo de trabalho de segundo fator (senha + U2F).
Para opções de autenticação alternativas (palavra-passe OU Nitrokey) e explicações pormenorizadas sobre o modo como a posição da linha e as bandeiras de controlo afectam a autenticação, consulte Método de autenticação alternativo.
Uma vez modificado o
common-auth`, podemos salvar e sair do arquivo.You can test the configuration by typing
sudo lsin the terminal. After typing in your password you should be prompted with the messagePlease touch the device.and have a similar output on the terminal:nitrouser@nitrouser:~$ sudo ls [sudo] password for nitrouser: Please touch the device.
You can also test your configuration by logging out of the user session and logging back. A similar screen should be displayed once you you unplug/replug yout Nitrokey and type your password:
Setting up multiple users
Depois de confirmar que a autenticação com a sua Nitrokey funcionou, pode configurar o ficheiro de configuração U2F para os outros utilizadores do seu sistema.
Aviso
Se não configurar todos os utilizadores no ficheiro de configuração U2F e continuar a aplicar a autenticação Nitrokey no passo 8, não será possível iniciar sessão com nenhum utilizador não configurado!
To configure u2f for multiple users,
pamu2fcfgtakes the-u <username>option, the output can be appended to theu2f_keysfile like this:$ sudo pamu2fcfg -u <username> >> /etc/Nitrokey/u2f_keys
Para adicionar uma Nitrokey de cópia de segurança a este utilizador, ligue a sua Nitrokey de cópia de segurança e faça o mesmo que fez para o utilizador principal:
$ sudo pamu2fcfg -n >> /etc/Nitrokey/u2f_keys
Em seguida, repita este processo para todos os utilizadores do seu sistema.
Enforcing Nitrokey second factor authentication
Deves ter reparado que a autenticação com o Nitrokey ainda não foi imposta. Depois de confirmar que a autenticação com o Nitrokey funciona, podemos aplicá-la alterando a flag
sufficientpararequired.Aviso
Antes de prosseguir com este passo, certifique-se de que tem:
Testei que a autenticação com o Nitrokey funciona de facto, caso contrário pode perder o acesso ao computador.
Configura uma Nitrokey de reserva. Caso contrário, se perderes ou partires a tua Nitrokey, perderás o acesso ao teu computador!
Proceder com cuidado!
Para o fazer, é necessário editar o ficheiro de configuração
PAM:$ sudo editor /etc/pam.d/common-auth
Na linha que adicionou anteriormente, na parte inferior do ficheiro, altere a palavra
sufficientpararequired. Deve ficar assim:#Nitrokey config auth required pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
After completing the setup, it is recommended to reboot your computer and unplug/replug the Nitrokey.
Alternative Authentication Method¶
Se preferir utilizar a sua Nitrokey como alternativa à sua palavra-passe (password OR Nitrokey), pode configurá-la:
Configuration Steps:
Mova a linha de configuração do PAM para o topo **** de
/etc/pam.d/common-auth(antes de outros módulos auth)Manter o sinal de controlo
sufficient
Isto permite a autenticação apenas com um dos factores. Note-se que isto proporciona menos segurança do que a autenticação de segundo fator.
Compreender os modos de autenticação
A combinação da posição da linha e da bandeira de controlo determina o modo de autenticação:
Position |
Control Flag |
Authentication Mode |
Use Case |
|---|---|---|---|
Parte inferior (após pam_unix) |
|
Second factor (testing) |
Fase de teste seguro |
Parte inferior (após pam_unix) |
|
Segundo fator (imposto) |
Production security (main guide) |
Topo (antes de pam_unix) |
|
Alternative factor |
Convenience (password OR key) |
Como funciona o PAM:
O PAM processa os módulos sequencialmente, de cima para baixo. O sinalizador de controlo determina a forma como o sucesso ou a falha afecta a autenticação global:
sufficient: O sucesso completa a autenticação; a falha é ignorada se outros módulos tiverem sucessorequired: O sucesso é obrigatório; a falha causa uma falha geral de autenticação
O que isto significa para si:
Autenticação alternativa (superior + suficiente):
Pode iniciar sessão com a sua palavra-passe OU apenas com a sua Nitrokey
If authentication with the Nitrokey succeeds, no password is required
Se a autenticação Nitrokey falhar ou for ignorada, a palavra-passe continuará a funcionar
É mais cómodo mas menos seguro do que a autenticação de segundo fator
Security implications:
Um atacante com a sua palavra-passe pode iniciar sessão sem a sua Nitrokey
Um atacante com acesso físico ao seu Nitrokey pode iniciar sessão sem a sua palavra-passe
Utilize-o apenas se a comodidade for mais importante do que a segurança máxima
Para obter explicações pormenorizadas sobre os sinais de controlo e respectivas implicações, consulte Sinais de controlo.
Módulos PAM¶
Existem vários arquivos de módulos PAM que podem ser modificados de acordo com suas necessidades:
By modifying
/etc/pam.d/common-authfile, you will be able to use you Nitrokey for 2nd factor authentication for graphic login andsudo.If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the
/etc/pam.d/gdm-passwordAlternativamente, podes apenas modificar o ficheiro
/etc/pam.d/sudose quiseres utilizar o FIDO U2F quando utilizares o comandosudo.
Bandeiras de controlo¶
O sinalizador de controlo determina como o módulo PAM se comporta quando a autenticação é bem sucedida ou falha. No passo 6 nós utilizamos a flag sufficient para testar, e depois mudamos para required para aplicar.
Os sinalizadores de controlo disponíveis são:
required: The module result must be successful for authentication to continue. This is the most critical flag and can lock you out of your computer if you do not have access to the Nitrokey.requisite`: Similar arequired`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: The module result is ignored if it fails. In case of success, control is directly returned to the application, or to the superior PAM stack. This means no other PAM modules will be executed. Thesufficientflag is considered safe for testing purposes.optional: The success or failure of this module is only important if it is the only module in the stack associated with this service+type. Theoptionalflag is considered safe to use for testing purposes.
Aviso
If
requiredorrequisiteis set, the failure of U2F authentication will cause a failure of the overall authentication. Failure will occur when the configured Nitrokey is not plugged, lost or destroyed.Você perderá o acesso ao seu computador se você configurou mal o módulo PAM e usou o
requiredourequisitebandeiras.Você também perderá a capacidade de usar
sudose você configurar o Mapeamento Central de Autenticação e usou arequiredou`x id="125"></x>bandeiras.Poderá também perder a capacidade de iniciar sessão utilizando o Gestor de Display Gnome se o início de sessão com smart card for imposto e se tiver utilizado as flags
requiredourequisite. Veja Solução de problemas para mais informações.
Resolução de problemas¶
Problemas ao iniciar sessão na conta de utilizador utilizando o GDM¶
Em alguns casos, por exemplo, se tiver o opencs-pkcs11 instalado, o Gnome Display Manager (GDM) pode impor o login com smart card assim que qualquer smart card (como o seu Nitrokey) for conectado, mesmo que nenhum smart card tenha sido configurado. Isso pode impedir que você faça o login na sua conta de usuário usando o u2f. Se você definiu a flag de controle sufficient, desconecte todos os smart cards e faça o login usando sua senha. Para desativar a imposição de smart cards, execute o seguinte comando:
$ sudo -u gdm env -u XDG_RUNTIME_DIR -u DISPLAY DCONF_PROFILE=gdm dbus-run-session gsettings set org.gnome.login-screen enable-smartcard-authentication false