J'essaie de DÉSACTIVER l'accès client distant sur ma base de données Postgres 9.5.7 (exécutant Ubuntu 16.04).
J'ai fait ce que je pensais être les changements corrects (voir ci-dessous) en vain. Je peux penser à deux raisons pour lesquelles mes modifications ne fonctionneraient pas:
Je pensais les exclure, mais les clients distants peuvent toujours parler. Alors qu'est-ce qui me manque?
En fait, ce que j'essaie de faire, c'est d'annuler mes modifications qui ont permis l'accès client à distance pour que je puisse capturer ces modifications et les réappliquer avec notre pile de sel. Avant de commencer à exécuter des tests de déploiement via Salt, je veux savoir que l'accès à distance est désactivé afin de pouvoir être sûr que ma pile Salt effectue les modifications.
Certaines données
Je démarre postgres en utilisant le même fichier de configuration que je modifie (ps
sortie reformatée pour plus de lisibilité)
postgres@testweb:~$ ps -eaf | grep bin/post
postgres [snip] /usr/lib/postgresql/9.5/bin/postgres
-D /var/lib/postgresql/9.5/main
-c config_file=/etc/postgresql/9.5/main/postgresql.conf
postgres est configuré pour écouter uniquement sur le port localhost (c'était "*" plus tôt)
postgres@testweb:~$ grep listen_addresses /etc/postgresql/9.5/main/postgresql.conf
listen_addresses = 'localhost' # what IP address(es) to listen on;
L'authentification basée sur l'hôte est définie sur localhost. Cela ne devrait pas avoir d'importance si je désactive l'accès, n'est-ce pas? Ma compréhension est que si listen_addresses='localhost'
Alors l'accès client à distance ne fonctionnera pas.
postgres@testweb:~$ grep ^Host /etc/postgresql/9.5/main/pg_hba.conf
Host all all 127.0.0.1/32 md5
Host all all ::1/128 md5
J'édite les fichiers de configuration corrects, mais listen_addresses prétend *
postgres@testweb:~$ sql
psql (9.5.7)
Type "help" for help.
postgres=# show config_file;
config_file
------------------------------------------
/etc/postgresql/9.5/main/postgresql.conf
(1 row)
postgres=# show hba_file;
hba_file
--------------------------------------
/etc/postgresql/9.5/main/pg_hba.conf
(1 row)
postgres=# show listen_addresses;
listen_addresses
------------------
*
Preuve au niveau du système d'exploitation que nous écoutons toujours sur TOUTES les interfaces (c'est-à-dire que la commande show list_addresses;
Est en vigueur.
postgres@testweb:~$ netstat -nlt | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
tcp6 0 0 :::5432 :::* LISTEN
J'ai un fichier de conf personnalisé dans conf.d
, Mais je ne sais pas s'il est lu, car je ne l'ai pas touché afin de permettre l'accès client à distance. Quoi qu'il en soit, il est réglé sur ce que je veux pour l'instant
postgres@testweb:~$ cat /etc/postgresql/9.5/main/conf.d/custom.conf
listen_addresses = 'localhost'
shared_buffers = 4011MB
work_mem = 320MB
maintenance_work_mem = 1018MB
effective_cache_size = 8022MB
shared_preload_libraries = 'pg_stat_statements'
Aucun fichier de configuration errant n'apparaît sur le serveur
postgres@testweb:~$ locate postgresql.conf
/etc/postgresql/9.5/main/postgresql.conf
/etc/postgresql/9.5/main/postgresql.conf.bak
/usr/lib/tmpfiles.d/postgresql.conf
/usr/share/postgresql/9.5/postgresql.conf.sample
postgres@testweb:~$ locate pg_hba.conf
/etc/postgresql/9.5/main/pg_hba.conf
/usr/share/postgresql/9.5/pg_hba.conf.sample
Je redémarre l'instance de postgres avec service postgresql restart
(J'ai même essayé de redémarrer le serveur (ugh) juste pour m'assurer. Toujours pas de chance. J'ai vérifié que si j'exécute service postgresql stop
Que ma télécommande les clients échouent.
De toute évidence, en essayant de permettre l'accès à distance au client, j'ai dû modifier quelque chose d'autre; mais pour la vie de moi, je ne peux pas penser à ce que c'était. J'ai annulé les modifications que je me souviens avoir apportées (dans les deux fichiers conf). J'ai dû manquer quelque chose ... mais quoi?
MODIFICATION (s)
par un commentaire, si je me connecte en spécifiant l'hôte, je vois le même résultat (AFAIK, je n'ai jamais défini le mot de passe utilisateur postgres, donc j'y accède en tant que root).
root@testweb:~# Sudo -u postgres -h localhost psql
psql (9.5.7)
Type "help" for help.
postgres=# show listen_addresses;
listen_addresses
------------------
*
(1 row)
postgres=# show config_file;
config_file
------------------------------------------
/etc/postgresql/9.5/main/postgresql.conf
(1 row)
Selon un autre commentaire, voici la sortie après avoir exécuté service postgresql restart
... semble propre (incertain de la dernière ligne ... recherche (merci Daniel) indique que c'est "sans conséquence")
2017-07-18 17:43:16.440 MDT [4911] LOG: database system was shut down at 2017-07-18 17:43:15 MDT
2017-07-18 17:43:16.444 MDT [4911] LOG: MultiXact member wraparound protections are now enabled
2017-07-18 17:43:16.447 MDT [4910] LOG: database system is ready to accept connections
2017-07-18 17:43:16.447 MDT [4915] LOG: autovacuum launcher started
2017-07-18 17:43:16.848 MDT [4917] [unknown]@[unknown] LOG: incomplete startup packet
Regarde le postgresql.auto.conf
fichier dans votre $ PGDATA.
Si quelqu'un utilise le ALTER SYSTEM
commande pour modifier les paramètres, vous y trouverez la valeur.
postgresql.auto.conf
est lu après postgresql.conf
et chaque paramètre placé dans ce fichier écrase ceux de postgresql.conf
...
Ça vaut le coup d'oeil ...