SSH en détails, Partie 3
Note de l’éditeur: Dans la deuxième partie de cette série d’articles rentrant dans les profondeurs de SSH avec Mac OS X, François Joseph de Kermadec nous a montré comment démarrer correctement le serveur SSH et faire la première connexion. Dans ce troisième épisode, il rentre dans les détails, en nous expliquant des détails plus techniques.
Editer les fichiers
L’édition des fichiers de configuration est en fait très simple une fois que vous avez appris comment le faire. Ces fichiers sont de simples documents textes contenant une liste de paramètres et leurs valeurs associées — un paramètre et sa valeur correspondante sont en général sur une même ligne.
Pour changer une valeur, effacez simplement le texte et remplacez le par la nouvelle valeur. Dans certains cas, la ligne est précédée du symbole dièse #, signifiant qu’il ne sera pas pris en compte par SSH. Enlevez simplement le symbole une fois que vous avez changé la valeur afin que la modification soit lue et prise en compte. Une telle ligne représente une valeur par défaut, signifiant que c’est normalement la valeur par défaut qui est considérée par le serveur SSH. Cependant, le fait de décommenter la ligne rendra les choses plus claires pour vous et peut vous aider à éviter certains problèmes de configuration.
Par exemple, si je souhaitais changer le paramètre imaginaire “SayHelloAndSmile”, je ferais le changement de ceci:
# SomeStrangeSetting yes
# SayHelloAndSmile no
# SomeStrangeSetting yes
pour ceci:
# SomeStrangeSetting yes
SayHelloAndSmile yes
# SomeStrangeSetting yes
Afin d’éditer ces fichiers, je vous conseille d’utiliser pico, un éditeur de texte simple qui se trouve dans le Terminal. Une fois que vous avez ouvert un fichier dans pico, utilisez uniquement les touches de direction pour naviguer dans le fichier. En bas de la fenêtre, sont indiqués les raccourcis claviers les plus importants. Gardez juste à l’esprit que “ö” signifie “Control” et vous êtes paré pour utiliser pico !
Pour éditer le fichier, vous pouvez soit le faire via une connexion sur votre serveur ou directement sur le clavier du serveur.
Le Fichier de Configuration du Serveur
Afin d’ouvrir le fichier de configuration du serveur dans pico, tapez la commande suivante et validez par la touche Entrée:
sudo pico /private/etc/sshd_config
Le système vous demandera votre mot de passe administrateur. Assurez-vous de lui donner celui du compte avec lequel vous êtes connecté.
PermitRootLogin no
Laisser cette option désactivée empêchera quiconque de se connecter en tant que root via SSH à la machine. Du fait qu’aucune tache administrative n’a à être exécutée en tant que root — sauf si vous êtes un utilisateur avancé d’UNIX et connaissez les conséquences de ce genre de manipulations — cela augmentera grandement la sécurité de votre serveur sans vous empêcher de faire correctement votre travail. Du fait que le compte root est tout puissant dans les systèmes UNIX traditionnels, c’est le compte qui est le plus souvent pris pour cible par les attaquants — ce qui est une autre bonne raison d’en empêcher l’accès.
PasswordAuthentification no
L’identification par mot de passe est justement le système d’identification faible que nous essayons d’éviter. De ce fait, le désactiver est notre but.
PermitEmptyPasswords no
Rien n’est plus dangereux qu’un compte avec un mot de passe vide. En tant qu’administrateur système conscient de la sécurité, vous devriez vous être déja assuré qu’aucun compte utilisateur n’est dans cette situation. Cependant, pour plus de sécurité, assurez-vous d’activer cette option: lorsque c’est le cas, SSH refusera tout accès à un compte sans mot de passe.
PubKeyAuthentication yes
La clé publique est le système d’identification fort que nous recherchons. Pour cela, il est essentiel de l’activer — ou vous pourriez vous retrouver dans l’impossibilité de vous connecter sur la machine, ce qui n’est jamais une situation bien agréable.
RSAAuthentication no
RhostsAuthentication no
ChallengeResponseAuthentication no
PAMAuthenticationViaKbdInt no
Ces systèmes d’identification ne sont pas sûrs ou ne s’appliquent pas à notre situation. Pour ces raisons, il vaut mieux les désactiver. Les laisser activés annulerait tous nos efforts de sécuriser le serveur SSH.
StrictModes yes
Lorsque vous activez cette option, SSH s’assurera que les droits sur les fichiers et répertoires impliqués dans le processus de connexion sont adéquats et en correspondance avec les permissions du serveur. Si cela n’est pas le cas, SSH refusera tout simplement la connexion. Bien sûr, les droits sur les fichiers ne constituent pas la protection ultime en terme de sécurité, mais cela y contribue malgré tout de façon non négligeable et il ne faut pas l’ignorer.
LoginGraceTime 30
Avec cette option, SSH vous accorde un délai maximal de 30 secondes pour vous identifier, au dela duquel la session sera fermée. De cette façon, un attaquant qui essaye des mots de passe ou qui hésite devra faire de multiples tentatives de connexion, ce qui le ralentira fortement. De plus, cela évitera au serveur d’écouter des connexions qui ne sont pas utilisées ou établies par erreur. Pour être parfait, ce délai devrait être juste assez long pour vous permettre de saisir rapidement votre mot de passe — mais si vous le réglez trop court, vous pourriez vous retrouver incapable de vous connecter à votre machine.
KeyRegenerationInterval 3600
ServerKeyBits 768
Ces deux paramètres permettent de s’assurer que la clé du serveur, qui est utilisée dans le processus de sécurisation et de cryptage, soit assez longue et qu’elle soit régulièrement changée. En fait, plus il y a de données cryptées avec un clé, plus il est facile de la trouver et de craquer le cryptage. En régénérant une clé fréquemment, vous pouvez prévenir cela.
Protocol 2
Cette option restreint le serveur SSH qui tourne sur votre Mac à ne gérer que des connexions au protocole SSH2, qui intègre un meilleur mécanisme de vérification de l’intégrité des connexions et qui est considéré plus sûr. Malgré que la plupart des clients SSH récents utilisent par défaut le protocole SSH2, cela empêchera toute possibilité de connexion en SSH1 sur votre Mac. Cela rendra également les choses plus difficiles pour d’éventuels attaquants en limitant leurs possibilités et le nombre de vulnérabilités qu’ils pourraient exploiter.
AllowUsers username
En fait il vous faudra ajouter cette ligne. Bien sûr, il vous faut remplacer username par le nom du ou des compte(s) que vous souhaitez autoriser à se connecter en SSH. Le but de cette option est d’interdire toute connexion en SSH aux comptes qui n’ont pas été explicitement autorisés. Cela ajoute une couche de sécurité supplémentaire qui est toujours la bienvenue et empêche des clés oubliées de réapparaitre quand vous vous y attendez le moins.
Si vous voulez affiner ce réglage, vous pouvez saisir une liste de comptes ou des critères de tri, séparés par des espaces. Par exemple, vous pouvez utiliser les jokers Unix traditionnels tels que ? et *. Gardez juste à l’esprit que vous ne pouvez pas utiliser les numéros de compte ici.
Pour conclure sur ce point, vous pouvez saisir les noms d’utilisateur sous la forme utilisateur@machine, vous permettant de restreindre l’utilisateur à des connexions uniquement depuis une machine spécifique. Cependant, faites très attention avec cette option: cela n’améliore pas sensiblement la sécurité et, sachant comment les noms de machines peuvent changer sur un réseau, cela constitue encore le meilleur moyen de se retrouver soi-même incapable de se connecter à sa propre machine.
SSH intègre une fonction DenyUsers que vous pouvez utiliser à la place - n’essayez pas d’utiliser les deux, cependant, car elles pourraient rentrer en conflit. Dans ce cas, la commande AllowUsers est plus puissante et devrait vous permettre d’arriver à vos fins.
Pour enregistrer vos modifications, tapez Control et O puis la touche Entrée. Puis, pour sortir de pico, tapez Control et X, ce qui devrait vous ramener au prompt.
Sécuriser le Client
Sécuriser le client est la partie la plus importante de notre affaire. Cependant, en modifiant quelques options dans le fichier de configuration du client, vous pouvez réduire la durée de la procédure d’identification SSH et empêcher SSH de se rabattre sur des méthodes d’identification moins sûres sans vous en tenir informé ou sans votre accord.
Cette fois-ci, nous allons éditer le fichier /private/etc/ssh_config et modifier les deux valeurs suivantes pour les raisons précédemment vues:
RSAAuthentication no
PasswordAuthentication no
Un mot sur l’inactivité
Lorsque vous travaillez à distance via de longues liaisons, vous devez garder à l’esprit que votre connexion passe à travers de nombreux équipements qui peuvent appliquer différentes règles d’inactivité. Par exemple, votre routeur peut couper les liaisons NAT après quelques minutes d’inactivié, sans forcément vous donner la possibilité de modifier ce réglage. Il est donc de bon ton de ne pas laisser votre connexion sans activité plus de quelques secondes.
En fait, dans l’hypothèse où vous perdez la connexion pendant votre travail, vous pouvez non seulement perdre des données, mais rencontrer également des difficultés à établir une nouvelle connexion au serveur.
Une Note Particulière pour les Utilisateurs de FileVault
Comme nous l’avons vu il y a quelques temps, FielVault remplace votre dossier d’Accueil par une image disque qui est montée automatiquement lorsque vous ouvrez une session.
Cependant, cela signifie, assez logiquement, que dès que vous fermez votre session, son contenue est démonté et ne peut plus être accédé par aucun processus, serveur SSH compris. De ce fait, les clés que vous avez justement placés dans le dossier .ssh sont inaccessibles et de ce fait l’identification ratera à chaque fois tant que vous n’ouvrez pas une session localement sur la machine.
Il existe des solutions pour contourner ce problème, bien sûr, une d’entre elles étant de créer un compte sans FileVault, avec lequel vous puissiez vous connecter avant de monter le .spaseimage qui constitue le FileVault. Cependant, vous devez garder à l’esprit que si l’information stockée sur votre ordinateur est suffisamment importante pour justifier le FileVault, ce n’est probablement pas une bonne idée d’y accéder à distance de cette façon et de saisir votre mot de passe FileVault d’une façon qui puisse être écoutée plus ou moins facilement — selon la méthode choisie de cryptage. Vous devriez dans ce cas plutôt envisager des solutions VPN très sécurisées.
Vous pouvez toujours placer les clés dans un autre dossier, mais cela pose des problèmes de sécurité et dépasse largement l’objet de cet article.
Il faut bien faire attention que cela ne pose problème que côté serveur; vous pouvez utiliser FileVault sur le poste client sans aucune incidence, puisque par définition, vous serez connecté avec votre compte lorsque vous essayerez d’accéder à la machine distante. Assurez-vous juste que vos sauvegardes sont cryptées également — sinon quelqu’un qui volerait vos sauvegardes pourraient accéder au contenu de votre dossier d’accueil ainsi qu’aux clés qu’il contient.
Tester la Nouvelle Configuration Sécurisée
Maintenant que vous avez modifié les fichiers de configuration du serveur, vous devez lui lire de les relire — dans le cas contraire vos modifications ne prendraient pas effet. Le moyen le plus simple pour faire cela est d’utiliser le panneau Partage des Préférences Systèmes pour désactiver puis réactiver l’option Session à Distance.
De plus, redémarrez votre machine d’administration pour plus de sécurité, afin de s’assurer de la bonne prise en compte de toutes les modifications que vous avez faites. Ce redémarrage est également l’occasion de s’assurer que l’ouverture de session automatique est bien désactivée, et que la fenêtre d’ouverture de session n’affiche aucun nom de compte — L’ordinateur de Mike n’est pas une bonne idée par exemple si votre nom de compte est Mike. En revanche, pas de problèmes si votre compte s’appelle John. Bien sûr, cela n’est valable que si les utilisateurs doivent saisir le nom d’utilisateur et le mot de passe pour accéder à leur compte.
Puis, essayez de vous connecter à votre serveur SSH avec votre compte habituel et, afin de tester la réaction du serveur SSH, ne fournissez pas le mot de passe de votre clé. Si tout se passe correctement, la connexion devrait être immédiatement fermée. En revanche, le mot de passe de la clé devrait vous suffire à être connecté sans problème. Faites attention que la première connexion sur un serveur peut ne pas aboutir si vous avez paramétré un temps de connexion court, car des traitements supplémentaires ont lieu lors de la première connexion ce qui peut aboutir à un dépassement de délai. Dans ce cas, reconnectez-vous tout simplement.
A travers le Pare-Feu
Jusqu’à maintenant, nous avons vu comment utiliser la puissance de SSH pour se connecter à distance à une machine via votre réseau local.
Cependant, la connexion à distance ne prend toute sa valeur qu’en le faisant à travers Internet, n’est ce pas ? Cependant, faire cela nécessite de faire un trou à travers votre pare-feu afin d’accepter les connexions SSH entrantes.
Bien que de nombreux pare-feux intègrent maintenant des fonctionnalités complexes permettant de limiter le nombre de personnes passant simultanément à travers le trou que vous avez fait (en fonction de leurs adresses IP par exemple), vous n’avez pas forcément la possibilité d’utiliser ces fonctions, pour différentes raisons. Certains FAIs (Fournisseurs d’Accès Internet) ont un plan d’adressage curieux et utilisent différentes plages d’adresses IP. De plus, les contrôles basés sur les adresses IP ne sont jamais totalement sûrs et ne doivent pas être considérés comme vraiment fiable. Ils sont juste un moyen de filtrage assez efficace, parmi d’autres.
Avant de poursuivre et de réellement activer votre accès à distance, je vous conseille fortement de peser le pour et le contre d’une telle action. Est-ce que votre réseau local est suffisamment sécurisé ? Dans le cas où un ordinateur de votre réseau local serait compromis; est-ce que le problème sera décelé rapidement ? Est-ce que cela pourrait affecter d’autres ordinateurs dans le réseau ? Pouvez-vous vous permettre de prendre ce risque ?
Si vous souhaitez poursuivre, nous allons maintenant voir comment se connecter à distance à votre Mac, quelque soit l’endroit où vous vous trouviez et quelle que soit l’adresse IP qute votre FAI utilise.
Une Rapide Présentation du DNS
En tant qu’utilisateur expérimenté d’Internet, vous êtes surement familier avec le concept d’adresses IP; une suite de chiffres qui identifie de façon unique une machine. Cependant, vous n’avez jamais besoin de taper une adresse IP dans le champ adresse de votre browser Web, même si vous le pouvez si vous le souhaitez.
Comment est-ce possible ? Pour être direct, cela est dû au monde merveilleux du DNS, l’équivalent Internet de l’annuaire téléphonique qui traduit les noms de domaines en adresses IP permettant à votre ordinateur de contacter le serveur adéquat. Lorsque votre ordinateur recherche une URL spécifique, une chaine de requêtes commence, de serveur DNS en serveur DNS, afin de trouver l’adresse IP correspondante.
La plupart des sites ont une adresse IP fixe, ou une suite d’adresses. Une fois pour toute, les serveurs DNS sont paramétrés et, sauf si quelque chose d’important se produit au niveau des serveurs de cette société — comme un déménagement par exemple — ils ne changeront pas pendant très longtemps.
Cependant, les serveurs DNS sont extrêmement flexibles, et rien ne les empêche de faire la liaison entre un nom de domaine et une nouvelle adresse IP chaque jour, si cela est nécessaire. Les services gérant ces changements fréquents d’enregistrements sont appelés DNS Dynamique ou DDNS (en anglais Dynamic DNS).
OK, fin de l’aparthé. Retour au travail.
Accéder à votre Routeur
Le Mac auquel vous souhaitez vous connecter se trouvant derrière un routeur/pare-feu, nous devons d’abord savoir comment l’atteindre. Nous nous inquièterons ensuite de savoir comment le traverser.
Comme tout équipement connecté à Internet, votre routeur dispose d’une adresse IP qui lui a été donné par votre fournisseur d’accès Internet. Dans certains cas, les adresses IP sont fixes, alors que parfois elles changent toutes les quelques heures.
Si vous l’êtes l’heureux propriétaire d’une adresse IP statique, vous n’avez pas besoin de vous inquiéter pour savoir comment trouver votre routeur sur Internet. Réutilisez toujours la même adresse, encore et encore, sachant que c’est votre routeur qui répond à cette IP.
Malheureusement, certains utilisateurs ne sont pas aussi chanceux, et même les abonnements haut-débit coûteux sont souvent fournis avec une adresse IP dynamique qui change aléatoirement toutes les quelques heures. Quelle est la solution, alors ? Bien sûr le DNS Dynamique !
En fait, une bonne solution consiste à disposer d’un nom de domaine et d’installer un petit logiciel adéquat pour mettre à jour les enregistrements DNS qui y sont associés chaque fois que l’adresse IP change. De cette façon, vous n’avez plus besoin de vous inquiéter de l’adresse IP. Saisissez juste le domaine, en sachant qu’il se traduira automatiquement en adresse IP actuelle de votre routeur.
Contrairement à ce que l’on pourrait penser au premier abord, mettre à jour des enregistrements DNS de façon régulière n’est pas quelque chose de bien compliqué. En fait, la plupart des routeurs domestiques et des pare-feux intègrent nativement un logiciel qui s’occupera de cela pour vous. Dès que le routeur détecte un changement d’IP, il alerte votre fournisseur DDNS. Cela nécessite que votre fournisseur DDNS soit suffisamment connu pour que le fabricant de votre routeur ait intégré une fonction spécifique pour lui dans le firmware.
Si vous ne possédez pas un tel routeur, vous pouvez installer un logiciel client spécifique sur votre serveur qui prendra cela en charge. Vous devez juste vous assurer que le logiciel se lance bien automatiquement au démarrage de la machine et qu’il collecte bien l’adresse IP du routeur correctement.
Obtenir un Compte DDNS
Un des leaders des services DDNS est la société DynDNS. Vous pouvez en apprendre plus sur leur offre ici. Cette société a gagné la confiance de nombreux utilisateurs du Web au fil des années grâce à d’excellents services et un service client performant.
Du fait que cette société est très connue, je vais vous montrer comment paramétrer un compte DDNS en utilisant leur site. Vous êtes libre d’utiliser la société qui répond le mieux à vos besoins; assurez-vous bien, cependant, de bien lire toutes les pages d’aide présentes sur le site Web de DynDNS. Cela vous évitera beaucoup de mauvaises surprises.
Pour créer un nouveau compte, il vous suffit de vous rendre sur cette page. Assurez-vous d’être d’accord avec les conditions générales du service et indiquez les informations demandées.
Si vous disposez déja d’un compte pour la société, il est mieux de créer un nouveau compte pour vos services DDNS. En fait, la plupart des logiciels DDNS (soit les clients dédiés ou ceux intégrés aux routeurs) envoient vos informations d’identification en clair lorsqu’ils mettent à jour le DNS. Même si cela est acceptable pour un compte qui ne contient pas d’informations critiques ou de type bancaire, vous ne souhaitez pas que quelqu’un puisse accéder à vos domaines, réglages de courriers, et numéros de comptes en banque en sniffant simplement un mot de passe.
La procédure de création d’un compte est assez simple. Pour activer votre compte, il peut y avoir besoin d’exécuter quelques instructions reçues par email.
Une fois le compte créé, il vous suffit de vous identifier sur le site, et de cliquer sur l’onglet Services pour afficher les différents services proposés par DynDNS. Dans la colonne de gauche, choisissez Dynamic DNS et Add Host.
Dans le formulaire qui apparait, on vous demandera de choisir un nom de domaine. N’hésitez pas à utiliser le menu déroulant sur la droite pour trouver le nom de domaine qui correspond à vos besoins et vos affinités. La partie personnalisable doit être assez simple pour s’en rappeler facilement — cependant plus simple elle sera, plus il y a de risque qu’elle soit déja prise. De plus, gardez bien à l’esprit que vous pourriez avoir besoin de communiquer ce nom de domaine à quelqu’un; choisir quelque chose de neutre rendra les choses plus faciles.
Le champ “I.P. address” contient votre adresse IP actuelle, telle que détectée par votre browser. Vous pouvez la modifier si elle n’est pas correcte.
Bien que très pratique, les autres option sortent de l’objet de cet article. Vous pouvez vous reporter à la documentation pour savoir ce qu’elles font et comment s’opè leur magie. Les comptes payants peuvent choisir une page de redirection vers laquelle les visiteurs seront renvoyés si votre Mac ou votre routeur sont déconnectés. Même si cela peut être utile, c’es à vous de décider de ce dont vous avez besoin — n’oubliez pas que rentrer des informations bancaires dans le compte peut présenter un risque.
Une fois le compte paramétré, vous pouvez vous déconnecter en toute sécurité. Puis, occupez-vous de paramétrer immédiatement votre routeur ou le logiciel client pour qu’il prenne soin automatiquement de maintenir l’enregistrement DNS à jour. Assurez-vous que votre client respecte bien les règles de non-abus de DynDNS, faute de quoi cela pourrait vous attirer des ennuis.
Cela peut être également une bonne idée de surveiller pendant quelques jours que cela fonctionne bien correctement.
Passer à travers le Pare-Feu
Pour le moment, le fait d’essayer de se connecter sur ce nom de domaine avec un browser Web, de le pinger depuis le Terminal ou essayer de s’y connecter en SSH aboutira à un échec.
Pourquoi ? Parce que notre pare-feu bloque toute tentative de connexion qui ne provienne pas de l’intérieur du réseau — enfin, en tout cas, c’est ce que tout bon pare-feu doit faire.
De ce fait, il va falloir faire un trou dans le pare-feu et indiquer l’ordinateur dans le réseau à qui les requêtes sur un port spécifique devront être redirigées. Cette méthode est appelée, de façon assez logique, renvoi de port (port forwarding en anglais). La plupart des routeurs et pare-feux actuels disposent de cette fonction.
En réalité, cette méthode est un peu plus sûre que la simple ouverture d’un port dans le pare-feu. En fait, au lieu d’accepter toute connexion entrante et de les laisser atteindre n’importe quel ordinateur sur le réseau, il les redirige de telle façon qu’elles atteignent toutes le même serveur. De cette façon, les autres ordinateurs du réseau local sont en quelque sorte un peu mieux protégé — même si dans une certaine mesure le réseau local en entier est exposé, car un serveur compromis pourrait être utilisé pour à son tour compromettre d’autres machines dans le réseau local.
Une fois que vous avez paramétré votre pare-feu, assurez-vous que le service d’administration à distance est bien désactivé et sécurisé, si votre appareil dispose de cette fonction. En fait, de tels pare-feux sont une cible privilégiée pour les attaquants — appropriez-vous l’élément principal d’un réseau, et vous possédez tout le réseau.
DHCP est notre Ennemi
La majorité des routeurs et pare-feux distribuent des adresses IP pour les machines présentes sur le réseau de façon dynamique, ce qui signifie que le même ordinateur n’aura jamais deux fois la même adresse IP chaque fois qu’il sera redémarré ou que le réseau sera reconfiguré.
Vous devez pour cette raison configurer votre pare-feu pour qu’il redonne toujours la même adresse IP à chaque Mac — laissant les autres ordinateurs du réseau avec des adresses dynamiques si vous le souhaitez.Souvent cela est possible en associant une adresse NAT à une adresse IP. Vous pouvez aussi utiliser des IP fixes pour tous les ordinateurs de votre réseau, mais gardez à l’esprit que cela nécessite une maintenance plus rigoureuse et peut poser des problèmes de sécurité à long terme.
L’Epreuve du Feu
Ouvrez votre Terminal, saisissez la commande ssh nomdutilisateur@votrenomdedomaine.ext et voyez ce qu’il se passe. Dans certains réseaux locaux, vous aurez immédiatement un message de refus (Access Denied en anglais) car votre pare-feu ne comprend pas ce qu’il se passe — vous êtes à l’intérieur du réseau et vous essayez d’utiliesr un nom de domaine extérieur. Pour cela, il est préférable de tester cette configuration en utilisant une autre connexion à Internet, indépendante. Cela sera en plus un bien meilleur test en condition réelle, comme si vous étiez à des milliers de kilomètres de votre bureau.
Si tout va bien, vos deux Mac devraient interagir comme si vous étiez tous les deux dans votre réseau local.
Prochaine Étape
Vous avez déja fait les trois-quarts du chemin ! Au prochain épisode, nous travaillerons un peu dans le Terminal pour en voir toute la puissance, nous verrons également comment mettre à jour votre Mac, et quelques autres bonnes choses. A bientôt.

Textes originaux en anglais sur O’Reilly : Inside SSH, Part 3 par François Joseph de Kermarec
Chargement
Commentaires récents