sql >> Databasteknik >  >> RDS >> Sqlserver

Förstå SQL Server Lockdown till säker databasmiljö

Säkerhet är det största bekymret nuförtiden i alla sektorer. Databassäkerhet är också ett stort bekymmer för alla kunder. SQL Server är designad för att säkra all din data som lagras i databaserna men ibland misslyckas vi med att tillämpa rätt uppsättning konfigurationer och lämnar ett hål i vårt system. Hackare och obehöriga utomjordingar kan använda dessa kryphål för att penetrera ditt system. Dina data kan äventyras eller förtalas, dina systemresurser kan raderas för att skapa ett avbrott för att stoppa dina affärsaktiviteter, dina kunders data kan exponeras för konkurrenter, etc.

SQL-serverlåsning eller -härdning

Hela processen för att säkra din databasmiljö är känd som en databas \ SQL Server-låsning. Jag kommer att beskriva olika parametrar och konfigurationsdetaljer som du kan använda för att säkra din databasmiljö.

Installera endast nödvändiga komponenter

Låt oss börja låsningsmetoder med SQL Server-installationen. SQL Server erbjuder olika komponenter och funktioner som DBA:er väljer för olika krav. Några av dessa komponenter och funktioner ges nedan:

  1. Databasmotor
  2. Rapporteringstjänster
  3. Integrationstjänster
  4. Analysis Services Engine
  5. Aviseringstjänster
  6. Dokumentation och exempel (exempeldatabaser och koder)
  7. Fulltextsökning
  8. Andra funktioner som replikering, maskininlärningstjänster, datakvalitetstjänster etc.

Det är en god praxis att installera endast nödvändiga funktioner eftersom du genom att göra det minskar eller begränsar möjligheterna för ytangrepp. Dessutom kommer du att ha ett lågt utnyttjande av systemresurser.

Installera de senaste uppdateringarna

Se till att uppdatera dina system i tid. Om några nya sårbarheter upptäcks publiceras det i säkerhetsbulletiner av dina produktleverantörer.

Jag pratar inte om att bara uppdatera SQL Server-patchar utan allt som körs på ditt system från operativsystemet till alla andra program som är installerade på din maskin. Använd alltid patchar för att hålla din programvara uppdaterad för att förhindra externa hot eller attacker.

Använd Windows-autentiseringsläge

Välj alltid Windows-autentiseringsläge för användaranslutningar om du inte har några beroenden för att använda SQL Server-autentiseringsläget. Det är säkrare och autentiserar Windows-inloggningen med Windows Active Directory under varje inloggningsförsök. SQL Server har två typer av autentiseringslägen.

  • Windows-autentisering
  • Blandat läge (Windows + SQL Server)

Windows-autentiseringsläge: Detta är ett standardautentiseringsläge för SQL Server. Windows-autentiseringsläge utnyttjar lokala konton, Active Directory-användarkonton och grupper när du beviljar åtkomst till SQL Server. I det här läget kan du som databasadministratör ge domän- eller lokalserveranvändare åtkomst till databasservern utan att skapa och hantera ett separat SQL Server-konto.

Blandat läge: Blandat autentiseringsläge har båda alternativen. Du kan använda Windows-baserad autentisering såväl som SQL Server-inloggningsbaserad autentisering. SQL Server-autentiseringsmekanism är baserad på konton som hanteras inuti SQL Server inklusive lösenordspolicyn. Blandad autentisering kan krävas om du har vissa beroenden för att stödja äldre applikationer.

Du kan följa stegen nedan för att välja eller ändra serverautentiseringsläget:

  1. Starta SQL Server Management Studio och anslut till din målinstans av SQL Server.
  2. I SQL Server Management Studio högerklickar du på SQL Server-instansen och klickar sedan på Egenskaper .
  3. Klicka på Säkerhet sida i den vänstra rutan kan du se båda autentiseringsalternativen i den högra rutan under Serverautentisering sektion. Om du vill säkra din instans, se till att byta till Windows-autentiseringsläget. Du behöver bara klicka på alternativknappen för Windows-autentiseringsläget och sedan klicka på OK för att tillämpa ändringarna.
  1. I dialogrutan SQL Server Management Studio klickar du på OK för att bekräfta behovet av att starta om SQL Server.

Windows-autentiseringsläge är ett säkrare val. Men om autentisering med blandat läge krävs bör du tillhandahålla komplexa lösenord till SQL Server-inloggningar och tillämpa säkerhets-\lockout-policyer för bättre säkerhet. Det rekommenderas också att inaktivera SQL Server sa-kontot om du använder blandat autentiseringsläge. Jag kommer att diskutera detta i nästa avsnitt.

Byt namn på/avaktivera sa-kontot

Login sa skapas som standard när SQL Server installeras, så detta kan vara en av de potentiella anledningarna för angripare att hacka eller ta kontroll över detta konto. Kom ihåg att denna inloggning har systemadministrationsprivilegier så att alla som har åtkomst till det här kontot kan hantera dina databaser och SQL Server-instanser.

Du bör köra kommandot nedan för att inaktivera sa-kontot.

--Disable sa login
USE MASTER
GO
ALTER LOGIN sa DISABLE;
GO

Du kan se dess utförande i bilden nedan.

Innan du byter namn på eller inaktiverar sa-kontot, kontrollera att ett annat konto med administrativa rättigheter finns på SQL Server-instansen.

Ändra standardportar för SQL Server

Vi vet alla att SQL Server använder port 1433 för alla klientförfrågningar och kommunikationer. Eftersom den här konfigurationen är allmän egendom kan hackare rikta in sig på den här konfigurationen för att ansluta till din SQL Server-instans.

Du kan ändra SQL Server-porten genom att följa stegen nedan.

  1. Logga in på din måldator där SQL Server är installerad.
  2. Starta Server Configuration Manager verktyg.
  3. Utöka SQL Server Network Configuration nod från den vänstra rutan och välj Protokoll för att SQL Server-instansen ska konfigureras.
  4. I den högra rutan högerklickar du på protokollnamnet TCP/IP och välj Egenskaper .
  5. I TCP/IP-egenskaper i dialogrutan väljer du IP-adresser flik. Det finns en motsvarande post för varje IP-adress som tilldelats servern.
  6. Rensa värdena för båda TCP Dynamic Ports och TCP-port för varje IP-adress förutom IP-adresserna under IPAll .
  7. I IPAll sektion för varje instans, ange en ny port som du vill att SQL Server ska lyssna på.
  8. Klicka på Använd och starta om SQL Server Services.

Inaktivera SQL Browser Service

SQL Server Browser-tjänster installeras med SQL Server-instansinstallationen. Den här tjänsten omdirigerar din anslutning till porten där SQL Server körs. Om den här tjänsten körs blir det ett steg enklare för angripare eftersom den tillåter dem att ansluta till SQL Server utan att skicka dess portnummer. Så det är bättre att inaktivera den här tjänsten efter att ha bytt port.

Inaktivera xp_cmdshell-alternativet

SQL Server erbjuder en utökad lagrad procedur xp_cmdshell för att köra och utföra operativsystemkommandon från SQL Server. Den bör inaktiveras för att förhindra säkerhetsrisker. Du kan hitta denna utökade lagrade procedur i servernivåkonfigurationer eller genom att köra sp_configure T-SQL lagrad procedur. Du kan köra nedanstående T-SQL-satser för att inaktivera denna konfiguration.

-- Enable advanced options to display configure xp_cmdshell
sp_configure 'show advanced options', '1'
RECONFIGURE

-- Disable xp_cmdshell
sp_configure 'xp_cmdshell', '0' 
RECONFIGURE
GO

Använd datakryptering eller maskering

SQL Server erbjuder olika krypteringsmetoder för att skydda dina data. Kryptering rekommenderas om dina användare kommer åt data över det offentliga nätverket. SQL Server har flera alternativ för att implementera rätt uppsättning krypteringar med tanke på ditt företags behov. Det här är listan över krypterings- eller datamaskeringsalternativ som vi kan använda för att säkra vår data:

  • TDE (Transparent Data Encryption)
  • Säker data med krypteringsnycklar
  • Kryptera alltid
  • Dynamisk datamaskering

Ta bort BUILTIN\Administrators från SQL Server

Vi bör alltid ta bort kontot BUILTIN\Administrators från SQL Server-instansen för att begränsa oönskad åtkomst till databasinstansen. Det bästa sättet är att ge användarna tillgång till SQL Server individuellt. Du kan också lägga till en grupp personer i Windows-gruppen och ge dem åtkomst till SQL Server. Du kan använda T-SQL-satsen nedan för att ta bort denna inloggning från SQL Server-instansen.

Du kan också släppa denna inloggning med GUI genom SQL Server Management Studio. Du behöver bara ansluta till din SQL Server-instans och sedan expandera säkerhetsmappen på instansnivå. Här kan du högerklicka på denna inloggning för att ta bort den från SQL Server-instansen.

--DROP Login
DROP LOGIN [BUILTIN\Administrators]

Starka lösenord och adekvata användarrättigheter

Tilldela alltid lämpliga rättigheter till varje användare, de bör vara minimala, med tanke på deras roll när de kommer åt databaserna. Dessutom bör vi aldrig använda svaga lösenord för någon inloggning eller samma inloggning och lösenord. Använd alltid lösenordspolicyn för alla SQL-inloggningar.

Konfigurera SQL Server Login Auditing

SQL Server har tillhandahållit en granskningsfunktion för att fånga detaljer om alla misslyckade och lyckade inloggningar. Detta är en mycket användbar konfiguration om du vill granska vem som ansluter eller försöker ansluta till dina databaser. Vi kan konfigurera SQL Server-varningen som skickar e-postmeddelanden vid varje misslyckad och lyckad inloggning till SQL Server. Du kan följa stegen nedan för att aktivera inloggningsgranskning.

  • Anslut till din mål-SQL Server-instans i SQL Server Management Studio
  • Högerklicka på SQL Server-instansens namn och klicka sedan på Egenskaper .
  • Klicka på Säkerhet fliken i den vänstra rutan. Du får inloggningsrevision i den högra rutan som visades i den första skärmdumpen av denna artikel
  • Välj önskat alternativ och stäng Serveregenskaper sida
  • Starta om SQL Server-tjänsten för att tillämpa denna ändring

Ta bort oanvända SQL Server-inloggningar

Håll alltid ett öga på dina SQL Server-inloggningar. Du bör vara uppmärksam på att ta bort alla inloggningskonton som inte längre används. Jag vet att det är svårt att hantera manuellt, men du kan konfigurera en e-postvarning för att skicka ett e-postmeddelande om alla SQL Server-inloggningar och deras privilegier.

Slutsats

Jag har förklarat några av de möjliga konfigurationerna som vi kan använda för att skydda våra databaser från externa hot. Tänk på alla ovanstående punkter när du distribuerar databashärdningspolicyerna i miljön.

Dela den här artikeln och ge din feedback i kommentarsfältet så att vi kan förbättra oss.


  1. 2 funktioner som returnerar månaden från ett datum i Oracle

  2. JSON_MERGE_PATCH() – Utför en RFC 7396-kompatibel sammanslagning av JSON-dokument i MySQL

  3. Fördelar och nackdelar med att implementera en hybrid molnmiljö

  4. Ansluter Google BigQuery till IRI Voracity Software