A userAccountControl attribútum értékének titkosítása az Active Directory-ban

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)0x00011
SZÁMLÁLHATÓ (fiók letiltva)0x00022
HOMEDIR_REQUIRED (Otthoni mappa szükséges)0x00088
LOCKOUT (Fiók bezárva)0x001016
PASSWD_NOTREQD (Nincs szükség jelszóra)0x002032
PASSWD_CANT_CHANGE (Felhasználói jelszó megtagadásának megtagadása)0x004064
ENCRYPTED_TEXT_PWD_ALLOWED (Jelszó tárolása reverzibilis titkosítással)0x0080128
TEMP_DUPLICATE_ACCOUNT (felhasználói fiók, amelynek fő fiókját egy másik domainben tárolja)0x0100256
NORMAL_ACCOUNT (Alapértelmezett számla. Normál aktív számla)0x0200512
INTERDOMAIN_TRUST_ACCOUNT0x08002048
WORKSTATION_TRUST_ACCOUNT0x10004096
SERVER_TRUST_ACCOUNT0x20008192
DONT_EXPIRE_PASSWORD (a jelszó nem járt le)0x1000065536
MNS_LOGON_ACCOUNT0x20000131072
SMARTCARD_REQUIRED (Interaktív hálózati hozzáféréshez intelligens kártya szükséges)0x40000262144
TRUSTED_FOR_DELEGATION0x80000524288
NOT_DELEGATED0x1000001048576
USE_DES_KEY_ONLY0x2000002097152
DONT_REQ_PREAUTH (Kerberos hitelesítés nem szükséges)0x4000004194304
PASSWORD_EXPIRED (a felhasználói jelszó lejárt)0x8000008388608
TRUSTED_TO_AUTH_FOR_DELEGATION0x100000016777216
PARTIAL_SECRETS_ACCOUNT0x0400000067108864

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