jeudi 28 novembre 2024

Postgesql Fedora: accès depuis le réseau

Je vais montrer comment accéder à une base de données postgresql depuis un poste client qui n'est pas sur la machine du serveur mais sur le même réseau. Tout d'abord dans le fichier postgresql.conf, dé-commenter et modifier la ligne listen_addresses:

listen_addresses = '*' # what IP address(es) to listen on;

Ensuite je m'occupe du fichier pg_hba.conf en ajoutant le lignes qui conviennent:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer map=map01
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident map=map01
# IPv4 lan connections
host    all             all             192.168.1.0/24          ident map=map02
# IPv6 local connections:
host    all             all             ::1/128                 ident map=map01
# IPv6  lan connections
host    all             all             fe80::/10               ident map=map02

(en rouge ce qui est ajouté)

Puis j'adapte pg_ident.conf qui pourrait maintenant ressembler à:

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME

map01 postgres postgres
map01 mifel michel
map01 mifel titi
map02           michel michel
map02 michel titi
map02 viviane titi

Les fichiers concernés se trouvent dans /var/lib/pgsql/data. J'utilise sudo nano pour procéder.

En ce qui concerne le pare-feu, les commandes à lancer sont:

mifel@fedora:~$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="postgresql" accept'
mifel@fedora:~$ sudofirewall-cmd --permanent --add-rich-rule 'rule family="ipv6" source address="fe80::/10" service name="postgresql" accept'
mifel@fedora:~$ sudo firewall-cmd --reload

Le service postgresql ouvre le port 5432:

mifel@fedora:~$ firewall-cmd --permanent --service=postgresql --get-ports
5432/tcp

La commande hostnamectl m'informe que le nom 'hostname' n'est pas défini de manière statique: j'y remédie:

mifel@fedora:~$ sudo hostnamectl hostname fedora

Pour les connexions réseau je pouvais choisir dans pg_hba.conf une identification par mot de passe, mais j'ai préféré garder ident.
Donc je dois maintenant sur chaque poste client installer et activer oidentd (voir post précédent) 

Ensuite pour le pare-feu:

michel@arcturus:~$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="ident" accept'
michel@arcturus:~$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv6" source address="fe80::/10" service name="ident" accept'
michel@arcturus:~$ sudo firewall-cmd --reload

Le port 113 est maintenant ouvert:

michel@arcturus:~$ firewall-cmd --permanent --service=ident --get-ports
113/tcp

Et voilà: