PostgreSQL est un système de gestion de bases de données relationnelles bien connu qui offre un environnement sécurisé pour les développeurs et les utilisateurs. Mais alors que le travail à distance continue de faire partie de la nouvelle normalité de chaque entreprise, les professionnels de l'informatique sont confrontés à de nouveaux défis lorsqu'il s'agit de gérer la sécurité et l'accessibilité de leurs serveurs.
L'utilisation d'un serveur bastion pour accéder à une base de données PostgreSQL ajoute une couche de sécurité supplémentaire. Mais comme les serveurs bastions doivent agir comme des pare-feu, il est nécessaire d'utiliser un tunnel Secure Shell (SSH) pour réduire le niveau d'exposition du réseau privé.
De nombreux outils de gestion de base de données PostgreSQL peuvent automatiser ce processus de connexion, mais l'interaction avec le shell nécessite la création manuelle d'un tunnel SSH. Comprendre le processus et les précautions peut certainement aider votre entreprise à maintenir des bases de données sécurisées.
Avantages de la création et de l'utilisation d'un tunnel SSH Secure Shell
Le tunneling SSH est utilisé dans les communications réseau depuis plus de trente ans, et il est tout aussi pertinent pour les besoins informatiques d'aujourd'hui.
Les développeurs se tournent constamment vers les protocoles SSH Secure Shell pour gérer l'accès aux bases de données sur tous les types de serveurs, y compris PostgreSQL. L'accès à distance sécurisé est essentiel aujourd'hui, en particulier lorsque 50 % des appareils sur le lieu de travail sont mobiles (les appareils mobiles sont parmi les plus vulnérables aux cyberattaques). Il est donc d'autant plus important que les organisations puissent gérer à distance les appareils et l'accès des utilisateurs à leurs réseaux.
Les entreprises qui traitent de grandes quantités de données doivent donner aux employés un accès express aux principales bases de données et adopter une approche proactive de la sécurité des bases de données. L'utilisation des protocoles SSH est le numéro un pour fournir un accès sécurisé aux utilisateurs à partir de serveurs distants. Il simplifie également l'authentification des programmes automatisés. Par conséquent, les entreprises peuvent exécuter leurs tâches quotidiennes plus efficacement.
Alors que les normes de sécurité rattrapent enfin les appareils mobiles et les serveurs distants, nous pouvons nous attendre à voir les protocoles de cryptage et d'authentification s'améliorer également. La flexibilité et l'interopérabilité sont l'avenir de la sécurité IoT. Néanmoins, les protocoles SSH continueront à faire partie de la norme dans un avenir prévisible.
Comment fonctionne SSH ?
Les protocoles SSH vous permettent de contrôler à distance l'accès à vos serveurs sur Internet dans un environnement sécurisé. Non seulement la connexion initiale est hautement sécurisée, mais l'ensemble de la session de communication entre les deux parties l'est également. Les utilisateurs peuvent se connecter à un serveur distant à l'aide d'un tunnel SSH Secure Shell ouvert ou d'autres clients SSH Secure Shell.
Le serveur recherche une connexion de port ouvert. Une fois qu'il en trouve un, le serveur doit authentifier la connexion. Il détermine si un environnement sécurisé a été établi pour la communication et le transfert de fichiers. Si la connexion est initiée par le client, le client doit authentifier le serveur en plus de fournir ses informations d'identification.
Lorsque les deux parties sont authentifiées et que la connexion est établie, le protocole de cryptage SSH garantit la confidentialité continue de toutes les transmissions de données entre le serveur et le client.
Il existe trois types de tunnels SSH de chiffrement utilisés pour sécuriser les connexions :
- cryptage symétrique
- cryptage asymétrique
- hachages.
Cryptage symétrique est utilisé pendant la durée de la connexion pour assurer la sécurité des communications. Le client et le serveur partagent la même clé secrète pour chiffrer et déchiffrer les données. Cet algorithme est sécurisé car une clé réelle n'est jamais vraiment échangée. Au contraire, les deux parties partagent des informations publiques à partir desquelles elles peuvent indépendamment tirer la clé.
Cryptage asymétrique , en revanche, nécessite à la fois une clé publique et une clé privée. Il est utilisé au début du processus de tunnellisation pour authentifier les serveurs. Le serveur utilisera une clé publique pour chiffrer ces données, et le client doit l'authentifier avec une clé privée. Étant donné qu'une clé privée particulière est la seule chose capable de déchiffrer les messages chiffrés avec la clé publique, cela permet d'authentifier les parties cherchant à se connecter.
Hachage cryptographique crée une signature unique pour l'ensemble de données. Ceci est utile dans une connexion SSH car cela permet au serveur de savoir si un MAC est acceptable. Un hachage correspondant ne peut être créé que par la donnée identique à celle qui a créé l'original. Ainsi, le hachage peut être utilisé pour vérifier l'entrée afin de s'assurer qu'elle est la bonne.
Authentification SSH
Après avoir établi le cryptage, un processus d'authentification a lieu. La forme d'authentification la plus simple consiste à utiliser un mot de passe. Bien qu'il s'agisse d'un moyen simple pour les clients, il est également très simple pour les scripts automatisés malveillants. Même un mot de passe crypté a une complexité limitée. Cela le rend peu sûr. L'utilisation de clés asymétriques est une mesure courante au lieu d'utiliser des mots de passe.
Une fois qu'une clé publique est établie, le client doit fournir la clé privée qui va avec la clé publique. Sans cette combinaison, l'authentification échoue. Cela permet de s'assurer que les données chiffrées ne peuvent pas être déchiffrées par un intrus.
L'ensemble du processus d'authentification est négocié lors de la configuration et seules les parties disposant de clés complémentaires peuvent communiquer. Ce processus accélère également le processus de connexion. Il est donc optimal pour les procédures automatisées.
Le processus d'authentification varie en fonction des facteurs suivants :
- le type de base de données protégée
- la relation et l'emplacement du serveur
- les autorisations de l'utilisateur au sein du serveur.
L'avantage d'utiliser un protocole SSH est que l'ensemble du processus est crypté et hautement sécurisé.
Configurer le tunnel SSH
Si vous souhaitez interagir avec une base de données à l'aide du shell, vous devez savoir comment créer un tunnel SSH. Bien que l'utilisation d'une application de gestion SSH automatisée puisse être pratique, de nombreux administrateurs de base de données préfèrent configurer des outils de gestion de base de données à partir de zéro, car interagir avec le shell est le meilleur moyen de déboguer, d'auditer et d'avoir un contrôle maximal.
L'utilisation d'un tunnel SSH est un moyen très sécurisé d'ouvrir une session sans craindre de perdre des données ou d'être piraté (tant que vous fermez vos sessions et surveillez vos serveurs).
Voici comment créer un tunnel SSH :
Vérifiez le serveur bastion
Pour créer un tunnel SSH Secure Shell, vous devez connaître les noms d'hôte du serveur bastion et de la base de données PostgreSQL, ainsi que votre nom d'utilisateur sur le serveur bastion. Exécutez la commande :
$ ssh <username>@<bastion_server>
Entrez ensuite votre mot de passe lorsque la fenêtre appropriée apparaît.
Ouvrir le tunnel SSH
Ouvrez le tunnel à l'aide de cette commande :
$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>
Laissez la fenêtre ouverte pour maintenir la connexion. Les numéros à deux ports correspondent respectivement à votre ordinateur et au serveur distant.
Vérifiez votre connexion
Pour vous assurer que votre tunnel est ouvert et connecté au serveur PostgreSQL, utilisez la commande suivante :
$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"
Voir si les tables sont retournées. Si tel est le cas, votre connexion a réussi et est sécurisée.
Quelques étapes facultatives peuvent augmenter l'efficacité de votre accès de l'hôte bastion au serveur SQL. Gardez cependant à l'esprit qu'automatiser l'accès à tout moment n'est pas une stratégie sécurisée. Il est sage de toujours vous connecter chaque fois que vous souhaitez ouvrir un tunnel SSH pour garder les sessions complètement privées.
Créer un profil utilisateur
Pour éviter d'avoir à saisir des mots de passe à chaque fois, vous pouvez créer un profil sur le serveur bastion. Pour cela, vous devez ajouter votre clé SSH au serveur en utilisant la commande suivante :
$ ssh-copy-id <username>@<bastion_server>
Ensuite, votre clé sera utilisée automatiquement chaque fois que vous voudrez vous connecter. Cependant, elle a des aspects positifs et négatifs. C'est plus pratique, mais vous devez vous assurer d'avoir d'autres protocoles de sécurité en place pour protéger la machine contre les logiciels malveillants ou le vol. Si quelqu'un d'autre parvient à accéder à votre machine, il pourra peut-être se connecter automatiquement à vos serveurs car votre clé est enregistrée.
Mettez à jour votre fichier de configuration SSH
Il peut être compliqué de se souvenir des noms exacts et des numéros de port des serveurs auxquels vous souhaitez vous connecter. C'est pourquoi il fait partie du protocole de tunnel SSH Secure Shell.
Vous gardez une trace des noms d'hôte et vous authentifiez avec votre nom d'utilisateur. C'est une partie de ce qui rend la connexion SSH sécurisée en premier lieu. Mais il existe un moyen de configurer votre procédure pour rendre l'accès plus rapide et plus facile sans automatiser entièrement le processus. Vous pouvez ajouter une entrée à votre fichier de configuration SSH :
Héberger bastion-production
- Nom d'hôte
- Utilisateur
- LocalForward localhost :port_number
:port_number
Ensuite, lancez la commande :
$ ssh bastion-production
Vous pouvez désormais vous connecter en une seule étape.
Conseils de confidentialité SSH
Il est impératif de sécuriser les bases de données. Les données sont la monnaie la plus précieuse au monde, et avec la montée des rançongiciels et autres cybercrimes, ne pas protéger les données des clients est un manquement inacceptable.
L'intérêt d'utiliser le serveur bastion en premier lieu est de protéger votre base de données. Cependant, quelques faux pas laisseraient vos serveurs ouverts à quiconque.
Voici quelques conseils pour rester en sécurité lorsque vous utilisez des tunnels SSH pour vous connecter aux serveurs PostgreSQL :
Authentifier correctement les télétravailleurs
Si votre organisation utilise SSH pour se connecter à distance, alors tout le monde doit connaître les bases de l'hygiène numérique. Utilisez une authentification basée sur une clé protégée par un mot de passe fort. La vérification en deux étapes pour chaque connexion est également un bon point de départ, tout en garantissant que les clés SSH publiques sont authentiques.
Limitez les connexions SSH uniquement à ceux qui en ont besoin et définissez des privilèges qui reflètent les tâches des utilisateurs.
Désactiver le transfert de port
Environ la moitié seulement des développeurs appliquent des procédures de prévention du transfert de port. La redirection de port peut vous exposer à des communications cryptées avec des utilisateurs et des serveurs non approuvés. Ainsi, les pirates peuvent entrer directement dans votre base de données. Filtrez toutes vos connexions via le serveur bastion et envisagez d'utiliser le port knocking avant d'autoriser une connexion.
Assurez-vous que vous utilisez le dernier logiciel et que vos connexions SSH sont conformes aux normes de conformité les plus récentes.
Vérifiez fréquemment
Utilisez un outil de surveillance continue en plus des audits manuels réguliers. Limitez vos connexions uniquement à celles qui sont nécessaires et assurez-vous de vérifier les modifications de vos paramètres de configuration qui n'ont pas été approuvées au préalable.
En gardant un œil sur qui se connecte et dans quel type d'activité il est engagé, vous pouvez limiter la surface d'attaque et faciliter l'identification des vulnérabilités dès le départ.
Conclusion
L'utilisation de tunnels SSH chiffrés est un moyen sécurisé d'accéder aux bases de données PostgreSQL à partir de serveurs distants. Le processus maintient le chiffrement pendant la durée des sessions connectées. Bien que les programmes SSH automatisés soient utiles pour les tâches récurrentes et d'autres processus du système administratif, l'ouverture manuelle d'un tunnel SSH peut être bénéfique. Dans ce cas, vous pouvez facilement identifier tout le trafic et toutes les communications au lieu d'utiliser une version ou un client automatisé.
Si vous utilisez PostgreSQL ou tout autre système de gestion de base de données SQL, vous devez savoir comment utiliser le tunnel SSH. Cela peut être crucial pour surveiller et gérer les processus système et les transferts de données.
Les protocoles SSH permettent une connexion hautement sécurisée, et le respect de précautions supplémentaires aidera à maintenir l'intégrité de vos connexions au serveur.