Centrum Skryptów - Systemy Operacyjne

W jaki sposób odzyskać z dziennika zdarzeń informację o nieudanych próbach zalogowania? Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

W jaki sposób odzyskać z dziennika zdarzeń informację o nieudanych próbach zalogowania?

Cześć Skrypciarze! Jak przeszukać dzienniki moich serwerów i zwrócić tylko informacje o nieudanych próbach zalogowania?

-- LC

Cześć LC. Zakładamy, że masz na swoich serwerach włączoną inspekcję bezpieczeństwa. Jeśli nie, to już wiesz, jaki będzie pierwszy krok. Chciałbyś – co najmniej – przeprowadzić inspekcję nieudanych zdarzeń zalogowania. Dzięki temu za każdym razem, gdy ktoś spróbuje bez powodzenia zalogować się na komputerze, zdarzenie opatrzone określonym kodem zostanie zapisane w dzienniku bezpieczeństwa zdarzeń. Dla serwerów członkowskich i stacji roboczych kod zdarzenia to 529; kod dla kontrolerów domen to 675. W tym przykładzie użyjemy kodu 529, jako, że pytałeś o serwery, a nie o kontrolery domen.

Uwaga. Istnieją zapewne inne kody zdarzeń, które znajdują się w kręgu Twoich zainteresowań; Skrypciarze niestety nie są ekspertami na tym polu. Aby uprościć sprawy, skoncentrujemy się wyłącznie na kodach 529 i 675, które reprezentują zdarzenia "nieznana nazwa użytkownika lub niewłaściwe hasło". Będziemy używać zapytania WQL, którą można łatwo zmodyfikować w celu wyszukania innych kodów zdarzeń.

Systemowi oficerowie śledczy zapewne zauważyli już istotną wskazówkę: nieudane próby zalogowania są zapisane w dzienniku bezpieczeństwa zdarzeń, a każdy z nich jest oznaczony tym samym kodem zdarzenia: 529. To podsuwa rozwiązanie problemu: aby uzyskać informację o nieudanych próbach zalogowania wystarczy wysłać do dziennika bezpieczeństwa zdarzeń zapytanie o wszystkie zdarzenia opatrzone kodem 529.

Innymi słowy:

strComputer = "."

Set objWMIService = GetObject("winmgmts:{(Security)}\\" & strComputer & "\root\cimv2")



Set colEvents = objWMIService.ExecQuery _

        ("Select * from Win32_NTLogEvent Where Logfile = 'Security' and " _

            & "EventCode = '529'")



For Each objEvent in colEvents

    Wscript.Echo "Category: " & objEvent.Category

    Wscript.Echo "Computer Name: " & objEvent.ComputerName

    Wscript.Echo "Event Code: " & objEvent.EventCode

    Wscript.Echo "Message: " & objEvent.Message

    Wscript.Echo "Record Number: " & objEvent.RecordNumber

    Wscript.Echo "Source Name: " & objEvent.SourceName

    Wscript.Echo "Time Written: " & objEvent.TimeWritten

    Wscript.Echo "Event Type: " & objEvent.Type

    Wscript.Echo "User: " & objEvent.User

Next

Elementarne, drogi Watsonie. Jedyne urozmaicenie pojawia się, gdy łączymy się z usługą WMI. W tym celu musimy dołączyć przywilej (Security) (zamknięty w nawiasach klamrowych):

Set objWMIService = GetObject("winmgmts:{(Security)}\\" & strComputer & "\root\cimv2")

Przywilej ten należy dołączać za każdym razem, kiedy chcesz uzyskać dostęp do dziennika bezpieczeństwa zdarzeń. Oprócz tego musisz (a w każdym razie Twoje konto musi) mieć prawo dostępu do dziennika bezpieczeństwa zdarzeń; samo dołączenie przywileju nie załatwi sprawy. Z drugiej strony, opuszczenie tego przywileju w skrypcie zamknie dostęp do dziennika, bez względu na to, jakie prawa, przywileje i zezwolenia posiada Twoje konto.

Po połączeniu wybieramy wszystkie te wystąpienia klasy Win32_NTLogEvent, w których Logfile (plik dziennika) jest równy Security (bezpieczeństwo), a EventCode (kod zdarzenia) równa się 529. Zwrócona zostanie kolekcja zdarzeń nieudanego zalogowania, którą następnie wywołujemy na ekran.

Ten skrypt zwraca wszystkie nieudane próby zalogowania. Być może chciałbyś pobrać wyłącznie zdarzenia z określonego przedziału czasu (na przykład nieudane zalogowania z wczoraj, czy z ubiegłego tygodnia). Być może chciałbyś również zbudować system monitoringu, który informowałby Cię o każdej nieudanej próbie zalogowania. Zagadnienia te wykraczają poza to, czym zajmujemy się w tej rubryce, ale możecie znaleźć więcej informacji i przykładowe skrypty w rozdziale o dziennikach (j.ang.) w Przewodniku Skryptowania Microsoft Windows 2000.

 Do początku strony Do początku strony


Centrum Skryptów - Systemy Operacyjne