sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man stänger sårbarhetsgapet i PostgreSQL

Oavsett vilken typ av teknik eller säkerhetssystem du har på plats finns det alltid en risk att bli hackad eftersom det inte finns något 100% säkert system. Eftersom data förmodligen är den viktigaste tillgången i ett företag måste du säkra ditt system så mycket som möjligt för att minimera denna risk.

Den här bloggen kommer att nämna några viktiga kontroller att utföra i din PostgreSQL-miljö för att täppa till sårbarhetsklyftan och undvika några av de vanligaste säkerhetsproblemen.

Säker kommunikation

Om du använder olika molnleverantörer, en kombination av Cloud Provider och On-Prem, eller till och med bara en On-Prem-miljö, måste kommunikationen i alla dina system vara krypterad, och du måste begränsa trafik endast från kända källor för att minska risken för obehörig åtkomst till ditt nätverk.

Användningen av VPN-, SSH- eller brandväggsregler, eller till och med en kombination av dem, är bra lösningar för denna punkt.

Kontrollera databasåtkomst

Du måste begränsa både fysisk åtkomst och fjärråtkomst.

  • Fysisk åtkomst (på plats):Begränsa obehörig fysisk åtkomst till databasservern.

  • Fjärråtkomst:Begränsa fjärråtkomsten till endast de nödvändiga personerna och från minsta möjliga mängd källor. Att använda ett VPN för att komma åt det är definitivt användbart här, men det finns också andra alternativ som SSH Tunneling. Du bör hitta den bästa lösningen för ditt företag.

Hantera databasanvändarkonton

Det finns många sätt att förbättra säkerheten för dina användarkonton i PostgreSQL.

  • Ta bort inaktiva användare. För detta bör du definiera en tidsperiod för att betrakta en användare som inaktiv, och du kan schemalägga den för att ta bort dem automatiskt.

  • Ge bara de nödvändiga behörigheterna när du skapar ett nytt användarkonto.

  • Begränsa källan för varje användaranslutning med hjälp av konfigurationsfilen pg_hba.conf.

  • Definiera en säker lösenordspolicy (eller aktivera en plugin för detta, t.ex. lösenordskontroll).

Säkra installationer och konfigurationer

Det finns några ändringar att göra för att säkra din PostgreSQL-installation.

  • Installera endast nödvändiga paket och tjänster på servern.

  • Ändra standardadminanvändarlösenordet och begränsa användningen från endast den lokala värden.

  • Ändra standardporten och ange gränssnittet att lyssna i.

  • Aktivera plugin för lösenordssäkerhetspolicy.

  • Konfigurera SSL-certifikat för att kryptera data under transport.

  • Kryptera data-at-rest.

  • Konfigurera den lokala brandväggen så att den endast tillåter åtkomst till databasporten från det lokala nätverket.

Om du använder en hanterad PostgreSQL-databas är några av punkterna som nämns ovan inte nödvändiga.

Revision och loggning

Loggningsutlåtanden kan hjälpa dig att upptäcka säkerhetsproblem eller undvika dem om du kommer ikapp dem i tid.

Du kan använda standardloggningspostgreSQL-funktionen med parametern log_statement, men du kan också använda ett tillägg som pgAudit för att få en mer detaljerad sessions- och objektgranskningsloggning.

Implementera en WAF (Web Application Firewall)

SQL-injektioner eller DoS-attacker (Denial of Service) är de vanligaste attackerna mot en databas, och det säkraste sättet att undvika dem är att använda en WAF för att fånga den här typen av SQL-frågor eller en SQL Proxy för att analysera trafiken.

Kontrollera CVE (Common Vulnerabilities and Exposures) ofta

Varje dag upptäcks nya sårbarheter för din databasserver. Du bör kontrollera det ofta för att veta om du behöver applicera en patch eller ändra något i din konfiguration. Ett sätt att veta det är genom att granska CVE-webbplatsen, där du kan hitta en lista över sårbarheter med en beskrivning, och du kan leta efter din databasversion och leverantör för att bekräfta om det finns något viktigt att fixa ASAP.

För att vara mer specifik kan du kontrollera PostgreSQL-sektionen för att försöka hitta problem för din databasversion.

Håll ditt operativsystem och din databas uppdaterade

Det finns flera korrigeringar och förbättringar som databasleverantören eller operativsystemet släpper för att fixa eller undvika sårbarheter. Det är viktigt att hålla ditt system så uppdaterat som möjligt genom att installera patchar och säkerhetsuppgraderingar.

Övervakning

För att veta statusen för dina system måste du ha ett bra övervakningssystem på plats. Detta kan vara användbart för att hitta säkerhetsproblem eller till och med för att undvika dem.

För detta är ClusterControl ett bra alternativ eftersom det är ett hanterings- och övervakningssystem som hjälper dig att distribuera, hantera, övervaka och skala dina databaser från ett användarvänligt gränssnitt. Den har stöd för de bästa databasteknologierna med öppen källkod och du kan automatisera många av de databasuppgifter du måste utföra regelbundet som att lägga till och skala nya noder, köra säkerhetskopieringar och återställningar och mer.

ClusterControl låter dig övervaka dina servrar i realtid med en fördefinierad uppsättning instrumentpaneler för att analysera några av de vanligaste mätvärdena.

Det låter dig anpassa de grafer som är tillgängliga i klustret, och du kan aktivera den agentbaserade övervakningen för att generera mer detaljerade instrumentpaneler.

Du kan också skapa varningar som informerar dig om händelser i ditt kluster, eller integrera med olika tjänster som PagerDuty eller Slack.

I sektionen för frågeövervakare kan du hitta de vanligaste frågorna, de löpande frågorna, frågeutvikelserna och frågestatistiken för att övervaka din databastrafik.

Med dessa funktioner kan du se hur din PostgreSQL-databas går.

Slutsats

De punkter som nämns ovan hjälper dig att täppa till sårbarhetsklyftan i din PostgreSQL-databas, men som vi nämnde finns det alltid en risk att bli hackad.

Dessutom bör du ha ett bra övervakningssystem som ClusterControl, och regelbundet köra några säkerhetsskanningsverktyg som letar efter sårbarheter som Nessus för att minimera säkerhetsriskerna ännu mer.


  1. MariaDB 10.6 och NextCloud:COMPRESSED Row är skrivskyddad som standard

  2. hur man får rowNum-liknande kolumn i sqlite IPHONE

  3. Vad gör Statement.setFetchSize(nSize)-metoden egentligen i SQL Server JDBC-drivrutinen?

  4. ScaleGrid nu tillgängligt i Sydney AWS-regionen