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: