Category Archives: Active Directory

GPO – rozwiązywanie problemów ( troubleshooting )

W przypadku problemów ze źle działającymi polisami dobrze sprawdzić:

  1. Czy polisa jest w ogóle podpięta do konkretnego OU;
  2. Czy link jest włączony / aktywny (Policy properties -> Scope -> Enabled: Yes). Symbolizuje to również niebieska strzałeczka przy podpiętym linku. Jeśli link nie jest aktywny – strzałeczka jest szara.
  3. Czy nie ma zaznaczonego Security Filtering (Policy properties -> Scope -> Security Filtering);
  4. Czy nie ma zaznaczonego WMI Filtering (Policy properties -> Scope -> WMI Filtering);
  5. Czy polisa jest włączona (lub dla jakiej sekcji jest wyłączona) (Policy properties -> Details -> GPO Status);
  6. Kolejności ładowania polis i dziedziczenia – czy nie jest przypadkiem zablokowane aplikowanie polisy, która jest podpięta do kontenera nadrzędnego.
    Enforce Policy jest regułą nadrzędną i wymusza aplikowanie polisy do podrzędnych OU, nawet gdy mają one zaznaczoną regułę blokującą dziedziczenie – Block Inheritance. Polisa wymuszająca dziedziczenie zostanie zaaplikowana jako ostatnia. Kolejności ładowania polis wyświetla zakładka Group Policy Inheritance po kliknięciu na OU);
    Zmianę kolejności ładowania polis podpiętych tylko do konkretnego OU można dokonać po kliknięciu na OU a następnie na zakładkę Linked Group Policy Objects (strzałki po lewej stronie).
  7. Czy polisa jest obsługiwana przez dany system operacyjny (zazwyczaj notka Supported on: pod radio buttonami Not Configured, Enabled, Disabled) lub okienko pomocy.
  8. Czy polisa nie wymaga restartu komputera lub przelogowania użytkownika (polecenie gpupdate /force wyświetli odpowiedni komunikat jeśli tak będzie).
  9. Group Policy Result – można uruchomić z poziomu GPMC lub na systemie klienckim, wydając polecenie gpresult /H:gpresult.html
  10. Czy kontroler domenty, do którego jest aktualnie podłączony komputer jest faktycznie tym, który przetwarza polisy (podłączenie można sprawdzić poprzez wydanie polecenia: start -> cmd -> komenda set -> wyświetlona zmienna LOGONSERVER=). Może się okazać, że w dużym środowisku komputer / użytkownik może być podłączony do jednego DC, a mieć przetwarzane polisy (tzw. secure channel) przez inny DC. Wyświetlenie kontrolera domeny, który przetwarza polisy można wykonać poprzez wydanie na końcówce komendy: nltest /sc_query:nazwadomeny.local
  11. Czy wersja polisy dla użytkownika różni się od wersji polisy dla komputera (w zakładce Details: User Version, Computer Version);
  12. Czy kontrolery są poprawnie replikowane: http://obsluga-it.pl/sprawdzanie-poprawnej-replikacji-miedzy-kontrolerami-domeny/

Windows Server 2022 – zabezpieczenie systemu ( Microsoft Security Baselines Blog )

Microsoft Security Baselines Blog jest to blog mówiący nt. dobrych praktyk dot. zabezpieczeń produktów Microsoft. Jednym z produktów jest Server 2022, którego wybierając z listy użytkownik przechodzi do strony zawierającej materiały szkoleniowe oraz narzędzia mające na celu zabezpieczenie danego systemu, tj. Security Compliance Toolkit and Baselines: https://www.microsoft.com/en-us/download/details.aspx?id=55319

W przypadku zabezpieczenia Windows Server 2022 na uwagę zasługują 3 pozycje:

– Windows Server 2022 Security Baseline (użyteczne pliki: New Settings in Windowa Server 2022.xlsx, Final-MS Security Baseline Windows Server 2022.xlsx – dobre praktyki, ustawienia GPO oraz przykładowe – rekomendowane reguły polis: Windows Server-2022-Security-Baseline-FINAL\Documentation\MSFT-WS2022-FINAL.PolicyRules),

– PolicyAnalyzer – aplikacja, jak sama nazwa wskazuje – analizator / porównywarka polis. Można do programu zaimportować wszystkie reguły (z rozszerzeniem *.PolicyRules) znajdujące się w katalogu PolicyRules (w ściągniętym archiwum wraz z programem) oraz powyższą regułę (tj. MSFT-WS2022-FINAL.PolicyRules) a następnie porównać je z naszymi. Wówczas można zobaczyć jak się mają one do dobrych praktyk – ustawień polis zalecanych przez Microsoft.

