--- 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` ---