L'accès distant, appelé Remote Access en anglais, désigne l'ensemble des techniques permettant à un utilisateur ou à un programme d'accéder à un ordinateur, un serveur, une application ou un réseau depuis un autre emplacement. L'accès distant est utilisé dans le télétravail, l'administration des serveurs, la maintenance informatique, l'assistance technique et la cybersécurité. Il repose sur différentes technologies, notamment SSH, RDP, VPN et VNC. Lorsqu'il est correctement configuré, il permet de travailler sur des systèmes distants tout en protégeant les communications et les ressources contre les accès non autorisés.
1. À propos de l'accès distant en cybersécurité
Définition de l'accès distant
L'accès distant est une méthode permettant de communiquer avec un système informatique situé sur un autre réseau ou à un emplacement géographique différent.
Il peut également être utilisé entre deux machines appartenant au même réseau local, même si son utilisation à travers Internet constitue un cas particulièrement fréquent.
Pourquoi utiliser l'accès distant ?
L'accès distant permet d'administrer et d'utiliser des ressources informatiques sans être physiquement présent devant l'équipement concerné.
Il réduit les déplacements et facilite l'intervention sur des systèmes répartis dans différents lieux.
Principales utilisations
- Télétravail : accéder aux applications professionnelles depuis l'extérieur de l'entreprise.
- Administration système : configurer et maintenir des serveurs distants.
- Assistance technique : aider un utilisateur sur son ordinateur.
- Maintenance : installer des mises à jour et corriger des problèmes.
- Cybersécurité : administrer des outils de surveillance et des environnements de test autorisés.
- Cloud Computing : gérer des machines virtuelles et des services hébergés.
- Éducation : accéder à des plateformes et laboratoires informatiques à distance.
Accès local et accès distant
| Critère | Accès local | Accès distant |
|---|---|---|
| Emplacement | Utilisateur présent sur le poste. | Utilisateur connecté depuis un autre équipement. |
| Connexion | Interaction directe. | Communication réseau. |
| Protocoles | Interfaces locales. | SSH, RDP, VNC et autres. |
| Sécurité | Protection du poste et de la session. | Protection du poste, de la session et des communications. |
| Utilisation | Travail sur place. | Administration et utilisation à distance. |
Les principaux composants d'un accès distant
- Client : ordinateur ou application qui demande l'accès.
- Serveur distant : système qui reçoit la connexion.
- Réseau : infrastructure transportant les communications.
- Protocole : ensemble de règles organisant les échanges.
- Authentification : mécanisme vérifiant l'identité de l'utilisateur.
- Autorisation : mécanisme définissant les actions permises.
- Chiffrement : protection des informations échangées.
Accès distant et cybersécurité
Un accès distant mal sécurisé peut devenir un point d'entrée pour un attaquant.
Il est donc important de protéger les comptes, les services exposés et les communications réseau.
Accès distant et principe du moindre privilège
Le Least Privilege consiste à accorder uniquement les permissions nécessaires à l'utilisateur ou au programme.
Un utilisateur chargé de consulter des fichiers ne doit pas automatiquement disposer des privilèges d'administration du serveur.
2. Les technologies et protocoles d'accès distant
SSH
Le Secure Shell, ou SSH, est un protocole permettant d'établir des communications sécurisées avec un système distant.
Il est couramment utilisé pour administrer des serveurs Linux et Unix.
Le port TCP par défaut de SSH est 22.
RDP
Le Remote Desktop Protocol, ou RDP, est un protocole permettant d'accéder à une session graphique distante.
Il est notamment utilisé dans les environnements Windows.
Son port habituel est 3389, avec des transports TCP et, selon la configuration, UDP.
VPN
Un Virtual Private Network, ou VPN, permet d'établir une communication protégée entre des équipements ou des réseaux.
Il peut donner accès à des ressources internes depuis un emplacement extérieur.
Un VPN ne remplace pas les contrôles d'authentification et d'autorisation propres aux ressources.
VNC
Le Virtual Network Computing, ou VNC, est une technologie de partage et de contrôle d'un environnement graphique distant.
Elle repose sur le protocole RFB.
Le port TCP 5900 est fréquemment utilisé pour le premier affichage, mais la configuration peut varier.
La protection cryptographique dépend de l'implémentation et du mode de connexion. Un tunnel sécurisé peut être nécessaire.
SFTP
Le SSH File Transfer Protocol, ou SFTP, permet de transférer et de gérer des fichiers à travers une connexion SSH.
SCP
Le Secure Copy, ou SCP, désigne un outil de copie de fichiers entre systèmes, généralement au moyen de SSH.
Les implémentations modernes peuvent utiliser SFTP comme protocole de transfert sous-jacent.
Telnet
Telnet est un protocole historique permettant l'accès à une interface distante en mode texte.
Son port TCP par défaut est 23.
Il ne protège pas nativement les communications par chiffrement et doit être évité pour l'administration sur des réseaux non fiables.
HTTPS et administration Web
De nombreuses applications proposent une interface d'administration accessible par HTTPS.
HTTPS utilise TLS pour protéger les communications entre le navigateur et le serveur.
Remote Desktop Gateway
Une Remote Desktop Gateway peut permettre l'accès à des systèmes RDP internes par l'intermédiaire d'une passerelle sécurisée.
Zero Trust Network Access
Le Zero Trust Network Access, ou ZTNA, est une approche permettant de contrôler l'accès à des applications ou ressources selon l'identité et le contexte.
Elle vise notamment à éviter de donner systématiquement un accès étendu à l'ensemble d'un réseau.
Comparaison des principales technologies
| Technologie | Fonction | Port habituel | Protection |
|---|---|---|---|
| SSH | Administration et commandes distantes. | TCP 22 | Chiffrement et authentification SSH. |
| RDP | Bureau graphique distant. | 3389 | Selon la configuration, TLS et NLA. |
| VNC | Contrôle graphique distant. | TCP 5900 | Dépend de l'implémentation. |
| SFTP | Transfert sécurisé de fichiers. | TCP 22 | SSH. |
| Telnet | Terminal distant. | TCP 23 | Pas de chiffrement natif. |
| HTTPS | Administration Web. | TCP 443 | TLS. |
| VPN | Accès réseau protégé. | Variable | Dépend du protocole VPN. |
3. Fonctionnement et configuration d'un accès distant sécurisé
Principe de la connexion distante
Une connexion distante commence lorsqu'un client tente de joindre un service accessible sur un autre système.
Le serveur vérifie les informations nécessaires à la connexion et applique les règles de sécurité configurées.
Étapes générales d'une connexion distante
- Identifier le système distant autorisé.
- Vérifier la connectivité réseau.
- Choisir le protocole adapté.
- Établir une connexion sécurisée.
- Vérifier l'identité du serveur.
- Authentifier l'utilisateur.
- Contrôler les autorisations.
- Ouvrir la session distante.
- Effectuer les opérations autorisées.
- Fermer correctement la session.
Authentification par mot de passe
L'authentification par mot de passe permet de vérifier une information secrète connue de l'utilisateur.
Elle doit être accompagnée de protections contre les tentatives abusives.
Authentification par clé SSH
L'authentification par clé SSH utilise une paire de clés cryptographiques.
La clé privée reste sous le contrôle du client, tandis que la clé publique est enregistrée sur le serveur.
La clé privée doit être protégée contre tout accès non autorisé.
Authentification multifacteur
La MFA renforce la sécurité en exigeant plusieurs facteurs d'authentification.
Elle est particulièrement importante pour les accès administratifs et les ressources sensibles.
Chiffrement des communications
Le chiffrement contribue à protéger la confidentialité des données échangées.
Les protocoles sécurisés doivent être configurés avec des algorithmes et des versions adaptés.
Pare-feu
Un Firewall permet de contrôler certaines communications entrantes et sortantes.
Il peut restreindre l'accès aux services d'administration aux sources autorisées.
Segmentation réseau
La segmentation réseau consiste à organiser le réseau en zones afin de limiter les communications inutiles.
Elle permet de réduire les possibilités de déplacement latéral en cas de compromission.
Bastion Host
Un Bastion Host est un système servant de point d'accès contrôlé à certaines ressources internes.
Il peut centraliser des mécanismes d'authentification, de surveillance et de restriction des accès.
Jump Server
Un Jump Server est un serveur intermédiaire utilisé pour accéder à d'autres systèmes.
Il contribue à limiter l'exposition directe des serveurs internes.
Accès distant avec VPN
Une organisation peut demander à ses utilisateurs d'établir une connexion VPN avant d'accéder à certaines ressources internes.
Les accès doivent rester limités aux services nécessaires.
Accès distant avec ZTNA
Une solution ZTNA peut appliquer des politiques d'accès centrées sur les applications plutôt que sur une connectivité générale au réseau.
Journalisation et audit
Les connexions distantes doivent être surveillées et journalisées selon les besoins de sécurité et les règles de confidentialité applicables.
Les journaux peuvent contenir les dates, les comptes, les sources réseau et les résultats d'authentification.
Bonnes pratiques de configuration
- Utiliser des protocoles chiffrés.
- Activer la MFA lorsque cela est possible.
- Limiter les comptes autorisés.
- Éviter l'exposition directe des interfaces d'administration.
- Mettre à jour les serveurs et les clients.
- Protéger les clés privées.
- Vérifier l'identité des serveurs.
- Limiter les permissions.
- Surveiller les connexions.
- Fermer les sessions inutilisées.
4. Les vulnérabilités et les risques liés à l'accès distant
Exposition des services d'administration
Un service d'administration directement accessible depuis Internet peut attirer des tentatives d'accès non autorisé.
Il est préférable de limiter son exposition au strict nécessaire.
Attaques par force brute
Une attaque Brute Force consiste à essayer de nombreuses valeurs afin de deviner un secret d'authentification.
Les mécanismes de limitation des tentatives et la MFA contribuent à réduire ce risque.
Credential Stuffing
Le Credential Stuffing consiste à réutiliser des identifiants compromis pour tenter d'accéder à d'autres services.
Les mots de passe uniques et la MFA constituent des protections importantes.
Vol d'identifiants
Des identifiants d'accès distant peuvent être dérobés par phishing, malware ou compromission d'un appareil.
Man-in-the-Middle
Une attaque Man-in-the-Middle cherche à intercepter ou à modifier des communications entre deux systèmes.
La vérification de l'identité du serveur et le chiffrement authentifié contribuent à limiter ce risque.
Exploitation de vulnérabilités
Les logiciels de connexion distante peuvent contenir des vulnérabilités de sécurité.
Il est essentiel de maintenir les composants à jour et de suivre les avis de sécurité des éditeurs.
Mauvaise configuration RDP
Une configuration RDP insuffisamment protégée peut exposer des sessions administratives à des tentatives de compromission.
Il convient notamment de limiter l'exposition réseau, d'utiliser la Network Level Authentication lorsque disponible et de renforcer les comptes.
Mauvaise configuration SSH
Un serveur SSH peut présenter des risques si les comptes sont insuffisamment protégés, si les clés privées sont exposées ou si les permissions sont excessives.
VPN compromis
La compromission d'un compte VPN peut permettre à un attaquant d'accéder à certaines ressources internes.
Le VPN doit être accompagné de contrôles d'identité et d'autorisation appropriés.
Accès distant non autorisé
Un logiciel de prise en main à distance installé sans autorisation peut constituer un risque important.
Les organisations doivent inventorier et contrôler les outils d'accès distant utilisés.
Remote Access Trojan
Un Remote Access Trojan, ou RAT, est un logiciel malveillant permettant à un acteur non autorisé d'exercer un contrôle à distance sur un système compromis.
Il ne doit pas être confondu avec les outils légitimes d'administration distante.
Déplacement latéral
Le Lateral Movement désigne le déplacement d'un attaquant entre plusieurs systèmes après une compromission initiale.
Les accès distants insuffisamment contrôlés peuvent faciliter ce type d'activité.
Détection des accès suspects
Les équipes de sécurité peuvent rechercher :
- Des échecs d'authentification répétés.
- Des connexions depuis des sources inhabituelles.
- Des sessions ouvertes à des horaires inattendus.
- Des connexions administratives non prévues.
- Des modifications de configuration inexpliquées.
- Des transferts de données inhabituels.
Mesures de protection
- Utiliser des protocoles sécurisés.
- Activer la MFA pour les accès sensibles.
- Restreindre les accès réseau.
- Appliquer le principe du moindre privilège.
- Maintenir les systèmes à jour.
- Surveiller les événements de connexion.
- Révoquer rapidement les accès inutiles.
- Prévoir une procédure de réponse aux incidents.
5. Exemples pratiques d'accès distant avec Python
Le langage Python permet de développer des outils de vérification, de surveillance et d'administration distante.
Les exemples suivants utilisent principalement l'ordinateur local ou des données fictives. Les exemples SSH nécessitent un serveur de laboratoire autorisé.
Exemple 1 : identifier le nom de l'ordinateur local
Le programme suivant utilise le module socket pour afficher le nom de l'ordinateur sur lequel Python est exécuté.
1 2 3 | import socket nom = socket.gethostname() print("Nom de l'ordinateur :", nom) |
Output possible :
1 | Nom de l'ordinateur : PC-LAB |
Le nom affiché dépend de l'ordinateur utilisé.
Exemple 2 : vérifier la disponibilité d'un service TCP local
Le programme suivant tente d'établir une connexion TCP vers le port 22 de l'ordinateur local. Il permet de vérifier si un service est accessible sur ce port.
1 2 3 4 5 6 7 8 9 10 11 | import socket hote = "127.0.0.1" port = 22 connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connexion.settimeout(2) resultat = connexion.connect_ex((hote, port)) connexion.close() if resultat == 0: print("Service TCP accessible") else: print("Service TCP non accessible") |
Output possible si aucun service n'écoute :
1 | Service TCP non accessible |
Exemple 3 : identifier les ports courants de l'accès distant
Le programme suivant affiche un dictionnaire contenant plusieurs protocoles d'accès distant et leurs ports habituels.
1 2 3 4 5 6 7 8 9 | protocoles = { "SSH": 22, "RDP": 3389, "VNC": 5900, "Telnet": 23, "HTTPS": 443 } for protocole, port in protocoles.items(): print(protocole, ":", port) |
Output :
1 2 3 4 5 | SSH : 22 RDP : 3389 VNC : 5900 Telnet : 23 HTTPS : 443 |
Exemple 4 : vérifier une liste de ports sur l'ordinateur local
Le programme suivant examine plusieurs ports TCP sur l'adresse de boucle locale. Il constitue un exercice de diagnostic sur l'ordinateur du testeur.
1 2 3 4 5 6 7 8 | import socket ports = [22, 3389, 5900] for port in ports: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as connexion: connexion.settimeout(1) resultat = connexion.connect_ex(("127.0.0.1", port)) etat = "Ouvert" if resultat == 0 else "Non accessible" print(port, ":", etat) |
Output possible :
1 2 3 | 22 : Non accessible 3389 : Non accessible 5900 : Non accessible |
Les résultats varient selon les services installés et les règles de filtrage.
Exemple 5 : simuler une politique d'autorisation d'accès distant
Le programme suivant vérifie si un utilisateur appartient à une liste de comptes autorisés.
1 2 3 4 5 6 | utilisateurs_autorises = ["admin", "technicien"] utilisateur = "technicien" if utilisateur in utilisateurs_autorises: print("Accès distant autorisé") else: print("Accès distant refusé") |
Output :
1 | Accès distant autorisé |
Cette simulation ne constitue pas un mécanisme réel d'authentification.
Exemple 6 : simuler l'exigence d'une MFA
Le programme suivant représente une politique qui exige une authentification multifacteur avant d'autoriser une session distante.
1 2 3 4 5 6 | identite_verifiee = True mfa_validee = False if identite_verifiee and mfa_validee: print("Session distante autorisée") else: print("Accès refusé : vérification supplémentaire nécessaire") |
Output :
1 | Accès refusé : vérification supplémentaire nécessaire |
Exemple 7 : détecter des échecs de connexion répétés
Le programme suivant analyse des journaux fictifs et compte les échecs d'authentification d'un compte.
1 2 3 4 5 6 7 8 9 10 11 | evenements = [ "ECHEC admin", "ECHEC admin", "SUCCES technicien", "ECHEC admin", "ECHEC admin" ] echecs = sum(evenement == "ECHEC admin" for evenement in evenements) print("Échecs du compte admin :", echecs) if echecs >= 4: print("Alerte : tentatives répétées") |
Output :
1 2 | Échecs du compte admin : 4 Alerte : tentatives répétées |
Exemple 8 : surveiller les sessions distantes fictives
Le programme suivant affiche les sessions distantes enregistrées dans une liste de données fictives.
1 2 3 4 5 6 7 8 | sessions = [ {"utilisateur": "admin", "etat": "Active"}, {"utilisateur": "technicien", "etat": "Fermée"}, {"utilisateur": "support", "etat": "Active"} ] for session in sessions: if session["etat"] == "Active": print("Session active :", session["utilisateur"]) |
Output :
1 2 | Session active : admin Session active : support |
Exemple 9 : vérifier la présence de Paramiko
La bibliothèque Paramiko permet de développer des clients SSH avec Python.
Elle peut être installée depuis un terminal avec la commande python -m pip install paramiko. Le programme suivant vérifie sa disponibilité.
1 2 3 4 5 | try: import paramiko print("Paramiko est installé") except ImportError: print("Paramiko n'est pas installé") |
Output possible :
1 | Paramiko est installé |
Exemple 10 : établir une connexion SSH avec Paramiko
Le programme suivant montre comment établir une connexion SSH vers un serveur de laboratoire explicitement autorisé.
Il utilise une clé SSH préalablement configurée. La clé d'hôte du serveur doit être connue et enregistrée dans le fichier de confiance du client. Le programme refuse les clés d'hôte inconnues.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import paramiko client = paramiko.SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.RejectPolicy()) try: client.connect( hostname="192.168.56.10", port=22, username="etudiant", key_filename="cle_laboratoire", timeout=5, look_for_keys=False, allow_agent=False ) print("Connexion SSH établie") except Exception as erreur: print("Connexion impossible :", type(erreur).__name__) finally: client.close() |
Output possible si la configuration est correcte :
1 | Connexion SSH établie |
L'adresse IP et le nom de la clé sont des exemples. Ils doivent être remplacés par les informations du serveur de laboratoire. La connexion échoue si la clé d'hôte n'est pas reconnue ou si l'authentification n'est pas valide.
Exemple 11 : exécuter une commande de diagnostic sur un serveur SSH autorisé
Le programme suivant utilise Paramiko pour exécuter la commande hostname sur un serveur Linux de laboratoire.
La connexion utilise une clé SSH et une vérification stricte de la clé d'hôte. La commande est uniquement destinée à afficher le nom du serveur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import paramiko client = paramiko.SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.RejectPolicy()) try: client.connect( hostname="192.168.56.10", username="etudiant", key_filename="cle_laboratoire", timeout=5, look_for_keys=False, allow_agent=False ) stdin, stdout, stderr = client.exec_command("hostname") print("Serveur :", stdout.read().decode().strip()) except Exception as erreur: print("Erreur SSH :", type(erreur).__name__) finally: client.close() |
Output possible :
1 | Serveur : serveur-lab |
Le résultat dépend du nom réellement configuré sur le serveur distant.
Exemple 12 : créer un rapport CSV des connexions distantes
Le programme suivant génère un rapport CSV à partir d'événements fictifs d'accès distant.
1 2 3 4 5 6 7 8 9 10 11 | import csv connexions = [ ["Utilisateur", "Protocole", "État"], ["admin", "SSH", "Autorisé"], ["technicien", "RDP", "Autorisé"], ["inconnu", "SSH", "Refusé"] ] with open("rapport_acces_distant.csv", "w", newline="", encoding="utf-8") as fichier: writer = csv.writer(fichier) writer.writerows(connexions) print("Rapport des connexions créé") |
Output :
1 | Rapport des connexions créé |
Mini laboratoire pédagogique : accès SSH entre Windows et Kali Linux
Un laboratoire peut être réalisé avec un ordinateur Windows et une machine virtuelle Kali Linux.
Le principe consiste à utiliser Kali Linux comme serveur SSH et Windows comme client, ou inversement selon les besoins.
Les étapes générales sont les suivantes :
- Configurer un réseau de laboratoire permettant la communication entre les deux machines.
- Vérifier les adresses IP de Windows et de Kali Linux.
- Installer et activer un serveur SSH sur la machine choisie.
- Vérifier que le service SSH écoute sur le port configuré.
- Créer un compte de laboratoire disposant de permissions limitées.
- Configurer l'authentification par clé SSH.
- Vérifier la clé d'hôte du serveur.
- Établir une connexion SSH depuis la machine cliente.
- Exécuter une commande de diagnostic autorisée.
- Fermer la session et examiner les journaux de connexion.
Ce laboratoire permet de comprendre les mécanismes d'authentification SSH, de connexion distante et de sécurisation des accès.
6. À retenir
L'accès distant permet d'accéder à un système informatique depuis un autre emplacement au moyen d'une communication réseau.
Il est utilisé dans le télétravail, l'administration système, la maintenance, le Cloud Computing et la cybersécurité.
Les principales technologies comprennent SSH, RDP, VPN, VNC et ZTNA.
SSH est particulièrement utilisé pour l'administration sécurisée des serveurs.
RDP permet l'accès à des environnements graphiques distants, notamment sous Windows.
Un VPN permet d'établir une communication protégée vers certaines ressources réseau, mais ne remplace pas les contrôles d'accès.
Les principales menaces comprennent les tentatives d'authentification abusives, le vol d'identifiants, les vulnérabilités logicielles et les mauvaises configurations.
La sécurisation repose sur le chiffrement, la MFA, la restriction des accès, la surveillance des sessions et le principe du moindre privilège.
Il est préférable d'éviter l'exposition directe des interfaces d'administration sur Internet lorsque des solutions plus contrôlées sont disponibles.
Le langage Python permet de développer des outils de diagnostic et d'administration distante grâce à des bibliothèques comme socket et Paramiko.
Enfin, toute opération d'administration distante doit être effectuée sur des systèmes appartenant à l'utilisateur ou explicitement autorisés.
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



