diff --git a/content/articles/2020/turris-omnia-ssh-se-connecter-avec-cle/index.md b/content/articles/2020/turris-omnia-ssh-se-connecter-avec-cle/index.md new file mode 100644 index 0000000..22f77ea --- /dev/null +++ b/content/articles/2020/turris-omnia-ssh-se-connecter-avec-cle/index.md @@ -0,0 +1,134 @@ +Title: Turris Omnia : se connecter en ssh avec une clé +Date: 2020-10-26 2:16 +Category: sysadmin +Tags: OpenWRT, SSH, Turris Omnia + +J'utilise depuis maintenant deux ans un routeur Onmia de chez Turris, J'en ai +parlé déjaà lors de [cet article][l_wireguard]. Je veux pouvoir m'y connecter en +SSH de façon sécurisée; j'entends par là **avec un utilisateur autre que root et +avec une clef** (si possible en ed25519). + +Si en règle générale OpenWRT est livré avec *dropbear* pour servir ssh, le +Turris Omnia utilise *OpenSSH* en version 8.0p1 au moment de l'écriture de cet +article. + +## Créer un utilisateur non privilégié + +C'est la première étape, tout est déjà prévu ou presque : on a bien l'utilitaire +`useradd` mais le répertoire `home` n'est pas présent. + +```shell +mkdir /home +useradd -m user +chmod 700 /home/ephase +``` + +Il faut maintenant définir le mot de passe pour cet utilsateur : + +```shell +passwd user +``` + +## Ajouter sa clé au nouvel utilisateur + +Depuis ma machine, je n'ai plus au'à rajouter la partie publique de ma clé sur +le compte de l'utilisateur fraîchement créé : + +```shell +ssh user@192.168.1.254 "umask u=rwx,g=,o=; mkdir ~/.ssh && tee -a ~/.ssh/authorized_keys"\ +< ~/.ssh/ma_cle.ed25519.pub +``` +`192.168.1.254` est l'adresse de mon Turris Omnia et `~/.ssh/ma_cle.ed25519.pub` +la partie publique de ma clé. + +Il ne reste plus qu'à contrôler que tout se passe bien en se connectant avec la +clé: + +```shell +ssh user@192.168.1.1 -i ~/.ssh/ma_cle.ed25525 +``` + +Si la connexion se passait mal, le simple fait de rajouter `-vvv` à la fin de la +commande précédente permettrait d'en apprendre un peu plus sur ce aui ne va pas. + +## Sécuriser son accès + +Maintenant que la connexion par clé est fonctionnelle, il est possible de +**sécuriser son accès**. Première chose, empêcher la **connexion par mot de +passe** : + +```shell +uci set sshd.@openssh[0].PasswordAuthentication='no' +``` + +Puis **empêcher la connexion du super-utilisateur**. Il sera tout à fait +possible d'utiliser `su` une fois connecté avec notre utilisateur standard. + +```shell +uci set sshd.@openssh[0].PermitRootLogin='yes' +``` + +Il est aussi de bon ton de forcer l'utilisation de la **version 2 du +protocole**: + +```shell +uci set sshd.@openssh[0].Protocol='2' +``` + +Il ne reste plus qu'à valider les changement et redémarrer le serveur ssh : + +```shell +uci commit +/etc/init.d/sshd restart +``` + +### Pour aller plus loin + +Si vous voulez sécurise encore plus votre installation, je vous conseille la +lecture de l'article [OpenSSH : Durcir la configuration du serveur SSH][l_durci_sshd] +de Stéphane Huc. + +J'ai pour ma part choisi de recréer les clefs serveur pour n'utiliser que +`ed25519` et `rsa` (4096 bits de longueur): + +```shell +cd /etc/ssh/ +rm -rf *_key,*_key.pub +ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N "" +ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key -N "" -o -a 64 +``` + +De modifier la configuration en conséquence à l'aide d'`uci`: + +```shell +uci add_list sshd.@openssh[0].HostKey='/etc/ssh/ssh_host_ed25519' +uci add_list sshd.@openssh[0].HostKey='/etc/ssh/ssh_host_rsa' +``` + +Et de relancer le service + +```shell +uci commit +/etc/init.d/sshd restart +``` + +## En conclusion + +J'ai maintenant une configuration SSH un peu plus robuste grâce à OpenSSH. Bien +sûr `dropbear` est installé la plupart du temps sur OpenWRT, il est toujours +possible de l'installer (avec la commande `opkg install openssh-server` par +exemple) mais sa configuration se fera en éditant le fichier +`/etc/ssh/sshd_config`. + +## Bibliographie + + * [Documentation][l_doc_turris] relative à SSH et à la connexion par clé sur le + wiki du Turris Omnia + * [Documentation][l_doc_uci] d'uci sur le wiki du projet OpenWRT + * [OpenWRT : OpenSSH pour remplacer Dropbear][l_sshd_dropbear] par Stéphane Huc + +[l_wireguard]:{document}../wireguard-avec-openwrt/index.md +[l_durci_sshd]:https://doc.huc.fr.eu.org/fr/sec/ssh/sshd-durci/ +[l_doc_turris]:https://doc.turris.cz/doc/en/public/enable_ssh_access +[l_doc_uci]:https://openwrt.org/docs/guide-user/base-system/uci +[l_sshd_dropbear]:https://doc.huc.fr.eu.org/fr/sys/openwrt/openssh/