Archiv pro štítek: group policy

Zásady návrhu Group Policy z pohledu výkonu a bezpečnosti [1]

Shrnutí zásad, které je vhodné vzít v úvahu při návrhu GPO

Zkratky

  • GPO – group policy object
  • GP – group policy

Kriteria dobrého návrhu GP

Charakteristiky dobrého návrhu GP jsou

  • Minimální dopad na koncového uživatele
  • Splnění cílů zabezpečení počítačů podle požadavků organizace
  • Minimalizace dopadů na správu, zjednodušení správy

Požadavky často působí navzájem proti sobě, takže jdeme cestou kompromisů. Nejlepší návrh nemá příliš výsledných GPO a není příliš složitý. Právě tak akorát.

Přístupy k řešení a návrhu GPO

Jsou zjednodušeně řečeno dva krajní přístupy

  • Monolitické GPO – obsahují nastavení z nejrůznějších oblastí (například instalace programů, přesměrování složek, a tak dále)
  • Funkční GPO – obsahují jedno nebo více nastavení z jediné oblasti a jsou typicky zaměřené na jednu funkci (třeba Domain Password Policy)

Který přístup zvolit? Nejčastěji volíme kombinaci obou přístupů a ve výsledném  řešení se vyskytují jak monolitické tak i funkční GPO. Volbu ovlivňují další faktory jako jsou potřeby delegování, složitost obecných požadavků a nároky nutného zabezpečení. Oba typy mají smysl v určitých situacích, ovšem z pohledu výkonu a zátěže při zpracování může být jeden lepší než druhý – k tomu se vrátíme později.

Funkční GPO

Funkční GPO obsahují izolovaně jedno nastavení nebo skupinu blízkých nastavení. Příkladem je Account Policy, tato nastavení by měla být uložena v jednom objektu GP, které nedělá v zásadě nic jiného (např. Default Domain Policy). Můžeme jít dále a zvětšovat počet GPO podle potřeby, ale stovka objektů funkční GP, každý s jedním nastavením, to už je opravdu asi nerozumný extrém.

Monolitické GPO

Monolitické GPO jsou ideální pro delegování – přiřadíme správce příslušné organizační jednotky OU v Active Directory. Všechna nastavení jsou v jednom spravovatelném GPO al ze je delegovat. Může být jednodušší při řešení problémů, hledáme na jedno místě.

Linkování GPO nebo filtrace?

Další rozhodnutí, která musíme učinit, protože důsledkem může být dopad na výkon při zpracování:

  • Připojit (link) GPO nejblíže k zamýšlenému cíli a případně propojit k více jednotkám (OU) podle potřeby, nebo
  • Linkovat výše a definovat filtry – pomocí WMI a nebo filtrovat pomocí členství ve skupině (security group filter)

Použití Group Policy Preferences  má větší dopad, neboť každé nastavení může mít svůj vlastní filtr.

Jak vyvážit vzájemně protichůdné konfliktní požadavky?

Návrh struktury Active Directory (hlavně návrh struktury organizačních jednotek – OU) je veden s cílem vyhovět bezpečnostním požadavkům, zamýšlenému způsobu delegování správy a požadavkům aplikací a jejich správy. Návrh GP požaduje jednoduché zacílení, uvažuje rozdíly platforem (server, počítač uživatele, notebook) může vycházet z požadavků delegování správy.

Návrh AD doplňující GP – „podle typů“

Struktura OU

Doména

Machines

  • Notebooks
  • Desktops
  • Servers
  • Virtual

Users

  • Interactive
  • Services

Groups

Návrh AD doplňující GP – „podle místa nebo obch. oddělení“

Struktura OU

Doména

Centrála

Computers

  • Servers
  • Desktops
  • Laptops
  • Virtual

Users

  • Interactive
  • Services

Pobočka, prodej

Computers

  • Servers
  • Desktops
  • Laptops
  • Virtual

Users

  • Interactive
  • Services

 

Cíle návrhu AD a GP

Kompromisní pravidlo 80/20.

  • Budeme se snažit dodržet pravidlo vyvážení požadavků na linkování a filtrování a snažíme se najít takový model struktury OU, který nám vyhoví pro 80 procent situací a scénářů. Zbývajících 20% bude kompromisních, nebudeme pro ně vyžadovat stejný design.

Snažíme se vyhnout návrhu, který vyžaduje linkování a vynucení (enforce) GPO na úrovni domény – omezuje volby v dalších vnořených úrovních.

