Ajouter '2faSsh.md'

This commit is contained in:
Romain de Laage 2020-07-08 13:39:55 +02:00
parent 4f32759f33
commit 6cca8816a2
1 changed files with 37 additions and 0 deletions

37
2faSsh.md Normal file
View File

@ -0,0 +1,37 @@
# Activer la double authentification par TOTP sur un serveur SSH
[Sources](https://lab.yvesago.net/2015/09/Authentification-double-facteur-TOTP-openssh.html)
## Côté serveur
Le but est d'activer la double authentification pour ouvrir un session SSH lorsqu'une clé RSA (ou autre) ne peut pas être fournie. Cette technique s'appuie sur le TOTP (Time One Time Password), on génère un code temporaire toutes les minutes qui peut être récupéré à l'aide d'un logiciel ou d'un autre appareil.
Commençons par installer le nécessaire `sudo apt update && sudo apt upgrade && sudo apt install oathtool libpam-oath`. Puis on édite le fichier de configuration associé aux sessions SSH `sudo nano /etc/pam.d/sshd` :
```
...
#@include common-auth
auth requisite pam_unix.so
auth sufficient pam_oath.so usersfile=/etc/users.oath window=10 digits=6
auth required pam_deny.so
...
```
Puis on renseigne les informations sur le TOTP dans un fichier `sudo nano /etc/users.oath` où l'on place une ligne pour chaque utilisateur comme cela : `HOTP/T30/6 <user> - <30 characters hex string>`, par exemple `HOTP/T30/6 bob - 6ddc816bd8f5c4560e8801e464144f`, puis on protège ce fichier en lecture/écriture `sudo chmod 600 /etc/users.oath`. Enfin on autorise la saisie du deuxième facteur en modifier la configuration de SSHD `sudo nano /etc/ssh/sshd_config` :
```
...
#ChallengeResponseAuthentication no
ChallengeResponseAuthentication yes
...
```
Enfin on recharge la configuration du service sshd `sudo systemctl reload sshd`. Avant de fermer la session actuelle pensez à tester que tout fonctionne correctement afin d'éviter de rester coincé à l'extérieur sans pouvoir agir.
pour obtenir la chaîne en hexadécimal de trente caractères on peut lancer `head -10 /dev/urandom | md5sum | cut -b 1-30`.
## Côté client
Il existe plusieurs applications smartphone ou PC pour générer des TOTP. Je vais présenter comment obtenir des code via la commande `oathtool` puis comment l'intégrer au gestionnaire de mot de passe [pass](https://www.passwordstore.org/).
On lance la commande `oathtool --totp <30 characters hex string>` pour obtenir un code. Pour intégrer à pass la génération il faut avoir installé l'extension pass-otp puis ajouter dans le fichier correspondant au mot de passe une chaîne comme celle-ci `otpauth://totp/totp-secret?secret=<base32 string>`. On obtient cette chaîne en base 32 avec la commande `oathtool -v --totp <30 characters hex string>`.