GNU/Linux >> Tutoriels Linux >  >> Linux

Comment sécuriser le serveur PostgreSQL

PostgreSQL, également connu sous le nom de Postgres, est un système de gestion de base de données relationnelle objet à usage général. C'est l'une des bases de données open source les plus avancées disponibles. Cependant, il existe de nombreux problèmes de sécurité et des vulnérabilités potentielles si l'application n'est pas sécurisée correctement.

Si vous êtes un administrateur système ou de base de données, vous devez savoir comment protéger Postgres avant de passer en production.

Dans ce tutoriel, nous allons vous montrer comment sécuriser le serveur PostgreSQL sur Ubuntu18.04.

Prérequis

  • Un nouveau VPS Ubuntu 18.04 sur la plate-forme cloud d'Atlantic.net.
  • Un mot de passe root configuré sur votre serveur.

Étape 1 - Créer un serveur cloud Atlantic.Net

Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 18.04 comme système d'exploitation avec au moins 1 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.

Une fois que vous êtes connecté à votre serveur Ubuntu 18.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.

apt-get update -y

Étape 2 - Installer PostgreSQL

apt-get install postgresql postgresql-contrib -y

Une fois l'installation terminée, démarrez le serveur PostgreSQL et autorisez-le à démarrer au redémarrage :

systemctl start postgresql
systemctl enable postgresql

Étape 3 - Créer une base de données et un utilisateur

Ensuite, vous devrez créer une base de données et un utilisateur à des fins de test.

Tout d'abord, connectez-vous au shell PostgreSQL avec la commande suivante :

sudo -i -u postgres psql

Vous devriez voir le résultat suivant :

psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=#

Ensuite, créez un utilisateur nommé testuser et définissez le mot de passe.

postgres=# CREATE USER testuser WITH PASSWORD 'password';

Ensuite, créez une base de données nommée testdb et accordez un accès complet au nouvel utilisateur :

postgres=# CREATE DATABASE testdb OWNER testuser;

Ensuite, quittez le shell PostgreSQL avec la commande suivante :

postgres=# \q

Étape 4 - Configurer l'adresse d'écoute

Pour l'environnement de production, vous devrez configurer PostgreSQL pour écouter sur une interface publique.

Vous pouvez modifier ce paramètre en éditant le fichier /postgresql.conf :

nano /etc/postgresql/10/main/postgresql.conf

Recherchez la ligne suivante :

#listen_addresses = 'localhost'

Remplacez-le par ce qui suit :

listen_addresses = 'localhost,your-server-ip'

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service PostgreSQL pour implémenter les modifications :

systemctl restart postgresql

Étape 5 - Configurer les hôtes autorisés

Pour une meilleure sécurité, il est recommandé de n'autoriser que des adresses IP spécifiques à accéder et à modifier la base de données PostgreSQL. Vous pouvez le faire en éditant le fichier pg_hba.conf :

nano /etc/postgresql/10/main/pg_hba.conf

Recherchez la ligne suivante :

# local      DATABASE  USER  METHOD  [OPTIONS]

Ajoutez la ligne suivante sous la ligne ci-dessus :

host  testdb  testuser   client-ip-address/32   md5

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service PostgreSQL pour implémenter les modifications :

systemctl restart postgresql

Où :

hôte  :l'hôte est un socket TCP/IP simple ou crypté SSL.
base de données :testdb est le nom de la base de données à laquelle l'hôte peut se connecter.
user :testuser est le nom de l'utilisateur autorisé à établir la connexion.
adresse :client-ip-address/32 spécifiez l'adresse IP de l'ordinateur client.
auth-method :md5 est le nom de la méthode d'authentification.

Étape 6 - Configurer le pare-feu UFW

apt-get install ufw -y

Ensuite, il est recommandé de configurer la règle de pare-feu UFW pour accorder l'accès au port 5432 par défaut de PostgreSQL uniquement à l'adresse IP du client.

IMPORTANT : Avant de commencer, vous devrez autoriser la connexion SSH entrante via UFW, car cela vous fera perdre l'accès au shell. Vous serez verrouillé et incapable de vous connecter à votre instance.

Vous pouvez autoriser le service SSH à l'aide de la commande suivante :

ufw allow ssh

Ensuite, activez le pare-feu UFW avec la commande suivante :

ufw enable

Ensuite, autorisez le port PostgreSQL 5432 uniquement à l'adresse IP du client à l'aide de la commande suivante :

ufw allow from client-ip-address to any port 5432

Ensuite, vérifiez l'état de la règle UFW avec la commande suivante :

ufw status

Vous devriez obtenir le résultat suivant :

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                 
5432                       ALLOW       client-ip-address
22/tcp (v6)                ALLOW       Anywhere (v6)

Étape 7 - Vérifier la connexion à distance

À ce stade, le serveur PostgreSQL est sécurisé et accessible uniquement à partir de l'IP du client.

Pour le vérifier, connectez votre base de données PostgreSQL depuis le système du client :

psql -U testuser -h postgres-server-ip -d testdb

Il vous sera demandé de fournir le mot de passe pour testuser, comme indiqué ci-dessous :

Password for user testuser:

Tapez votre mot de passe et appuyez sur Entrée . Une fois la connexion établie, vous devriez obtenir le résultat suivant :

psql (9.3.24, server 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
WARNING: psql major version 9.3, server major version 10.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

testdb=>

C'est tout pour le moment.

Conclusion

Dans le guide ci-dessus, vous avez appris à sécuriser PostgreSQL en configurant PostgreSQL pour n'accorder l'accès qu'à des hôtes spécifiques. Vous avez également appris à configurer UFW pour autoriser les connexions uniquement à partir d'hôtes spécifiques. Vous devriez maintenant être en mesure de protéger votre serveur PostgreSQL de certains types d'attaques. Commencez dès aujourd'hui avec l'hébergement VPS d'Atlantic.Net !


Linux
  1. Comment installer le serveur Redis sur CentOS 8

  2. Comment installer DenyHost sur CentOS 6.7

  3. Comment installer et sécuriser Redis sur Ubuntu 18.04

  4. Comment installer PostgreSQL Server sur CentOS 8

  5. Comment sécuriser Rocky Linux 8

Comment installer le serveur Web Hiawatha sur CentOS 7

Comment installer Consul Server sur Ubuntu 20.04

Comment installer Monit Monitoring Server sur Ubuntu 20.04.

Comment installer le serveur PandoraFMS sur CentOS 8

Comment installer EteSync Server sur Ubuntu 20.04

Comment sécuriser SSH avec Fail2Ban