Maitrisez Le Tunneling SSH - DevSecOps

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 9

30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

Docs Blog

Sur cette page Vue d’ensemble

Home docs admin-serveurs linux ssh-tunneling

Maitrisez le tunneling SSH


Mise à jour : 28/10/2024

L’utilisation du tunneling SSH est devenue incontournable pour toute personne soucieuse de
sécuriser ses communications réseau, en particulier lorsque des données sensibles transitent
par des réseaux non sécurisés. Que vous soyez administrateur système ou développeur,
comprendre et maîtriser cette technique vous permettra de créer des connexions sécurisées
entre différentes machines, en redirigeant le trafic à travers une connexion chiffrée. De plus, le
tunneling SSH est indispensable dans le développement ou l’administration système pour
éviter d’ouvrir des flux réseau supplémentaires comme lors de l’analyse des incidents. En
centralisant et sécurisant le trafic via un tunnel SSH, vous pouvez diagnostiquer et résoudre
les problèmes sans compromettre la sécurité du réseau.

Concepts fondamentaux du tunneling SSH


Pour bien comprendre le tunneling SSH, il est important de se familiariser avec plusieurs concepts
clés qui constituent la base de cette technologie. Ces concepts sont essentiels pour exploiter
pleinement le potentiel du tunneling SSH dans différents contextes.

Redirection de port : La redirection de port est une technique qui consiste à rediriger le trafic
réseau d’un port spécifique vers un autre port, souvent sur une machine différente. Cette
technique est utilisée pour acheminer le trafic à travers une connexion SSH sécurisée,
permettant d’accéder à des services distants ou locaux en toute sécurité.

Proxy SOCKS : Le proxy SOCKS est un protocole qui permet de rediriger le trafic d’une
application via un serveur intermédiaire. Dans le contexte du tunneling SSH, un proxy SOCKS
est utilisé pour acheminer le trafic réseau de manière dynamique, ce qui permet d’accéder à
plusieurs services à travers une seule connexion sécurisée.

Fonctionnalités du tunneling SSH


https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 1/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

Le tunneling SSH est une méthode puissante qui permet de sécuriser et de rediriger le trafic réseau
Docs Blog
d’un point à un autre via une connexion SSH chiffrée. Cette technique repose sur trois principales
fonctionnalités, chacune offrant des avantages spécifiques en fonction des besoins de l’utilisateur :
Sur cette page Vue d’ensemble

Redirection de port local : Cette fonctionnalité permet de rediriger le trafic destiné à un port
local vers un port spécifique d’un serveur distant via un tunnel SSH sécurisé. Cela peut être
utile pour accéder à des services distants comme s’ils étaient hébergés localement.

Redirection de port distant : À l’inverse de la redirection de port local, cette méthode permet
de rediriger le trafic d’un port sur un serveur distant vers un port local de votre machine. Cela
facilite l’accès à des services locaux pour des utilisateurs ou des systèmes distants.

Tunneling dynamique : Cette fonctionnalité transforme votre connexion SSH en un proxy


SOCKS, capable de rediriger de manière dynamique le trafic réseau vers différents ports ou
serveurs. Le tunneling dynamique est particulièrement utile pour des scénarios où plusieurs
connexions à des services divers doivent être sécurisées via une seule connexion SSH.

Configuration du tunneling SSH


La configuration du tunneling SSH est une étape clé pour sécuriser vos communications réseau.
Nous allons explorer trois types de redirection de port : la redirection de port local, la redirection de
port distant et le tunneling dynamique. Dans chaque exemple, nous utiliserons une machine distante
appelée bastion qui possède une adresse IP publique, par exemple 203.0.113.10 .

Redirection de port local


La redirection de port local permet d’accéder à un service sur une machine distante comme s’il
était accessible localement. Cette méthode est particulièrement utile lorsque vous devez accéder à
un service qui n’est pas directement accessible depuis votre réseau local.

Supposons que vous souhaitez accéder à une base de données MySQL sur un serveur privé qui
n’est pas directement accessible depuis votre réseau. Le serveur MySQL est situé derrière un
bastion et écoute sur le port 3306 . Vous pouvez configurer une redirection de port local avec la
commande suivante :

ssh -L 3307:192.168.1.100:3306 [email protected]

Dans cet exemple :


https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 2/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

3307 est le port local sur votre machine où vous accéderez à la base de données.
Docs Blog
192.168.1.100 est l’adresse IP du serveur MySQL dans le réseau privé.

pageest le port
3306
Sur cette Vuesur lequel MySQL écoute sur le serveur privé.
d’ensemble
[email protected] correspond aux informations de connexion SSH au bastion.

Désormais, en utilisant localhost:3307 , vous pouvez accéder à la base de données MySQL comme
si elle était exécutée localement.

Redirection de port distant


La redirection de port distant fonctionne de manière inverse à la redirection de port local. Elle
permet de rendre un service local accessible depuis une machine distante. Cela est utile lorsque
vous souhaitez que d’autres machines puissent accéder à un service qui s’exécute sur votre machine
locale via un bastion.

Imaginons que vous ayez un serveur web local exécuté sur le port 8080 et que vous souhaitiez le
rendre accessible via le bastion. Vous pouvez configurer une redirection de port distant avec la
commande suivante :

ssh -R 8080:localhost:8080 [email protected]

Dans cet exemple :

8080 est le port sur le bastion que les utilisateurs distants peuvent utiliser pour accéder à
votre serveur web local.

localhost:8080 correspond à votre serveur web local que vous souhaitez rendre accessible.

Une fois cette redirection établie, toute personne qui accède à http://203.0.113.10:8080 sera
redirigée vers votre serveur web local.

Tunneling dynamique
Le tunneling dynamique est un peu plus flexible que les redirections de port locales ou distantes. Il
vous permet de créer un proxy SOCKS, qui peut être utilisé pour rediriger tout le trafic réseau à
travers un bastion. Cela est particulièrement utile pour sécuriser votre navigation web ou pour
accéder à des services réseau sans modifier la configuration de chaque service.

Pour créer un tunnel dynamique, vous pouvez utiliser la commande suivante :

https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 3/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

Docs Blog

ssh -D 1080 [email protected]


Sur cette page Vue d’ensemble

Dans cet exemple :

1080 est le port local sur votre machine que vous utiliserez comme proxy SOCKS.

Une fois ce tunnel configuré, vous pouvez configurer votre navigateur ou toute autre application
réseau pour utiliser localhost:1080 comme proxy SOCKS. Tout le trafic sera alors chiffré et redirigé
à travers le bastion, offrant ainsi un accès sécurisé aux services distants.

Conclusion
Ces trois méthodes de tunneling SSH permettent de sécuriser et de rediriger le trafic réseau selon
vos besoins spécifiques. Que vous ayez besoin d’accéder à des services distants de manière
sécurisée, de rendre un service local accessible à des utilisateurs distants, ou de sécuriser
l’ensemble de votre trafic réseau, le tunneling SSH offre une solution flexible et puissante. En
maîtrisant ces configurations, vous pourrez mieux protéger vos données et gérer efficacement les
ressources réseau.

Sécurité et bonnes pratiques


Le tunneling SSH est un outil puissant pour sécuriser les communications réseau, mais pour en tirer
le meilleur parti, il est essentiel de suivre certaines bonnes pratiques de sécurité. Sans une
configuration et une gestion adéquates, même les technologies les plus sûres peuvent présenter des
vulnérabilités.

Utilisation de clés SSH au lieu de mots de passe


L’un des moyens les plus efficaces pour sécuriser vos connexions SSH est d’utiliser des clés SSH
plutôt que des mots de passe pour l’authentification. Les clés SSH sont non seulement plus
sécurisées, mais elles permettent également d’automatiser les connexions SSH de manière sûre.

