Bezbedosna revizija PostgreSQL na Linuxu: Kontrolna lista za administratore

Article Image

Zašto je audit PostgreSQL na Linuxu potreban i šta očekujete

Kao administrator, vi nosite odgovornost za poverljivost, integritet i dostupnost podataka koji su pohranjeni u PostgreSQL klasteru. Audit nije jednokratna aktivnost — to je strukturiran pristup prepoznavanju slabih tačaka i otklanjanju rizika pre nego što ih napadači iskoriste. U ovom prvom delu dobićete jasne smernice kako da postavite obim audita, pripremite sistem i prikupite osnovne informacije koje su ključne za dalju analizu.

Koji rezultati audita treba da očekujete

  • Lista kritičnih konfiguracionih problema (npr. nešifrovani prenos, loše postavljen pg_hba.conf)
  • Pregled privilegija i korisničkih računa koji predstavljaju rizik
  • Mapa mestâ gde se čuvaju credentiali, konfiguracije i rezervne kopije
  • Preporuke za hitne popravke i dugoročne kontrole

Definisanje obima i priprema okruženja za pregled

Pre nego što počnete sa tehničkim proverama, jasno definišite obim audita: koje instance, verzije PostgreSQL-a, fizičke ili virtualne servere, kao i mrežne segmente koje ćete obuhvatiti. Na osnovu obima napravite kontrolnu listu resursa koje treba osigurati i pristupa koje će vam trebati.

Pripremni koraci koje treba da sprovedete

  • Obezbedite administrativni pristup (root ili sudo; korisnik postgres) i evidentirajte ko ima privilegije.
  • Napravite listu svih PostgreSQL procesa i lokacija konfiguracionih datoteka (npr. /etc/postgresql, /var/lib/pgsql, instalacioni paket).
  • Osigurajte kopije konfiguracionih fajlova i logova za analizu, ali radite na kopijama — nikada direktno na produkciji bez plana oporavka.
  • Dogovorite vremenski okvir za kontrole koje mogu zahtevati restart servisa ili privremeno ograničenje pristupa.

Prve tehničke provere: verzija, pristupi i privilegije

Počnite sa osnovnim proverama sistema i PostgreSQL instance. Proverite verziju PostgreSQL-a i instalirane zakrpe — zastarele verzije često imaju poznate ranjivosti. Pregledajte korisnike baze i njihove privilegije: specijalni nalozi, superuser računi i sve aplikacione naloge sa širokim dozvolama trebaju biti izlistani i opravdani.

  • Proverite konfiguraciju autentifikacije (pg_hba.conf) i ograničenja mreže.
  • Pregledajte postgresql.conf za opcije koje utiču na enkripciju, logovanje i prikaz grešaka.
  • Potvrdite da sistemske dozvole fajl sistema i direktorijuma baze ograničavaju pristup samo neophodnim korisnicima.

Ove inicijalne provere omogućavaju vam da brzo klasifikujete probleme po prioritetu; sledeći korak u članku detaljno će objasniti konkretne stavke kontrolnog spiska i komande koje treba izvršiti za svaku proveru.

Mrežna bezbednost i konfiguracija konekcija

Jedna od najčešćih oblasti za napad je mrežni sloj: otvoreni portovi, neodgovarajuća ograničenja pristupa i slaba autentifikacija pri konekciji. Cilj provere je potvrditi da PostgreSQL ne izlaže nepotrebne interfejse, da koristi jake mehanizme autentifikacije i da je zaštićen firewall-om i mrežnim pravilima.

  • Proverite na kojim adresama sluša server:

    Komanda: ss -ltnp | grep postgres ili netstat -plnt | grep postgres. Ako je listen_addresses podešeno na '*', proverite da li su spoljni pristupi ograničeni na nivou firewall-a.

  • Proverite autentifikacione metode u pg_hba.conf:

    Tražite korišćenje scram-sha-256 umesto md5, prisustvo hostssl redova za udaljene veze i ograničenja IP opsega. Komanda za brzo filtriranje: grep -v '^#' /etc/postgresql/*/main/pg_hba.conf | grep -v '^$'.

  • SSL/TLS konfiguracija:

    Proverite da li su omogućeni sertifikati u postgresql.conf (ssl = on, pravilne putanje do ssl_cert_file i ssl_key_file). Test konekcije pomoću psql "host=server sslmode=require ..." i alata kao openssl s_client -connect server:5432 za verifikaciju sertifikata.

  • Firewall i mrežna segmentacija:

    Proverite iptables/nftables/ufw pravila: iptables -S ili nft list ruleset. Preporuka: dozvoliti pristup samo sa aplikacionih servera i administrativnih lokacija, koristiti VPN ili private VPC mreže za komunikaciju.

Remedijacije: promenite listen_addresses ako je potrebno, pređite na scram-sha-256, obavezno omogućite SSL za otvorene mrežne linkove, i zaključajte pristup kroz firewall i network ACL-e.

Logovanje, auditing i detekcija sumnjivih aktivnosti

Logovi su ključni za posle-incidentnu analizu i za otkrivanje anomalija u realnom vremenu. Proverite da li su log postavke dovoljno detaljne, da li se čuvaju na bezbednoj lokaciji i da li postoji integracija sa SIEM/centralizovanim rešenjem.

  • PostgreSQL log postavke:

    Proverite postgresql.conf: logging_collector = on, log_destination, log_statement, log_connections, log_disconnections i log_duration. Za bazne audit potrebe postavite log_connections = on i log_statement = 'ddl' ili specifičnije vrednosti prema obimu audita.

  • Proširenja za auditing:

    Proverite da li je instaliran i aktiviran pgaudit (SELECT * FROM pg_available_extensions WHERE name='pgaudit';). Ako nije, razmotrite njegovo uvođenje za detaljniji audit SQL aktivnosti.

  • Centralizacija i zaštita logova:

    Obezbedite da se logovi transportuju i čuvaju van samog DB hosta (npr. syslog/rsyslog -> SIEM ili S3 sa enkripcijom). Proverite dozvole log fajlova (ls -l /var/log/postgresql), i rotaciju (logrotate konfiguracija).

Šifrovanje podataka, rezervne kopije i upravljanje credentialima

Podaci u mirovanju i backupi moraju biti zaštićeni jednako kao i podaci u tranzitu. Takođe, lociranje credentials (konfiguracione datoteke, environment varijable, scripts) i njihovo sigurno upravljanje su kritični elementi audita.

  • Šifrovanje na disku i tablespaces:

    Proverite da li je disk na kojem su podaci (data_directory) šifrovan (LUKS, dm-crypt) ili da li su tablespaces smešteni na šifrovanim volumima. Komanda za proveru mount opcija: findmnt -no OPTIONS /var/lib/postgresql.

  • Backup strategija i enkripcija:

    Proverite da li su backup fajlovi (pg_dump, base backups, WAL arhiva) enkriptovani pri transportu i u mirovanju. Primer preporuke: pg_basebackup --wal-method=stream | gpg --encrypt --recipient [email protected] -o backup.tar.gz.gpg. Uverite se da su ključevi za dekripciju čuvani u HSM/secret manageru.

  • Lokacije credentiala i pristupni ključevi:

    Potražite hardkodovane lozinke u konfiguracionim fajlovima i skriptama: grep -R --exclude-dir=.git -n 'password' /etc /var /home. Ako koristite environment varijable ili .pgpass, osigurajte da su fajlovi sačuvani sa odgovarajućim permisijama (600) i pređite na secret management rešenja (Vault, AWS Secrets Manager).

Remedijacije: primenite enkripciju diska ili tablespaces, obezbedite enkriptovane i verifikovane bekape, premestite credentiale u tajni menadžer i primenite rotaciju ključeva prema politici.

Zaključne napomene i naredni koraci

Audit baze podataka nije jednokratna aktivnost — to je proces koji zahteva planiranje, izvršenje i kontinuiranu proveru. Uvedite prioritete za hitne popravke, dodelite odgovornosti za sprovođenje promena i integrišite rezultate audita u redovne operacije i incidente. Automatizujte ponovljive provere tamo gde je moguće i obezbedite povratne informacije timovima za razvoj i operacije kako bi bezbednosne prakse postale deo životnog ciklusa aplikacija.

Preporučeni praktični koraci

  • Postavite periodične audite i testiranja (npr. kvartalno) i beležite rezultate.
  • Automatizujte osnovne provere konfiguracije i prava pristupa koristeći skripte ili alate za upravljanje konfiguracijom.
  • Integrisite logove i audit podatke sa centralizovanim SIEM rešenjem i definišite alarmne pragove za sumnjive aktivnosti.
  • Koristite upravljače tajnama (Vault, cloud secret managers) i HSM za čuvanje i rotaciju ključeva i credentiala.
  • Obučavajte timove za hitno reagovanje i proceduru obnove posle incidenta, uključujući testirane backup/restore scenarije.

Za specifične preporuke, konfiguracione primere i najnovija bezbednosna ažuriranja pogledajte PostgreSQL bezbednosnu dokumentaciju.

Česti nalazi i brzi koraci za remedijaciju

Tokom audita najčešće se susrećemo sa nekoliko ponavljajućih problema: zastarele verzije PostgreSQL-a, preširoko dodeljene superuser privilegije, nešifrovani backup fajlovi, hardkodovani credentiali u skriptama i otvoreni mrežni interfejsi koji dopuštaju pristup iz interneta. Brzi koraci za smanjenje rizika uključuju: odmah ograničiti broj superuser naloga i promeniti lozinke, primeniti sigurnosne zakrpe i nadogradnje, onemogućiti slušanje na javnim adresama ili zaključati pristup putem firewalla, premestiti credentiale u secret manager (npr. Vault) i obezbediti enkripciju backup fajlova. Takođe je preporučljivo aktivirati pgaudit za detaljniji SQL auditing i podesiti centralizovano logovanje kako bi se lako pratila sumnjiva aktivnost. Za hitne intervencije pripremite rollback plan i testne restore procedure pre primene promena u produkciji.

Korisni alati i korisne komande

  • pgaudit — detaljan SQL audit; proverite dostupnost: SELECT * FROM pg_available_extensions WHERE name='pgaudit';
  • pgBadger — analiza logova za brzo prepoznavanje anomalija i dugačkih upita.
  • ss/netstat — proverite otvorene portove: ss -ltnp | grep postgres.
  • auditd/auditctl — OS-level auditing događaja i pristupa fajlovima baze.
  • fail2ban/OSSEC — automatska zaštita od brute-force napada i intrusion detection.
  • Ansible/Terraform — automatizacija provere konfiguracije i primene popravki.

Primena kombinacije ovih mera i alata dramatično smanjuje napadni površ i omogućava bržu detekciju i odgovor na incidenate.