Google Authenticator (Español)

Esta traducción de
Google Authenticator
fue revisada el
2020-12-11
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
OATH
pam_oath
Google Authenticator
proporciona un procedimiento de autenticación de dos pasos que utiliza códigos de acceso de un solo uso (
OTP
). La aplicación generadora de OTP está disponible para iOS, Android y Blackberry. El mecanismo de autenticación se integra en el sistema
PAM
de Linux. Esta guía muestra la instalación y configuración de este mecanismo.
Para la operación inversa (generar códigos compatibles con Google Authenticator en Linux), véase
#Generación de código
a continuación.
Instalación
Instale
el paquete
libpam-google-authenticator
, que proporciona el programa cliente
google-authenticator
y el módulo PAM
pam_google_authenticator.so
. La versión de desarrollo también está disponible con
google-authenticator-libpam-git
AUR
.
Configurando PAM
Advertencia
Si realiza toda la configuración a través de
SSH
, no cierre la sesión antes de comprobar que todo funciona, de lo contrario, puede bloquearse. Además, considere generar el archivo de clave antes de activar el PAM.
Por lo general, se requiere una autenticación de dos pasos solo para el inicio de sesión remoto. El archivo de configuración de PAM correspondiente es
/etc/pam.d/sshd
. En caso de que desee utilizar Google Authenticator globalmente, tendría que cambiar
/etc/pam.d/system-auth
, sin embargo, en este caso, proceda con extrema precaución para no bloquearse.
En esta guía, procedemos con la edición de
/etc/pam.d/sshd
que se realiza de forma más segura (pero no necesariamente) en una sesión local.
Para introducir la contraseña de Unix y su OTP, añada
pam_google_authenticator.so
por encima de las líneas system-remote-login en
/etc/pam.d/sshd
:
auth            required        pam_google_authenticator.so
auth            include         system-remote-login
 account         include         system-remote-login
 password        include         system-remote-login
 session         include         system-remote-login
Esto le solicitará la OTP antes de su contraseña de Unix. Cambiar el orden de los dos módulos invertirá este orden.
Advertencia
Solo los usuarios que hayan generado un archivo de clave secreta (véase a continuación) podrán iniciar sesión usando SSH.
Para permitir el inicio de sesión con OTP o su contraseña de Unix, utilice:
auth
sufficient
pam_google_authenticator.so
Activar la autenticación desafío-respuesta
(challenge-response)
en
/etc/ssh/
sshd_config
:
ChallengeResponseAuthentication yes
Finalmente,
reinicie
el servicio
sshd
.
Advertencia
OpenSSH ignorará todo esto si se autentica con un par de claves SSH y tiene los
inicios de sesión de contraseña desactivados
. Sin embargo, a partir de OpenSSH 6.2, puede añadir
AuthenticationMethods
para permitir ambas: la autenticación basada en dos factores y por clave. Véase
Autenticación de dos factores y claves públicas
Solicitar OTP solo cuando se conecte desde fuera de su red local
A veces, solo queremos activar la capacidad 2FA solo cuando nos conectamos desde fuera de nuestra red local.
Para lograr esto, cree un archivo (por ejemplo,
/etc/security/access-local.conf
) y añada las redes desde las que desea omitir el 2FA:
# Permitir solo desde el rango de IP local
+ : ALL : 192.168.20.0/24
# Red adicional: VPN en el túnel IP (en caso de que tenga uno)
+ : ALL : 10.8.0.0/24
+ : ALL : LOCAL
- : ALL : ALL
Luego edite su
/etc/pam.d/sshd
y añada la línea:
#%PAM-1.0
#auth     required  pam_securetty.so     #disable remote root
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth      required  pam_google_authenticator.so
auth      include   system-remote-login
account   include   system-remote-login
password  include   system-remote-login
session   include   system-remote-login
Generar un archivo de clave secreta
Sugerencia
Instale
qrencode
para generar un código QR escaneable. Escanee el código QR con la aplicación autenticadora para configurar automáticamente la clave.
Todo usuario que quiera usar la autenticación de dos pasos necesita generar un archivo de clave secreta en su carpeta de inicio.
Esto se puede hacer muy fácilmente utilizando
google-authenticator
:
$ google-authenticator
   Do you want authentication tokens to be time-based (y/n) y
   <Here you will see generated QR code>
   Your new secret key is: ZVZG5UZU4D7MY4DH
   Your verification code is 269371
   Your emergency scratch codes are:
     70058954
     97277505
     99684896
     56514332
     82717798

   Do you want me to update your "/home/username/.google_authenticator" file (y/n) y

   Do you want to disallow multiple uses of the same authentication
   token? This restricts you to one login about every 30s, but it increases
   your chances to notice or even prevent man-in-the-middle attacks (y/n) y

   By default, tokens are good for 30 seconds and in order to compensate for
   possible time-skew between the client and the server, we allow an extra
   token before and after the current time. If you experience problems with poor
   time synchronization, you can increase the window from its default
   size of 1:30min to about 4min. Do you want to do so (y/n) n

   If the computer that you are logging into is not hardened against brute-force
   login attempts, you can enable rate-limiting for the authentication module.
   By default, this limits attackers to no more than 3 login attempts every 30s.
   Do you want to enable rate-limiting (y/n) y
Se recomienda
guardar los códigos de emergencia de manera segura
(imprimirlos y guardarlos en un lugar seguro) ya que son su única forma de iniciar sesión (a través de SSH) cuando pierda su teléfono móvil (es decir, su generador de OTP). También se almacenan en
~/.google_authenticator
, por lo que puede buscarlos en cualquier momento siempre y cuando haya iniciado sesión.
Configurando su generador de OTP
Instale una aplicación generadora en su teléfono móvil (por ejemplo):
FreeOTP
para
Android
/
iOS
.
Google Authenticator
para
Android
/
iOS
.
En la aplicación móvil, cree una nueva cuenta y, o bien escanee el código QR de la URL que le indicaron al generar el archivo de clave secreta, o introduzca manualmente la clave secreta (en el ejemplo anterior 'ZVZG5UZU4D7MY4DH').
Ahora debería ver un nuevo token de código de acceso que se genera cada 30 segundos en su teléfono.
Probando
Conecte por SSH a su host desde otra máquina y/o desde otra ventana de terminal:
$ ssh hostname
 login as: <usuario>
 Verification code: <generado/emergencia>
 Password: <contraseña>
 $
Ubicación de almacenamiento
Si desea cambiar la ruta de almacenamiento de los archivos de clave secreta, puede utilizar la opción
--secret
:
$ google-authenticator --secret="/
RUTA_CARPETA
/
USUARIO
"
Entonces, no olvide cambiar la ruta de ubicación de PAM, en
/etc/pam.d/sshd
:
/etc/pam.d/sshd
auth required pam_google_authenticator.so user=root secret=/
RUTA_CARPETA
/${USER}
user=root
se utiliza para forzar a PAM a buscar el archivo utilizando un superusuario.
Además, tenga cuidado con los permisos del archivo de clave secreta. De hecho, el archivo
debe
ser solo legible por el propietario (chmod:
400
). Aquí, el propietario es el superusuario
(root)
.
$ chown root.root /
RUTA_ARCHIVO
/
ARCHIVOS_CLAVE_SECRETA
chmod 400 /
RUTA_ARCHIVO
/
ARCHIVOS_CLAVE_SECRETA
Inicios de sesión del escritorio
El complemento PAM de Google Authenticator también se puede utilizar para inicios de sesión de consola y con GDM. Simplemente añada lo siguiente a
/etc/pam.d/login
o al archivo
/etc/pam.d/gdm-password
:
auth required pam_google_authenticator.so
Generación de código
Si tiene Google Authenticator configurado con otros sistemas, perder su dispositivo puede impedirle iniciar sesión en estos. Tener formas adicionales de generar los códigos puede ser útil.
Gestores de código
Una script que permite la visualización, generación, almacenamiento y gestión de códigos de autenticación de Google está disponible en AUR (
gashell
AUR
). Alternativamente, también está auther (
auther-git
AUR
).
KeePassXC
El gestor de contraseñas GUI
keepassxc
permite asociar a sus entradas códigos de Google Authenticator, y luego puede generar códigos OTP y exportar sus claves vía código QR.
Línea de órdenes
La forma más fácil de generar códigos es con
oath-tool
. Está disponible en el paquete
oath-toolkit
, y se puede utilizar de la siguiente manera:
oathtool --totp -b ABC123
Donde
ABC123
es la clave secreta.
En la mayoría de los sistemas Android con acceso de usuario suficiente, la base de datos de Google Authenticator se puede copiar del dispositivo y acceder directamente, ya que es una base de datos sqlite3. Este script de shell leerá una base de datos de Google Authenticator y generará códigos en vivo para cada clave encontrada:
google-authenticator.sh
#!/bin/sh

# Esta es la ruta al archivo de la aplicación Google Authenticator. Se suele ubicar
# en /data bajo Android. Cópielo en su PC en un lugar seguro y especifique la
# ruta aquí.
DB="/ruta/a/com.google.android.apps.authenticator/databases/databases"

sqlite3 "$DB" 'SELECT email,secret FROM accounts;' | while read A
do
        NAME=`echo "$A" | cut -d '|' -f 1`
        KEY=`echo "$A" | cut -d '|' -f 2`
        CODE=`oathtool --totp -b "$KEY"`
        echo -e "\e[1;32m$CODE\e[0m - \e[1;33m$NAME\e[0m"
done