Security issues concerning pgsql replication - Mailing list pgsql-general

From xiebin (F)
Subject Security issues concerning pgsql replication
Date
Msg-id b8b86db2921441e48ba8c140fd846bf0@huawei.com
Whole thread Raw
Responses Re: Security issues concerning pgsql replication  (Magnus Hagander <magnus@hagander.net>)
List pgsql-general

Hi,

 

I was setting up a master/slave pgsql(version 12.4) cluster using stream replication. I found 3 ways to authenticate, but all of them has some security issue.

 

1.  Disable authentication.

cat pg_hba.conf

    host   all           all    0/0               md5

    host   replication   xie    192.168.1.31/32   trust

 

In this case, untrusted users on slave may use pg_basebackup to stole data.

 

2.  Using password.

cat pg_hba.conf

    host   all           all    0/0               md5

    host   replication   xie    192.168.1.31/32   md5

 

cat /var/lib/pgsql/.pgpass (on slave)

    192.168.1.30:5432:xie:mydb:xie

 

In this case, the password is stored unencrypted. File access control may help, but it’s not secure enough.

 

3.  Using certificate.

cat pg_hba.conf

    host   all           all    0/0               md5

    hostssl    replication   xie    192.168.1.31/32   cert clientcert=1

 

cat postgresql.conf | grep ssl

    ssl = on

ssl_ca_file = 'root.crt'

ssl_cert_file = 'server.crt'

ssl_crl_file = ''

ssl_key_file = 'server.key'

 

cat recovery.conf

    primary_conninfo = 'host=192.168.1.30 port=5432 user=xie application_name=stream_relication sslrootcert=/tmp/root.crt sslcert=/tmp/xie.crt sslkey=/tmp/xie.key'

restore_command = ''

recovery_target_timeline = 'latest'

primary_slot_name = 'rep_slot'

 

The certificates are created by official instructions https://www.postgresql.org/docs/12/ssl-tcp.html#SSL-CERTIFICATE-CREATION. But the private key is not encrypted.

I noticed in psql 11+ version, a new configuration ssl_passphrase_command is added, so that encrypted private key can be used.

But as far as I know, encrypted private key is not supported in stream replication.

 

I wonder if there is another way to authenticate in replication? Or does pgsql has any plan to support encrypted private key in replication?

 

Xie Bin

 

pgsql-general by date:

Previous
From: Hu Bert
Date:
Subject: Re: postgis update wants to install postgresql-13
Next
From: Magnus Hagander
Date:
Subject: Re: Security issues concerning pgsql replication