Serveur de travail
Le présent document a été testé sur une debian 9 "Stretch"
OTP
sudo apt install libpam-oath oathtool qrencode caca-utils
wget https://raw.githubusercontent.com/mcepl/gen-oath-safe/master/gen-oath-safe (1)
1 | Le fichier ainsi téléchargé peut être personnalisé pour l’utilisateur de FreeOTP |
Passons à la génération du qrcode et à la configuration :
chmod u+x ./gen-oath-safe
./gen-oath-safe art:<username> hotp
J’ai mis art mais on peut changer pour avoir plusieurs codes dans la liste FreeOTP |
Génère le QRCode qui peut être scanné et indique le HEX à mettre dans le usersfile :
sudo mkdir -p /etc/liboath
echo "HOTP <username> - <hexcode>" | sudo tee -a /etc/liboath/users.oath (1)
1 | ATTENTION: Si vous relancez la commande plusieurs fois, il y accumulation des différentes saisies dans le fichier. Veillez à supprimer les lignes non-souhaitées par la suite. |
Pour la re-génération du qrcode en cas de perte, il faut le HEX code :
gen-oath-safe art:<username> hotp <hexcode>
Lors de la re-génération du QRCode, il y a perte de synchronisation !! |
Pour remédier au problème, il faut prévoir un compte de secours utilisé uniquement dans cas. |
Certificates
Génération des clefs
Ne pas utiliser openSSH
pour la génération des clefs car Putty
ne saura pas gérer la clef privée. Il est nécessaire d’utiliser l’outil PuttyGen
pour cela (en revanche, openssh se satisfera très bien de la clef publique).
Voici un lien vers un tutoriel expliquant l’utilisation de PuttyGen
dans ce cas précis.
Si vous ne savez pas quel encryptage utilisé, prenez ecdsa 521 bits
. A partir de PuttyGen
, vous copierez entièrement la clef publique pour la mettre dans le fichier attendu par sshd (voir la configuration du fichier plus loin) :
mkdir ~/.ssh
echo "<toute_ma_clef_publique>" > ~/.ssh/authorized_keys
Configuration à proprement parlé
sudo nano /etc/ssh/sshd_config
PubkeyAuthentication yes (2)
AutorizedKeysFile .ssh/authorized_keys (2)
AuthenticationMethods publickey,keyboard-interactive:pam (1)
ChallengeResponseAuthentication yes
UsePAM yes
1 | Cette ligne ne doit être présente qu’en cas de MFA, sinon il est impératif de l’enlever ! (e.g. Si on utilise OTP seul on ne met pas la ligne) |
2 | Uniquement si on fait auth avec clé (ne pas mettre si OTP seul) |
Attendez d’avoir fini toutes les configurations avant de redémarrer le serveur ssh (sinon vous risquez de vous retrouver dans l’incapacité de vous connecter par la suite !) |
sudo nano /etc/pam.d/sshd
auth required pam_unix.so
auth requisite pam_oath.so usersfile=/etc/liboath/users.oath window=10 digits=6
# @include common-auth (1)
1 | Si l’on oublie de commenter cette ligne le mot de passe va être redemandé et vérifié une deuxième fois, ce qui n’est pas voulu ! |
sudo systemctl restart sshd
Procédure de secours !
il est impératif de créer un utilisateur en 3FA qui pourra accéder au usersfile
pour réinitialiser l’OTP.
useradd -m <secours>
echo "<secours>:<mdp secours>" | chpasswd
Dans /home/<secours>
créer dossier .ssh
et copier la clef publique de root.
Le dossier .ssh
en 700 et les propriétaires doivent être <secours>:<secours>; idem pour les droits de propriétés de la clef.
Pour finir, utiliser la procédure gen-oath-user déjà utilisée auparavant.