
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 postgresilinetstat -plnt | grep postgres. Ako jelisten_addressespodeš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-256umestomd5, prisustvohostsslredova 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 dossl_cert_fileissl_key_file). Test konekcije pomoćupsql "host=server sslmode=require ..."i alata kaoopenssl s_client -connect server:5432za verifikaciju sertifikata. - Firewall i mrežna segmentacija:
Proverite iptables/nftables/ufw pravila:
iptables -Silinft 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_disconnectionsilog_duration. Za bazne audit potrebe postavitelog_connections = onilog_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 (logrotatekonfiguracija).
Š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.
