Posted in: Windows server

Výpis obnovovacího klíče Bitlocker z AD

Dnešní krátký kód vypíše z AD obnovovací klíč Bitlockeru, pokud je uložen v AD bez toho, aby na daném řadiči byly instalovány nástroje pro práci s Bitlockerem.

Import-module ActiveDirectory
$ADComputer = Read-Host -Prompt "Zadej jméno počítače"
$DN = Get-ADComputer $ADComputer | Select-Object -ExpandProperty DistinguishedName
$ADobj = get-adobject -Filter {objectclass -eq 'msFVE-RecoveryInformation'} -SearchBase $DN -Properties 'msFVE-RecoveryPassword' | Select-Object Name,msFVE-RecoveryPassword
[Ordered]@{
    Computer = $ADComputer
    RecoveryPassword = $ADobj.'msFVE-RecoveryPassword'
    Date = Get-Date -Date ($ADobj.Name ).Split('{')[0]
    BitlocerKeyID = (($ADobj.Name ).Split('{')[1]).TrimEnd('}')
} 
Posted in: Windows server

Migrace FSMO rolí mezi servery

K „neřízené“ migraci FSMO rolí dochází naprosto přirozeně samo, ve chvíli, kdy je nedostupný (výpadek sítě, vypnutí a pod.) server, který má nějakou FSMO roli, dočasně tuto roli převezme jiný server. Po obnovení provozu serveru, který má danou roli si je přebere zpět, ale až po úplném dokončení synchronizace.

Dnešní příspěvek je určitým českým popisem stavu, kdy je nutné FSMO roli přesunou ručně a rozhodně nenahrazuje originální dokumentaci. Sám jsem se dostal do stavu, kterému se v licenční tématice říká Permanent hardware failure, kdy jsem musel vynutit „trvalé“ převzetí všech FSMO rolí jiným serverem. Bohužel, server který selhal provozoval 4 z 5 těchto rolí. Právě o tom, jak takovéto převzetí udělat, buď v výpadku, nebo plánovat před vyřazením z provozu je tento článek. K převzetí všech FSMO rolí slouží PowerShellový příkaz:

Move-ADDirectoryServerOperationMasterRole -Identity S3 -OperationMasterRole RIDMaster,InfrastructureMaster,DomainNamingMaster,PDCEmulator,schemaMaster -Force

Tento příkaz je potřeba spustit na serveru, který má role převzít. Parameter Identity slouží k určení cílového serveru (je povinný), ale i tak doporučuji spouštět přímo na daném serveru. Pokud chci převádět jen některé role, stačí uvést jejich výčet v parametru OperationMasterRole.

Pokud server vyřazuje z provozu plánovaně, odebírám roli DC pomocí DCpromo, respektive příkazem:

Uninstall-ADDSDomainController

V takovém případě zůstávají role automaticky „rozebrány“ dalšími kontrolery, ale je dobré se o tom ujisti.

Posted in: Windows 10, Windows 11, Windows server

Stažení databáze hesel Have i been pwned

Správci systémů někdy potřebují databáze uniklých přihlašovacích údajů k tomu, aby zjistili, zda někdo z jejich uživatelů nepoužívá kompromitované přístupové údaje. Krom různých fór útočníků a pentesterů je jedním z dobrých zdrojů služba Have i been pwned. Dříve se přímo ze stránek této služby nechala stáhnout databáze s uniklými hesly ve formátu NTLM pro kontrolu těchto údajů v AD. Jedním z nástrojů, které umí tyto údaje kontrolovat je DSInternals. Nově web Have i been pwned má aplikaci pro stahování databáze hesel a o tom je tento příspěvek.

Stažená

Pro stažení a samotnou práci s aplikací je potřeba mít .NET6, jak jej instalovat jsem již psal. Pro instalaci downloaderu pak může sloužit např. příkaz:

dotnet tool install haveibeenpwned-downloader --tool-path "C:\Program Files\NET6\Tools"

Stažení databáze hesel ve formátu NTLM

Vlastní stažení databáze do složky aplikace je pak v PowerShellu velice jednoduché, jak ukazuje příklad níže.

#Přepneme se do adresáře aplikace
cd C:\Program Files\NET6\Tools
#Stáhneme hesla
.\haveibeenpwned-downloader.exe -n pwnedpasswords_ntlm
Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server

LAPS (Local Administrator Password Solution)

Jde o nástroj Microsoftu na správu hesel lokálního administrátorského účtu v doménovém prostředí. Jde o samostatné řešení, která „má na svědomí“ skupina Čechů pracujících v Microsoftu. Nově aktulializací 04-2023 se potřebné binární soubory staly součástí systému Windows 10 a Windows 11, rovněž pak systémů Windows server 2016, 2019 a 2022. Aktualizací instalovaná komponenta ovšem neobsahuje GUI pro servisní techniky, proto i tak doporučuji stáhnout msi z webu Microsoftu. Na koncových stanicích (pokud se rozhodnete instalovat ručně) stačí provést msiexec /i <cesta k msi instalárotu laps>, nebo využít distribuce pomocí GPO.

Na pracovní stanici administrátora, který se má starat o koncové stanice prak provedeme instalaci pomocí GUI a zvolíme „Fat clietn UI“

Instalace na doménový řadič

Na doménovém řadiči instalaci provedeme pomocí GUI (případně si dohledáme parametry na webu MS) a zvolíme všechny management tools.

Po dokončení instalace je potřeba upravit schéma AD (tato operace se provádí na Schema master kontroleru) pomocí několika PowerShell příkazů. Heslo bude po změně schématu uloženo v objektu počítače a k tomuto atributu budeme nastavovat právo přístupu.

Import-module AdmPwd.PS
Update-AdmPwdADSchema

Nyní musíme přidat patřičná oprávnění skupině správců klientských stanic.

Set-AdmPwdReadPasswordPermission -Identity "PC" -AllowedPrincipals "SpraciPC"

Nyní nastal čas povolit účtům počítačů změnit sám sobě heslo:

Set-AdmPwdComputerSelfPermission -Identity "PC"

Z vlastní zkušenosti mohu říct, že po dokončení instalace a restartu doménového řadiče je ještě potřeba registrovat službu.

regsvr32.exe AdmPwd.dll

Tvorba politiky

Pokud máte central store, bude ještě potřeba překopírovat ADMX šablonu z %windir%\PolicyDefinitions\ do \\domain\SYSVOL\domain\Policies\PolicyDefinitions\ a rozhodně nezapomenout na jazykový balíček šablony.

Celé nastavení technologie je pak v: Computer Configuration > Policies > Administrative Templates > LAPS.

Zde si nastavíme vše potřebné, jako je komplexita hesla a jeho platnost:

Účet lokálního administrátora (pokud nenastavíme, jde o vestavěný účet Administrator [SID končí na 500])

Zakážeme platnost hesla, která je delší, nežli jsme nastavili v zásadách

A nesmíme zapomenou celou konfiguraci (tedy i vlastní správu hesla lokálního admina) zapnout.

Přístup k heslům

Přístup k heslům získají doménový správci a uživatelé ve skupině, které tato práva byla přidělena. Uživatelé s oprávněními pak mohou využít LAPS UI

Nebo pomíc PoiwerShellu:

Get-AdmPwdPassword -ComputerName "AZ-0183-3116-95"
Posted in: Windows server

Ruční řízení synchronizace Azure AD Connect

Dnes Vám ukáži primitivní skript, kterým je možné zjisti stav synchronizace a případně ručně spustit synchronizaci AD s Azure AD.

<#
    Skript vypíše stav synchronizace Azure ADconnect,
    provede pravidelnou nebo celou synchronizaci.
    Skript musí běžet na PC, kde je instalován Azure ADconnect.
#>
$volba = 0
Write-Host "volba 1: Zjištěnís tavu synchronizace"
Write-Host "volba 2: Spustí synchrnizaci"
Write-Host "volba 3: Spustí úplnou (iniciální) synchronizaci"
switch($volba)

$volba = Read-Host -Promt "Zadej volbu"
{
    1{Get-ADSyncScheduler}
    2{Start-ADSyncSyncCycle -PolicyType Delta}
    3{Start-ADSyncSyncCycle -PolicyType Initial}
}
Posted in: Vývoj počítačů, Windows server

Auditování členství v Domain Admin

Skupina doménových administrátorů je skupinou velmi privilegovaných a citlivých účtů, tito uživatelé jsou prakticky pány celé sítě. Z toho důvodu se případní útočníci po tom, co se dostanou do sítě snaží přidat do této skupiny, což jim otevře prakticky neomezenou moc legitimní cestou. V tomto článku ukáži jednu možnost, která dokáže legitimním správcům dát informaci o tom, že se někdo přidal do této skupiny. PowerShellový skript pošle email a jediné co je potřeba, aby tento skript byl spuštěn spolu s operačním systémem doménového řadiče.

