UserAccountControl jedan je od važnih atributa korisničkih računa i računala Active Directory. Ovaj atribut određuje status računa u domeni: je li račun aktivan ili zaključan, je li omogućena mogućnost promjene lozinke kod sljedeće prijave, može li korisnik promijeniti lozinku itd.). Međutim, nemaju svi administratori jasnu ideju o tome kako se koristi atribut UserAccountControl i zašto se koristi u AD-u..
Na primjer, otvorite svojstva bilo kojeg AD računa u ADUC konzoli i idite na karticu račun (Račun). Primjetite grupu atributa korisnika u odjeljku Kontrola računa (Postavke računa). Ovdje su dostupne sljedeće opcije računa:
- Korisnik mora promijeniti lozinku pri sljedećoj prijavi (Zahtijeva promjenu lozinke pri sljedećoj prijavi);
- Korisnik ne može promijeniti lozinku;
- Lozinka nikada ne ističe (lozinka nije ograničena);
- Spremite lozinku pomoću reverzibilne enkripcije (nesigurna enkripcija) - nesigurno;
- Račun je onemogućen
- Pametna kartica potrebna je za interaktivnu prijavu (potrebna je pametna kartica za interaktivnu prijavu u mrežu);
- Račun je osjetljiv i ne može biti delegiran (račun je važan i ne može biti delegiran);
- Za ovaj račun koristite vrste enkripcije Kerberos DES (za ovaj račun koristite samo vrste šifriranja Kerberos DES);
- Ovaj račun podržava Kerberos AES 128/256 bitnu enkripciju (Ovaj račun podržava 128/256-bitnu Kerberos AES enkripciju);
- Ne zahtijeva Kerberos prethodnu provjeru identiteta (bez prethodne provjere Kerberos).
Svaki od ovih atributa računa u osnovi je bitna vrijednost koja može biti u stanju 1 (True) ili 0 (False). No, te se vrijednosti ne pohranjuju kao zasebni atributi AD, umjesto toga koristi se atribut UserAccountControl.
sadržaj:
- UserAccountControl - Atribut Active Directory
- PowerShell skripta za dešifriranje UserAccountControl vrijednosti
UserAccountControl - Atribut Active Directory
Ukupna vrijednost svih ovih opcija pohranjuje se u vrijednost atributa računa UserAccountControl, odnosno umjesto toga, jedan atribut Active Directory koristi se za spremanje svih ovih opcija u različite atribute. Atribut UserAccountControl je bitna maska, svaki bit je zasebna zastava koja prikazuje vrijednost jedne od navedenih opcija i može imati različitu vrijednost (uključeno ili isključeno). Prema tome, ovisno o omogućenim opcijama računa, korisnik će dobiti drugačiju vrijednost za atribut UserAccountControl. Možete vidjeti trenutnu vrijednost atributa na kartici Uređivač atributa ili pomoću sljedećeg PowerShell Get-ADUser cmdleta:
get-aduser user1 -properties * | odaberite ime, UserAccountControl | ft
U ovom primjeru vrijednost atributa 0x10202 (u decimalnom zapisu 66.050). Što znače ovi brojevi??
Ispod je tablica dostupnih zastava računa u AD-u. Svaka od zastava odgovara određenoj bit atributa UserAccountControl, a vrijednost UserAccountControl jednaka je zbroju svih zastava.
zastava | Vrijednost u HEX-u | Decimalna vrijednost |
SCRIPT (Pokreni prijavu za prijavu) | 0x0001 | 1 |
RAČUNOVODSTVO (račun onemogućen) | 0x0002 | 2 |
HOMEDIR_REQUIRED (potrebna je početna mapa) | 0x0008 | 8 |
LOCKOUT (račun je zaključan) | 0x0010 | 16 |
PASSWD_NOTREQD (nije potrebna lozinka) | 0x0020 | 32 |
PASSWD_CANT_CHANGE (Zabrani promjenu korisničke lozinke) | 0x0040 | 64 |
ENCRYPTED_TEXT_PWD_ALLOWED (Spremite lozinku koristeći reverzibilno šifriranje) | 0x0080 | 128 |
TEMP_DUPLICATE_ACCOUNT (korisnički račun čiji je glavni račun pohranjen na drugoj domeni) | 0x0100 | 256 |
NORMAL_ACCOUNT (zadani račun. Normalni aktivni račun) | 0x0200 | 512 |
INTERDOMAIN_TRUST_ACCOUNT | 0x0800 | 2048 |
WORKSTATION_TRUST_ACCOUNT | 0x1000 | 4096 |
SERVER_TRUST_ACCOUNT | 0x2000 | 8192 |
DONT_EXPIRE_PASSWORD (Lozinka nije istekla) | 0x10000 | 65.536 |
MNS_LOGON_ACCOUNT | 0x20000 | 131072 |
SMARTCARD_REQUIRED (Pametna kartica potrebna za interaktivni pristup mreži) | 0x40000 | 262144 |
TRUSTED_FOR_DELEGATION | 0x80000 | 524288 |
NOT_DELEGATED | 0x100000 | 1048576 |
USE_DES_KEY_ONLY | 0x200000 | 2097152 |
DONT_REQ_PREAUTH (nije potrebna Kerberos autentifikacija) | 0x400000 | 4194304 |
PASSWORD_EXPIRED (Korisnička lozinka je istekla) | 0x800000 | 8388608 |
TRUSTED_TO_AUTH_FOR_DELEGATION | 0x1000000 | 16777216 |
PARTIAL_SECRETS_ACCOUNT | 0x04000000 | 67108864 |
Na primjer, postoji redovan račun za koji je zahtjev za promjenu zaporke onemogućen. Vrijednost userAccountControl dobiva se na sljedeći način
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) = 66048
Prema tome, vrijednost userAccountControl iz mog primjera (66050) pokazala se kako slijedi:
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) + RAČUNOVODSTVO (2) = 66050
Za normalno zaključani račun vrijednost userAccountControl bit će 514:
(NORMAL_ACCOUNT (512) + RAČUNOVODSTVENO (2) = 514)
Zadane vrijednosti UserAccountControl za tipične objekte domene:
- Standardni korisnik: 0x200 (512)
- Kontroler domene: 0x82000 (532480)
- Radna stanica / poslužitelj: 0x1000 (4096)
Pomoću filtara možete odabrati između AD objekata s određenom vrijednošću atributa useraccountcontrol. Na primjer, za prikaz svih aktivnih (uobičajeni računi):
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol = 512)"
Popis svih blokiranih računa:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol = 514)"
Popis računa s neograničenom zaporkom:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol = 66048)"
Možete dodati potrebne bitove iz tablice i odabrati AD objekte pomoću sljedećih naredbi:
$ UserAccountControl_hex = 0x10000 + 0x0080 + 0x200000
Get-ADUser -Filter UserAccountControl -band $ UserAccountControl_hex
PowerShell skripta za dešifriranje UserAccountControl vrijednosti
Radi praktičnosti želite imati pri ruci alat koji bi automatski pretvarao vrijednost UserAccountControl bitmaske u normalan ljudski oblik. Pokušajmo napisati jednostavnu funkciju za skripte PowerShell koja uzima decimalnu vrijednost atributa UserAccountControl i prikazuje popis uključenih računovodstvenih opcija. jer Atribut UserAccountControl je bitna maska, svakom bitu možete dodijeliti tekstualni opis.
Dobio sam takvu PowerShell skriptu za pretvorbu vrijednosti UserAccountControl u čitljiv oblik:
Funkcija ConvertUserAccountControl ([int] $ UAC)
$ UACPropertyFlags = @ (
„Scenarij”,
"ACCOUNTDISABLE",
„REZERVIRANO”,
"HOMEDIR_REQUIRED",
"Lockout",
"PASSWD_NOTREQD",
"PASSWD_CANT_CHANGE",
"ENCRYPTED_TEXT_PWD_ALLOWED",
"TEMP_DUPLICATE_ACCOUNT",
"NORMAL_ACCOUNT",
„REZERVIRANO”,
"INTERDOMAIN_TRUST_ACCOUNT",
"WORKSTATION_TRUST_ACCOUNT",
"SERVER_TRUST_ACCOUNT",
„REZERVIRANO”,
„REZERVIRANO”,
"DONT_EXPIRE_PASSWORD",
"MNS_LOGON_ACCOUNT",
"SMARTCARD_REQUIRED",
"TRUSTED_FOR_DELEGATION",
"NOT_DELEGATED",
"USE_DES_KEY_ONLY",
"DONT_REQ_PREAUTH",
"PASSWORD_EXPIRED",
"TRUSTED_TO_AUTH_FOR_DELEGATION",
„REZERVIRANO”,
"PARTIAL_SECRETS_ACCOUNT"
„REZERVIRANO”
„REZERVIRANO”
„REZERVIRANO”
„REZERVIRANO”
„REZERVIRANO”
)$ Atributi = ""
1 ... ($ UACPropertyFlags.Length) | Where-Object $ UAC -bAnd [math] :: Pow (2, $ _) | ForEach-Object If ($ Attributes.Length -EQ 0) $ Atributi = $ UACPropertyFlags [$ _] Ostalo $ Atributi = $ Atributi + "|" + $ UACPropertyFlags [$ _]
Vratite $ Atribute
Provjerite koja je vrijednost UserAccountControl 66050:
ConvertUserAccountControl 66050
Kao što vidite, skripta je vratila da korisnik ima omogućene atribute:
ACCOUNTDISABLE + NORMAL_ACCOUNT + DONT_EXPIRE_PASSWORD
Ista skripta može se upotrijebiti za dešifriranje vrijednosti UserAccountControl u pokretu, prilikom preuzimanja podataka o njihovim AD vjerodajnicama u prikladnom obliku pomoću cmdleta Get-AdUser ili Get-AdComputer:
get-aduser sam-prnt -properties * | odaberite @ n = 'UsrAcCtrl'; e = ConvertUserAccountControl ($ _. userAccountControl)
RAČUNOVODSTVENO | NORMAL_ACCOUNT | DONT_EXPIRE_PASSWORD
get-adcomputer sam-dc01 -properties * | odaberite @ n = 'UsrAcCtrl'; e = ConvertUserAccountControl ($ _. userAccountControl)
SERVER_TRUST_ACCOUNT | TRUSTED_FOR_DELEGATION