---
categories: ['OpenWRT','Système']
date: 2020-02-26T15:44:44+01:00
description: "Paramétrer OpenWRT pour permettre une connexion sécurisée par SSH à l'interface d'administration LuCI"
draft: false
tags: ['OpenWRT','SSH','tunnel']
title: "OpenWRT : Tunnel SSH pour LuCI"
translationKey: "openwrt-ssh-tunnel"
---
## Description
Abordons l'aspect de connexion {{< abbr SSH "Secure SHell" >}} dans OpenWRT
pour sécuriser l'accès à l'interface d'administration **LuCI**.
{{< note info >}}Merci de vous référez à mon article {{< inside2 a="ssh" l="sys:openwrt:about" t="à-propos d'OpenWRT" >}}
qui restitue quelques notions intéressantes à-propos du serveur SSH, de certains
paramétrages clients nécessaires à faire, etc.
{{}}
## Configuration
### Tunnel SSH
Par défaut, l'interface web LuCI n'est disponible QUE sur le protocole {{< abbr HTTP "HyperText Transfer Protocol" >}},
et en plus à l'écoute partout ET sur toutes les interfaces !!!
Une manière de protéger est de rediriger le flux web vers l'interface locale
de bouclage puis dans un tunnel SSH.
Aprés s'être connecté en SSH à votre routeur OpenWRT :
1. En premier lieu, sur OpenWRT, il nous faut reconfigurer le serveur web
**uhttpd**, pour lui dire de n'écouter QUE localement sur le port 80.
Donc, éditez le fichier de configuration du serveur web `/etc/config/uhttpd`
pour :
* mettre en commentaire les deux lignes : `list listen_http 0.0.0.0:80`
et `list listen_https 0.0.0.0:443` ; ajoutez en début de ligne
le symbole `#`.
* puis ajoutez : `list listen_http 127.0.0.1:80`
*(et si vous voulez interrogez localhost sur IPv6 : `list listen_http [::1]:80`)*
* redémarrez le service web : `/etc/init.d/uhttpd restart`
* vérifiez que le service web n'écoute bien que le port 80 sur l'interface
locale :
`$ netstat -ant | grep -E ":80"`
`tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN`
`tcp 0 0 ::1:80 :::* LISTEN`
2. Ensuite, la commande par défaut pour encapsuler dans SSH, du côté de
votre client SSH est :
`ssh -L 127.0.0.1:8080:127.0.0.1:80 -p 22 id@ip-routeur`
Où :
* `-p 22` est le numéro du port d'écoute par défaut du serveur SSH -
*par défaut, il n'est même pas nécessaire de l'écrire : si vous
l'avez changé dans l'administration, pensez à le modifier ici, aussi !*
* `id` est l'identifiant de votre {{< inside "sys:openwrt:sudo" "nouvel utilisateur" >}}.
* `ip-routeur` est bien sûr l'adresse IP(v4), côté LAN, de votre routeur OpenWRT !
* Voici un exemple de configuration de votre fichier de config SSH du
côté de votre client :
{{< file "sys-openwrt-ssh-dropbear-config-example" sh "~/.ssh/config" >}}
Ainsi, vous n'aurez plus qu'à exécuter ainsi : `$ ssh luciweb`
* Pour finir, dans votre navigateur web, écrivez l'URL suivante : `localhost:8080`
Voilà !
### Shell
* Le fichier de configuration est situé dans : `/etc/config/dropbear`
* Le service de **dropbear** est lui accessible : `/etc/init.d/dropbear`.
## Dépannage
### Error: no matching cipher found. Their offer: aes128-ctr,aes256-ctr
Le serveur SSH **dropbear** n'est pas capable de gérer des chiffrements
forts autres que ceux restitués dans le message d'erreur.
Ajoutez à votre configuration client SSH : `Ciphers aes256-ctr`
### Error: no matching host key type found. Their offer: ssh-rsa
Le serveur SSH **dropbear** n'est pas capable de gérer des clés d'hôtes
plus fortes autres que celles restituées dans le message d'erreur.
Ajoutez à votre configuration client SSH : `HostKeyAlgorithms ssh-rsa`
### Error: no matching MAC found. Their offer: hmac-sha1,hmac-sha2-256
Le serveur SSH **dropbear** n'est pas capable de gérer des algorithmes
forts, pour les {{< abbr MAC "Message Authentication Code" >}}, autres
que ceux restitués dans le message d'erreur.
Ajoutez à votre configuration client SSH : `MACs hmac-sha2-256`
---