Various syntax corrections ssh key command cut (didn't exceed 80 column) Change document to filename Corrections for uci ssh HostKey commands
137 lines
4.1 KiB
Markdown
137 lines
4.1 KiB
Markdown
Title: Turris Omnia : se connecter en ssh avec une clé
|
|
Date: 2020-10-26 2:16
|
|
Category: sysadmin
|
|
Tags: OpenWRT, SSH, Turris Omnia
|
|
Cover: assets/backgrounds/turris_ssh_cle.jpg
|
|
|
|
J'utilise depuis maintenant deux ans un routeur [Omnia][l_turris] de chez
|
|
Turris, J'en ai parlé déjà 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 qui 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_key'
|
|
uci add_list sshd.@openssh[0].HostKey='/etc/ssh/ssh_host_rsa_key'
|
|
```
|
|
|
|
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_turris]:https://www.turris.com/en/omnia/overview/
|
|
[l_wireguard]:{filename}../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/
|