Zabezpečení MS SQL serveru – uložené procedury
Pokud jste se pustili do kontroly zabezpečení svého MS SQL serveru s pomocí příspěvků Jana Žáčka, můžete dnes vše dokončit. Končí tak popis toho nejnutnějšího, co byste pro bezpečnost serveru mohli udělat. V diskusi pak můžete sami ovlivnit, kudy půjde cesta dalších příspěvků.
Uložené procedury jsou jednou z nejkomplexnějších a nejnebezpečnějších oblastí MS SQL serveru. Vestavěné uložené procedury, ale i ty uživatelské, mohou provádět libovolné administrativní úkony, měnit nastavení, upravovat oprávnění, ale zároveň ovládat pokročilé funkčnosti jako DTS, SQLMail nebo přístup do registry. Už z toho je možné odtušit možný rozsah katastrofy, kdyby došlo ke zneužití uložených procedur.
Kromě rozdělení procedur na normální a rozšířené, které jsou kompletně založeny na kompilovaných DLL knihovnách, lze navíc rozlišit procedury dokumentované – popsané v dokumentaci – a nedokumentované – které jsou většinou využívány pro vlastní běh SQL serveru a administrátor by se jim měl vyhnout, aby instalaci serveru nevhodným zásahem nepoškodil. Nemusím asi zdůrazňovat, že mezi nedokumentovanými procedurami lze nalézt velmi užitečné procedury, které je možné a vhodné používat, příklady by vydaly na dalších několik článků.
Výhodou normálních uložených procedur je možnost podívat se přímo na zdrojový kód procedury, takže i u nezdokumentovaných procedur snadno zjistíte její funkčnost, parametry a potenciální nebezpečnost. Rozšířené uložené procedury lze odregistrovat, zrušit tak možnost jejich používání, ale je nutné odstranit z disku i vlastní DLL knihovnu, aby útočník nemohl proceduru znovu obnovit.
Identifikovat DLL knihovnu, kterou procedura využívá, můžete třemi způsoby:
1. zobrazením vlastností v Enterprise Manageru
2. pomocí dotazu:
|
3. pomocí rozšířené uložené procedury:
|
Když už jste zjistili, kterou knihovnu se chystáte smazat, přesvědčte se, které další uložené procedury tuto knihovnu používají:
|
Jak vidíte ve výsledcích dotazu, knihovnu v tomto případě používá 7 rozšířených uložených procedur, které je třeba odregistrovat společně a teprve potom odstranit příslušnou zdrojovou knihovnu. Procedury je možné odregistrovat selektivně, vystavujete se tak ale riziku obnovení odstraněné procedury.
Pro odregistrování uložené procedury se používá také uložená proceduru. I tuto proceduru můžete po provedení všech úkonů odstranit:
|
Poté smažte nebo přesuňte na záložní médium soubor xplog70.dll, který je standardně uložen v adresáři BINN v instalačním adresáři SQL serveru. Pozor, aplikace service packu některé DLL knihovny obnovuje, zkontrolujte po aktualizaci instalace, že je vše tak, jak jste nastavili.
Doporučuji vám odregistrování procedur provádět SQL skriptem, aby bylo co nejsnazší celou operaci vrátit. Nikdy nevíte, kdy můžete danou funkčnost znovu potřebovat, a manuální zjišťování je velmi složité. Pro opětovnou registraci rozšířené uložené procedury můžete použít skript:
|
Nejnebezpečnější uložené procedury
xp_cmdshell – tato uložená procedura je nejnebezpečnější zbraní proti vašemu serveru. Tím, že umožňuje spouštět libovolný příkaz operačního systému, může útočník napáchat nenapravitelné škody. Příkazy operačního systému není třeba připomínat, všichni pamatujeme staré dobré příkazy DOS (format, del, mkdir), příkazy FTP klienta (PUT, GET, DEL) nebo příkazy pro práci se sítí (NET). Příkladem může být nenápadný SQL skript:
|
Uložená procedura xp_cmdshell je vykonávána v bezpečnostním kontextu služby určené pro běh SQL serveru, nebezpečný vliv procedury je tedy možné omezit restrikcí oprávnění pro tento účet, navíc tuto proceduru mohou spouštět uživatelé s rolí sysadmin. Není reálné, že by tato procedura byla používána nějakou aplikací a je možné ji z vývojového i z produkčního serveru odstranit. Vřele doporučuji!!! Všechny wormy, všichni hackeři a všichni záškodníci přijdou o hlavní zbraň. Stejně tak si dejte pozor, abyste v nově vytvářených aplikacích a skriptech tuto uloženou proceduru nepoužívali. Nejčastějším případem použití jsou pravidelně spouštěné dávky a DTS balíčky. V případě potřeby této funkčnosti pro vykonávání specifických administračních úkonů vám doporučuji napsat si jednoduchý program, který tuto funkčnost poskytne a odstíní další možné příkazy operačního systému.
Uložené procedury pro manipulaci s registry – díky důležitosti registry je nutné zajistit, aby případný útok nemohl ohrozit nebo upravit aktuální nastavení serveru. Bohužel, některé z těchto uložených procedur (například xp_regread a xp_regwrite) jsou nutné pro správnou funkčnost serveru (log truncate, service packy), takže je nelze odregistrovat a odstranit DLL knihovnu xpstar.dll. Můžete alespoň omezit nabídku:
|
OLE Automation – dalším potenciálním nebezpečím jsou procedury, zajišťující manipulaci se serverovými objekty, které je možné zneužít. Tyto uložené procedury využívají funkčnost poskytovanou knihovnou odsole70.dll. Zásahem do nich bohužel omezíte funkčnost Enterprise Manageru, proto doporučuji nejdříve vyzkoušet na testovacím nebo vývojovém serveru:
|
SQL Mail – další potenciálně nebezpečná oblast, pomocí které může útočník odesílat výsledky dotazů, hesla nebo přijímat další příkazy. Jelikož se ale jedná o nejkomplikovanější funkčnost SQL serveru (pozn. aut.: údajně největší množství supportních zásahů Microsoftu se týká SQL mailu), která navíc vyžaduje instalaci MS Exchange Serveru, není v mnoha případech použita a nepředstavuje tak výrazné nebezpečí. Pakliže je tato funkcionalita reálně využívána, před odstraněním doporučuji ověřit, že nenarušíte chod nějaké aplikace:
|
DTS balíčky – u produkčního serveru jsou většinou DTS služby nastaveny, jejich omezením bychom tedy neměli narušit vlastní funkčnost serveru a získáme tak jistotu, že případný útočník nemůže opakovaně stahovat data z našich databází:
|
Poznámka: Všechny SQL skripty použité v tomto článku nabízím ke stažení.
Další uložené procedury doporučované k odstranění – je otázkou jestli chcete tyto procedury úplně odstranit, nebo jen kombinací rolí a oprávnění zpřístupnit jejich spouštění pouze omezenému okruhu uživatelů. Seznam uložených procedur obecně doporučovaných k odstranění:
|
Meta Data Services a merge replikace – certifikace zabezpečení C2 vyžaduje navíc odstranění tabulek a uložených procedur souvisejících s Meta Data Services a merge replikací, které nejsou v této bezpečnostní konfiguraci podporovány. Tento seznam procedur nebudu uvádět, jedná se o 340 procedur, které jsou uvedeny v dokumentaci SQL serveru.
Trojské koně
Kromě odstranění nepotřebných a nebezpečných procedur je nutné u vybraných procedur monitorovat možnou modifikaci systémových uložených procedur. Po zrušení a opětovném vytvoření procedury s trojanským SQL skriptem, SQL server nerozliší mezi původní a novou verzí, ačkoli kód už může obsahovat úplně jiné pokyny. Uložená procedura sp_password je například volána při každé změně hesla. SQL skript není šifrován, můžete se na vlastní oči přesvědčit, co procedura dělá. Co kdyby ale před tím, než procedura heslo zašifruje a uloží do tabulky, přidal útočník do procedury kód, který by nové heslo společně s loginem uložil do souboru nebo odeslal elektronickou poštou? Určitě by vás napadly i další možnosti, jak se dostat za hradby Tróji bez dobývání.
Ve čtyřech článcích jsem nastínil základní zabezpečení vašeho SQL serveru. Pochopitelně existuje řada dalších témat, kterým se můžeme dále věnovat, jako šifrování, certifikáty, certifikace C2 nebo pokročilé nastavení oprávnění. Na konci této základní série máte možnost v diskusi pod článkem určit směr dalších článků. Těším se na vaše připomínky a návrhy.
Mohlo by vás také zajímat
-
Vstupte do éry umělé inteligence: ASOME Max Studio s AMD Ryzen™ 9 7940HS
14. listopadu 2023 -
Thunderbolt 4 vs. OCuLink: Přišel čas na upgrade?
27. května 2024 -
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024