Zabezpečení MS SQL serveru – základní konfigurace

21. června 2002

Máte svůj SQL server opravdu dobře zabezpečený? Nebo jste ho nainstalovali klasickou cestou a nyní nevíte, jak najít cestu k bezpečí svých dat? Nemusíte zoufat a pracně hledat pomoc. Následující série příspěvků by vám měla pomoci s vašimi starostmi.

Většinu nastavení lze ale provést již při instalaci. Ušetříte si tak čas s pozdější nápravou, o které si také něco povíme.

Authentication Mode

Ověřovací režim je jedním z nejdůležitějších klíčů k zabezpečení vašeho databázového serveru.Jednodušší volbou z hlediska správy serveru je smíšený režim. Jestliže ale s MS SQL serverem teprve začínáte, doporučil bych vám zvážit variantu Windows Authentication Mode. Tento režim není sice tak pohodlný, ale přinutí vás uvažovat v intencích databázového serveru a naučí vás rozlišovat velmi zřetelně jednotlivé databázové objekty. Některé aplikace (například SAP R/3) tento režim nepodporují, a tak vám nezbude, něž se v podobných případech spolehnout na smíšený režim.

Mixed mode, neboli smíšený režim, je v instalaci zachován pouze z historických důvodů, protože předchozí verze serveru (6.5 a starší) nebyly tak těsně integrovány s operačním systémem a jinou než jednoduchou SQL autentizaci neumožňovaly. Verze 7.0 byla Microsoftem z velké části přeprogramována, přičemž byla zároveň přidána funkčnost zvyšující zabezpečení – integrace s bezpečnostním modelem Windows. Nepotřebujete-li podporovat historické klienty nebo programy vytvořené před mnoha lety, doporučuji zvážit i výrazně bezpečnější způsob ověřování oprávnění. Navíc se jedná o investici do budoucnosti, protože většina aplikací postupně přechází na tento typ zabezpečení. Pravdou ale je, že většina webhostingových firem, které nabízí hosting SQL databází, integrované zabezpečení nenabízí.

Ať už se rozhodnete jakkoli, režim zabezpečení lze změnit i po instalaci, nic tedy není ztraceno ani v případě, že jste nainstalovali server ve smíšeném režimu. V administrativní konzoli můžete kliknout na název serveru a zobrazit jeho vlastnosti, na záložce Security naleznete potřebná nastavení.

Záložka Security umožňuje změnit nejen režim ověřování, ale umožňuje upravit i nastavení úrovně auditování a účet, pod kterým jsou spouštěny služby SQL serveru. Po změně smíšeného režimu na „Windows only“ vás server požádá o restart SQL serveru a bezpečnostní režim je změněn.

Pokud se rozhodnete využít smíšeného ověřování, pravděpodobně si nepřipouštíte, že by váš server byl za několik málo minut cílem útoku hackerů. Že tato lehkovážnost může být potrestána, dokumentuje červ zvaný SPIDA, který právě s úspěchem využívá nedokonalostí smíšeného režimu. Jestliže vás okolnosti nutí k použití smíšeného režimu, za žádných okolností nepoužívejte při instalaci volbu „Blank Password“. Označené políčko na dalším obrázku musí při instalaci zůstat nezaškrtnuté! Pakliže jej zaškrtnete, instalace se navíc opakovaně dotáže, jestli použití prázdného hesla myslíte vážně.

Server bez hesla není doporučován, i v testovacích instalacích se snažte heslo používat, donutí vás to adaptovat se psychicky na režim neustálého zadávání hesla. Pokud jde o mne, mám pro vás jeden praktický tip – do hesla si nedávejte „y“, „z“ a znaky s diakritikou, nikdy nevíte, jaké rozložení klávesnice budete pro přihlášení používat.

Uživatelský účet pro služby SQL serveru

Nastavením režimu ověřování jste znesnadnili případný útok, ale pochopitelně tím zabezpečení serveru nekončí. Výhodou je, že systém zabezpečení kompletně přechází pod správu Windows serveru, na SQL Server se tak aplikují pravidla týkající se délky hesla, možnosti opakovaného zadávání hesla a podobně.

Dalším bezpečnostním rizikem je standardní instalace SQL serveru pod účtem „LocalSystem„. Při průniku do systému útočník získá uživatelská práva na úrovni operačního systému, což může znamenat katastrofu pro všechny počítače ve vaší síti. Vytvořte proto pro SQL server nový uživatelský účet (nebo účty – každá ze služeb může mít vlastní) v prostředí Windows, přidělte mu minimální práva v systému a změňte v administrační konzoli účet pro běh SQL serveru. Potřebná nastavení naleznete po kliknutí na název serveru v jeho vlastnostech na záložce „Security„:

Nově vytvořený účet pro běh SQL služeb bude mít kromě standardních oprávnění právo běhu jako služba „Run as Service“. Tento uživatel nesmí mít administrativní oprávnění! Účet SQL serveru musí mít plný přístup („Full Control „) k následujícím složkám:

  • C:Program FilesMicrosoft SQL Server (v případě instalace Analysis Services i C:Program FilesMicrosoft Analysis Services, v případě instalace English Query i C:Program FilesMicrosoft English Query)
  • ke složkám obsahujícím databázové soubory (*.mdf, *.ndf, *.ldf)

Operační systémy Windows se standardně instalují s oprávněním „Full Control“ pro uživatelskou skupinu „Everyone“ na všechny adresáře – k složkám SQL serveru by tato skupina neměla mít vůbec žádná oprávnění, proto jí ze seznamu oprávněných uživatelů odeberte. Systémový účet musí mít dále plný přístup („Full Control„) do registrů:

  • HKEY_LOCAL_MACHINESoftwareMicrosoftMSSQLServer
  • HKEY_LOCAL_MACHINESystemCurrentCOntrolsetServicesMSSQLServer
  • HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionPerflib
  • a ke všem souvisejícím větvím jako SQLAgent$<INSTANCE>, MSSearch a MSDTC.

V případě instalace dalších instancí SQL serveru musí být tato oprávnění nastavena i na větve s tím související – tj. MSSQL$<INSTANCE>. Striktnější nastavení zabezpečení má pochopitelně vliv na funkčnost některých uložených procedur, například xp_cmdshell nebo uložené procedury pracující s registry.

Fyzické disky

V souvislosti s předchozím doporučením je jasné, že SQL Server i databáze SQL serveru je vhodné instalovat na disky se souborovým systémem NTFS, aby vám někdo stoprocentně zabezpečenou databázi nesmazal z disku příkazem DEL. Databáze nainstalujte do jiné složky nebo na jiný fyzický disk než vlastní server, aby ani virová nákaza nebo havárie systémového disku neohrozila vaše cenná data.

Výhodou je i vyšší výkonnost systému s více disky. SQL server je aplikace, která velmi intenzivně přistupuje k fyzickému disku a je proto výhodnější data uložit na jiný než systémový disk, který je zatěžován swapováním operačního systému a přístupem k instalovaným programům.

Síťové knihovny

Pro správnou funkčnost klient/server aplikací je nutné, aby server podporoval všechny komunikační protokoly, které klientské programy budou využívat. Standardním výběrem jsou Named Pipes a TCP/IP knihovny. Knihovny jsou během instalace instalovány všechny, ale nejsou-li nastaveny, nejsou serverem používány. Vlastní nastavení lze provést dodatečně pomocí „Server Network Utility“ dostupné z menu ve skupině SQL serveru. Všechny síťové knihovny v pravé části dialogového okna níže jsou právě aktivní:

V případě instalace v clusterovém prostředí a při instalaci v prostředí Windows 98 jsou podporovány pouze dvě označené knihovny.

Chtěl bych vás upozornit na knihovnu „Multiprotocol„, která vám umožní šifrovat veškerá data mezi klientskou aplikací a serverem. Při požadavku na vyšší úroveň zabezpečení doporučuji využít i tento protokol.

Další knihovny má smysl aktivovat pouze a jedině v případě klientských aplikací, které je používají. Už z názvů knihoven je jasné použití – IPX/SPX protokol použijete v případě Novell sítí, AppleTalk je síťové prostředí počítačů Apple. Každá další knihovna znamená potenciál dalšího nebezpečí pro váš server, programy vyrábějí omylní programátoři, a tak často méně znamená více. Dokonce ani podpora TCP/IP není vždy nutná, výběr protokolů proto důkladně zvažte.

Pro konfiguraci klientů slouží „Client Network Utility„, která pochopitelně musí obsahovat stejné aktivované knihovny jako server. U klientské utility je navíc možné nadefinovat Alias na často používané servery.

Service Packy a postfixy

Každý seriózně používaný produkt potřebuje nepřetržitou údržbu. SQL server sice není tak častým cílem útoků jako operační systém Windows, to by vás ale nemělo ukolébat k nečinnosti. Kromě bezpečnostních děr se čas od času objeví i problémy ve vlastních programových souborech. V současné době je SQL server 2000 doplněn druhým service packem, verze 7.0 dokonce čtvrtým. Upozorňuji, že v případě instalace OLAP služeb (Analysis Services) je třeba „servispekovat“ každou část serveru zvlášť – nejdříve vlastní SQL server a poté OLAP služby. Společně se serverem je většinou třeba aktualizovat také XML parsery a ODBC knihovny. Verzi serveru je možné zjistit jednoduchým dotazem:

SELECT @@VERSION

Tento dotaz vám vypíše aktuální verzi serveru včetně případného service packu. Bohužel se tímto způsobem nedozvíte, zda-li nebyl na SQL server zveřejněn další patch nebo postfix. Předpokládám, že všichni sledujete všechny dostupné zdroje věnující se zabezpečení, ale asi nejjednodušší kontrolou aktuálnosti postfixů je utilita hfnetchk. Utilita se spouští z příkazového řádku a není příliš uživatelsky přívětivá, ale je zdarma ke stažení na stránkách Microsoftu. Kromě kontroly SQL serveru provede i revizi celého operačního systému a prohlížeče Internet Explorer. Pravidelným spouštěním utility si můžete ověřit, zda je všechno v pořádku. Program do výstupního souboru zaznamená všechny nalezené problémy, které lze jednoduše vyřešit stažením potřebné záplaty ze stránek Microsoftu a její instalací.

Všechny tyto postupy výrazně snižují bezpečnostní rizika provozu MS SQL serveru, neeliminují ale všechna nebezpečí. V dalších dílech seriálu se budeme věnovat i ostatním aspektům. Aplikace těchto pravidel by měla být základem. Kromě toho základní zabezpečení vás ochrání proti valné většině „amatérských“ útoků.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Další článek Toulky po webu 3.
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *