PostgreSQL, také známý jako Postgres, je univerzální objektově-relační systém pro správu databází. Je to jedna z nejpokročilejších dostupných databází s otevřeným zdrojovým kódem. Pokud však aplikace není správně zabezpečena, existuje mnoho bezpečnostních problémů a potenciálních zranitelností.
Pokud jste systémový nebo databázový administrátor, musíte vědět, jak chránit Postgres před uvedením do produkce.
V tomto tutoriálu vám ukážeme, jak zabezpečit PostgreSQL server na Ubuntu18.04.
Předpoklady
- Nové Ubuntu 18.04 VPS na cloudové platformě Atlantic.net.
- Heslo uživatele root nakonfigurované na vašem serveru.
Krok 1 – Vytvoření cloudového serveru Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte Ubuntu 18.04 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte na svůj server Ubuntu 18.04, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
apt-get update -y
Krok 2 – Instalace PostgreSQL
apt-get install postgresql postgresql-contrib -y
Po dokončení instalace spusťte server PostgreSQL a povolte jeho spuštění při restartu:
systemctl start postgresqlsystemctl povolit postgresql
Krok 3 – Vytvoření databáze a uživatele
Dále budete muset vytvořit databázi a uživatele pro účely testování.
Nejprve se přihlaste do prostředí PostgreSQL pomocí následujícího příkazu:
sudo -i -u postgres psql
Měli byste vidět následující výstup:
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)) Zadejte "help" pro help.postgres=#
Dále vytvořte uživatele s názvem testuser a nastavte heslo.
postgres=# VYTVOŘTE UŽIVATELE testuser S HESLEM 'heslo';
Dále vytvořte databázi s názvem testdb a udělte úplný přístup novému uživateli:
postgres=# CREATE DATABASE VLASTNÍK testdb testuser;
Dále ukončete prostředí PostgreSQL pomocí následujícího příkazu:
postgres=# \q
Krok 4 – Konfigurace adresy pro poslech
Pro produkční prostředí budete muset nakonfigurovat PostgreSQL tak, aby naslouchal na veřejném rozhraní.
Toto nastavení můžete změnit úpravou souboru /postgresql.conf:
nano /etc/postgresql/10/main/postgresql.conf
Najděte následující řádek:
#listen_addresses ='localhost'
Nahraďte jej následujícím:
listen_addresses ='localhost,ip-vašeho-serveru'
Po dokončení uložte a zavřete soubor. Poté restartujte službu PostgreSQL, abyste provedli změny:
systemctl restart postgresql
Krok 5 – Konfigurace povolených hostitelů
Pro lepší zabezpečení se doporučuje povolit pouze konkrétním IP adresám přístup a modifikaci PostgreSQL databáze. Můžete to udělat úpravou souboru pg_hba.conf:
nano /etc/postgresql/10/main/pg_hba.conf
Najděte následující řádek:
# místní DATABÁZE UŽIVATEL METODA [MOŽNOSTI]
Přidejte následující řádek pod výše uvedený řádek:
hostitel testdb testuser client-ip-address/32 md5
Po dokončení uložte a zavřete soubor. Poté restartujte službu PostgreSQL, abyste provedli změny:
systemctl restart postgresql
Kde:
hostitel :hostitel je prostý nebo SSL šifrovaný TCP/IP soket.
databáze :testdb je název databáze, ke které se hostitel může připojit.
uživatel :testuser je jméno uživatele, kterému je povoleno připojení.
adresa :client-ip-address/32 zadejte IP adresu klientského počítače.
auth-metoda :md5 je název metody ověřování.
Krok 6 – Konfigurace brány UFW Firewall
apt-get install ufw -y
Dále se doporučuje nakonfigurovat pravidlo brány firewall UFW tak, aby udělovalo přístup k výchozímu portu PostgreSQL 5432 pouze IP adrese klienta.
DŮLEŽITÉ: Před spuštěním budete muset povolit příchozí SSH připojení přes UFW, protože tím ztratíte přístup k shellu. Budete uzamčeni a nebudete se moci připojit ke své instanci.
Službu SSH můžete povolit pomocí následujícího příkazu:
ufw povolit ssh
Dále povolte UFW firewall pomocí následujícího příkazu:
Ufw enable
Dále povolte PostgreSQL portu 5432 pouze na IP adresu klienta pomocí následujícího příkazu:
ufw povolit z adresy IP klienta na libovolný port 5432
Dále zkontrolujte stav pravidla UFW pomocí následujícího příkazu:
Stav ufw
Měli byste získat následující výstup:
Stav:ActiveTo Action from-- ------ ---- ---- 22/TCP Povolit kdekoli 5432 Povolit klienta-IP-address22/TCP (V6) Povolit kdekoli (v6)Krok 7 – Ověřte vzdálené připojení
V tomto okamžiku je PostgreSQL server zabezpečený a přístupný pouze z IP klienta.
Chcete-li to ověřit, připojte svou databázi PostgreSQL ze systému klienta:
psql -U testuser -h postgres-server-ip -d testdbBudete požádáni o zadání hesla pro testuser, jak je uvedeno níže:
Heslo pro uživatele testuser:Zadejte heslo a stiskněte Enter . Po navázání spojení byste měli získat následující výstup:
psql (9.3.24, server 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))VAROVÁNÍ:psql major verze 9.3, server major verze 10. Některé funkce psql nemusí fungovat. Připojení SSL (šifra:ECD AES256-GCM-SHA384, bity:256)Zadejte "help" pro help.testdb=>To je prozatím vše.
Závěr
Ve výše uvedené příručce jste se naučili, jak zabezpečit PostgreSQL konfigurací PostgreSQL tak, aby udělovala přístup pouze konkrétním hostitelům. Také jste se naučili, jak nakonfigurovat UFW tak, aby umožňoval připojení pouze od konkrétních hostitelů. Nyní byste měli být schopni chránit svůj PostgreSQL server před určitými druhy útoků. Začněte ještě dnes s VPS hostingem od Atlantic.Net!
Linux