Vyhýbáme se také příliš ploché struktuře OU – například neumístíme všechny uživatele do jedné OU, pokud plánujeme použít různé zásady pro různé skupiny a uživatele.

Nepoužijeme ani návrh, který vyžaduje loopback (smyčka při zpracování) pro všechny počítače.

 

Příště někdy na téma: Zpracování GP a výkon / bezpečnost

(Zpracováno podle přednášky WSV206 Z MS TechEd2012 (Darren Mar-Elia: Best Practices for Designing and Consolidating Group Policy for Performance and Security))

Group Policy: WMI Filter – Windows Versions

Filtry pro vymezení politiky (zásady skupiny) pouze na konkrétní počítače podle verze operačního systému (version) nebo podle typu (productType). Použijeme WMI Filter, například pro počítače s Windows 7 to bude:

select * from Win32_OperatingSystem where Version like "6.1%" and ProductType = "1"

Podmínky pro další operační systémy:

Operating system Version
Windows 7 Version like "6.1%" and ProductType = "1"
Windows Vista Version like "6.0%" and ProductType = "1"
Windows XP (Version like "5.1%" or Version like "5.2%") and ProductType = "1"
Windows 2008 Version like "6.0%" and ProductType = "3"
Windows 2008 R2 Version like "6.1%" and ProductType = "3"
Windows 2003 Version like "5.2%" and ProductType = "3"

Hodnoty ProductType znamenají:

ProductType Version
1 client
2 domain controller (server)
3 server

Script Center uvádí v galerii skriptů funkci pro PowerShell pro “automatické” vytvoření asi dvaceti filtrů WMI – Using Powershell to Automatically Create WMI Filters

PowerShell a Group Policy

PowerShell ve Windows 2008 R2 přišel konečně s implementací příkazů pro správu Active Directory – AD Module for Windows PowerShell. Tato funkčnost byla již dříve řešena poměrně dobře dvěma přístupy, jednak komunitou (PSCX) a pak také firmou Quest Software. Podíval jsem se na možnosti správy zásad skupiny, tedy objektů Group Policy. Nechal jsem se inspirovat knihou Patrika Maliny.

Příkazy, které máme k dispozici – CmdLets jsou přehledně uvedeny zde. Po spuštění modulu AD však nejsou k dispozici  a musíme je nejprve importovat:

import-module grouppolicy

Seznam příkazů zobrazí

get-command –module grouppolicy

Všechny objekty GP vypíšeme:

get-gpo –all

Veškerá nastavení politik uložíme do souboru ve formátu html:

Get-GPOReport -ReportType html -All | Set-Content c:\temp\all_gpos.html

Výsledné uplatnění pro konkrétního uživatele nebo konkrétní server uložíme:

Get-GPResultantSetOfPolicy -computer dc02 -ReportType html -Path c:\temp\dc02_rsop.html

Get-GPResultantSetOfPolicy -User administrator -ReportType html -Path c:\temp\admin_rsop.html
RsopMode        : Logging
Namespace       : \\DC02\Root\Rsop\NS4AEB272C_D982_44B8_94DF_A02D868E4642
LoggingComputer : DC02
LoggingUser     : administrator
LoggingMode     : User

Dále se podíváme na OUs – Organizational Units a dědění nastavení GP. Přehled OU nám zobrazí příkaz:

Get-ADOrganizationalUnit -Filter * | ft name, distinguishedname -AutoSize

name               distinguishedname
----               -----------------
Domain Controllers OU=Domain Controllers,DC=studio,DC=cs
Servers            OU=Servers,DC=studio,DC=cs
Workstations       OU=Workstations,DC=studio,DC=cs

Připojené objekty a děděná nastavení zobrazíme:

Get-ADOrganizationalUnit -Filter * | Get-GPInheritance | fl name, path, gpoinheritanceblocked, gpolinks, inheritedgpolinks

 

Name                  : domain controllers
Path                  : ou=domain controllers,dc=studio,dc=cs
GpoInheritanceBlocked : False
GpoLinks              : {Default Domain Controllers Policy}
InheritedGpoLinks     : {Default Domain Controllers Policy, Default Domain Poli
cy}

 

Name                  : servers
Path                  : ou=servers,dc=studio,dc=cs
GpoInheritanceBlocked : False
GpoLinks              : {GP_Servers}
InheritedGpoLinks     : {GP_Servers, Default Domain Policy}

 