$ref=(Get-ADGroupMember -Identity "Domain Admins").Name
Start-Sleep -Seconds 86398
$diff=(Get-ADGroupMember -Identity "Domain Admins").Name
$date=Get-Date -Format F
$result=(Compare-Object -ReferenceObject $ref -DifferenceObject $diff | Where-Object {$_.SideIndicator -eq "=>"} | Select-Object -ExpandProperty InputObject) -join ", "
#nastaveni prihlaseni k smtp serveru
$login = #dopln
$password = #dopln
$server = “smtp.office365.com” #smtp pro exchange online
$Port = 587
If ($result)
{
    $Predmet = "Admin Membership Changes | $result was added to the Group"
    $telo = "This alert was generated at $date"
    $From = #dopln
    $To = #dopln
    $SMTPMessage = New-Object System.Net.Mail.MailMessage($From,$To,$Predmet,$telo)
    $SMTPmessage.IsBodyHTML = $false
    $SMTPClient = New-Object Net.Mail.SmtpClient($server, $Port)
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($login, $password)
    $SMTPClient.EnableSsl = $true
    $SMTPClient.Send($SMTPMessage)
} 
Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server

Pokročilá nastavení BitLockeru

Tento krátký text bude o možnostech nástroje BitLocker, které nejsou konfigurovatelné pomocí GUI, ale mohou se hodit pro datové disky, USB klíčenky, zálohy nebo další paměťová média. Pro práci s níže popsaným je potřeba PowerShell, nebo příkazová řádka.

Pro odemčení jednotky je možné využít certifikátu, který vystaví interní certifikační autorita. Přidání možnosti odemknout jednotku certifikátem ukáži na příkladu níže. Pokud využíváme PowerShell je možné místo souboru certifikátu odkázat na certifikát instalovaný v systému (účet uživatele, nebo počítače).

manage-bde -protectors -add E: -certificate -cf c:\File Folder\Filename.cer

Velmi zajímavou možností pro sdílená externí paměťová média je pak možnost odemknout jednotku pomocí členství účtu uživatele, nebo počítače ve skupině zabezpečení. Pro uživatele jde o velmi pohodlnou možnost, kdy pro odemčení jednotky nemusí nic zadávat a zároveň nehrozí vyzrazení pinu nepovolané osobě. Tuto možnost ovšem nedoporučuji využívat pro zálohovací média, protože při ztrátě AD již nebude možné takové médium odemknout, pokud nebude vytvořená vytištěná záloha 48 mastného obnovovacího klíče. Níže uvedený příklad nastavuje právo odemknout jednotku E: členům skupiny ekonomického oddělení.

manage-bde -protectors -add E: -sid DOMAIN\skupina-ekonomicke

V konfiguraci nástroje BitLocker je potřeba mít pořádek, proto se hodí vypsat konfiguraci pro danou jednotku (např. C:), což provede příkaz:

manage-bde -protectors -get C:

Výše uvedený příkaz rovněž zobrazí obnovovací 48 ciferný klíč. Posledním typem, který zde v krátkosti popíši je vynucení zálohy obnovovacího klíče do účtu počítače v AD. Pomocí GPO je možné nastavit, že bez této úspěšné zálohy nepůjde zahájit šifrování, ale někdy se může hodit možnost přidat klíč ručně (např. počítač je již šifrovaný v době zařazení do domény). Pro úspěšné provedený zálohy je nutné znát ID obcovacího klíče, které je mimo jiné výstupem příkazu výše uvedeného. Vlastní zálohu pak realizuje příkaz:

manage-bde -protectors -adbackup C: -id '{00000000-0000-0000-0000-000000000000}'
Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server

Doba trvání relace vzdálené plochy

Jako správce můžu mít několik důvodů k tomu, abych potřeboval znát délku otevřených RDP spojení vůči některému ze serverů či počítačů. Nejde jen o dobu aktivně otevřených spojení, ale především o spojení, která jsou odpojená. Odpojená spojení nadále čerpají prostředky zařízení, ale pro uživatele jsou pohodlná, protože se kdykoliv mohou připojit k své již rozdělané práci. Tato spojení může ukončit uživatel, odhlášením se, administrátor např. pomocí správce úloh, nebo je ukončí restart systému, vůči kterému jsou otevřena. Příkladem může být snímek ze správce úloh, který poskytuje web WOSHUB.

Informace o otevřených spojeních, včetně délky jejich trvání je možní získat příkazem:

quser

Podrobnější informace, včetně přepočtené délky trvání relací, je pak možné získat pomocí PowerShellu:

