Data er et kritisk aktiv for enhver organisation, og dårligt sikrede databaser er alt for ofte skyld i sikkerhedsbrud. Denne artikel beskriver bedste praksis for SQL-serversikkerhed samt væsentlige sikkerhedsovervejelser for at beskytte dine databaser mod ondsindede angreb.
Datasikkerhed består af tre væsentlige søjler – fortrolighed, integritet og tilgængelighed (CIA) og omhandler specifikke processer for at beskytte data mod forsætlig og utilsigtet adgang. Lad os nedbryde de forskellige områder og trin, der skal tages, når vi nærmer os SQL Server-sikkerhed, en af de mest populære relationsdatabaser i brug i dag.
Bedste praksis for SQL Server-sikkerhed
1. Sørg for den fysiske sikkerhed for din SQL Server
Når det kommer til SQL Server-sikkerhed, kan fysisk sikkerhed ikke overses. Fysisk sikkerhed henviser til begrænsning af uautoriseret adgang til datacentre eller andre fysiske serverkomponenter. For eksempel kan du implementere et aflåst rum med begrænset adgang ved hjælp af et smart card, fingeraftryk eller ansigtsgenkendelse. Du kan også konfigurere et begrænset netværkssegment til SQL Server.
Datacentre huser en organisations infrastruktur såsom routere, switches, servere, firewalls og lagerenheder. Fysisk sikkerhed handler om at beskytte hardware, software og netværket mod enhver uautoriseret adgang eller naturkatastrofer. Det kan involvere følgende områder:
- Sikring af lokaler og udstyrsadgang kun for autoriserede personer
- Vedligeholdelse af adgangskontrolsystemer
- 24x7x365 årvågenhed ved hjælp af sikkerhedsvagter på stedet eller CCTV-overvågning
- Uninterruptible Power Supply (UPS)
- At have et brandalarmsystem og et aspirerende røgdetektionssystem
- At have et aktivt vandlækagedetektorpanel
- Gnaverafvisende systemer
- Brandslukningssystemer
- Kontrol og overvågning af temperatur og fugtighed
- Periodisk hardwarevedligeholdelse
2. Beskyt dit operativsystem
SQL Server er installeret oven på et eksisterende operativsystem såsom Windows eller Linux. Derfor spiller operativsystemsikkerhed en afgørende rolle i SQL Server-sikkerhed. Nedenfor er nogle anbefalinger til beskyttelse af dit operativsystem:
- Anvend almindelige sikkerhedsrettelser og servicepakker til operativsystemet
- Definer en politik for programrettelser til operativsystemet, der anvender programrettelser på lavere miljøer efterfulgt af programrettelser til produktion
- Brug altid stabile og understøttede produktoperativsystemversioner. For eksempel stoppede Microsoft support til Windows Server 2003, derfor bør du ikke bruge det til databasehosting
- Tillad ikke internetadgang på dine databaseservere
- Du bør afinstallere, stoppe eller deaktivere ubrugte applikationer og drev for at sikre færre muligheder for potentielle angreb
- Implementer en firewall med begrænset adgang til databaseservere, så kun applikationsservere, der kræver adgang til databaseserveren, skal have lov til at sende trafik fra firewallene
- Åbn specifikke porte i firewallen. For eksempel kører SQL Server som standard på port 1433. Derfor kan du tillade TCP-port 1433 og 3389 for ekstern serveradgang, hvis ingen anden applikation kører på serveren. Tilsvarende bruger analysetjenesten standardport 2383 som standardport. For en komplet liste over porte i SQL Server, se denne dokumentation om porte, der bruges af SQL Server. Du kan også bruge SSL- eller TLS-certifikater til at sikre adgang til SQL Server. Disse certifikater kan kryptere dataoverførsel mellem SQL Server og klientapplikationer. SQL Server-konfiguration er påkrævet for et selvsigneret certifikat eller certifikatet udstedt af certifikatmyndigheden (CA). Du kan se artiklen: Sådan indstiller og bruger du krypterede SQL Server-forbindelser for flere detaljer.
- Udnyt muligheden for udvidet beskyttelse til godkendelse for at forhindre et godkendelsesrelæangreb ved hjælp af tjenestebinding og kanalbinding. For at aktivere udvidet beskyttelse skal du gå til SQL Server Configuration Manager, udvide skærmen, højreklikke på Protocols og derefter gå til Advanced, Extended Protection. Bemærk, at dette som standard er slået fra.
På samme måde kan du tvinge den krypterede forbindelse til SQL Server ved at bruge følgende mulighed.
Du kan også henvise til udvidet beskyttelse for at få flere oplysninger.
3. Reducer dit overfladeareal
SQL Server-overfladearealet består af databasemotorfunktioner, der giver yderligere funktionalitet såsom afsendelse af e-mails. Disse komponenter kan være et potentielt mål for at få adgang til SQL Server for ondsindede aktiviteter. Derfor bør du deaktivere den komponent og funktioner i SQL Server, som ikke bliver brugt, da dette vil begrænse chancerne for et potentielt angreb. De vigtigste komponenter, som du kan gennemgå og deaktivere, er angivet nedenfor.
- Scan efter opstartsprocedurer
- OLE-automatiseringsprocedurer
- CLR aktiveret
- Ejerskabskæde på tværs af DB
- xp_cmdshell
- Database Mail XP'er
Du kan se denne artikel for detaljerede oplysninger om serverkonfigurationsmuligheder.
4. Konfigurer en server til at lytte på en anden port
Microsoft SQL Server bruger standardport 1433 til alle databaseforbindelser. Det er en almindelig sikkerhedsrisiko i mange databasemiljøer, fordi databaseprofessionelle typisk ikke ændrer standardporten. Det er en velkendt port, og ubudne gæster kan benytte denne mulighed for at få adgang til SQL Server. Derfor bør du bruge en ikke-standardport for at hærde din SQL Server-sikkerhed. Du kan ændre dette ved hjælp af SQL Server Configuration Manager.
5. Juster SQL Server-godkendelse
Beskyttelsen af dine data afhænger af evnen til at autentificere adgang til specifikke data. SQL Server giver to muligheder for databasegodkendelse.
- Windows-godkendelse
- Windows- og SQL-godkendelse (blandet tilstand)
For at bekræfte servergodkendelsesmodellen skal du højreklikke på SQL Server-forekomsten og navigere til Sikkerhed.
Windows-godkendelsen bruger Active Directory-konti til godkendelser. Du kan have en centraliseret politikkontrol for adgangskodekompleksitet, adgangskodeudløb, kontolåsning og aktive biblioteksgrupper i det aktive bibliotek. Derfor bør du bruge Windows-godkendelse i stedet for SQL Server-godkendelse. Her opretter brugeren forbindelse ved hjælp af en Windows-konto, og SQL Server validerer legitimationsoplysningerne ved hjælp af Windows principal-token. Den bruger Kerberos-sikkerhedsprotokollen til godkendelser. Se godkendelsestilstand for flere detaljer.
Men hvis du skal bruge SQL Server-login, kan du stadig håndhæve adgangskodepolitikken som fremhævet nedenfor.
6. Husk tjenestekontotilladelser
SQL Services bruger en Windows-konto til at køre sine tjenester. Du bør ikke bruge de højtprivilegerede, indbyggede konti såsom netværkstjeneste eller lokalt system. Tilsvarende bør du for en domænetjenestekonto tildele rolleegnede privilegier.
Derfor vil jeg anbefale at henvise til konfiguration af Windows-tjenestekonti og tilladelser for mere detaljerede oplysninger om SQL Server-tjenestekontitilladelser.
7. Anvend SQL Server-patching i produktionen
Microsoft udgiver almindelige servicepakker (SQL Server 2016 eller tidligere) og kumulative pakker (SQL Server 2017 og frem) til at løse kendte problemer og sikkerhedsproblemer. Derfor bør du altid planlægge at implementere SQL Server-patching på produktionsforekomsterne. Anvend dog ikke programrettelser direkte på produktionsforekomster. Anvend dem altid først i testmiljøet, valider og planlæg for produktionsimplementering.
Du kan se de seneste opdateringer til Microsoft SQL Server for at finde detaljer om de seneste servicepakker og kumulative pakker.
8. Sikre dine sikkerhedskopier
Når det kommer til SQL Server-sikkerhed, er det vigtigt at sikre dine sikkerhedskopier. Databaseprofessionelle overvejer typisk ikke alle kravene til sikring af databasesikkerhedskopier. Database backup er processen med at skabe en kopi af en databases driftstilstand, arkitektur og lagrede data. Derfor er det lige så vigtigt at beskytte det. Det betyder at begrænse adgangen til backup-filer og kryptere dem korrekt. Når det kommer til at sikre sikkerhedskopier, er her et par påmindelser.
- Giv ikke alle rettigheder til sikkerhedskopieringsmappen til at oprette, se, ændre og slette sikkerhedskopieringsfiler
- Brug database backups med kryptering; Se denne artikel om sikkerhedskopikryptering for flere detaljer
9. Husk SQL Server-kryptering og datamaskeringsteknikker
Et nøgleområde i SQL Server-sikkerhed er kryptering. Du kan bruge forskellige krypteringsmekanismer til at beskytte følsomme data i din SQL Server-database. De forskellige krypteringsmuligheder er som følger.
- Altid krypteret:Den altid krypterede teknik hjælper med at kryptere følsomme data inde i klientapplikationerne. Den altid krypteret aktiverede driver krypterer og dekrypterer automatisk følsomme data i klientapplikationerne. Krypteringsnøglerne afsløres aldrig for SQL Server-databasemotoren. Det beskytter fortrolige data.
- Transparent datakryptering (TDE):TDE krypterer data i hvile. Det hjælper med at sikre datafilerne, logfilerne og backupfilerne.
- Kryptering på kolonneniveau:Kryptering på kolonneniveau hjælper med at kryptere specifikke kolonnedata, f.eks. kreditkortnumre og personnumre.
- Statisk datamaskering:Statisk datamaskering erstatter de følsomme data ved hjælp af de definerede datatransformationsregler.
- Dynamisk datamaskering:Dynamisk datamaskering hjælper med at begrænse eksponering af følsomme data til ikke-privilegerede brugere.
- Sikkerhed på rækkeniveau:Sikkerheden på rækkeniveau begrænser datarækkeadgangen.
10. Gør systemadministratorens adgangskode kompliceret
Hvis du bruger SQL-godkendelse, opretter det en login-SA med sysadmin-tilladelserne. Gør følgende for at beskytte din SQL Server.
- Omdøb login med navnet SA til et andet navn
- Deaktiver kontoen, hvis du ikke planlægger at bruge den
- Brug en kompleks adgangskode
- Tillad ikke applikationer at bruge SA-kontoen i forbindelsesstrengene
11. Revidere database logins
Revision bliver ofte overset, når det kommer til SQL Server-sikkerhed. Du bør udføre regelmæssig SQL Server-revision for mislykkede logins. Du kan bruge standardlogin-revisionsmekanismen til at gennemgå regnskabet. Antag for eksempel, at enhver bruger forsøger at oprette forbindelse til SQL Server med en konto med højt privilegium. I så fald kan du se login-fejlen og indgående anmodning (klient) IP-adresse. Dette kan hjælpe dig med at fange og eliminere mistænkelig aktivitet.
Du kan bruge de udvidede hændelser, SQL-sporing, ændringsdatafangst, triggere (DDL, DML eller Logon), database- eller server-niveau revisionsspecifikationer til SQL Server-audit.
12. Vær opmærksom på server-niveau og databasetilladelser
Databaseprofessionelle bør være forsigtige, når de tildeler tilladelser på serverniveau eller databaseniveau. Nogle gange ser vi, at udviklere får sysadmin på serverniveau eller databaseejerens tilladelser på databaseniveau. Dette er de højeste tilladelser, en bruger kan have på henholdsvis et instans- eller databaseniveau.
- Se faste roller på serverniveau for at forstå faste roller på serverniveau og deres muligheder.
- Se roller på databaseniveau for bedre at forstå faste roller på databaseniveau.
13. Sluk SQL Server-browsertjenesten
SQL Server bruger browsertjenesten til den navngivne instans. Den lytter til alle indkommende anmodninger om SQL Server-forbindelser. Den bruger UDP-port 1434 og svarer på anmodningerne med det TCP/IP-portnummer, der kræves for at oprette forbindelse til SQL Server. Derfor kan du slå browsertjenesten fra og udtrykkeligt definere portnummeret i applikationsstrengene. Dette undgår portnummereksponering for de indkommende forbindelsesanmodninger og hjælper med sikkerheden af SQL Server.
Du kan se artiklen Sådan fungerer SQL Server-browseren for bedre at forstå SQL Server-browsertjenesten.
Yderligere SQL Server-sikkerhedsovervejelser
Som skitseret er SQL Server-sikkerhed en løbende proces med forskellige faktorer og trin. Du skal regelmæssigt gense SQL Server-forekomster, sikkerhedspolitikker og opdatere dem rutinemæssigt på både dit operativsystem og SQL Server-niveau. Ved at anvende disse bedste praksisser regelmæssigt hjælper du med at skabe en mere sikker og ikke-forstyrrende databasetjeneste for din virksomhed.