Name                  : workstations
Path                  : ou=workstations,dc=studio,dc=cs
GpoInheritanceBlocked : False
GpoLinks              : {GP_XP_computer}
InheritedGpoLinks     : {GP_XP_computer, Default Domain Policy}

A jak je to s oprávněními k objektům? Např. pro politiku gp_xp_computer :

get-gpo -Name gp_xp_computer | Get-GPPermissions -All

Trustee     : Authenticated Users
TrusteeType : WellKnownGroup
Permission  : GpoApply
Inherited   : False

 

Trustee     : Domain Admins
TrusteeType : Group
Permission  : GpoEditDeleteModifySecurity
Inherited   : False

 

Trustee     : Enterprise Admins
TrusteeType : Group
Permission  : GpoEditDeleteModifySecurity
Inherited   : False

 

Trustee     : ENTERPRISE DOMAIN CONTROLLERS
TrusteeType : WellKnownGroup
Permission  : GpoRead
Inherited   : False

 

Trustee     : SYSTEM
TrusteeType : WellKnownGroup
Permission  : GpoEditDeleteModifySecurity
Inherited   : False

A naopak oprávnění konkrétní skupiny ke všem GPO?

get-gpo -all | ForEach-Object {„$($_.displayname): $((get-gppermissions -targettype group -targetname „Authenticated Users“ -name $_.
displayname).permission)“}

GP_Servers: GpoApply
GP_XP_computer: GpoApply
Default Domain Policy: GpoApply
Default Domain Controllers Policy: GpoApply

Nový prázdný objekt GP vytvoříme:

New-GPO -Name GP_Win2008_Server

DisplayName      : GP_Win2008_Server
DomainName       : studio.cs
Owner            : STUDIO\Domain Admins
Id               : 64a97483-51dc-4811-bf89-a579e9a2cb49
GpoStatus        : AllSettingsEnabled
Description      :
CreationTime     : 7.1.2011 10:20:03
ModificationTime : 7.1.2011 10:20:03
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 0, SysVol Version: 0
WmiFilter        :

A připojíme

New-GPLink -Name GP_Win2008_Server -Target „ou=servers,dc=studio,dc=cs“ -linkenabled yes

GpoId       : 64a97483-51dc-4811-bf89-a579e9a2cb49
DisplayName : GP_Win2008_Server
Enabled     : True
Enforced    : False
Target      : OU=Servers,DC=studio,DC=cs
Order       : 2

Objekt GP můžeme kopírovat a vytvořit zcela nový GPO:

Copy-GPO -SourceName GP_Win2008_Server -TargetName GP_Exchange_Server

ZÁLOHA A OBNOVA GPO

Backup-GPO -All -path c:\temp\gpos\

Restore-GPO -Path C:\temp\gpos -Name GP_XP_Computer

Poznámka:

Podmínkou je domain controller Windows Server 2008 R2 nebo Windows Server 2008 R2 s instalovanou správou Group Policy Management nebo Windows 7 a nástroje Remote Server Administration Tools

Monitoring: Group Policy Changes

Zdá se, že by bylo možné pomocí auditních záznamů zachytit změny v objektech skupinové politiky (GPO) povolením auditu v adresářové službě a v přístupu k souborům:

  • z auditních záznamů událostí v bezpečnostním logu jsme schopni zjistit okamžik změny a původce, změnu verze, zápis do objektu nebo smazání objektu GP v AD (Directory Service Audit Access). Žádné detaily.
  • z auditních záznamů přístupů k souborům (File Access Audit) jsme schopni odlišit změny nebo zápisy na úrovni souborů v \\domain\sysvol\fqdn.domain\policies\{policy-guid}\, tj. v souborech a složkách
    • GPT.INI (verze)
    • \Machine\Registry.pol (HKLM)
    • \Machine\Scripts (startup, shutdown)
    • \Machine\Applications (MS Installer)
    • \Machine\Microsoft\Windows NT\Secedit (Gpttmpl.inf – security)
    • \Machine\Adm (šablony pro editor)
    • \User\Applications (MS Installer)
    • \User\Documents and Settings (Fdeploy.ini – redirections)
    • \User\Microsoft\RemoteInstall (OSCfilter.ini)
    • \User\Microsoft\IEAK (Internet Explorer)
    • \User\Scripts (logon, logoff)

Detailní informace o změněných položkách takto ovšem nezískáme. (zdroj)
Existují produkty určené ke správě AD nebo přímo pro Group Policy které mohou tento úkol splnit. Nezkoušel jsem je, takže jen vyjmenuji, co jsem objevil: