Une authentification à deux facteurs pour SSH : Différence entre versions

De e-glop
(Page créée avec « sudo apt-get install libpam_oath /etc/ssh/sshd_config ChallengeResponseAuthentication yes /etc/users.oath HOTP beta pw 00 /etc/pam.d/sshd # Standard Un*x authentication... »)
 
Ligne 1 : Ligne 1 :
sudo apt-get install libpam_oath
+
== 1er essai avec [https://www.cl.cam.ac.uk/~mgk25/otpw.html OTPW] ==
  
/etc/ssh/sshd_config
+
=== Installation & test ===
ChallengeResponseAuthentication yes
 
  
/etc/users.oath
+
$ sudo apt-get install libpam-otpw
HOTP beta pw 00
+
$ otpw-gen > otpw.txt
  
/etc/pam.d/sshd
+
# Saisir un mot de passe ("préfixe")
# Standard Un*x authentication.
+
# Trouver la liste des mots de passe à usage unique dans le fichier otpw.txt
#@include common-auth
+
# Modifier la configuration de pam
auth requisite pam_oath.so usersfile=/etc/users.oath window=20 digit=6
+
# Vérifier la configuration d'OpenSSH
 +
# Tenter de se connecter en SSH
 +
 
 +
$ ssh localhost
 +
Password 079:
 +
 
 +
Ici, saisir son le code 079 (sans l'espace central) précédé de son préfixe, et le tour est joué.
 +
 
 +
Dans le cas où vous trouveriez l'indication, saisissez votre préfixe suivi des trois codes (sans espaces centraux).
 +
 
 +
$ ssh localhost
 +
Password 095/206/039:
 +
 
 +
=== Configuration de pam ===
 +
 
 +
# /etc/pam.d/sshd  
 +
# PAM configuration for the Secure Shell service
 +
 +
# Standard Un*x authentication.
 +
auth required pam_otpw.so
 +
#@include common-auth
 +
 
 +
Décommenter la dernière ligne pour devoir tapper le mot de passe à usage unique PUIS son mot de passe classique.
 +
 
 +
=== Configuration d'OpenSSH ===
 +
 
 +
# /etc/ssh/sshd_config
 +
 +
ChallengeResponseAuthentication yes
 +
UsePAM yes
 +
 
 +
=== Conclusion ===
 +
 
 +
Opérationnel et d'un niveau de sécurité intéressant, à condition de se satisfaire de HOTP, qui est rébarbatif et demande à stocker une liste de mots de passe, en aucun cas plus sécurisé que de stocker un mot de passe unique.
 +
 
 +
== 2nd essai avec Google Authenticator ==
 +
 
 +
=== Préambule ===
 +
 
 +
Si le mot "Google" se trouve dans cet outil, c'est qu'il est sorti des équipes de Google... mais le code source est libre et son usage est indépendant des services de Google.
 +
 
 +
=== Installation & test ===
 +
 
 +
$ sudo apt-get install libpam-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/xxx@mylaptop...
 +
Your new secret key is: ABCD
 +
Your verification code is 12345
 +
Your emergency scratch codes are:
 +
  45678
 +
  56789
 +
  67890
 +
  78901
 +
 +
Do you want me to update your "/home/user/.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) n
 +
 +
By default, a new token is generated every 30 seconds by the mobile app.
 +
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. This allows for a
 +
time skew of up to 30 seconds between authentication server and client. If you
 +
experience problems with poor time synchronization, you can increase the window
 +
from its default size of 3 permitted codes (one previous code, the current
 +
code, the next code) to 17 permitted codes (the 8 previous codes, the current
 +
code, and the 8 next codes). This will permit for a time skew of up to 4 minutes
 +
between client and server.
 +
Do you want to do so? (y/n) n
 +
 +
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) n
 +
 +
Il convient de configurer pam pour ssh, et de vérifier sa configuration de SSH :
 +
 
 +
Maintenant il est temps de tester :
 +
 
 +
$ ssh localhost
 +
Verification code: <code from TOTP app>
 +
Password: <usual password>
 +
Welcome to XXXX
 +
 
 +
=== Configuration de pam ===
 +
 
 +
# /etc/pam.d/sshd
 +
# PAM configuration for the Secure Shell service
 +
 +
# Standard Un*x authentication.
 +
auth required pam_google_authenticator.so nullok
 +
@include common-auth
 +
 
 +
Disposer des deux lignes permet de s'authentifier d'abord en TOTP, puis via son mot de passe utilisateur classique.
 +
 
 +
L'option "nullok" pour pam_google_authenticator.so permet de garder un fonctionnement normal pour les utilisateurs n'ayant pas défini de configuration TOTP...
 +
 
 +
=== Configuration d'OpenSSH ===
 +
 
 +
# /etc/ssh/sshd_config
 +
 +
ChallengeResponseAuthentication yes
 +
UsePAM yes

Version du 27 avril 2020 à 10:42

1er essai avec OTPW

Installation & test

$ sudo apt-get install libpam-otpw
$ otpw-gen > otpw.txt
  1. Saisir un mot de passe ("préfixe")
  2. Trouver la liste des mots de passe à usage unique dans le fichier otpw.txt
  3. Modifier la configuration de pam
  4. Vérifier la configuration d'OpenSSH
  5. Tenter de se connecter en SSH
$ ssh localhost
Password 079: 

Ici, saisir son le code 079 (sans l'espace central) précédé de son préfixe, et le tour est joué.

Dans le cas où vous trouveriez l'indication, saisissez votre préfixe suivi des trois codes (sans espaces centraux).

$ ssh localhost
Password 095/206/039: 

Configuration de pam

# /etc/pam.d/sshd 
# PAM configuration for the Secure Shell service

# Standard Un*x authentication.
auth required pam_otpw.so
#@include common-auth

Décommenter la dernière ligne pour devoir tapper le mot de passe à usage unique PUIS son mot de passe classique.

Configuration d'OpenSSH

# /etc/ssh/sshd_config

ChallengeResponseAuthentication yes
UsePAM yes

Conclusion

Opérationnel et d'un niveau de sécurité intéressant, à condition de se satisfaire de HOTP, qui est rébarbatif et demande à stocker une liste de mots de passe, en aucun cas plus sécurisé que de stocker un mot de passe unique.

2nd essai avec Google Authenticator

Préambule

Si le mot "Google" se trouve dans cet outil, c'est qu'il est sorti des équipes de Google... mais le code source est libre et son usage est indépendant des services de Google.

Installation & test

$ sudo apt-get install libpam-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%7C0&cht=qr&chl=otpauth://totp/xxx@mylaptop...
Your new secret key is: ABCD
Your verification code is 12345
Your emergency scratch codes are:
  45678
  56789
  67890
  78901

Do you want me to update your "/home/user/.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) n

By default, a new token is generated every 30 seconds by the mobile app.
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. This allows for a
time skew of up to 30 seconds between authentication server and client. If you
experience problems with poor time synchronization, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the 8 previous codes, the current
code, and the 8 next codes). This will permit for a time skew of up to 4 minutes
between client and server.
Do you want to do so? (y/n) n

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) n

Il convient de configurer pam pour ssh, et de vérifier sa configuration de SSH :

Maintenant il est temps de tester :

$ ssh localhost
Verification code:  
Password: <usual password>
Welcome to XXXX

Configuration de pam

# /etc/pam.d/sshd 
# PAM configuration for the Secure Shell service

# Standard Un*x authentication.
auth required pam_google_authenticator.so nullok
@include common-auth

Disposer des deux lignes permet de s'authentifier d'abord en TOTP, puis via son mot de passe utilisateur classique.

L'option "nullok" pour pam_google_authenticator.so permet de garder un fonctionnement normal pour les utilisateurs n'ayant pas défini de configuration TOTP...

Configuration d'OpenSSH

# /etc/ssh/sshd_config

ChallengeResponseAuthentication yes
UsePAM yes