PowerShell – blokowanie nieaktywnych kont użytkowników w Active Directory

Nieaktywni użytkownicy Active Directory, w niewielkiej organizacji, takie konta się nie ukryją. W przypadku, gdy kont w AD jest w sumie kilkaset lub kilka tysięcy, sprawa się mocno komplikuje. Z pomocą przychodzi PowerShell i cmdlet Get-AdUser.

W jaki sposób identyfikowane są nieaktywne konta użytkowników?

Ta część jest trochę długa, ale wyjaśnia, jaki atrybut użytkownika jest używany do znajdowania nieaktywnych kont użytkowników. Jeśli Cię to nie interesuje, przejdź do przykładów.

Konta użytkowników mają atrybut o nazwie „lastLogonTimeStamp”. Celem tego atrybutu jest pomoc w identyfikacji nieaktywnych kont użytkowników i komputerów. Tak, można go również używać do kont komputerowych.

Istnieją pewne typy logowania, które aktualizują atrybut lastLogonTimeStamp, czyli logowania interaktywne, sieciowe i usługowe. Interaktywne logowanie jest tym, na czym mu zależy, wtedy ktoś loguje się na konsoli.

Przyjrzyjmy się temu atrybutowi w GUI ADUC.

Odnajdź konto, kliknij prawym, wybierz Właściwości (Properties), kliknij zakładkę Edytor atrybutów (Attribute Editor) i przejdź do atrybutu lastLogonTimestamp. Ważne, aby wcześniej w przystawce AD, wybrać Widok(View), Funkcje Zaawansowane(Advanced Features), aby pojawiły się dodatkowe zakładki.

lastLogonTimestamp w Active Directory

Do czego służy wartość lastLogon?

Na powyższym zrzucie ekranu widać również wartość lastLogon, zobaczysz to również podczas korzystania z PowerShell. Wartość lastLogon nie jest replikowana do wszystkich kontrolerów domeny, na których znajduje się wartość lastLogonTimestamp. Jest to ważne, ponieważ w przypadku atrybutu lastLogon konieczne byłoby wysyłanie zapytań do każdego kontrolera domeny, aby dowiedzieć się, kiedy użytkownik się zalogował. Microsoft to zrozumiał i dlatego w 2003 roku wprowadził atrybut lastLogonTimestamp.

Technicznie rzecz biorąc, możesz użyć lastLogon, aby znaleźć nieaktywne konto, ale jest to znacznie trudniejsze. Teraz spójrzmy na tę wartość za pomocą programu PowerShell.

Otwórz PowerShell i uruchom to polecenie.

Fragment wyniku powyższego polecenia

Możesz zobaczyć, że lastLogonTimestamp i LastLogonDate mają te same dane i czas.

Po prostu pamiętaj o tym.

PowerShell = LastLogonDate
GUI ADUC = lastLogonTimestamp

Dlaczego powinieneś usuwać nieaktywne konta użytkowników?

Bezpieczeństwo jest głównym powodem czyszczenia nieaktywnych kont użytkowników. Pełna lista poniżej.

  • Zagrożenia bezpieczeństwa – kontrole CIS nr 5 mówią: „Istnieje wiele sposobów potajemnego uzyskania dostępu do kont użytkowników, w tym słabe hasła, konta nadal ważne po opuszczeniu przedsiębiorstwa przez użytkownika, nieaktywne lub utrzymujące się konta testowe, konta współdzielone, które nie były zmieniane od miesięcy lub lat, konta usług osadzone w aplikacjach dla skryptów.
  • Problemy z zapasami i śledzeniem – Active Directory to scentralizowana baza danych. Można go używać nie tylko do śledzenia zasobów, ale można go także zintegrować z innymi systemami, tworząc kompletne rozwiązanie do zarządzania aktywami. Jeśli nie wyczyścisz zasobów AD, Twój system inwentaryzacji będzie niedokładny.
  • Łatwość zarządzania – w pewnym sensie podobna do wersji nr 2. Zaśmiecone środowisko AD prowadzi do trudnego w zarządzaniu środowiska. Pomyśl o uruchomieniu skryptu PowerShell lub próbie wdrożenia oprogramowania na setkach komputerów lub użytkowników. Podczas próby zarządzania środowiskiem ze starymi i nieaktywnymi kontami otrzymasz wiele błędów.
  • Integralność danych – wiele z nich ma to samo, integralność danych. Ponownie AD jest scentralizowaną bazą danych i można ją zintegrować z wieloma systemami. Jeśli dane w AD są nieprawidłowe, wszystkie systemy podłączone do AD będą miały problemy z działaniem.
  • Licencjonowanie – przykład z prawdziwego życia. Twoje konta użytkowników AD synchronizują się z systemem innej firmy, za każde takie połączenie musisz płacić. Jeśli masz setki nieaktywnych kont synchronizujących się z produktami innych firm, możesz płacić za wiele dodatkowych licencji, których nie potrzebujesz. Dzieje się tak również w przypadku synchronizacji AD z produktami w chmurze.

Skrypt PowerShell, który pokaże nieaktywne konta użytkowników w Active Directory

Aby znaleźć nieaktywne konta w PowerShell, będzie potrzebny RSAT lub uruchomienie polecenia bezpośrednio na kontrolerze domeny.

Wszystkie te przykłady wykorzystują atrybut LastLogonDate, który już znasz.

Pokaż konta, które są nieaktywne X dni.

Możesz wylistować konta, które są nieaktywne od konkretnej liczby dni, np. 30.

Możesz wyeksportować wyniki do pliku CSV, dodając | export-csv -path c:\temp\inactive.csv.

Aby ograniczyć zakres wyszukania do jednostki organizacyjnej, użyj parametru -SearchBase z nazwą wyróżniającą jednostki organizacyjnej.

Znajdź nieaktywnych użytkowników i wyłącz takie konta.

W powyższym przykładzie dodałem | na końcu kliknij opcję Disable-ADAccount, aby wyłączyć wszystkie nieaktywne konta.

Możesz także użyć tych poleceń do przeszukiwania kont komputerów, po prostu zmień Get-ADUser na Get-ADComputer.

Jak widać, łatwo jest zidentyfikować nieaktywne konta użytkowników za pomocą PowerShell, filtrując według daty LastLogonDate użytkownika.

Podsumowanie

PowerShell w połączeniu z Get-ADUser oraz wybraniem konkretnego atrybutu (w tym przypadku LastLogonDate). Ręcznie można zablokować pojedyncze konta, w przypadku większej ich liczby, warto posłużyć się prostym skryptem PowerShell’a.


Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.

Link do formularza tutaj: https://beitadmin.pl/pomysly

Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).

Dodaj komentarz

beitadmin.pl - Droga Administratora IT