Get-RDUserSession -ConnectionBroker $env:COMPUTERNAME |select-object -Property CollectionName, HostServer, DomainName, UserName, ServerIPAddress, CreateTime, DisconnectTime,  SessionState, IdleTime , SessionID , `
@{Name='SessionAge ([days.]hours:minutes)';Expression={ ((get-date ) - $_.CreateTime) } }

Nastavení limitu relace vzdálené plochy

Je více možností, jak nastavit parametry relací vzdálené plochy. Pokud je nasazena a licencována služba Server Vzdálené plochy, je nejlepší konfigurovat daná nastavení zde.

Běžněji dostupné možnosti jsou buď hromadně pomocí GPO, kdy se využije:

Konfigurace počítače – > zásady – > šablony pro správu – > součásti systému Windows – > služba Vzdálená plocha – > hostitel relací vzdálené plochy – > časové limity relací

Zde jsou k dispozici konfigurace:

  • Nastavte časový limit pro odpojenou relaci;
  • Nastavit časový limit pro aktivní, ale nečinné relace služby Vzdálená plocha — politika umožňuje ukončit nečinné relace RDP, které nemají žádný vstup uživatele (jako je pohyb myši nebo psaní něčeho na klávesnici);
  • Nastavte časový limit pro aktivní relace služby Vzdálená plocha — je to maximální doba jakékoli relace RDP (i aktivní), po které se přepne do odpojeného stavu;
  • Ukončit relaci při dosažení časových limitů — nastavuje čas, po kterém bude RDP session ukončena (odhlášena) namísto jejího odpojení;
  • Nastavte časový limit pro odhlášení relací aplikací RemoteApp.

Výše popsaným konfiguracím GPO odpovídají hodnoty obsažení v registru: HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Další možností je omezit délky relací konkrétním uživatelům, což se nastavuje na kartě Relace v rámci vlastností uživatele v Users and Computers ADDS. Nastavení je možné vyvolat rovněž pomocí centra pro správu AD.

Pokud nám omezení doby relací nefunguje a v prohlížeči událostí se objevuje událost ID 26:

je potřeba provést následující příkaz PowerShellu:

Set-WmiInstance -Path "\\localhost\root\CIMV2\TerminalServices:Win32_TSSessionSetting.TerminalName='RDP-Tcp'" -Argument @{EnableTimeoutWarning=0
Posted in: Windows 10, Windows 11, Windows server

Instalace certifikátu do user private store

Dnes se dostaneme k problematice certifikátů. Někdy se hodí pro nějakou službu mít přístup jen pro uživatele, kteří drží nějaký certifikát. Můžeme mít scénář, kdy cloudová služba vyžaduje certifikát, který je vystaven pro organizaci, aby umožnila zadat přihlašovací údaje uživateli. Pro instalaci pfx certifikátu pro nějakou skupinu uživatelů, můžeme mít jiný důvod (nejčastěji půjde o SSL certifikát), proto se pojďme podívat, jak na to.

V první řadě musíme mít instalovanou správnou certifikační autoritu, pokud jde o externí službu, využijeme pfx soubor k instalaci důvěryhodné certifikační autority pomocí GPO v rámci dané politiky následovně:

  1. Konfigurace počítače
  2. Nastavení systému Windows
  3. Nastavení zabezpečení
  4. Zásady veřejných klíčů
  5. Pomocí kontextového menu vyvoláme průvodce importem certifikátu a použijeme požadovaný pfx soubor

Nyní již můžeme přistoupit k řešení importu vlastního certifikátu uživateli. Bohužel v GPO nemáme k dispozici certmgr.msc konzolu, nebo obdobu správy certifikátů pomocí IE. K privátnímu uložišti certifikátů uživatele se nelze pomocí GPO nijak dostat, což je správně, musíme si trochu pomoci nástrojem certutil, který použijeme následujícím skriptem:

certutil -f -user -p "CertificatePassword" -importpfx %LOGONSERVER%\netlogon\certificates\vendorcertificate.pfx"

Výše uvedený skript platí, když je daný certifikát uložený na DC, pokud jej ukládáme na libovolný jiný server, využíváme konkrétní UNC cestu k certifikátu. Skript uložíme jako soubor formátu cmd, nebo bat. Nyní se vrátíme do GPO editoru politiky a zajistíme instalaci certifikátu uživateli. Nejlepší cestou, je využít plánovanou úlohu, protože se jedná o GPO preferenci, což nám umožní lépe cíli na konkrétní uživatele, kteří mají certifikát mít instalovaný. Plánovanou úlohu vytvoříme v editoru politiky následovně:

  1. Konfigurace uživatele
  2. Předvolby
  3. Ovládací panely
  4. Naplánované úlohy
  5. kontextovým menu vytvoříme novou plánovanou úlohu pro Windows 7 a novější

Naplánovaná úloha se bude spouštět při přihlášení uživatele a bude spouštět náš skript, který jsme si popsali výše. Posledním úkolem je v upřesnění využít cílení úlohy, pokud je to potřeba.

Je důležité si uvědomit, že uživateli se certifikát touto cestou zapíše až při druhém přihlášení na daném PC, první přihlášení aktualizuje politiky a vytvoří plánovanou úlohu spolu se zapsáním certifikační autority. Až druhé přihlášení aktivuje plánovanou úlohu a zapíše certifikát.

Back to Top