GNU/Linux >> Znalost Linux >  >> Linux

Jak zabezpečit PostgreSQL Server

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 testdb

Budete 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
  1. Jak nainstalovat Redis Server na CentOS 8

  2. Jak nainstalovat a zabezpečit Redis na Ubuntu 18.04

  3. Jak nainstalovat a zabezpečit PostgreSQL Server na RockyLinux 8

  1. Jak nainstalovat DenyHost na CentOS 6.7

  2. Jak nainstalovat PostgreSQL Server na CentOS 8

  3. Jak zabezpečit Rocky Linux 8

  1. Jak nainstalovat PostgreSQL server na RHEL 8 / CentOS 8

  2. Jak nainstalovat PostgreSQL na CentOS 8

  3. Jak nainstalovat server PostgreSQL na Ubuntu 18.04