OpenWRT : OpenSSH pour remplacer Dropbear

Article publié, le et modifié le
4 minute(s) de lecture

Cet article contient 733 mots.
Source brute de l'article : MD

Description

Par défaut, OpenWRT est livré avec Dropbear. Bien que ce serveur SSH utilise seulement la version 2 du protocole SSH, et soit léger, il comporte quelques lacunes :

  • Il a un support de partial du protocole SFTP ; il faut lui adjoindre le paquet openssh-sftp-server pour que ce soit fonctionnel.
  • Il n’a aucune séparation de privilège utilisateur.
  • Il n’a pas officiellement de support des modules cryptographiques, approuvés par la FIPS 140-2. (bien que dans notre contexte particulier, ce ne soit pas une nécessité)
  • La version encore livrée dans OpenWRT 19.07.x ne supporte pas :
    • hostkey ed25519
    • le chiffrement chacha20-poly1305
    • voire les signatures de clés au format rsa-sha2
    • il faut attendre officiellement la version 2020.79 de Dropbear…

Néanmoins, pour ceux qui ont créé des clés Ed25519, il semble vouloir gérer… du moins dans le contexte suivant.

Installation

opkg update
opkg install openssh-server openssh-moduli

Info

Configuration

Dropbear

Si vous ne l’avez pas déjà, mieux vaut définir un nouveau numéro de port de connexion.

Si vous voulez le faire par l’interface LuCI, veuillez lire mon article OpenWRT : Présentation du projet

En mode console, cela peut se faire ainsi :

# uci set dropbear.@dropbear[0].Port=xxx
# uci commit dropbear
# /etc/init.d/dropbear restart

xxx est le numéro de port que vous choisirez !

C’est le moment de se reconnecter au serveur sur ce nouveau numéro de port.

OpenSSH

  • Fichier de configuration : /etc/ssh/sshd_config

Les recommandations de bases suivantes s’appliquent ABSOLUMENT :

  • n’utiliser QUE la Version 2 du protocole,
  • NE PAS permettre au compte root de se connecter,
  • désactiver l’authentification par mot de passe,
  • n’utiliser QUE l’authentification par clés.

Nous allons en profitez pour durcir la configuration par défaut :

Info
Attention

Fichier moduli

Si vous avez installé le paquet openssh-moduli, il serait préférable de n’accepter que les échanges de clés de groupe DH supérieure ou égale à 3072 bits.

Avant de le modifier, sauvegardons le fichier, au cas où…

# cp /etc/ssh/moduli /etc/ssh/moduli.bckp
# chmod 0400 /etc/ssh/moduli.bckp ou déplacez-le ailleurs pour sauvegarde.

Ensuite, il faut le recréer

Astuce

TL;DR

Voici un exemple minimaliste du fichier de configuration du serveur :

Fichier : /etc/ssh/sshd_config

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
ListenAddress 192.168.xyz.abc
ListenAddress fd00:abcd:efg9::1

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com

PermitRootLogin no
MaxAuthTries 3

PubkeyAuthentication yes

AuthorizedKeysFile	.ssh/authorized_keys

PasswordAuthentication no
PermitEmptyPasswords no

Subsystem	sftp	/usr/lib/sftp-server
Attention

Gestion des services

Service OpenSSH

Et, voilà, maintenant, il ne vous reste plus qu’à vous connecter… après avoir testé la configuration puis activé et démarré le service :

# sshd -t

Si la configuration est valide :

# /etc/init.d/sshd enable
# /etc/init.d/sshd start

Service Dropbear

Vous pouvez vous connecter au service d’OpenSSH, sans soucis ?
Maintenant, vous pouvez arrêter et désactiver le service :

# /etc/init.d/dropbear stop
# /etc/init.d/dropbear disable


Sauvegarde système

Normalement, le répertoire /etc/ssh et ce qu’il contient est inclus dans la sauvegarde système par l’outil sysupgrade.

Pour le vérifier : # sysupgrade -l | grep ssh

Si ce n’est pas le cas, éditez le fichier /etc/sysupgrade.conf et ajoutez le répertoire.

Documentation

Wikipedia