Biztonságos SQL Server Vörös József Terméktámogató Mérnök Microsoft Magyarország
Miről lesz szó SQL Server biztonsági arhitektúra SQL Server hálózati biztonság SQL Server auditálás Az SQL Server védelme „Best Practices”
SQL Server biztonsági architektúra Autentikáció, Autorizáció Auditáljuk a hozzáférést Belépési azonosítók, felhasználók Szerepkörök (Roles) Jogosultságok (Permissions) Részletes információ: SQL Server Books Online
Javasolt Biztonsági modell Windows 2000 Felhasználó Windows 2000 Csoport Login – SQL Server (a csoport számára) User Defined adatbázis szerepkör
Hálózati biztonság SQL Server hálózati kommunikáció áttekintés Hálózati forgalom titkosítása
SQL Connection API áttekintése TCP/IP sockets Kevesebb hálózati forgalmat generál, nincs overhead Named pipes Nagy hálózati forgalom az overhead miatt Authentikált felhasználót igényel Local pipes nagyon gyors (shared memory) Multiprotocol RPC
SQL Connection API áttekintése Mindegyik API titkosítható “super sockets” wrapper – ssnetlib.dll Kliens oldali konfiguráció (SQL Client Netwok Utility) Szerver oldali konfiguráció (SQL Server Netwok Utility)
A hálózati forgalom titkosítása A kommunikációs csatornát titkosítani kell Alapértelmezésben minden clear text a felhasználónév és a jelszó kivételével Sajnos a használt encryption gyenge Az SSL használata illetve a Windows Authentication használata jobb megoldás Mulitportocol Encryption Windows RPC titkosítás A titkosítás erőssége (40 bit, 128 bit) az operációs rendszertől függ
A hálózati forgalom titkosítása SSL Előnye: mindegyik kommunikáció típussal használható A titkosítás erőssége (40 bit, 128 bit) az operációs rendszertől függ Hátránya: PKI infrastruktúrát igényel IPSec Előnye: alkalmazás független Hátránya: komplex menedzsment, leterhelheti a kommunikáló gépeket
A hálózati forgalom titkosítása SSL titkosítás lépései: 276553 HOW TO: Enable SSL Encryption for SQL Server 2000 with Certificate Server: További információk: 319349 BUG: Turning On the 'Force Protocol Encryption' Option Is Irreversible 316898 HOW TO: Enable SSL Encryption for SQL Server 2000 with Microsoft 318605 INF: How SQL Server Uses a Certificate When the Force Protocol
A hálózati forgalom titkosítása IPSEC titkosítás lépései http://www.microsoft.com/windows2000/techinfo/planning/security/ipsecsteps.asp További információk 813878 How to Block Specific Network Protocols and Ports by Using IPSec 257225 Basic IPSec Troubleshooting in Windows 2000 325383 Support WebCast: Planning and Implementing IPSec in a Windows 2000
A hálózati forgalom titkosítása DEMO
SQL Server auditálás Hozzáférés auditálás SQL Trace, SQL Profiler Engedélyezés az SQL enterprise managerben SQL errorlog fájlba logol SQL Trace, SQL Profiler Hogyan auditáljunk? C2 auditálás
SQL Server Trace SQL Trace – szerver oldali komponens SQL Profiler – Felhasználói interfész Audit az SQL trace segítségével készíthető SQLServr.exe processzen belül Biztonságos
SQL Server 2000 Security Audit Események Add DB User Login Change Password Add Login to Server Role Login Change Property Add member to DB Role Login Failed Add Role Login Permission GDR Add login Object Derived Permissions App Role Change Password Object Permission GDR Backup/Restore Object Permission used Change Audit Server Start / Stop DBCC Executed Statement Permission GDR Login / Logout Statement Permission used
Audit Esemény adatok Mindegyik Audit trace konfigurálható, hogy milyen mezőket tartalmazzon A biztonsági audit számára fontos mezők: Success (boolean) Login name Statement text Start Time Duration
Hogyan Auditáljunk Az audit (C2 audit kivételével) egy profiler trace Készítsük el a trace-t az SQL Profiler használatával Szkripteljük le a trace létrehozását az SQL számára Állítsuk be, hogy a trace a szerver indulásakor automatikusan induljon A trace setup kerüljön bele egy tárolt eljárásba Állítsuk be, hogy a tárolt eljárás automatikusan elinduljon (autostart)
C2 auditálás NTFS partíciót kell használnunk Minden esemény rögzítésere kerül Ha az audit fájl nem írható leállítja a szervert A file roll-over mérete fixen 200MB Az audit fájlok az mssql\data könyvtárba kerülnek audit_YYYYMMDDHHMMSS_1 néven Engedélyezése: Exec sp_configure ‘C2 audit mode’, 1
Audit ajánlás Ne használjunk C2 audit logolást, csak ha feltétlen szükséges Csak a ténylegesen szükséges adatokat gyűjtsük be DBA Events, logins, password changes, etc.
SQL Server auditálás DEMO
Az SQL Server védelme „Best Practices” Service Account követelmények SQL Login jelszóbiztonság Az sa login védelme Administrator accounts Kiterjesztett tárolteljárások (extended stored procedures) Proxy Accounts Szkript Biztonság Általános biztonsági szabályok
Service Account követelmények A service account nevében fut az MSSQL és az MSSQLAGENT szerviz Jellemzően ez a LocalSystem Védekezés: Local account beállítása minimális jogosultságokkal Local vagy Domain Account Local account preferált. Domain account ugró pontot biztosíthat a betörők számára A local accountok adminisztárciója nehézkes. Szintén támadási felület lehet. Bizonyos esetekben (pl. replikáció) domain accountot kell használni
Service Account követelmények Read-Write hozzáférés az SQL adatkönyvtárhoz és a registry-hez Read hozzáférés az SQL binárisokhoz és az EFS kulcshoz Szükséges account jogosultságok ‘log on as a service’ ‘user cannot change password’ ‘password never expires’ Az SQL Enterprise Manager beállítja a szükséges jogosultságokat 283811 HOW TO: Change the SQL Server or SQL Server Agent Service Account
SQL Login jelszóbiztonság Az általános ökölszabályok érvényesek: Ne legyen üres jelszó Ne egyezzen meg a belépési azonosítóval Ne legyen egyszerű szó Legyen benne betű és szám Ezeket szkriptekkel tudjuk kikényszeríteni
Az sa Login védelme Az sa login nem távolítható el, ezért speciális figyelmet igényel Az sa jelszava legyen mindig bonyolult (kisbetű, nagybetű, szám, stb.) Még Windows Authentication Mode használata esetén is Ha esetleg változik a Szerver biztonsági módja, akkor is védve vagyunk Ha nem muszáj, ne használjuk Minden adminisztrátornak legyen saját azonosítója sysadmin szerepkörrel
Administrator Accounts Alapértelmezésben a Windows BUILTIN\Administrators csoport sysadmin fix szerver szerepkörrel rendelkezik Ebből adódóan az összes Domain Administrator és Local Administrator sysadmin szerepkörrel rendelkezik BUILTIN\Administrators csoportot célszerű eltávolítani
Kiterjesztett tárolt eljárások A master adatbázis tartalmazza az extended tárolt eljárásokat, amik az SQL szerver által regisztrált dll-k T-SQL–ből könnyen elérhető kibővített funkciók Legyünk nagyon körültekintőek, amikor ezen eljárásokhoz jogosultságot adunk Az xp_cmdshell kritikus, operációs rendszer parancsok futtatására ad lehetőséget, ha nem kell dobjuk el
Proxy Accounts Az adminisztrátor által megadott domain user azon felhasználók számára, akik nem tagjai a sysadmin szerepkörnek Lehetőséget ad a következők futtatására: xp_cmdshell SQL Server Agent job, amely CmdExec vagy ActiveX scripting műveletet hajt végre. Ha szükség van az xp_cmdshell használatára: Ne sysadmins csoport tagjaként futtassuk Konfiguráljunk minimális jogosultságokkal rendelkező proxy account-ot
Szkript biztonság Az adminisztratív szkriptek legyenek védve, csak a DBA csoport tagjai férjenek hozzá Auditáljuk a szkript változásokat Szigorú ACL-t állítsunk be a fájlokon Soha ne használjunk beégetett jelszavakat a szkriptekben
Általános biztonsági tanácsok Rendszeresen telepítsük a Windows illetve SQL Server-hez megjelenő biztonsági javításokat Használjunk Windows authentikációt ahol csak lehet Az SQL XML konfigurálása IIS szerveren fokozott körültekintést igényel Vizsgáljuk felül az SQL Server összes használt elérési módját Enterprise Manager, Microsoft Access, Query Analyzer, osql, stb.
Általános biztonsági tanácsok Az alkalmazások ne adjanak részletes hibaüzenetet a kliensek számára Az információs és hibaüzeneteket célszerű általánosabb érvényű üzenetekre lecserélni Az adminisztratív célú tárolt eljárások számára hozzunk létre külön adatbázist
Átalános biztonsági tanácsok Egyik felhasználónak se legyen az alapértelmezett adatbázisa a master Ne engedjük a felhasználóknak objektum létrehozását a master és msdb adatbázisokban Dobjuk el a pubs és northwind példa adatbázisokat az éles üzemben lévő szerverekről
Átalános biztonsági tanácsok A public szerepkör az alapértelmezett mindegyik adatbázisban az összes felhasználó, és szerepkör számára Ne adjunk további jogosultságokat public szerepkörhöz Ne adjunk deny jogosultságot public szerepkörhöz Az összes felhasználói adatbázisból töröljük a guest account-ot
DTS csomagok biztonsága A DTS csomagokhoz rendelhető tulajdonos és felhasználó jelszó A tulajdonos jelszó lehetővé teszi a felhasználók számára, hogy megnézzék, és módosítsák a csomagot a DTS designer-ben A felhasználó jelszó lehetővé teszi, hogy a felhasználó futtassa az adott csomagot Minden csomaghoz rendeljünk tulajdonos jelszót
További információk SQL Server 2000 SP3 Security Features & Best Practices: http://www.microsoft.com/technet/prodtechnol/sql/maintain/security/sp3sec/default.asp SQL Server 2000 Operations Guide: http://www.microsoft.com/technet/prodtechnol/sql/maintain/operate/opsguide/default.asp SQL 2000 C2 Admin and User Guide http://www.microsoft.com/downloads/details.aspx?FamilyID=71c146f3-9907-40cd-babf-3506ecd33254&displaylang=en
További információk SQL Server 2000 Security Tools http://www.microsoft.com/downloads/details.aspx?FamilyID=9552d43b-04eb-4af9-9e24-6cde4d933600&displaylang=en 3rd party információk http://www.sqlsecurity.com