Sécuriser macOS avec une clé U2F

La sécurité est un point de plus en plus important dans l’usage d’un ordinateur, surtout si vous travaillez sur des documents sensibles. Et il existe quelques solutions intéressantes pour sécuriser les accès. Une des moins onéreuses passe par une clé USB à la norme U2F.

En simplifiant un peu, une clé U2F (Universal 2nd Factor) contient une petite puce qui va effectuer des calculs pour vérifier que vous avez bien la clé en question avec vous. Le système qui essaye de vous authentifier va vérifier que le résultat est bien celui attendu avant de vous donner un accès. Matériellement, ça se présente sous la forme d’une clé USB qui émule un clavier et dispose d’un moyen d’interaction (bouton, zone tactile, etc.). Ca se trouve pour quelques euros sur Amazon dans les versions basique (8 € pour le modèle que j’utilise) alors que les variantes de chez Yubico (la société à l’origine de la norme) peuvent monter à 40 ou 50 € dans les versions les plus complètes, qui proposent plus de possibilités. Je vous conseille d’en acheter deux pour des raisons de sécurité.

Une clé U2F d’entrée de gamme

Une clé U2F, comme son nom l’indique, permet de vous identifier avec une seconde méthode. Elle ne remplace pas votre mot de passe, elle vient en complément de ce dernier. L’utilisation d’une clé de ce type ne vous dispense pas d’utiliser un mot de passe fort.

L’installation

Apple ne supporte pas ce type de périphérique nativement, mais la prise en charge reste assez simple. Seul petit prérequis : ne pas avoir peur du Terminal et ne pas utiliser FileVault.

Première étape, installer Homebrew si ce n’est pas encore fait, avec la commande suivante.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Deuxièmement, avant de commencer à tester, je vous conseille d’effectuer une sauvegarde : dans certains cas, si vous faites une erreur, la machine devient inaccessible.

Maintenant, installer les outils nécessaires pour gérer la clé.

brew install pam-u2f

La suite va demander un peu de travail dans le Terminal. En théorie, on peut simplifier les choses, mais ça oblige à désactiver le SIP de macOS, ce qui n’est jamais vraiment une bonne idée quand on cherche de la sécurité.

Maintenant, testons la clé avec la commande suivante. Mon modèle clignote en attendant une pression du bouton et affiche ensuite les clés à utiliser pour la configuration.

pamu2fcfg

Si ça semble fonctionner, passez à l’étape suivante.

mkdir -p ~/.config/u2f
pamu2fcfg > ~/.config/u2f/keys

Si vous utilisez une seconde clé pour le même utilisateur, c’est le moment de changer de clé et de taper cette ligne.

pamu2fcfg -n >> ~/.config/u2f/keys

Régler les autorisations

Avec la commande ls /etc/pam.d, vous verrez les composants de macOS qui peuvent utiliser la clé. En vrac, on trouve l’authentification, la commande sudo, l’écran de veille, etc.

Avec un second compte en cas de soucis, nous allons tester directement sur authorization, mais vous pouvez aussi tenter avec sudo, screensaver, etc. Je vous le conseille si vous utilisez une machine importante (dans mon cas, c’est un Mac dédié aux tests).

Editez le fichier nécessaire, pour commencer.

sudo nano /etc/pam.d/authorization

A la fin, insérez la ligne suivante. Le chemin qui commence par /usr/local a été donné par Homebrew au moment de l’installation, il s’agit du chemin standard de la dernière version en date (mai 2017). Le chemin vers le fichier contenant la clé demande le nom complet (utilisateur compris), attention à bien changer la valeur.

auth sufficient /usr/local/opt/pam-u2f/lib/pam/pam-u2f.so authfile=/Users/votre_nom/.config/u2f/keys

Maintenant, fermez la session, branchez la clé et essayez de vous connecter. Normalement, après la demande de mot de passe, la clé USB va clignoter et attendre une pression du bouton. Ensuite, seulement, macOS ouvrira la session.

Si tout fonctionne (c’était mon cas), vous pouvez effectuer un changement. La ligne entrée plus haut utilise la commande sufficient, qui implique que la clé U2F est optionnelle. Vous pouvez remplacer le sufficient par required, mais attention : dans ce cas, impossible d’ouvrir la session sans la clé. Techniquement, il est aussi possible de se connecter uniquement avec la clé, en remplaçant le required de la ligne account required pam_opendirectory.so, mais l’intérêt est faible : on perd la double authentification et le trousseau n’apprécie pas l’absence de mot de passe.

Donc là, je me répète : si vous passez en required, votre Mac sera inaccessible sans la clé USB ou en cas d’erreur. Disposer d’une seconde clé (testée) demeure un bon filet de sécurité. Un second compte administrateur ne sert à rien dans ce cas : il attend aussi la clé USB.

Enfin, FileVault 2 empêche l’utilisation de cette solution pour une raison simple : les données sont stockées sur la partition chiffrée, donc le système ne peut pas les lire au moment de l’authentification. Il existe des solutions, mais elles nécessitent des manipulations compliquées et dans l’idéal un Mac vide.

En conclusion

Globalement, ça fonctionne bien avec macOS, mais il y a quelques limites comme l’absence de compatibilité avec FileVault et la mise en place initiale qui nécessite de passer par le Terminal. Les clés U2F offrent un bon niveau de sécurité, mais avec les contraintes qui vont avec : si vous optez pour une sécurité forte, vous risquez de perdre le contenu de l’ordinateur en cas de soucis.