postgresql abilitare accesso remoto linux ubuntu centos debian

Osservo che ritorna con una certa frequenza la domanda come abilitare l’accesso remoto in postgresql versioni 8.x e 9.x. La questione degli accesso remoto è basilare in quanto attiene anche al livello della sicurezza. In via generale l’accesso remoto in postgres è controllato dai due file postgresql.conf e pg_hba.conf.
La posizione di questi file varia a seconda delle distribuzioni ad esempio in centos/redahat fedora i due files sono posizionati nella data_directory con i postgresql in debian /ubuntu

/var/lib/pgsql/data

In debian/ubuntu si trovano si trovano in etc il percorso è del tipo
/etc/postgresql/num-versione/main

postgresql.conf    Il file postgresql tra i vari parametri che controlla Gli indirizzi ip “ascoltati” da postgresql sono rappresentati con listen_address.
Il valore  di default di listen_adress è “localhost” ed è indicato con

listen_address = 'localhost"

Questo significa che l’accesso a postgresql è consentito di default solo all’elaboratore che ha in esecuzione il server sql. Per consentire l’accesso da pc remoto a postgresql bisogna inanzitutto cambiare il valore “localhost” ad esempio è possibile utilizzare “*”per consentire l’accesso a tutti.

listen_address = '*"

E possibile indicare anche un lista di indirizzi o domini.

Una volta consentito l’ascolto su tutti gli indirizzi si utilizza il file pg_hba.conf per indicare a postgresql quali users possono accedere a quali databases e come possono farlo.

# TYPE  DATABSE     USER       CIDR-ADDRESS           METHOD

# local for domain socket only 
local   all         postgres                          ident
# IPv4 connections  
# TYPE  DATABSE     USER       CIDR-ADDRESS           METHOD

# local for domain socket only 
local   all         postgres                          ident
# IPv4 connections  
host    all         postgres                          md5 
host    all         all         127.0.0.1/32          md5 
host    all         all         192.168.0.0/24        md5
# IPv6 
host    all         all         ::1/128               md5

Due esemplificazioni  l’utente postgres su local può accedere a tutti i database senza specificare  password (metodo ident)  .
Tutti gli users degli hosts della sottorete 192.168.0.0/24 possono accedere a tutti i databases in postgresql ( a patto ovviamente che il database annoveri tra i suoi utenti l’user che accede )  con metodo di cifratura md5 e pertanto con password.

Attenzione: ricordare che postgresql analizzando il file  pg_hba quando trova la prima riga che soddisfa le condizioni della connessione non processa le righe successive.

Ovviamente sono possibili impostazioni più sofisticate di quelle dell’esempio anche considerati i diversi metodi di autenticazioni e le casistiche che si possono presentare. E’ tuttavia buona norma limitare l’accesso al database alla sola sottorete locale. Del resto è sempre possibilie creare un tunnel ssh per accedere così da agire come  si operasse in locale.

Controllare le connessioni

PostgreSQL ascolta le connessioni utilizzando il sockets unix ( in genere in /tmp ).
Pertanto si può effettuare il controllo con:

netstat -nxl | grep PGSQL

ad esempio in Ubuntu

$ netstat -nxl | grep PGSQL
unix 2 [ ACC ] STREAM LISTENING 10109 /var/run/postgresql/.s.PGSQL.5432

Altre risorse:

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...