Add SSH on Turris Omnia article
This commit is contained in:
parent
3979b0eecf
commit
918d56b775
1 changed files with 134 additions and 0 deletions
|
@ -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/
|
Loading…
Add table
Add a link
Reference in a new issue