userAccountControl a felhasználói fiókok és az Active Directory számítógépek egyik fontos tulajdonsága. Ez az attribútum meghatározza a fiók állapotát a domainben: aktív vagy zárolt-e a fiók, engedélyezve van-e a jelszó megváltoztatásának lehetősége a következő bejelentkezéskor, hogy a felhasználó megváltoztathatja-e jelszavát, stb.). Ugyanakkor nem minden rendszergazdanak van egyértelmű elképzelése a UserAccountControl attribútum használatáról és az AD-ben való felhasználásának miért..
Például nyissa meg az AD-fiók tulajdonságait az ADUC konzolon, és lépjen a fülre számla (Számla). Vegye figyelembe a felhasználói attribútumcsoportot a szakaszban Számlaellenőrzés (Fiókbeállítások). A következő fiókbeállítások érhetők el itt:
- A felhasználónak meg kell változtatnia a jelszót a következő bejelentkezéskor (Jelszó megváltoztatását megköveteli a következő bejelentkezéskor);
- A felhasználó nem tudja megváltoztatni a jelszót;
- A jelszó soha nem jár le (a jelszó nem korlátozott);
- Tárolja a jelszót reverzibilis titkosítással (nem biztonságos titkosítás) - nem biztonságos;
- A fiók le van tiltva
- Intelligens bejelentkezéshez intelligens kártya szükséges (Interaktív bejelentkezéshez intelligens kártya szükséges);
- A számla érzékeny és nem ruházható át (A számla fontos és nem ruházható át);
- Használjon Kerberos DES titkosítási típusokat ehhez a fiókhoz (ehhez a fiókhoz csak a Kerberos DES titkosítási típusokat használja);
- Ez a fiók támogatja a Kerberos AES 128/256 bites titkosítást (Ez a fiók támogatja a 128/256 bites Kerberos AES titkosítást);
- Ne követelje meg a Kerberos előhitelesítését (előző Kerberos hitelesítés nélkül).
Ezen számlaattribútumok mindegyike lényegében egy bitérték, amely 1 (True) vagy 0 (False) állapotban lehet. Ezeket az értékeket azonban nem külön AD attribútumokként tárolják, hanem a UserAccountControl attribútumot használják.
Tartalom:
- UserAccountControl - Active Directory attribútum
- PowerShell-parancsfájl a UserAccountControl érték visszafejtéséhez
UserAccountControl - Active Directory attribútum
Ezen opciók teljes értékét a fiókattribútum értéke tárolja userAccountControl, azaz ehelyett egyetlen Active Directory attribútumot használunk ezeknek az opcióknak a különböző attribútumokba történő tárolására. A UserAccountControl attribútum kicsit maszk, amelyek mindegyik bitje különálló zászló, amely megjeleníti a megadott opciók egyikét, és más értékkel is rendelkezhet (be vagy ki). Ennek megfelelően, az engedélyezett fiókbeállításoktól függően a felhasználó eltérő értéket fog kapni a UserAccountControl attribútumhoz. A jelenlegi attribútumértéket az Attribútum-szerkesztő lapon vagy a következő PowerShell Get-ADUser-parancsmag segítségével tekintheti meg:
get-aduser user1 -properties * | válasszon nevet, UserAccountControl | ft
Ebben a példában az attribútum értéke 0x10202 (tizedes jelöléssel) 66050). Mit jelentenek ezek a számok??
Az alábbiakban egy táblázat látható az AD-ben elérhető fiókjelzőkről. Mindegyik jelző megfelel a UserAccountControl attribútum adott bitjének, és a UserAccountControl értéke egyenlő az összes zászló összegével..
zászló | Érték HEX-ben | Tizedes érték |
SCRIPT (Bejelentkezési szkript futtatása) | 0x0001 | 1 |
SZÁMLÁLHATÓ (fiók letiltva) | 0x0002 | 2 |
HOMEDIR_REQUIRED (Otthoni mappa szükséges) | 0x0008 | 8 |
LOCKOUT (Fiók bezárva) | 0x0010 | 16 |
PASSWD_NOTREQD (Nincs szükség jelszóra) | 0x0020 | 32 |
PASSWD_CANT_CHANGE (Felhasználói jelszó megtagadásának megtagadása) | 0x0040 | 64 |
ENCRYPTED_TEXT_PWD_ALLOWED (Jelszó tárolása reverzibilis titkosítással) | 0x0080 | 128 |
TEMP_DUPLICATE_ACCOUNT (felhasználói fiók, amelynek fő fiókját egy másik domainben tárolja) | 0x0100 | 256 |
NORMAL_ACCOUNT (Alapértelmezett számla. Normál aktív számla) | 0x0200 | 512 |
INTERDOMAIN_TRUST_ACCOUNT | 0x0800 | 2048 |
WORKSTATION_TRUST_ACCOUNT | 0x1000 | 4096 |
SERVER_TRUST_ACCOUNT | 0x2000 | 8192 |
DONT_EXPIRE_PASSWORD (a jelszó nem járt le) | 0x10000 | 65536 |
MNS_LOGON_ACCOUNT | 0x20000 | 131072 |
SMARTCARD_REQUIRED (Interaktív hálózati hozzáféréshez intelligens kártya szükséges) | 0x40000 | 262144 |
TRUSTED_FOR_DELEGATION | 0x80000 | 524288 |
NOT_DELEGATED | 0x100000 | 1048576 |
USE_DES_KEY_ONLY | 0x200000 | 2097152 |
DONT_REQ_PREAUTH (Kerberos hitelesítés nem szükséges) | 0x400000 | 4194304 |
PASSWORD_EXPIRED (a felhasználói jelszó lejárt) | 0x800000 | 8388608 |
TRUSTED_TO_AUTH_FOR_DELEGATION | 0x1000000 | 16777216 |
PARTIAL_SECRETS_ACCOUNT | 0x04000000 | 67108864 |
Például van egy szokásos fiók, amelyre a jelszó megváltoztatása le van tiltva. A userAccountControl értékét a következőképpen kapjuk meg
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) = 66048
Ennek megfelelően a példámban (66050) szereplő userAccountControl értéke a következőképpen alakult:
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) + SZÁMVITELES (2) = 66050
Normál zárolt fiók esetén a userAccountControl értéke 514:
(NORMAL_ACCOUNT (512) + SZÁMVITELI (2) = 514
Alapértelmezett UserAccountControl értékek a tipikus tartományobjektumokhoz:
- Normál felhasználó: 0x200 (512)
- Domainvezérlő: 0x82000 (532480)
- Munkaállomás / szerver: 0x1000 (4096)
A szűrők segítségével kiválaszthat egy AD attribútumot egy meghatározott attribútumértékkel, a useraccountcontrol értékkel. Például az összes aktív (normál fiók) megjelenítéséhez:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol = 512)"
Az összes blokkolt fiók felsorolása:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol = 514)"
Korlátlan jelszóval rendelkező fiókok listája:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol = 66048)"
Felveheti a szükséges biteket a táblázatból, és az alábbi parancsok segítségével kiválaszthatja az AD objektumokat:
$ UserAccountControl_hex = 0x10000 + 0x0080 + 0x200000
Get-ADUser -Filter UserAccountControl -band $ UserAccountControl_hex
PowerShell-parancsfájl a UserAccountControl érték visszafejtéséhez
A kényelem kedvéért szeretne egy kéznél lévő eszközt, amely automatikusan konvertálja a UserAccountControl bitmaszk értékét normál emberi alakra. Próbáljunk meg írni egy egyszerű funkciót a PowerShell szkriptekhez, amely a UserAccountControl attribútum decimális értékét veszi fel, és megjeleníti a benne szereplő számviteli beállítások listáját. mert A UserAccountControl attribútum egy bitmaszk, minden bithez szöveges leírást rendelhet.
Kaptam egy ilyen PowerShell-parancsfájlt, amely a UserAccountControl értéket olvasható formává konvertálja:
Funkció ConvertUserAccountControl ([int] $ UAC)
$ UACPropertyFlags = @ (
"Script",
"ACCOUNTDISABLE",
„Fenntartott”,
"HOMEDIR_REQUIRED",
„Kizárás”,
"PASSWD_NOTREQD",
"PASSWD_CANT_CHANGE",
"ENCRYPTED_TEXT_PWD_ALLOWED",
"TEMP_DUPLICATE_ACCOUNT",
"NORMAL_ACCOUNT",
„Fenntartott”,
"INTERDOMAIN_TRUST_ACCOUNT",
"WORKSTATION_TRUST_ACCOUNT",
"SERVER_TRUST_ACCOUNT",
„Fenntartott”,
„Fenntartott”,
"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",
„Fenntartott”,
"PARTIAL_SECRETS_ACCOUNT"
„Fenntartott”
„Fenntartott”
„Fenntartott”
„Fenntartott”
„Fenntartott”
)$ Attributes = ""
1 ... ($ UACPropertyFlags.Length) | Hol-objektum $ UAC -bAnd [matematika] :: Pow (2, $ _) | ForEach-Object If ($ Attributes.Length -EQ 0) $ Attributes = $ UACPropertyFlags [$ _] Egyéb $ Attribútumok = $ Attribútumok + "|" + $ UACPropertyFlags [$ _]
$ Attribútumok visszatérése
Ellenőrizze, hogy a UserAccountControl értéke 66050:
ConvertUserAccountControl 66050
Mint láthatja, a szkript visszatért, hogy a felhasználó engedélyezte az attribútumokat:
ACCOUNTDISABLE + NORMAL_ACCOUNT + DONT_EXPIRE_PASSWORD
Ugyanaz a szkript használható a UserAccountControl értékek dekódolásához menet közben, amikor az AD-hitelesítő adataikra vonatkozó információkat kényelmes formátumban töltik le a Get-AdUser vagy a Get-AdComputer parancsmag segítségével, például:
get-aduser sam-prnt -properties * | válassza a @ n = 'UsrAcCtrl'; e = ConvertUserAccountControl ($ _. userAccountControl)
SZÁMVITELI NORMAL_ACCOUNT | DONT_EXPIRE_PASSWORD
get-adcomputer sam-dc01 -properties * | Select @ n = 'UsrAcCtrl'; e = ConvertUserAccountControl ($ _. userAccountControl)
SERVER_TRUST_ACCOUNT | TRUSTED_FOR_DELEGATION