Postgres ligipääsuõigused

Tüüpiline Pgadmin kasutusjuht näeb ette SSH tunneli loomist serverisse ning selle kaudu PostgreSQL serverisse ühendumist, selle jaoks tuleb aga lubada TCP ühendused ning taaskäivitada PostgreSQL protsess:

sudo sed -i -e "s/#listen_addresses = 'localhost'/listen_addresses = 'localhost'/g" /etc/postgresql/9.1/main/postgresql.conf
sudo service postgresql restart

Juhul kui teil on turvaline ligipääs teatud IP aadressi kaudu või kui olete näiteks seadistanud OpenVPNi kuulama teatud IP aadressil, võite täiendavalt lisada ka selle aadressi:

sudo sed -i -e "s/listen_addresses = 'localhost'/listen_addresses = 'localhost,192.168.44.1'/g" /etc/postgresql/9.1/main/postgresql.conf
sudo service postgresql restart

Postgre listen_addresses on üks mitmest Postgre turvakihist. Seadistades ära mis IP aadressidel kuulatakse, piiratakse ära näiteks ligipääs avalikust internetist kus oleks võimalik sattuda mitmesuguste rünnete ohvriks <http://www.computerworld.com/s/article/9227965/MySQL_vulnerability_allows_attackers_to_bypass_password_verification>.

Teine ja palju paindlikum turvakiht on Postgre masina-põhine autentimine (host-based authentication). Lihtsa grep käskude ahelaga saab nimekirja hetkel kasutuses olevatest seadistustest:

cat /etc/postgresql/9.1/main/pg_hba.conf  | grep -v "#" | grep -v "^$"

Vaikimisi seadistused peaksid olema järgnevad:

local   all             postgres                                peer
local   all             all                                     peer
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Variantide arv on piiratud:

local      andmebaas  kasutaja  autentimismeetod  [autentimisvalikud]
host       andmebaas  kasutaja  masina-võrgunimi  autentimismeetod  [autentimisvalikud]
hostssl    andmebaas  kasutaja  masina-võrgunimi  autentimismeetod  [autentimisvalikud]
hostnossl  andmebaas  kasutaja  masina-võrgunimi  autentimismeetod  [autentimisvalikud]
host       andmebaas  kasutaja  IP-aadress  alamvõrgu-mask  autentimismeetod  [autentimisvalikud]
hostssl    andmebaas  kasutaja  IP-aadress  alamvõrgu-mask  autentimismeetod  [autentimisvalikud]
hostnossl  andmebaas  kasutaja  IP-aadress  alamvõrgu-mask  autentimismeetod  [autentimisvalikud]

Esimene tulp, ühenduse tüüp:

  • local - Võimalda ligipääs kohaliku UNIX-sokkli kaudu,

  • host - Võimalda ligipääs kasutades TCP ühendust, vahet pole kas SSL krüptimisega või ilma

  • hostssl - Sama mis host, nõua ühenduse krüptimine kasutades SSL-i

  • hostnossl - Sama mis host, keela SSL-krüptimine

Teine tulp, sihtandmebaas:

  • all - Võimalda ligipääs kõikidele andmebaasidele selles PostgreSQL serveris

  • sameuser - Võimalda ligipääs kasutaja-nimelisele andmebaasile

  • samerole - Kasutajal on roll, millel on sama nimi mis andmebaasilgi

Kolmas tulp, kasutaja:

  • andmebaasi-kasutaja-nimi[,teine-kasutaja[,...]] - Võimalda ligipääs nimetatud andmebaasi kasutajatele

  • all - Võimalda ligipääs suvalisele kasutajale

Autentimismeetod:

  • trust - Usalda sissetulevat ühendust, ära kontrolli parooli

  • peer - Tuvasta ühendust loova operatsioonisüsteemi kasutajanimi ning kasuta seda sisse logimiseks. See autentimise meetod on võimalik vaid local tüüpi ühenduste puhul.

  • md5 - Sama mis password kuid Postgre serveri ning kliendi vahel liigutatakse parooliräsi, mitte parooli ennast nagu password autentimismeetodi puhul

Lisame turvatud võrgust ligipääsu administreerivale postgres kasutajale:

echo "host all postgres 192.168.44.0/24 md5" | \
    sudo tee -a /etc/postgresql/9.1/main/pg_hba.conf

Lase Postgre-l uued seadistused sisse lugeda:

service postgresql reload

PostgreSQL adminpack ehk server instrumentation pack:

sudo apt-get install postgresql-contrib
cho "CREATE EXTENSION adminpack;" | sudo -u postgres psql

Viited:

Postgres SQL