A vos côtés, chaque jour !

Nous appeler : +33 (0)4 84 51 02 58
Difficulté 

En entreprise ou à domicile, votre NAS (Network Area Storage) est un objet connecté en permanence au réseau. Que ce réseau soit parfaitement isolé d'internet ou non, votre appareil de stockage est une cible de choix pour les attaques de tout type car il stocke des données qui ont forcément une valeur (sinon pourquoi les stockez-vous ?).

Dans ce billet, nous allons ajouter un premier niveau de sécurité à votre NAS Synology en modifiant la configuration par défaut de SSH, via la ligne de commande.
Ce how-to a été écrit pour un NAS fonctionnant sous DSM 5.0 (DSM 5.1 intègre une option native pour changer le port de SSH, mais pas encore de gérer d'autres personnalisations).

SSH ça sert à quoi ? Pourquoi faut-il le sécuriser ?

SSH, pour Secure Shell est un protocole permettant de se connecter à une machine distante de manière sécurisée : avec lui, les communications sont chiffrées.
Les NAS Synology sont basés sur une version de Linux nommée DSM (DiskStation Manager) qui utilise SSH pour plusieurs services (notamment la sauvegarde réseau).

Sur DSM, comme partout ailleurs, SSH utilise par défaut le port TCP 22. Et la généralisation de l'utilisation de ce port 22 pose le problème que de nombreuses attaques commencent par l'interrogation de votre réseau sur ce port. Il suffit de constater le nombre de requêtes de machines inconnues en provenance d'internet sur TCP 22 en SSH pour comprendre que changer de port est une bonne habitude, même si elle ne suffit pas pour être complètement à l'abri, bien entendu.

Problème

Les outils Synology sont vraiment super, mais ils sont limités et ne nous donnent pas la possibilité d'adopter quelques bonnes habitudes en paramétrant comme on le souhaite.

Solution

Pour le faire, il va nous falloir nous connecter à notre serveur en ligne de commande, le shell et éviter de faire n'importe quoi !

Contexte

Nom d'hôte de votre NAS : galacticsenate
Nom d'utilisateur créé lors de l'installation: palpatine
Port non standard que nous décidons d'utiliser : 709

1. Accéder à la ligne de commande de votre NAS

Sur Windows, utilisez PuTTY pour vous connecter au NAS avec l'utilisateur root.

2. Autoriser la ligne de commande pour un utilisateur

Si ce n'est pas déjà fait, utilisez l'interface web de DSM pour créer un utilisateur que vous placez dans le groupeAdministrateurs.
Puis dans la ligne de commande, sauvegardez le fichier /etc/password puis ouvrez le avec l'éditeur de texte vi :

$ cp /etc/passwd /etc/passwd.bckup
$ vi /etc/passwd

Le contenu du fichier s'affiche. Pour indiquer que le user palpatine pourra accéder à la ligne de commande, changez la ligne

palpatine:x:1026:100:chancelier du serveur:/var/services/homes/palpatine:/sbin/nologin

pour

palpatine:x:1026:100:chancelier du serveur:/var/services/homes/palpatine:/bin/sh

Enregistrez et quittez vi.

2. Autoriser su

Sur Linux, root est l'utilisateur qui a accès à tout dans tout, partout, tout le temps. L'une de nos mesures de sécurité sera de désactiver la possibilité de se connecter en root via SSH.
Cependant, si vous interdisez à root de se connecter en SSH, vous devrez quand même permettre à l'utilisateur qui vous servira à vous connecter de basculer en root quand vous en aurez besoin pour faire certaines tâches.
Sur Linux pour ouvrir une session avec un autre utilisateur on utilise la commande su (substitute user).

Sur notre DSM, la commande su est soumise à des permissions qui autorisent seulement root à l'utiliser.
Depuis la ligne de commande autorisez l'utilisation de su en changeant les permissions sur busybox en exécutant la commande :

$ chmod u+s /bin/busybox

Pour tester vos modifications, quittez la session root

$ exit

Puis reconnectez-vous en palpatine.
Vous devriez accéder à la ligne de commande, preuve que la modification de /etc/passwd a fonctionné puis demandez à passer en root en entrant

$ su
Password: 

Entrez le mot de passe de root, validez.
L'invite de commande s'affiche de nouveau, demandez-lui d'identifier le compte sous lequel vous êtes connecté

$ whoami
root

 

Modifier la configuration SSH

La configuration SSH est définie dans deux fichiers :

  • /etc/ssh/sshd_config définit le serveur SSH de notre NAS (paramètres utilisés quand on se connecte à lui)
  • /etc/ssh/ssh_config définit le client SSH de notre NAS (paramètres utilisés quand on connecte notre NAS à un autre serveur)
Info

Le fichier ssh_config peut être placé ailleurs. Quand il est placé dans le répertoire d'un utilisateur, comme /volume1/homes/palpatine/.ssh/ssh_config, les paramètres qu'il contient sont utilisés par défaut pour toutes les connexions SSH lancées sous le user palpatine vers d'autres serveurs.

Ouvrez le fichier /etc/ssh/sshd_config

$ vi /etc/ssh/sshd_config

Le contenu du fichier s'affiche. Apportez les modifications suivantes

Port 709
...
Protocol 2
...
PermitRootLogin no
StrictModes yes
...
PubkeyAuthentication yes

Enregistrez puis quittez vi.

Quelques explications

  • Port 709 : notre NAS va accepter les connexions SSH seulement sur ce port. C'est un exemple, à vous de choisir le port que vous souhaitez utiliser.
  • Protocol 2 : nous forçons l'utilisation du protocole SSH version 2.
  • PermitRootLogin no : nous interdisons au compte root de se connecter via SSH
  • StrictModes yes : les permissions des fichiers et des répertoires seront vérifiées. La connexion est refusée s'ils sont trop permissifs.
  • PubkeyAuthentication yes : nous autorisons explicitement les connexions par échange de clés SSH.
Info

Bien d'autres paramètres peuvent être ajustés selon vos préférences.
Pour plus d'infos, n'hésitez pas à consulter la manpage du fichier sshd_config !

Info : choix du port

Plusieurs choix s'offrent à vous et chacun a ses inconvénients :

  • Laisser le port par défault : de nombreuses tentatives de connexion cherchant à trouver votre mot de passe continueront à apparaître dans les logs de votre NAS.
    Vous pourriez désactiver la connexion par mot de passe et ne vous authentifier que par clé publique, mais cela peut poser de problèmes plus sérieux si votre clé privée est compromise (vol de votre PC, clé USB ou disque externe, ...)
  • Changer pour un port entre 1 et 1024 : vous risquez de tomber sur un port standard réservé officiellement pour un autre protocole, ce qui peut occasionner des conflits, et d'autres tentatives de connexion pourraient cibler le nouveau port.
  • Changer pour un port au-delà de 1024 : des utilisateurs locaux de votre NAS pourraient effectuer une attaque de type DoS au lancement de votre service SSH.

Pour vous aider à choisir, vous pouvez consulter la liste officielle de ports définis par l'IANA.
Pour prendre en compte les modifications, redémarrer le serveur SSH en entrant

$ synoservicectl --restart sshd

Cette commande fait planter votre session, c'est logique.
Testez une nouvelle connexion, sur le port 709, d'abord avec root. Normalement, celle-ci est refusée :

login as: root
root@galacticsenate's password:
Access denied

Puis vérifiez que celle-ci est acceptée avec le user palpatine.
Et voilà !

Pour profiter de connexions SSH, il vous reste à :

  • ouvrir le port TCP 709 sur le pare-feu de votre NAS. Pour ce faire, rendez-vous dans Panneau de configuration »Sécurité » onglet Pare-feu, puis ajouter une règle autorisant TCP 709
  • fermer le port TCP 22, puisque SSH n'écoute plus sur ce port. Cela correspond à la règle Service terminal chiffré.
  • paramétrer les applications clientes pour se connecter à votre NAS sur le port 709.

Troubleshooting

Si vous avez fait une erreur quelque-part dans les paramètres du fichier /etc/ssh/sshd_config, le serveur SSH de votre NAS ne parviendra pas à redémarrer. Pas de panique, il vous suffit d'utiliser Telnet pour récupérer un accès à la ligne de commande de votre NAS et corriger vos erreurs.
Telnet est un protocole non sécurisé. En temps normal, il convient de ne pas l'utiliser : lors d'une connexion, tous les échanges se font en clair, même lorsque vous entrez votre mot de passe.
Mais pour vous dépanner, ce sera au poil.

Connectez-vous à l'interface web de DSM sur votre NAS. Dans le panneau de configuration, allez dans Terminal & SNMP, onglet Terminal et cochez la case Telnet.
Si une alerte vous propose d'ouvrir le port 23 du pare-feu, approuvez. Sinon, rendez-vous dans Sécurité, onglet Pare-feu puis ajoutez une règle autorisant Service terminal non chiffré, correspondant au port TCP 23.

Une fois telnet activé, établissez une connexion à votre NAS sur le port 23 en utilisant le user root et défaites vos modifications pour récupérer un service SSH fonctionnel.
N'oubliez pas de redémarrer le service SSH après vos modifications :

$ synoservicectl --restart sshd

Après votre correction pensez à :

  • désactiver le service Telnet
  • fermer le port 23 de votre pare-feu
  • changer le mot de passe du compte root puisque vous l'avez utilisé sur un protocole non sécurisé

Mises à jour de DSM

Lors d'une mise à jour de DSM, les modifications du fichier /etc/ssh/sshd_config peuvent être écrasées alors que le patch restaure une version offciellement supportée par Synology Inc.
Pensez à faire une sauvegarde de vos modifications avant d'appliquer le patch.

DISCLAIMER

Vertical Assertions n'assure aucune garantie et nie toute responsabilité lors des pertes de données consécutives à un mauvais paramétrage issu de l'application des modifications proposées dans cet article.
D'autre-part, en accord avec sa politique générale du support, Synology Inc. n'assure aucune garantie et nie toute responsabilité lors des pertes de données consécutives à un mauvais paramétrage du serveur.

En conséquence, nous vous conseillons vivement de vous documenter afin de comprendre la portée des modifications que vous appliquez à votre système.
Toute modification de votre NAS en ligne de commande l'éloigne de la version distribuée par Synology, ce qui peut aboutir à une perte d'accès au système d'exploitation de votre appareil, donc aux données qui s'y trouvent.

Ajouter un commentaire

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.