"Est-il possible de chiffrer les connexions TCP clientes vers un serveur PostgreSQL ?
Si oui, le sont-elles par défaut et comment forcer le chiffrement ?
Comment vérifier qu'une connexion est sécurisée ?"
Réponses :
1) Il est possible de sécuriser les connexions TCP clientes vers un serveur PostgreSQL via SSL (=> TLS).
2) ssl est configuré par défaut côté serveur pour tout cluster créé sur Debian par exemple.
Dans ce cas, le paramètre ssl est à on au niveau du cluster :
Code : Tout sélectionner
psql
select version();
version
----------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 11.3 (Debian 11.3-1.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit
show ssl;
ssl
-----
on
Exemple pour autoriser un client depuis n'importe quelle adresse IPv4 mais uniquement avec une connexion ssl :
Code : Tout sélectionner
hostssl all all 0.0.0.0/0 scram-sha-256
Code : Tout sélectionner
select s.pid, ssl, cipher, version, application_name, client_addr from pg_stat_ssl s join pg_stat_activity a on (a.pid = s.pid) where client_addr is not null;
pid | ssl | cipher | version | application_name | client_addr
-------+-----+-----------------------------+---------+--------------------------+--------------
38203 | t | ECDHE-RSA-AES256-GCM-SHA384 | TLSv1.2 | DBeaver 6.0.0 - Main | xx.xxx.x.xx
38204 | t | ECDHE-RSA-AES256-GCM-SHA384 | TLSv1.2 | DBeaver 6.0.0 - Metadata | xx.xxx.x.xx
38794 | t | ECDHE-RSA-AES256-GCM-SHA384 | TLSv1.2 | psql | xx.xxx.xx.xx