Gegevens zijn van cruciaal belang voor elke organisatie en slecht beveiligde databases zijn te vaak verantwoordelijk voor beveiligingsinbreuken. In dit artikel worden de beste praktijken voor SQL-serverbeveiliging beschreven, evenals essentiële beveiligingsoverwegingen om uw databases te beschermen tegen kwaadaardige aanvallen.
Gegevensbeveiliging bestaat uit drie essentiële pijlers - vertrouwelijkheid, integriteit en beschikbaarheid (CIA) en behandelt specifieke processen om gegevens te beschermen tegen opzettelijke en onopzettelijke toegang. Laten we de verschillende gebieden en stappen uitsplitsen die moeten worden genomen bij het benaderen van SQL Server-beveiliging, een van de meest populaire relationele databases die momenteel in gebruik zijn.
Beste praktijken voor SQL Server-beveiliging
1. Zorg voor de fysieke beveiliging van uw SQL Server
Als het om SQL Server-beveiliging gaat, mag fysieke beveiliging niet over het hoofd worden gezien. Fysieke beveiliging verwijst naar het beperken van ongeautoriseerde toegang tot datacenters of andere fysieke servercomponenten. U kunt bijvoorbeeld een afgesloten ruimte met beperkte toegang realiseren met een smartcard, vingerafdruk of gezichtsherkenning. U kunt ook een beperkt netwerksegment configureren voor SQL Server.
Datacenters bevatten de infrastructuur van een organisatie, zoals routers, switches, servers, firewalls en opslagapparaten. Fysieke beveiliging heeft betrekking op het beschermen van hardware, software en het netwerk tegen ongeoorloofde toegang of natuurrampen. Het kan betrekking hebben op de volgende gebieden:
- De toegang tot het terrein en de apparatuur alleen beveiligen voor geautoriseerd personeel
- Toegangscontrolesystemen onderhouden
- 24x7x365 waakzaamheid met behulp van bewakers ter plaatse of CCTV-bewaking
- Ononderbroken stroomvoorziening (UPS)
- Een brandalarmsysteem en een rookaanzuigsysteem hebben
- Een actief paneel voor waterlekkagedetectie hebben
- Knaagdierwerende systemen
- Brandblussystemen
- Temperatuur en vochtigheid regelen en bewaken
- Periodiek hardware-onderhoud
2. Bescherm uw besturingssysteem
SQL Server wordt bovenop een bestaand besturingssysteem zoals Windows of Linux geïnstalleerd. Daarom speelt de beveiliging van het besturingssysteem een cruciale rol in de beveiliging van SQL Server. Hieronder vindt u enkele aanbevelingen om uw besturingssysteem te beschermen:
- Pas regelmatige beveiligingspatches en servicepacks voor het besturingssysteem toe
- Definieer een patchbeleid voor het besturingssysteem dat patches toepast op lagere omgevingen, gevolgd door productiepatching
- Gebruik altijd stabiele en ondersteunde versies van het besturingssysteem van het product. Microsoft heeft bijvoorbeeld de ondersteuning voor Windows Server 2003 stopgezet, daarom moet u het niet gebruiken voor databasehosting
- Sta geen internettoegang toe op uw databaseservers
- U moet ongebruikte applicaties en schijven verwijderen, stoppen of uitschakelen om te zorgen voor minder mogelijkheden voor mogelijke aanvallen
- Implementeer een firewall met beperkte toegang tot databaseservers, zodat alleen applicatieservers die toegang tot de databaseserver nodig hebben, verkeer van de firewalls mogen doorlaten
- Open specifieke poorten in de firewall. SQL Server wordt bijvoorbeeld standaard uitgevoerd op poort 1433. Daarom kunt u TCP-poort 1433 en 3389 toestaan voor externe servertoegang als er geen andere toepassing op de server wordt uitgevoerd. Evenzo gebruikt de analyseservice standaardpoort 2383 als standaardpoort. Raadpleeg deze documentatie over poorten die door SQL Server worden gebruikt voor een volledige lijst met poorten in SQL Server. U kunt ook SSL- of TLS-certificaten gebruiken om de toegang tot SQL Server te beveiligen. Deze certificaten kunnen gegevensoverdracht tussen SQL Server en clienttoepassingen versleutelen. SQL Server-configuratie is vereist voor een zelfondertekend certificaat of het certificaat dat is uitgegeven door de certificeringsinstantie (CA). Raadpleeg het artikel:Versleutelde SQL Server-verbindingen instellen en gebruiken voor meer informatie.
- Maak gebruik van de optie Uitgebreide beveiliging voor verificatie om een verificatierelay-aanval te voorkomen met behulp van de servicebinding en kanaalbinding. Om uitgebreide bescherming in te schakelen, gaat u naar de SQL Server Configuration Manager, vouwt u het scherm uit, klikt u met de rechtermuisknop op Protocollen en gaat u vervolgens naar Geavanceerd, Uitgebreide bescherming. Let op, dit is standaard uitgeschakeld.
Op dezelfde manier kunt u de versleutelde verbinding met SQL Server forceren met de volgende optie.
U kunt ook de uitgebreide bescherming raadplegen voor meer informatie.
3. Verklein je oppervlakte
Het oppervlak van SQL Server bestaat uit database-engine-functies die extra functionaliteit bieden, zoals het verzenden van e-mails. Deze componenten kunnen een potentieel doelwit zijn om toegang te krijgen tot SQL Server voor kwaadaardige activiteiten. Schakel daarom het onderdeel en de functies in SQL Server die niet worden gebruikt uit, omdat dit de kans op een mogelijke aanval beperkt. De belangrijkste componenten die u kunt bekijken en uitschakelen staan hieronder vermeld.
- Scannen op opstartprocedures
- OLE-automatiseringsprocedures
- CLR ingeschakeld
- Cross-DB eigendomsketens
- xp_cmdshell
- Database Mail XP's
U kunt dit artikel raadplegen voor gedetailleerde informatie over de serverconfiguratie-opties.
4. Configureer een server om op een andere poort te luisteren
Microsoft SQL Server gebruikt de standaardpoort 1433 voor alle databaseverbindingen. Het is een veelvoorkomend beveiligingsrisico in veel databaseomgevingen, omdat databaseprofessionals de standaardpoort doorgaans niet wijzigen. Het is een bekende poort en indringers kunnen deze mogelijkheid benutten om toegang te krijgen tot SQL Server. Daarom moet u een niet-standaardpoort gebruiken om uw SQL Server-beveiliging te versterken. U kunt dit wijzigen met behulp van de SQL Server Configuration Manager.
5. SQL Server-authenticatie aanpassen
De bescherming van uw gegevens hangt af van de mogelijkheid om toegang tot specifieke gegevens te verifiëren. SQL Server biedt twee opties voor databaseverificatie.
- Windows-verificatie
- Windows- en SQL-authenticatie (gemengde modus)
Om het serververificatiemodel te verifiëren, klikt u met de rechtermuisknop op de SQL Server-instantie en navigeert u naar Beveiliging.
De Windows-verificatie gebruikt Active Directory-accounts voor verificaties. U kunt een gecentraliseerde beleidscontrole hebben voor wachtwoordcomplexiteit, wachtwoordverloop, accountvergrendeling en active directory-groepen in de active directory. Daarom moet u Windows-verificatie gebruiken in plaats van SQL Server-verificatie. Hier maakt de gebruiker verbinding met behulp van een Windows-account, en SQL Server valideert de referenties met behulp van het Windows-principal-token. Het gebruikt het Kerberos-beveiligingsprotocol voor authenticatie. Raadpleeg de verificatiemodus voor meer informatie.
Als u echter de SQL Server-aanmeldingen moet gebruiken, kunt u nog steeds het wachtwoordbeleid afdwingen, zoals hieronder aangegeven.
6. Serviceaccountrechten onthouden
SQL Services gebruikt een Windows-account om zijn services uit te voeren. U mag geen gebruik maken van de hoogbevoorrechte, ingebouwde accounts zoals Netwerkservice of Lokaal systeem. Op dezelfde manier moet u voor een domeinserviceaccount rolspecifieke rechten toewijzen.
Daarom raad ik u aan te verwijzen naar Windows-serviceaccounts en -machtigingen configureren voor meer informatie over machtigingen voor SQL Server-serviceaccounts.
7. SQL Server-patching toepassen in productie
Microsoft brengt reguliere servicepacks (SQL Server 2016 of eerder) en cumulatieve packs (SQL Server 2017 en later) uit voor het oplossen van bekende problemen en beveiligingsproblemen. Daarom moet u altijd plannen om SQL Server-patching op de productie-instances te implementeren. Pas patches echter niet rechtstreeks toe op productie-instanties. Pas ze altijd eerst toe in de testomgeving, valideer en plan voor productie-implementatie.
U kunt de nieuwste updates voor Microsoft SQL Server raadplegen voor details over de nieuwste servicepacks en cumulatieve packs.
8. Beveilig uw back-ups
Als het gaat om SQL Server-beveiliging, is het beveiligen van uw back-ups van cruciaal belang. Databaseprofessionals houden doorgaans niet rekening met alle vereisten voor het beveiligen van databaseback-ups. Databaseback-up is het proces waarbij een kopie wordt gemaakt van de operationele status, architectuur en opgeslagen gegevens van een database. Daarom is het even belangrijk om het te beschermen. Het betekent de toegang tot back-upbestanden beperken en ze correct versleutelen. Als het gaat om het beveiligen van back-ups, volgen hier een paar herinneringen.
- Geef niet iedereen rechten op de back-upmap om back-upbestanden te maken, bekijken, wijzigen en verwijderen
- Gebruik databaseback-ups met versleuteling; raadpleeg dit artikel over back-upversleuteling voor meer informatie
9. Onthoud SQL Server-codering en technieken voor gegevensmaskering
Een belangrijk gebied in SQL Server-beveiliging is codering. U kunt verschillende versleutelingsmechanismen gebruiken om gevoelige gegevens in uw SQL Server-database te beschermen. De verschillende coderingsopties zijn als volgt.
- Altijd versleuteld:de altijd versleutelde techniek helpt bij het versleutelen van gevoelige gegevens in de clienttoepassingen. Het altijd versleutelde stuurprogramma versleutelt en ontsleutelt automatisch gevoelige gegevens in de clienttoepassingen. De coderingssleutels worden nooit onthuld aan de SQL Server-database-engine. Het beschermt vertrouwelijke gegevens.
- Transparante gegevensversleuteling (TDE):de TDE versleutelt gegevens in rust. Het helpt om de gegevensbestanden, logbestanden en back-upbestanden te beveiligen.
- Versleuteling op kolomniveau:versleuteling op kolomniveau helpt bij het versleutelen van specifieke kolomgegevens, bijvoorbeeld creditcardnummers en burgerservicenummers.
- Statische gegevensmaskering:Statische gegevensmaskering vervangt de gevoelige gegevens met behulp van de gedefinieerde gegevenstransformatieregels.
- Dynamische gegevensmaskering:dynamische gegevensmaskering helpt de blootstelling van gevoelige gegevens aan niet-bevoorrechte gebruikers te beperken.
- Beveiliging op rijniveau:de beveiliging op rijniveau beperkt de toegang tot gegevensrijen.
10. Maak het wachtwoord van de systeembeheerder ingewikkeld
Als u SQL-authenticatie gebruikt, wordt een login-SA gemaakt met de sysadmin-machtigingen. Om uw SQL Server te beveiligen, doet u het volgende.
- Hernoem de login met de naam SA naar een andere naam
- Schakel het account uit als u niet van plan bent het te gebruiken
- Gebruik een complex wachtwoord
- Sta toepassingen niet toe om het SA-account in de verbindingsreeksen te gebruiken
11. Audit database logins
Auditing wordt vaak over het hoofd gezien als het gaat om SQL Server-beveiliging. U moet regelmatig SQL Server-audits uitvoeren voor mislukte aanmeldingen. U kunt het standaard controlemechanisme voor inloggen gebruiken om de accounts te controleren. Stel bijvoorbeeld dat een gebruiker probeert verbinding te maken met SQL Server met een account met hoge bevoegdheden. In dat geval kunt u de inlogfout en het inkomende verzoek (client) IP-adres zien. Dit kan u helpen verdachte activiteiten vast te leggen en te elimineren.
U kunt de uitgebreide gebeurtenissen, SQL-tracering, vastlegging van wijzigingsgegevens, triggers (DDL, DML of aanmelding), auditspecificaties op database- of serverniveau gebruiken voor de SQL Server-audit.
12. Houd rekening met machtigingen op serverniveau en database
Databaseprofessionals moeten voorzichtig zijn bij het toewijzen van machtigingen op server- of databaseniveau. Soms zien we dat ontwikkelaars sysadmin krijgen op serverniveau of de machtigingen van de database-eigenaar op databaseniveau. Dit zijn de hoogste rechten die een gebruiker kan hebben op respectievelijk instantie- of databaseniveau.
- Raadpleeg vaste rollen op serverniveau om de vaste rollen op serverniveau en hun mogelijkheden te begrijpen.
- Raadpleeg rollen op databaseniveau voor een beter begrip van vaste rollen op databaseniveau.
13. Schakel de SQL Server-browserservice uit
SQL Server gebruikt de browserservice voor het genoemde exemplaar. Het luistert naar alle inkomende verzoeken voor SQL Server-verbindingen. Het gebruikt UDP-poort 1434 en reageert op de verzoeken met het TCP/IP-poortnummer dat nodig is om verbinding te maken met SQL Server. Daarom kunt u de browserservice uitschakelen en het poortnummer expliciet definiëren in de toepassingsreeksen. Dit voorkomt blootstelling van poortnummers aan de inkomende verbindingsverzoeken en helpt bij de beveiliging van SQL Server.
Raadpleeg het artikel Hoe de SQL Server-browser werkt om de SQL Server-browserservice beter te begrijpen.
Verdere beveiligingsoverwegingen voor SQL Server
Zoals uiteengezet, is SQL Server-beveiliging een continu proces met verschillende factoren en stappen. U moet SQL Server-instanties en beveiligingsbeleid regelmatig opnieuw bekijken en deze routinematig bijwerken op zowel uw besturingssysteem als SQL Server-niveau. Door deze best practices regelmatig toe te passen, helpt u een veiligere en niet-storende databaseservice voor uw bedrijf te creëren.