Posted in: Windows server

Prověření hesel v AD

Tento článek bych rád věnoval problematice kontrole hesel, které využívají vaši uživatelé v rámci doménové sítě. Jednou věcí je vydefinovat politiku na složitost délku, dobu platnosti hesla a uzamykání stanic, což je naprostý základ každé domény a doporučuji toto nastavení definovat v Default Domain Policy.
Pokud je toto nastavení provedeno správně, značně ztěžuje slovníkový či brute-force útok na heslo uživatele, ale problém je v tom, že lokální AD na rozdíl od Azure AD neumí porovnávat hesla se známími uniklými hesly. Pomocí Azure AD Premuim lze při hybridním scénáři tuto funkcionalitu do lokálního AD nasadit, ale pojďmě se podívat na to, jak si podobný test provés bez cloudu.Tento manuální audit hesel by měli provádět pouze doménový správci, ostatně jsou jediní, kdo to může udělat legitimně. Test nemusíme, ani to nedoporučuji, provádět přímo na serveru Active Directory, co budeme potřebovat je počítač s Windows 10, naprosto ideálně počítač s klientskou verzí systému Windows odpovídající serverové verzi. Například pro Windows server 2012R2 to jsou 8.1, pro Windows server 2012 jsou to 8, pro Windows server 2016 a 2019 jsou to Window 10.Dále budeme potřebovat PowerShell modul od Michaela Grafnettera DSInternals, který leze instalovat normálně z PowerShell galery. Dokumentace je krom PowerShellu dostupná na GitHubu či webu.

Poslední potřebnou věcí jsou databáze uniklých hesel např. have i been pwned (NTLM Hash) nebo čistě textové. Ze stažených archivů exportujeme txt soubor s hesly.

Postup

  1. Ze záloíhy AD si obnovíme co nejnovější verzi ntds.dit a souboru SYSTEM (což je soubor registru ze složky: C:\Windows\System32\config)
  2. Spustíme PowerShell jako správce

V PowerShellu spustíme následující kód pro databázi NTLM Hashů hesel:

$ntdsPath = Read-Host -Prompt "Zadej cestu k ntds.dit"
$systempath = Read-Host -Prompt "Zadej cestu k souboru registru SYSTEM z DC"
$slovnik = Read-Host -Prompt "Zadej cestu k souboru slovníku NTLM hash"
$vystup = Read-Host -Prompt "Zadej umístění výstupního souboru txt"
Import-Module -Name DSInternals
$key = Get-BootKey -SystemHivePath $systempath
Get-ADDBAccount -All -DBPath $ntdsPath -BootKey $key | Test-PasswordQuality -WeakPasswordHashesFile $slovnik | Out-File $vystup -Encoding utf8

Pokud máme zdrojovou databázi (či vlastní list) v plaintextu, použijeme následující příkazy:

$ntdsPath = Read-Host -Prompt "Zadej cestu k ntds.dit"
$systempath = Read-Host -Prompt "Zadej cestu k souboru registru SYSTEM z DC"
$slovnik = Read-Host -Prompt "Zadej cestu k souboru slovníku NTLM hash"
$vystup = Read-Host -Prompt "Zadej umístění výstupního souboru txt"
Import-Module -Name DSInternals
$key = Get-BootKey -SystemHivePath $systempath
Get-ADDBAccount -All -DBPath $ntdsPath -BootKey $key | Test-PasswordQuality -WeakPasswordsFile $slovnik | Out-File $vystup -Encoding utf8

Nyní necháme proces proběhnout (trvá od jednotek minut do řádu hodin dle počtu účtů, velikosti databáze uniklých hesel, toho zda databáze obsahuje plaintextová hesla nebo rovnou hash a rychlosti disku). Po dokončení procesu máme ve výstupním souboru hotovou analýzu.

Posted in: Windows server

Storage migration services

V tomto článku se s Vám podělím o video, které je návodné a zároveň popisné pro Storage Migration Services. Tato služba je dostupná ve Windows serveru 2019 a 2022, grafické rozhraní obsatává Windows Admincenter.
Jde o službu pro migraci souborů a síťových disků mezi servery, nebo s možností cílového umístění v Azure tak, aby při migraci v rámci lokální sítě vše fungovalo a nebylo po dokončení poznat, že sdílené soubory jsou na jiném serveru.

Pod videem, které snad brzy doplním o český článek, se rovněž nachází řešení jednoho problému, na který jsem osobně při využití této funkce v produkci narazil.

Správci služby migrace úložiště: pokud se vám při ověřování přenosu po instalaci listopadové kumulativní aktualizace zobrazuje „Chyba HRESULT E_FAIL byla vrácena z volání komponenty COM“, máme řešení ve WAC:

  1. Nainstalujte si nejnovější nástroj SMS WAC (od 3.9.2021 dne 1.115). Automaticky se zobrazí ve zdroji WAC
  2. Ve fázi přenosu přejděte na krok „Upravit nastavení“.
  3. Povolit „Přepsat ověření přenosu“
  4. Pokračujte v převodu, aniž byste spustili „Ověřit“ nebo jej spustili a ignorovali chybu E_FAIL.
thumbnail image 1 of blog post titled SMS "HRESULT E_FAIL from COM component" workaround coming
Posted in: Windows server

Windows server 2022 TP je tu!

Všem fanouškům Windows serveru nyní mohu sdělit, že nové Insider Prewiev je zde! Pokud nejste registrováni a i tak jste zvědaví, českou verzi můžete stáhnout zde. Aktuální build je platný do 31.10.2021
Pro upgrade budete potřebovat licenční klíče, ty jsou:

  • Server Standard: MFY9F-XBN2F-TYFMP-CCV49-RMYVH
  • Datacenter: 2KNJJ-33Y9H-2GXGX-KMQWH-G6H67

Na první dobrou si člověk na totožném HW všimne vyšší rychlosti proti 2016 i 2019, i když vůči té 2019 není nárůst až takový. V desktopovém režimu nechybí vestavěný MS Edge verze 89.0.
PowerShell je nativně ve verzi 5.1. build 20303 revize 1, novější PowerShell 7 je stále potřeba doinstalovat manuálně.

Posted in: Windows server

Vnořená virtualizace v Hyper-V

Od Windows serveru 2016 je možné virtualizovat ve virtualizovaných strojích, což může pomoci nejen vývojářům, ale také v rámci firemního provozu, kdy je možné spustit technologii Hyper-V, či jinou virtualizační technologii ve virtuálních strojích. V dnešním příspěvku si ukážeme, jak takovou záležitost nakonfigurovat.Pro zapnutí vnořené virtualizace je potřeba udělat několik případných kroků.

  1. Virtuální stroj, který má mít zapnutou vnořenou virtualizaci, musí mít více jak 1 virtuální procesor
     
  2. Virtuální stroj, který má mít zapnutou vnořenou virtualizaci, musí mít vypnutou dynamickou paměť, tedy musí mít nastavenou staticky při startu přiřazenou paměť
     
  3. Virtuální stroj, který má mít zapnutou vnořenou virtualizaci, musí mít povolené falšování MAC adresy
     
  4. V PowerShellu, který běží v režimu správce, spustíme následující příkaz:
    Set-VMProcessor -VMName <Název virtuálního PC> -ExposeVirtualizationExtensions $true #Náve doplňujeme bez špičatých závorek a název se bere z Hyper-V konzole, nikoliv z běžícího systému
     
  5. V PowerShellu, který běží v režimu správce, spustíme pro kontrolu výsledku následující příkaz:
    Get-VMProcessor -VMName <Název virtuálního PC> | FL *
Posted in: Windows server

Jak přenést či zálohovat role a funkce Windows Serveru?

Dnes si představíme malý PowerShell skript, který Vám pomůže přenést všechny role a funkce z jednoho serveru na druhý. Na takto připraveném serveru je možné následně využít nástrojů pro migraci serveru, které dokáže exportovat a importovat jednotlivé konfigurace různých rolí a funkcí serveru. Základem ovšem zůstává mít instalované stejné role a funkce na starém i novém stroji a to jak vše provést na 2 spuštění sktriptu a přenesené jednoho TXT souboru si ukážeme. Nejprve je potřeba si uložit následující skript:

Function MigraceRoliFunkci
{
    Param(
        [Parameter(Mandatory=$true)]
        [String]$soubor = "C:\Users\Public\features.txt",
        [Parameter(Mandatory=$false)]
        [Switch]$Import
    )
    if($Import)
    {
        $file = Get-Content $soubor;
    	$radek = ($file.Count) - 3;
    	$role = Get-Content E:\funkce.txt -Tail $radek
        foreach ($f in $role)
        {
            Install-WindowsFeature -Name $f -IncludeManagementTools
        }
        Write-Host "Restartujte server co nejdříve!"
	}

     else

     {

	Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | select name | Out-File -FilePath $soubor
        
	Write-Host "Vyzvednete si vygenerovany soubor pro import."
    
     }

}

Nyní jej můžeme spustit na starém serveru a následně zavolat funkci například takto:
MigraceRoliFunkci -soubor E:\funkce.txt
Nyní skriprt spustí export seznamu rolí a funkcí za našeho starého serveru na náš disk E do souboru funkce.txt.
Disk E přeneseme na nový server, kde pro zjednodušení bude mít také písmeno E, spustíme náš skript a opět budeme volat funkci:
MigraceRoliFunkci -soubor E:\funkce.txt -Import
Nyní naše funkce provede instalaci všech rolí a funkcí, které nalezne v souboru funkce.csv. Po dokončení instalace máme server připraven k importu nastavení, ale o tom až někdy jindy.

Posted in: Windows server

Jak udržet ovladače a soubory kernel-mode v RAM

Pokud se Vám stává, že Váš server havaruje opakovaně z důvodu chyby paměťové stránky, nebo paměťové stránky kernel-modu doporučuji zkontrolovat následující registr:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Kde je klíč DisablePagingExecutive, který řeší, zda smí být paměťové stránky příslušející kernel-modu nebo ovladačům odloženy na disk v případě potřeby.
Pokud máte v klíči DisablePagingExecutive: 0, pak smí být data odložena nadisk.
pokud máte v klíči DisablePagingExecutive: 1, pak jsou data za všech okolností držena v paměti RAM.

Posted in: Windows 10, Windows 11, Windows server

PowerShell script pro monitoring záloh a obnovu ze zálohy

Write-Host „Práce se zálohou serveru“;
Write-Host „“;
Write-Host „Menu:“ -ForegroundColor Green;
$volba;
Write-Host „1: Aktuální stav běžící zálohy“;
Write-Host „2: Výpis dostupných záloh“;
Write-Host „3: Výpis položek obsažených v záloze“;
Write-Host „4: Obnova souborů a složek do původního umístění“;
Write-Host „5: Obnova souborů a složek do vlastního umístění“;
Write-Host „6: Obnova celé jednotky“;
Write-Host „7: Obnova registru“;
Write-Host „8: Obnova systémového stavu“;
$volba = Read-Host -Prompt „Zadejte číslo své volby“;
function status()
{
Write-Host „Vypisuji stav běžící zálohy“ -ForegroundColor Green;
wbadmin get status
Write-Host „Stav záloh za poseldní týden“ -ForegroundColor Green;
Get-WBJob -Previous 7
}
function dostupne()
{
$cil = Read-Host -Prompt „Zadej cíl zálohy (např.: H:): „;
Write-Host „Vypisuji dostupné zálohy“ -ForegroundColor Green;
wbadmin get versions -backupTarget:$cil
}
function polozky()
{
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
Write-Host „Vypisuji položky zálohy“ -ForegroundColor Green;
wbadmin get items -version:$ID;
}
function souboryP()
{
Write-Host „Obnova soborů a složek“ -ForegroundColor Green;
$slozka = Read-Host -Prompt „Obnovuješ složku? (A/N): „;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
$polozka = Read-Host -Prompt „Zadej položku k obnově (např.: E\Fotoalbum\MTZ)“;
if($slozka -eq „A“ -or $slozka -eq „a“)
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka -recursive;
}
else
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka;
}
}
function souboryS()
{
Write-Host „Obnova soborů a složek“ -ForegroundColor Green;
$slozka = Read-Host -Prompt „Obnovuješ složku? (A/N): „;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
$polozka = Read-Host -Prompt „Zadej položku k obnově (např.: E\Fotoalbum\MTZ)“;
$cil = Read-Host -Prompt „Zadej cíl obnovy (např.: H\Foto\mtz)“
if($slozka -eq „A“ -or $slozka -eq „a“)
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka -recursive -recoverytarget:$cil;
}
else
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka -recoverytarget:$cil;
}
}
function jednotka()
{
Write-Host „Obnova jednotky“ -ForegroundColor Green;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
$jednotka = Read-Host -Prompt „Zadej identifikátor jednotky (např.: \\?\Volume{cc566d14-44a0-11d9-9d93-806e6f6e6963}\“
wbadmin start recovery -version:$ID -itemType:Volume -items:$jednotka;
}
function registr()
{
Write-Host „Obnova registru přibyde v novější verzi“ -ForegroundColor red;
}
function system()
{
Write-Host „Obnova stavu systému“ -ForegroundColor Green;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
wbadmin start systemstaterecovery -version:$ID;
}
switch($volba)
{
1{status}
2{dostupne}
3{polozky}
4{souboryP}
5{souboryS}
6{jednotka}
7{registr}
8{system}
default{Write-Host „Chybně zadaná volba, spusť skript znovu!“-ForegroundColor Red}
}

Posted in: Windows server

Centrální zastavení / spuštění služby Windows Update

Všichni jsme se jako admini setkali se situací, kdy potřebujeme rychle zastavit aktulizace Windows v celé síti, ať z důvodu chybné aktualizace, či z jiného důvodu.
Dnes Vám ukáži, jak aktualizace vypnout pomocí PowerShellu, ale nezapomeňme, že je nutné Windows update po nezbytné době opět zapnout, protože podporované jsou jen plně aktualizované systémy 😉

<#
    
	Skript zastaví službu Windows Update na všech PC v doméně.
    
	Autor nenese žádnou odpovědnost za případné škody, 
	uživatel je povinen před spuštěním se seznámit se skriptem!

    
	Požadavky:
    
	- PowerShell verze 5 a novější
    
	- Admin oprávnění pro všechna PC
    
	- ExcutionPolicy set to bypass

    
	Petrásek Jan
    
	©2020

#>

Invoke-Command -ComputerName (Get-ADComputer -Filter * | select DNSHostName).DNSHostName -ScriptBlock {

	net stop wuauserv;
    sc.exe config wuauserv start=disabled

}

Nyní si uvedeme druhý skript, který aktualizace opět zapne:

<#
    
	Skript zastaví službu Windows Update na všech PC v doméně.
    
	Autor nenese žádnou odpovědnost za případné škody, 
	uživatel je povinen před spuštěním se seznámit se skriptem!

    
	Požadavky:
    
	- PowerShell verze 5 a novější
    
	- Admin oprávnění pro všechna PC
    
	- ExcutionPolicy set to bypass

    
	Petrásek Jan
    
	©2020

#>

Invoke-Command -ComputerName (Get-ADComputer -Filter * -SearchBase "CN=Computers,DC=arpida,DC=local" | select DNSHostName).DNSHostName -ScriptBlock {
	net start wuauserv;
    sc.exe config wuauserv start=auto

}
Posted in: Windows 10, Windows 11, Windows server

Velký dárek pro malé i velké Adminy

Z dílen Microsoftu vyšla již před nějaký časem naprostá pecka, která navíc konečně dospěla. Aplikace Admin center z dílen Microsoftu je jednoduchým nástrojem pro centrální správu všeho, co žije na platformě Windows.
Aplikaci je možné nasadit i v nedoménovém prostředí a je dostatečně robustní, aby zvládla spravovat i poměrně velká prostředí (osobně ji užívám na správu 300 PC a 8 serverů ve 3 doménách zároveň). Rozhodně se nejedná o náhradu Systém Centeru, tomu se neblíží ani zdaleka, ale někdy může být její jednoduchost naopak i výhodou.

Aplikce umožňuje pomocí online přístupu spravovat počítače, servery, clustery a vše integrovat s Azure službami. Admin center je možné instalovat na Windows server 2019, Windows server 1803 a novější a Windows 10 verze 1803 a novější. Přístup do aplikace je možný skrze Microsoft Edge a Google Chrome, vlastní aplikace nemá žádné nastavení nebo vlastní grafiku, vše se řeší pomocí webového prohlížeče, tudíž je vhodná pro instalaci na server Core.
Na cílových počítačích musí být aktivní služba WinRM a příslušné výjimky ve Firewall, což se dá obojí zajistit příkazem: winrm qc -q
Vyjímaje provádění konkrétních úkonů správy (např. správy pravidel Firewall, instalace Update…) je k dispozici i přístup na Adminshare, kde je možné pracovat se soubory a PowerShell remoting (vzdálené připojení PowerShellem) je k dispozici i možnost vyvolání RDP připojení.
Mezi počítači je možné vyhledávat a je možné si je pomocí štítů třídit do různých skupina a na jejich základě si je filtrovat.

Tentokrát mohu potvrdit, že nasazení je od verze 1904 jednoduché, rychlé, bezstarostné a vše funguje, jak má. Na cílové PC není potřeba instalovat žádného klienta. Za mě opravdu povedená aplikace a rozhodně stojí za těch 30 minut, které jsou potřeba k tomu, aby jste ji instalovali, zvykli si na ni a nabyli ji všemi Windows zařízeními.

Stažení a informace

Back to Top