Pour générer une paire de clés SSH, vous pouvez utiliser la commande suivante sur votre machine
locale :

ssh-keygen -t rsa -b 4096 -C "[email protected]"

https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 4/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

Docs Blog
Cette commande génère une paire de clés SSH avec un chiffrement RSA de 4096 bits. La clé
publique pageensuite Vue
Sur cette doit être d’ensemble
copiée sur le bastion ou tout autre serveur SSH auquel vous vous
connectez régulièrement :

ssh-copy-id [email protected]

Une fois les clés SSH configurées, assurez-vous de désactiver l’authentification par mot de passe sur
vos serveurs SSH en modifiant le fichier de configuration SSH /etc/ssh/sshd_config :

PasswordAuthentication no

Cela réduit considérablement le risque de compromission via des attaques par force brute sur les
mots de passe.

Limitation des utilisateurs autorisés


Pour renforcer la sécurité de vos serveurs SSH, il est conseillé de limiter les utilisateurs qui sont
autorisés à se connecter via SSH. Cela peut être fait en utilisant la directive AllowUsers dans le
fichier de configuration SSH /etc/ssh/sshd_config .

Par exemple, pour n’autoriser que les utilisateurs admin et deploy à se connecter via SSH, vous
pouvez ajouter la ligne suivante :

AllowUsers admin deploy

Cette simple configuration peut réduire la surface d’attaque en limitant le nombre de comptes
susceptibles d’être ciblés par des tentatives de connexion non autorisées.

Utilisation de la redirection de port uniquement lorsque


nécessaire
Bien que le tunneling SSH soit extrêmement utile, il est important de ne pas laisser des redirections
de port inutilisées ouvertes. Les tunnels inutilisés peuvent représenter une faille de sécurité

https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 5/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

potentielle. Pour minimiser les risques, assurez-vous de fermer les tunnels SSH une fois que vous
Docs Blog
avez terminé de les utiliser.

Sur cette
Vous pageterminerVue
pouvez uned’ensemble
session SSH (et fermer tous les tunnels associés) en utilisant la
commande exit ou en fermant simplement le terminal.

Surveillance des connexions SSH


Il est important de surveiller les connexions SSH actives sur vos serveurs pour détecter toute activité
suspecte. Vous pouvez utiliser la commande suivante pour afficher les connexions SSH en cours sur
un serveur :

who

Pour une surveillance plus avancée, envisagez de mettre en place des outils de détection d’intrusion
comme Fail2ban ou crowdsec, qui peuvent détecter et bloquer automatiquement les tentatives de
connexion suspectes ou répétées.

Configuration du pare-feu pour restreindre les connexions


SSH
Une autre bonne pratique consiste à configurer un pare-feu pour restreindre les connexions SSH à
partir d’adresses IP spécifiques. Cela limite les risques d’attaques provenant d’adresses IP non
autorisées.

Par exemple, si vous utilisez ufw comme pare-feu sur un serveur Ubuntu, vous pouvez autoriser
uniquement une adresse IP spécifique à se connecter via SSH :

sudo ufw allow from 198.51.100.0 to any port 22

Cette commande permet uniquement à l’adresse IP 198.51.100.0 d’accéder au port SSH ( 22 ).

Activation de la journalisation avancée

https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 6/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

Pour garder une trace des connexions SSH et des actions effectuées via SSH, il est important
Docs Blog
d’activer une journalisation avancée. Cela vous permet de retracer les actions en cas de
comportement suspect ou de brèche de sécurité.
Sur cette page Vue d’ensemble

Modifiez les options de journalisation dans le fichier /etc/ssh/sshd_config pour augmenter le


niveau de détail des journaux SSH :

LogLevel VERBOSE

Cette configuration permet de capturer plus d’informations sur les connexions et les tentatives de
connexion, ce qui peut être utile lors d’une analyse post-incident.