– LGPO – Local Group Policy Object Utility – aplikacja obsługiwana wyłącznie z linii komend służąca do eksportu / importu lokalnych polis z Registry Policy (Registry.pol) a także z odpowiednio sformatowanych plików tekstowych „LGPO text” oraz XML – plików programu Policy Analyzer.
Eksport polis można dokonać również bezpośrednio z GPMC.

 

Źródła:
Blog Microsoft nt. zabezpieczeń swoich produktów ( Microsoft Security Baselines Blog ):
https://techcommunity.microsoft.com/t5/microsoft-security-baselines/bg-p/Microsoft-Security-Baselines
https://techcommunity.microsoft.com/t5/windows-server-for-it-pro/active-directory-advanced-threat-hunting-compare-gpos-with-the/m-p/4074177

Active Directory – odblokowanie konta i reset hasła administratora domeny

Aby odblokować i zresetować hasło Administratora należy uruchomić serwer z płyty instalacyjnej Windows Serwer (testowane na 2022) a następnie wejść do linii komend i wykonać poniższe kroki:
1) narzędziem DiskPart należy nadać literę partycji systemowej;

diskpart 
select disk 0
list partition
select partition 3
assign letter c

2) odpowiednio skonfigurować ponowne uruchomienie serwera oraz podmienić plik utilman.exe;

bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 15
c:
cd windows/system32
ren utilman.exe utilman.123
copy cmd.exe utilman.exe

3) Restart serwera. Po restarcie naciśnięcie klawisza F8 i wybranie opcji „Disable Early Launch Anti-Malware Driver”, przy logowaniu należy kliknąć na ikonkę kółeczka znajdującą się w dolnym prawym rogu. Zamiast narzędzia utilman.exe otworzy się cmd.exe – linia komend.

4) W linii komend należy wydać polecenia odblokowujące i zmieniające hasło użytkownikowi Administrator (również administratorowi domenowemu):

net user administrator /active:yes
net user administrator password
net user administrator password /domain

 

Active Directory i PowerShell – operacje na grupach

Wyświetlenie obiektów należących do grupy o nazwie GroupName

Get-ADGroupMember GroupName | Format-Table name

Wyświetlenie wszystkich grup, do których należy użytkownik o nazwie UserName

Get-ADPrincipalGroupMembership UserName | Format-Table name

Wyświetlenie użytkowników należących do grupy zabezpieczeń o nazwie SecureGroup.

Get-ADUser -filter 'memberOf -recursivematch "CN=SecureGroup, OU=IT, DC=domena, DC=local"' | Format-Table name

Dodanie użytkowników OU do grupy zabezpieczeń.

Get-ADUser -SearchBase ‘OU=nazwaOU,DC=test,DC=local’ -Filter * | ForEach-Object {Add-ADGroupMember -Identity ‘NazwaGrupyZabezpieczen’ -Members $_ }

Active Directory i PowerShell – tworzenie kopii zapasowej

#zdefiniowanie źródła
Get-WBVolume -AllVolumes
$vol = Get-WBVolume -VolumePath c:

#zdefiniowanie miejsca docelowego
$networkBackupLocation = New-WBBackupTarget -NetworkPath \\DC2\backups

#Włączenie polisy - ustawienie atrybutu SystemState na True
Add-WBSystemState -Policy backupPolicy 

#zdefiniowanie i konfiguracja polisy
$backupPolicy = New-WBPolicy
Add-WBVolume -Policy -$backupPolicy -Volume $vol
Add-WBBackupTarget -Policy $backupPolicy -Target $networkBackupLocation

#uruchomienie polisy
Start-WBBackup -Policy $backupPolicy

Active Directory i Powershell – operacje na użytkownikach i komputerach

Artykuł w budowie.

Odblokowanie wszystkich zablokowanych kont:

Search-ADAccount -LockOut | Unlock-ADAccount

Znalezienie użytkownika:

Get-ADUser -Filter 'Name -like "*userName"'

Reset hasła użytkownikowi userName:

Set-ADAccountPassword userName -NewPassword (Read-Host - AsSecureString 'New Password') -Reset

Automatyczny reset hasła wielu użytkownikom:

Add-Type -AssemblyName 'System.Web'

$userAccounts = 'user1', 'user2'
foreach ($account in $userAccounts) {
$plain_text_password = [System.Web.Security.Membership]::GeneratePassword(13, 3)
Write-Host "Resetting $account password to $plain_text_password ..."
Set-ADAccountPassword $account -NewPassword ($plain_text_password | convertto-securestring -asplaintext -force)
}

Dodanie komputera do domeny

add-computer –domainname sieciunia.local -Credential sieciunia.local\administrator -restart –force

Wyświetlenie użytkowników nieaktualnych, którzy zmieniali hasło dalej niż 31 dni temu i wyłączenie / przeniesienie / usunięcie ich:

$password_Age = (Get-Date).adddays(-31)
$users_with_old_password = Get-ADUser -Filter * -Properties PasswordLastSet | 
Where-Object {
$_.PasswordLastSet -and
$_.PasswordLastSet -lt $password_Age
}
$users_with_old_password 

#Wylaczenie kont w ktorych haslo nie bylo zmieniane
$users_with_old_password | Set-ADUser -Enabled $false

#Wlaczenie konta administratora jesli wczesniej zostalo omylkowo wylaczone
$adminAccount = Get-ADUser -Filter * -Properties Name | ? { $_.Name -like 'admin*' }
$adminAccount | Set-ADUser -Enabled $true

#Znalezienie wszystkich wylaczonych kont
$disabledUsersAccounts = Search-ADAccount -AccountDisabled -UsersOnly

#przeniesienie uzytkownikow do nowego OU o nazwie zablokowani użytkonicy
$disabledUsersAccounts | Move-ADObject -TargetPath "OU=Disabled Users,DC=sieciunia, DC=local"

#usowanie kont za potwierdzeniem (nie mozna usowac kont wbudowanych)
$disabledUsersAccounts | Remove-ADUser -Confirm:$false

 

Aktualizacja głównego kontrolera domeny – przenoszenie ról FSMO

  1. Stworzenie snapa kontrolera z którego przerzucamy role;
  2. Dodanie siebie (admina) do grupy: Administratorzy przedsiębiorstwa. Po dodaniu do grupy przelogować się. Dodanie do grup jest niezbędne do przeniesienia ról unikalnych dla lasu, tj: schemamaster, domainnamingmaster
  3. Przerzucenie ról na inny kontroler:
    Move-ADDirectoryServerOperationMasterRole -Identity sw-dc02 -OperationMasterRole pdcemulator, ridmaster, infrastructuremaster, schemamaster, domainnamingmaster
  4. Po przeniesieniu ról sprawdzić czy role zostały przeniesione
    Get-ADForest domena.local | Format-Table SchemaMaster, DomainNamingMaster
    Get-ADDomain domena.local | format-table PDCEmulator, RIDMaster, InfrastructureMaster
  5. Aktualizacja kontrolera z którego przenieśliśmy role.
  6. Zweryfikowanie poprawności działania serwera i poprawności replikacji z innymi kontrolerami domeny.
  7. Przerzucenie ról z powrotem.
  8. Zweryfikowanie poprawności replikacji z innymi kontrolerami domeny oraz działania samego serwera po zainstalowaniu nowych łatek.
  9. Skasowanie snapa z VMware.

Active directory – włączenie kosza

enable-adoptionalfeature ‚recycle bin feature’ -scope forestconfigurationset -target nazwa.domeny’

get-adobject -filter {displayname -eq ‚skasowane konto’} -includedeletedobjects
get-adobject -filter {displayname -eq ‚skasowane konto’} -includedeletedobjects | restore-adobject

UWAGA: kosz raz włączony nie może zostać wyłączony. Potrzebuje czasu zanim się rozpropaguje.

Sprawdzanie poprawnej replikacji między kontrolerami domeny

Pierwszy sposób – poprzez GUI: Active Directory Sites and Services
Drugi sposób – za pomocą linii komend – narzędzi Repadmin.exe, Dcdiag.exe oraz PowerShell.
Poniżej przykłady użycia polecenia repadmin oraz PS:

repadmin /?
repadmin /showrepl
repadmin /showrepl DC2
repadmin /showconn
repadmin /showconn DC2
repadmin /showobjmeta DC2 „cn=”
repadmin /kcc
repadmin /replsum
repadmin /replicate DC1 DC2 dc=company,dc=pri /destinstion, source, context
repadmin /syncall DC1 dc=company,dc=pri //synchronizacja wszystkich kontrolerów
repadmin /syncall DC1 dc=company,dc=pri /e /d

Get-ADReplicationFailure DC1
Get-ADReplicationConnection
Get-ADReplicationPartnerMetadata

W przypadku problemów z replikacją można sprawdzić w serwerze DNS czy figuruje Alias (CNAME) wszystkich kontrolerów domeny, czyli: <GUID>._msdcs.nazwadomeny.local . Jest to rekord typu CNAME, po którym komunikują się ze sobą kontrolery domeny. Rejestrują się one w serwerze DNS przy starcie usługi netlogon (komenda cmd: net stop netlogon && net start netlogon).