Data är en viktig tillgång för varje organisation, och dåligt säkrade databaser är alltför ofta skyldiga till säkerhetsöverträdelser. Den här artikeln beskriver bästa metoder för SQL-serversäkerhet, samt viktiga säkerhetsöverväganden för att skydda dina databaser från skadliga attacker.
Datasäkerhet består av tre viktiga pelare – konfidentialitet, integritet och tillgänglighet (CIA) och handlar om specifika processer för att skydda data från avsiktlig och oavsiktlig åtkomst. Låt oss dela upp de olika områdena och stegen att ta när vi närmar oss SQL Server-säkerhet, en av de mest populära relationsdatabaserna som används idag.
Bästa metoder för SQL Server-säkerhet
1. Säkerställ den fysiska säkerheten för din SQL Server
När det kommer till SQL Server-säkerhet kan fysisk säkerhet inte förbises. Fysisk säkerhet avser att begränsa obehörig åtkomst till datacenter eller andra fysiska serverkomponenter. Du kan till exempel implementera ett låst rum med begränsad åtkomst med hjälp av ett smartkort, fingeravtryck eller ansiktsigenkänning. Du kan också konfigurera ett begränsat nätverkssegment för SQL Server.
Datacenter innehåller en organisations infrastruktur som routrar, switchar, servrar, brandväggar och lagringsenheter. Fysisk säkerhet handlar om att skydda hårdvara, mjukvara och nätverk från all obehörig åtkomst eller naturkatastrofer. Det kan involvera följande områden:
- Säkring av lokaler och utrustning endast för behöriga personer
- Underhålla åtkomstkontrollsystem
- vaktsamhet dygnet runt med hjälp av säkerhetsvakter på plats eller CCTV-övervakning
- Uninterruptible power supply (UPS)
- Att ha ett brandlarmssystem och ett aspirerande rökdetektionssystem
- Att ha en aktiv panel för vattenläckagedetektor
- Gnagaravvisande system
- Brandsläckningssystem
- Kontrollera och övervaka temperatur och luftfuktighet
- Periodisk maskinvaruunderhåll
2. Skydda ditt operativsystem
SQL Server installeras ovanpå ett befintligt operativsystem som Windows eller Linux. Därför spelar säkerhet för operativsystemet en viktig roll i SQL Server-säkerhet. Nedan följer några rekommendationer för att skydda ditt operativsystem:
- Använd vanliga säkerhetskorrigeringar och servicepack för operativsystemet
- Definiera en korrigeringspolicy för operativsystem som tillämpar korrigeringar i lägre miljöer följt av produktionskorrigering
- Använd alltid stabila och produktoperativsystemversioner som stöds. Till exempel har Microsoft upphört med stödet för Windows Server 2003, därför bör du inte använda det för databasvärd
- Tillåt inte internetåtkomst på dina databasservrar
- Du bör avinstallera, stoppa eller inaktivera oanvända applikationer och enheter för att säkerställa färre möjligheter för potentiella attacker
- Implementera en brandvägg med begränsad åtkomst till databasservrar så att endast applikationsservrar som kräver åtkomst till databasservern ska tillåtas skicka trafik från brandväggarna
- Öppna specifika portar i brandväggen. Som standard körs SQL Server till exempel på port 1433. Därför kan du tillåta TCP-port 1433 och 3389 för fjärrserveråtkomst om inget annat program körs på servern. På samma sätt använder analystjänsten standardport 2383 som standardport. För en fullständig lista över portar i SQL Server, se den här dokumentationen om portar som används av SQL Server. Du kan också använda SSL- eller TLS-certifikat för att säkra åtkomsten till SQL Server. Dessa certifikat kan kryptera dataöverföring mellan SQL Server och klientapplikationer. SQL Server-konfiguration krävs för ett självsignerat certifikat eller certifikatet utfärdat av certifikatutfärdaren (CA). Du kan se artikeln: Hur du ställer in och använder krypterade SQL Server-anslutningar för mer information.
- Utnyttja alternativet Utökat skydd för autentisering för att förhindra en autentiseringsreläattack med hjälp av tjänstbindning och kanalbindning. För att aktivera utökat skydd, gå till SQL Server Configuration Manager, expandera skärmen, högerklicka på Protocols och gå sedan till Advanced, Extended Protection. Observera att detta är avstängt som standard.
På samma sätt kan du tvinga fram den krypterade anslutningen till SQL Server med följande alternativ.
Du kan också hänvisa till utökat skydd för mer information.
3. Minska din yta
SQL Server-ytan består av databasmotorfunktioner som ger ytterligare funktioner som att skicka e-post. Dessa komponenter kan vara ett potentiellt mål för att få åtkomst till SQL Server för skadliga aktiviteter. Därför bör du inaktivera komponenten och funktionerna i SQL Server som inte används, eftersom detta kommer att begränsa chanserna för en potentiell attack. De viktigaste komponenterna som du kan granska och inaktivera listas nedan.
- Sök efter startprocesser
- OLE-automatiseringsprocedurer
- CLR aktiverat
- Kedja ägarskap över hela databasen
- xp_cmdshell
- Databas Mail XPs
Du kan läsa den här artikeln för detaljerad information om serverkonfigurationsalternativ.
4. Konfigurera en server för att lyssna på en annan port
Microsoft SQL Server använder standardporten 1433 för alla databasanslutningar. Det är en vanlig säkerhetsrisk i många databasmiljöer eftersom databasproffs vanligtvis inte ändrar standardporten. Det är en välkänd port och inkräktare kan utnyttja denna möjlighet för att komma åt SQL Server. Därför bör du använda en icke-standardport för att förstärka din SQL Server-säkerhet. Du kan ändra detta med SQL Server Configuration Manager.
5. Justera SQL Server-autentisering
Skyddet av dina data beror på förmågan att autentisera åtkomst till specifik data. SQL Server erbjuder två alternativ för databasautentisering.
- Windows-autentisering
- Windows- och SQL-autentisering (blandat läge)
För att verifiera serverautentiseringsmodellen, högerklicka på SQL Server-instansen och navigera till Säkerhet.
Windows-autentiseringen använder Active Directory-konton för autentiseringar. Du kan ha en centraliserad policykontroll för lösenordskomplexitet, lösenordsutgång, kontolåsning och aktiva kataloggrupper i den aktiva katalogen. Därför bör du använda Windows-autentisering istället för SQL Server-autentisering. Här ansluter användaren med ett Windows-konto och SQL Server validerar referenserna med hjälp av Windows principal-token. Den använder Kerberos säkerhetsprotokoll för autentiseringar. Se autentiseringsläge för mer information.
Men om du behöver använda SQL Server-inloggningarna kan du fortfarande tillämpa lösenordspolicyn som markerats nedan.
6. Kom ihåg tjänstkontobehörigheter
SQL Services använder ett Windows-konto för att köra sina tjänster. Du bör inte använda högprivilegierade, inbyggda konton som nätverkstjänst eller lokalt system. På samma sätt, för ett domäntjänstkonto, bör du tilldela roll-lämpliga privilegier.
Därför rekommenderar jag att du hänvisar till konfigurera Windows-tjänstkonton och behörigheter för mer information om behörigheter för SQL Server-tjänstkonton.
7. Tillämpa SQL Server-patchning i produktionen
Microsoft släpper vanliga servicepack (SQL Server 2016 eller tidigare) och kumulativa paket (SQL Server 2017 och framåt) för att fixa kända problem och säkerhetsproblem. Därför bör du alltid planera att implementera SQL Server-patchning på produktionsinstanserna. Applicera dock inte korrigeringar direkt på produktionsinstanser. Använd dem alltid först i testmiljön, validera och planera för produktionsinstallation.
Du kan se de senaste uppdateringarna för Microsoft SQL Server för att hitta information om de senaste Service Packs och kumulativa packs.
8. Säkra dina säkerhetskopior
När det kommer till SQL Server-säkerhet är det viktigt att säkra dina säkerhetskopior. Databasproffs överväger vanligtvis inte alla krav för att säkra databassäkerhetskopior. Databassäkerhetskopiering är processen att skapa en kopia av drifttillståndet, arkitekturen och lagrade data i en databas. Därför är det lika viktigt att skydda den. Det innebär att begränsa åtkomsten till säkerhetskopior och kryptera dem ordentligt. När det gäller att säkra säkerhetskopior, här är några påminnelser.
- Ge inte alla rättigheter på säkerhetskopieringsmappen att skapa, visa, ändra och ta bort säkerhetskopior
- Använd databassäkerhetskopior med kryptering; Se den här artikeln om säkerhetskopieringskryptering för mer information
9. Kom ihåg SQL Server-kryptering och datamaskeringstekniker
Ett nyckelområde i SQL Server-säkerhet är kryptering. Du kan använda olika krypteringsmekanismer för att skydda känsliga data i din SQL Server-databas. De olika krypteringsalternativen är följande.
- Alltid krypterad:Den alltid krypterade tekniken hjälper till att kryptera känslig data inuti klientapplikationerna. Den alltid krypterade-aktiverade drivrutinen krypterar och dekrypterar automatiskt känslig data i klientapplikationerna. Krypteringsnycklarna avslöjas aldrig för SQL Server-databasmotorn. Det skyddar konfidentiell data.
- Transparent datakryptering (TDE):TDE krypterar data i vila. Det hjälper till att säkra datafilerna, loggfilerna och säkerhetskopieringsfilerna.
- Kryptering på kolumnnivå:Kryptering på kolumnnivå hjälper till att kryptera specifika kolumndata, till exempel kreditkortsnummer och personnummer.
- Statisk datamaskering:Statisk datamaskering ersätter känslig data med de definierade datatransformationsreglerna.
- Dynamisk datamaskering:Dynamisk datamaskering hjälper till att begränsa känslig dataexponering för icke-privilegierade användare.
- Säkerhet på radnivå:Säkerheten på radnivå begränsar åtkomsten till datarader.
10. Gör systemadministratörens lösenord komplicerat
Om du använder SQL-autentisering skapar den en inloggnings-SA med sysadmin-behörigheterna. För att skydda din SQL Server, gör följande.
- Byt namn på inloggningen som heter SA till ett annat namn
- Inaktivera kontot om du inte planerar att använda det
- Använd ett komplext lösenord
- Tillåt inte program att använda SA-kontot i anslutningssträngarna
11. Granska databasinloggningar
Revision förbises ofta när det kommer till SQL Server-säkerhet. Du bör göra regelbunden SQL Server-revision för misslyckade inloggningar. Du kan använda standardinloggningsrevisionsmekanismen för att granska kontona. Anta till exempel att någon användare försöker ansluta till SQL Server med ett konto med hög behörighet. I så fall kan du se inloggningsfelet och IP-adressen för inkommande begäran (klient). Detta kan hjälpa dig att fånga och eliminera misstänkt aktivitet.
Du kan använda utökade händelser, SQL-spårning, förändringsdatainsamling, triggers (DDL, DML eller inloggning), databas- eller servernivågranskningsspecifikationer för SQL Server-granskningen.
12. Var uppmärksam på servernivå och databasbehörigheter
Databasproffs bör vara försiktiga när de tilldelar behörigheter på servernivå eller databasnivå. Ibland ser vi att utvecklare får sysadmin på servernivå eller databasägarens behörigheter på databasnivå. Dessa är de högsta behörigheterna en användare kan ha på en instans- respektive databasnivå.
- Se fasta roller på servernivå för att förstå fasta roller på servernivå och deras möjligheter.
- Se roller på databasnivå för att bättre förstå fasta roller på databasnivå.
13. Stäng av webbläsartjänsten SQL Server
SQL Server använder webbläsartjänsten för den namngivna instansen. Den lyssnar på alla inkommande förfrågningar om SQL Server-anslutningar. Den använder UDP-port 1434 och svarar på förfrågningarna med det TCP/IP-portnummer som krävs för att ansluta till SQL Server. Därför kan du stänga av webbläsartjänsten och uttryckligen definiera portnumret i applikationssträngarna. Detta undviker portnummerexponering för inkommande anslutningsförfrågningar och hjälper till med säkerheten för SQL Server.
Du kan läsa artikeln Hur webbläsaren SQL Server fungerar för att bättre förstå webbläsartjänsten SQL Server.
Ytterligare SQL Server-säkerhetsöverväganden
Som beskrivits är SQL Server-säkerhet en pågående process med olika faktorer och steg. Du måste regelbundet besöka SQL Server-instanser, säkerhetspolicyer och uppdatera dem rutinmässigt på både ditt operativsystem och SQL Server-nivå. Genom att tillämpa dessa bästa metoder regelbundet hjälper du till att skapa en säkrare och icke-störande databastjänst för ditt företag.