Mise à jour régulière des logiciels SSH


Enfin, comme pour tout logiciel, il est essentiel de garder votre serveur SSH et les outils associés à
jour. Les nouvelles versions de SSH incluent souvent des correctifs de sécurité importants et il est
donc indispensable de les appliquer dès qu’elles sont disponibles.

Sur un serveur basé sur Ubuntu ou Debian, vous pouvez mettre à jour vos paquets SSH avec la
commande suivante :

sudo apt-get update && sudo apt-get upgrade

Sur les systèmes basés sur CentOS ou Red Hat, utilisez :

sudo yum update openssh

Conclusion
Le tunneling SSH est bien plus qu’un simple outil pour rediriger du trafic réseau ; il représente une
méthode essentielle pour sécuriser les communications, protéger les données sensibles et faciliter
l’accès à des services et ressources distants de manière sécurisée. Que vous soyez développeur,
administrateur système ou responsable de la sécurité, maîtriser le tunneling SSH est une

https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 7/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

compétence indispensable dans le contexte actuel où les menaces de sécurité informatique sont
Docs Blog
omniprésentes.

Sur cette page Vue d’ensemble

Plus loin
Note
Ce guide fait partie de la formation complète à l’administration de serveurs Linux

Pour maîtriser chaque aspect essentiel de l’administration de serveurs Linux, parcourez les
autres documentations de cette formation :

Notions Fondamentales sur Linux ↗ : Découvrez les bases essentielles, y compris la


gestion des utilisateurs et des permissions.

Installation des Serveurs Linux ↗ : Suivez un guide complet pour installer Linux et
configurer votre serveur de manière fiable et performante.

Commandes Linux de Base ↗ : Apprenez les commandes indispensables pour bien


débuter en administration système.

Configuration des Serveurs Linux ↗ : Gérez la configuration du serveur et adaptez les


paramètres aux besoins spécifiques de votre organisation.
Commandes Linux Avancées ↗ : Maîtrisez des outils avancés pour le diagnostic et la
gestion en production.

Gestion des Services avec Systemctl ↗ : Assurez la disponibilité et la sécurité de vos


services avec systemctl .

Création de Scripts Shell ↗ : Automatisation des tâches courantes pour une gestion plus
efficace.

Optimisation des Performances ↗ : Suivez des pratiques pour surveiller et améliorer les
performances du serveur.

Commandes Réseau Linux ↗ : Apprenez les commandes pour diagnostiquer et


configurer les connexions réseau.

Gestion des Journaux avec journald et rsyslog ↗ : Techniques de journalisation pour


une maintenance proactive.

Connexion SSH ↗ : Configurez des connexions SSH sécurisées pour accéder à distance
à vos serveurs.

Sécurisation des Scripts Shell ↗ : Adoptez les bonnes pratiques pour sécuriser vos
scripts shell.

https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 8/9
30/10/2024 11:06 Maitrisez le tunneling SSH | DevSecOps

Ce contenu est régulièrement enrichi avec de nouveaux guides pour intégrer les dernières
Docs Blog
pratiques et outils en administration Linux. Profitez de chaque documentation pour bâtir une
expertise complète et devenir un administrateur Linux compétent et efficace.
Sur cette page Vue d’ensemble

Vous avez trouvé quelque chose de précieux sur cette page ?

Montrez votre soutien en m'offrant un café !

Votre geste m'aide à continuer à partager du contenu de qualité.

L'intégralité des contenus présents sur ce site appartiennent aux auteurs des
contenus en question. En droit français, il est donc interdit de copier ces
contenus, sans accord préalable de(s) auteur(s).

Plus d'informations dans les Mentions Légales

Précédent Suivant

Connexion aux serveurs Développer des Scripts


SSH Shell

https://blog.stephane-robert.info/docs/admin-serveurs/linux/ssh-tunneling/ 9/9

Vous aimerez peut-être aussi