WS2016: Nastavení Nano Serveru: GPO a DSC
Tákže! …v některém minulém článku jsme řešili konfiguraci Nano Serveru. A přitom jsem nezmiňoval Group Policy (GPO). Jdeme na to.
Group Policy
U Nano Serveru je situace poměrně zajímavá – nejdou na něj totiž GPO vůbec aplikovat. Nano Server v současné verzi Group Policy nepodporuje. Přiznám se, že mě to tak ani vůbec nenapadlo, protože GPO už beru jako samozřejmost a tak to bylo velké překvapení. Co s tím? Dobrá zpráva je, že Nano Server podporuje aspoň lokální politiky a zjednodušeně jde “vykuchat” některá nastavení GPO ze SYSVOLu a tyto pak aplikovat PowerShellem na Nano Server lokálně.
Mimochodem co znamená, že Nano Server GPO nepodporuje? V Nano Serveru např. nenajdete:
- Službu Group Policy Client (gpsvc)
- Příkazy GPupdate.exe a GPresult.exe
- Client Side Extensions (HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions)
- Lokální ADMX šablony v adresáři C:\Windows\PolicyDefinition (je zde jediná – msched.admx)
Lokální Politiky
Říkal jsem, že Nano Server umí aspoň lokální politiky. Jak editovat ty? Nejdřív jsem jen zkusil vzít editor lokální počítačové politiky a z MMC.exe se připojit na Nano Server vzdáleně. Což sice šlo, dokonce i ořezané možnosti zobrazených nastavení by naznačovala funkčnost tohoto řešení. Ale např. takto udělaná výjimka na ping (Echo Request) nezafungovala a ping nepovolila. Takže gpedit.msc bychnebral jako funkční řešení.
Namísto toho se podíváme na PowerShell modul, který byl pro tyto účely vyroben, jmenuje se GPRegistryPolicy a info o něm je zde. Obsahuje v sobě tři funkce: Import-GPRegistryPolicy, Export-GPRegistryPolicy a Test-GPRegistryPolicy. Na Nano Server ho nainstalujete pomocí příkazu:
Save-Module -Name GPRegistryPolicy -Path <path>
Ten nejdříve vynutí stažení a instalaci Package Providera NuGet (potvrďte) a následně stáhne do definované cesty modul GPRegistryPolicy. Ten pak nainstalujete příkazem:
Install-Module -Name GPRegistryPolicy
Hotovo, příkaz Get-Command už je schopen tři výše zmíněné funkce najít.
Nyní budeme potřebovat nastavení z GPO v doméně, která chceme aplikovat na Nano Server. Jak jsem zmínil, ta jsou dostupná v adresáři SYSVOL na Domain Controlleru. Dostat se k nim dá jednak přímo na file systemu nebo např. přes CMDLet Backup-GPO. Do lokálních politik Nano Serveru jdou aplikovat nastavení ze souborů s příponami:
- POL – soubor Registry.pol, dostupný v cestě BackupGPO\{GUID}\DomainSysvol\GPO\Machine
- INI – soubor GptTmpl.inf, dostupný v cestě BackupGPO\{GUID}\DomainSysvol\GPO\Machine\Microsoft\Windows NT\SecEdit
- CSV – soubor Audit.csv, dostupný v cestě BackupGPO\{GUID}\DomainSysvol\GPO\Machine\Microsoft\Windows NT\Audit
Příklady zde:
Import-GPRegistryPolicy -Path <cesta k *.POL souboru> -LocalMachine Restore-SecurityPolicy -Path <cesta k *.INI souboru> Restore-AuditPolicy -Path <cesta k *.CSV souboru>
Osobně jsem zkoušel povolit odezvu na ping ve firewallu. Vytvořil jsem tedy GPO, v ní nastavil patřičnou výjimku. Tuto politiku zazálohoval pomocí Backup-GPO. Ze zálohy vykopíroval soubor Registry.pol a tento aplikoval na Nano Server příkazem Import-GPRegistryPolicy. Bohužel neúspěšně, výjimka se do firewallu nepřidala. Stejně tak jsem si nevšiml ani žádného záznamu v EventLogu, takže je otázka, jak to půjde vůbec troubleshootovat.
Co naopak fungovalo spolehlivě a napoprvé, bylo aplikování bezpečnostního nastavení ze souboru GptTmpl.inf. V něm si vyzkoušejte změnit např. nastavení služby RemoteRegistry (StartupType na Automatic, default je Manual) a nebo NTFS oprávnění (třeba v rootu na disku C:\ přidejte Everyone = FullControll) pomocí nastavení ve větvi “Computer Configuration/Windows Settings/Security Settings/File System.
No popravdě, byla to celkem tortura a moc si to v praxi nedokážu představit. Takže ve finále spíš budete používat něco jiného.
PowerShell DSC
Desired State Configuration je další možnost, jak konfigurovat Nano Server. Zde nepůjdu moc do hloubky, protože DSC si zaslouží samostatný článek. Ve zkratce – jde o možnost vytvářet pomocí PowerShell syntaxe PS1 soubory, které obsahují deklarativně vyjádřenou konfiguraci Nano Serveru. Nejste z toho chytří? Tak jednoduchý příklad:
Takto definovaná konfigurace v PS1 souboru nastavuje dvě věci:
- Nastavuje službu RemoteRegistry na StartupType = Automatic
- Vytváří v rootu na disku C:\ adresář TestDirectory
DSC pak umí fungovat ve dvou režimech – Push a Pull. Ukážeme si příklad na Pull režim, protože je snazší na konfiguraci. Postup zde:
#Nejdříve si zkuste vypsat všechny příkazy, které jsou typu Configuration Get-Command -CommandType Configuration #Spustíme PS1 soubor s konfigurací, tím PS "naučíme" CMDLet NanoServer C:\NanoServer\NanoServer.ps1 #Teď by už měl PowerShell vypsat příkaz NanoServer Get-Command -CommandType Configuration #Zkompilujeme konfiguracni PS1 soubor na soubor s příponou MOF NanoServer -ComputerName NANO5 #V push režimu natlačíme vzniklý MOF soubor na Nano Server Start-DscConfiguration -Path C:\NanoServer -Force -Verbose -Wait
Výsledkem je zkonfigurovaný Nano Server a to podle námi definovaného DSC souboru. V neposlední řadě je třeba zmínit, že pro aplikování DSC konfigurace na Nano Server, musí tento server disponovat integrovaným balíčkem Microsoft-NanoServer-DSC-Package.cab! Myslete na to tedy už při vytváření image. Sám balíček má asi 0,5 MB – velikost image vám dramaticky nezvýší a klidně bych si dokázal představit, že tento balíček budete injektovat do každého Nano Serveru automaticky.