Com configurar l'autenticació de dos factors per a SSH a Linux


De manera predeterminada, SSH ja utilitza la comunicació de dades segura entre màquines remotes, però si voleu afegir una capa de seguretat addicional a les vostres connexions SSH, podeu afegir un mòdul Google Authenticator (autenticació de dos factors) que us permeti introduir un mòdul aleatori. codi de verificació de contrasenya de temps (TOTP) mentre us connecteu als servidors SSH. Haureu d'introduir el codi de verificació des del vostre telèfon intel·ligent o PC quan us connecteu.

Google Authenticator és un mòdul de codi obert que inclou implementacions de fitxes de verificació de codis d'accés únics (TOTP) desenvolupats per Google.

Admet diverses plataformes mòbils, així com PAM (Pluggable Authentication Module). Aquestes contrasenyes d'un sol ús es generen mitjançant estàndards oberts creats per la Iniciativa OATH per a l'autenticació oberta).

En aquest article, us mostraré com configurar i configurar SSH per a l'autenticació de dos factors en distribucions Linux basades en Debian, com ara Fedora, CentOS Stream, Rocky Linux i AlmaLinux, Ubuntu, Debian i Mint.

Instal·lació de Google Authenticator a Linux

Obriu la màquina que voleu configurar l'autenticació de dos factors i instal·leu les biblioteques PAM següents juntament amb les biblioteques de desenvolupament necessàries perquè el mòdul PAM funcioni correctament amb el mòdul autenticador de Google.

Als sistemes basats en RedHat, instal·leu el paquet pam-devel mitjançant la següent comanda yum.

# yum install google-authenticator -y

Als sistemes basats en Debian, instal·leu el paquet libpam0g-dev mitjançant la següent comanda apt.

$ sudo apt install libpam-google-authenticator -y

Genereu fitxes d'autenticació de Google

Un cop executeu l'ordre google-authenticator, us demanarà una sèrie de preguntes.

# google-authenticator

Simplement escriviu y (sí) com a resposta en la majoria de situacions. Si alguna cosa va malament, podeu tornar a escriure l'ordre google-authenticator per restablir la configuració.

  • Voleu que els testimonis d'autenticació estiguin basats en el temps (s/n) i

Després d'aquesta pregunta, obtindreu la vostra clau secreta i codis d'emergència. Anoteu aquests detalls en algun lloc, més endavant necessitarem la clau secreta per configurar l'aplicació Google Authenticator.

# google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/[email %3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

A continuació, seguiu l'assistent de configuració i, en la majoria dels casos, escriviu la resposta com a y (sí) tal com es mostra a continuació.

Do you want me to update your "/root/.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) y If the computer that you are logging into isn't 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

Configuració de SSH per utilitzar Google Authenticator a Linux

Obriu el fitxer de configuració PAM /etc/pam.d/sshd i afegiu la línia següent a la part inferior del fitxer.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

A continuació, obriu el fitxer de configuració SSH /etc/ssh/sshd_config i desplaceu-vos cap avall per trobar la línia que diu.

ChallengeResponseAuthentication no

Canvieu-lo a sí. Per tant, esdevé així.

ChallengeResponseAuthentication yes

Finalment, reinicieu el servei SSH per fer nous canvis.

# systemctl restart sshd
Or
$ sudo systemctl restart sshd

Configuració de l'aplicació Google Authenticator

Inicieu l'aplicació Google Authenticator al vostre telèfon intel·ligent. Premeu + i trieu Introdueix una clau de configuració. Si no teniu aquesta aplicació, podeu baixar i instal·lar l'aplicació Google Authenticator als vostres dispositius Android/iPhone/Blackberry.

Afegiu el vostre compte Nom i introduïu la clau secreta generada anteriorment.

Generarà una contrasenya única (codi de verificació) que canviarà constantment cada 30 segons al telèfon.

Ara proveu d'iniciar sessió mitjançant SSH, se us demanarà un codi de Google Authenticator (codi de verificació) i una contrasenya cada vegada que intenteu iniciar sessió mitjançant SSH. Només teniu 30 segons per introduir aquest codi de verificació, si ho perdeu, es regenerarà un codi de verificació nou.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125

Si no teniu cap telèfon intel·ligent, també podeu utilitzar un complement de Firefox anomenat Authenticator per fer l'autenticació de dos factors.

Important: l'autenticació de dos factors funciona amb l'inici de sessió SSH basat en contrasenya. Si utilitzeu qualsevol sessió SSH de clau privada/pública, ignorarà l'autenticació de dos factors i us iniciarà la sessió directament.