Windows Event Log - уведомление по электронной почте

Попытка:

$body = Получают-WmiObject WIN32_logicaldisk | вид-desc свободное пространство | выбор - сначала 3 | таблица формата-autosize deviceid, devicetype, providername, свободное пространство, размер, volumename |-строка

Я только что попробовал его на своем ПК, и это работало.

Для некоторого фона на том, почему это работает, см.:

http://blogs.msdn.com/powershell/archive/2006/04/25/how-does-select-string-work-with-pipelines-of-objects.aspx

МЛАДШИЙ

7
задан 30 July 2009 в 13:31
6 ответов

Вы могли сделать это с OSSEC, многоплатформенным программным обеспечением с открытым исходным кодом:

OSSEC является всей платформой, чтобы контролировать и управлять Вашими системами. Это смешивает все аспекты HIDS (основанное на хосте обнаружение проникновения), контроль журнала и SIM/SIEM вместе в простом, мощном и решении с открытым исходным кодом.

И для Контроля/Предупреждения Журнала:

И настраиваемые предупреждения в реальном времени

OSSEC позволяет клиентам настроить инциденты, они хотят быть предупрежденными, на котором позволяет им сфокусироваться на повышении приоритета критических инцидентов по регулярному шуму в любой системе. Интеграция с smtp, SMS и системным журналом позволяет клиентам быть сверх предупреждений путем пересылки их на адрес электронной почты и карманные устройства, такие как сотовые телефоны и пейджеры.

[...]

Каждая операционная система, приложение и устройство в Вашей сети генерируют журналы (события) для сообщения то, что происходит. OSSEC собирает, анализирует и коррелирует эти журналы, чтобы сообщить, продолжается ли что-то не так (нападение, неправильное употребление, ошибки, и т.д.).

Hereis статья о OSSEC на безопасности на 360 °.


Специализированная, коммерческая альтернатива: EventTracker (Призма Microssystems):

EventTracker является информацией о полной безопасности и Организацией мероприятий (SIEM) решение, которое комбинирует управление Журналом в реальном времени с мощной Конфигурацией и Управлением изменениями в одном пакете программного обеспечения под ключ.

6
ответ дан 2 December 2019 в 23:24

Живые серверы могут сделать это для Вас. Продукт является бесплатным, чтобы максимум 10 событий контролировали для.

Монитор журнала событий NT является разъемом в бесплатно расположенном здесь. Довольно простой в использовании и установка.

1
ответ дан 2 December 2019 в 23:24

Вот другое глупое создание VBScript от меня, починено из нескольких других сценариев.

Option Explicit

' Main
Dim objShell, objWMIService, objEventSink, dictEventsToMonitor, eventToMonitor

' =====================( Configuration )=====================

' Set to 0 to disable event log reporting of bans / unbans
Const USE_EVENTLOG = 1
Const EVENTLOG_SOURCE = "SimpleEventMonitor"

' SMTP configuration
Const EMAIL_SENDER = "EventLogMonitor@company.com"
Const EMAIL_RECIPIENT = "recipient@company.com"
Const EMAIL_SMTP_SERVER = "smtp-server"
Const EMAIL_SMTP_PORT = 25
Const EMAIL_TIMEOUT = 20

Set dictEventsToMonitor = CreateObject("Scripting.Dictionary")

' Define events that should be monitored. Matches are based on exact matches of all non-NULL fields

' Monitor our own startup and alert based on starting
PushEventToMonitor "100", "Application", EVENTLOG_SOURCE, NULL, NULL, NULL, NULL
PushEventToMonitor "7036", "System", "Service Control Manager", NULL, NULL, NULL, "Telnet service.*(running|stopped).*state"

' ===================( End Configuration )===================


Set objShell = CreateObject("WScript.Shell")

' Create event sink to catchevents
Set objWMIService = GetObject("winmgmts:{(security)}!root/cimv2")
Set objEventSink = WScript.CreateObject("WbemScripting.SWbemSink", "eventSink_")
objWMIService.ExecNotificationQueryAsync objEventSink, "SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent'"

' Loop sleeping for one week, logging an event each week to say we're still alive
While (True)
    LogEvent 100, "INFORMATION", "Simple Event Log Monitor started"
    WScript.Sleep(7 * 24 * 60 * 60 * 1000)
Wend

' Fires each time new events are generated
Sub eventSink_OnObjectReady(objEvent, objWbemAsyncContext)
    Dim evt, field, boolAlert, regexpMessage

    For Each evt In dictEventsToMonitor.Keys
        boolAlert = True

        For Each field In dictEventsToMonitor.Item(evt).Keys
            If UCase(Field) = "MESSAGE" Then 
                Set regexpMessage = new Regexp
                regexpMessage.Pattern = dictEventsToMonitor.Item(evt).Item(Field)
                regexpMessage.IgnoreCase = True
                If NOT regexpMessage.Test(objEvent.TargetInstance.Properties_(Field)) then boolAlert = False
            Else
                If UCase(objEvent.TargetInstance.Properties_(Field)) <> UCase(dictEventsToMonitor.Item(evt).Item(field)) Then boolAlert = False
            End If
        Next ' field

    if boolAlert = True Then
        SendMessage "Simple Event Log Monitor notification from " & objEvent.TargetInstance.ComputerName, _
            "Event ID:       " & objEvent.TargetInstance.EventCode & VbCrLf _
            & "Date/Time:      " & Mid(objEvent.TargetInstance.TimeGenerated, 5, 2) & "/" & Mid(objEvent.TargetInstance.TimeGenerated, 7, 2) & "/" & Mid(objEvent.TargetInstance.TimeGenerated, 1, 4) & " " & Mid(objEvent.TargetInstance.TimeGenerated, 9, 2) & ":" & Mid(objEvent.TargetInstance.TimeGenerated, 11, 2) & ":" & Mid(objEvent.TargetInstance.TimeGenerated, 13, 2)   & VbCrLf _
            & "Computer:       " & objEvent.TargetInstance.ComputerName & vbCrLf _
            & "Event Log:      " & objEvent.TargetInstance.LogFile & vbCrLf _
            & "Event Source:   " & objEvent.TargetInstance.SourceName & vbCrLf _
            & "Event Category: " & objEvent.TargetInstance.CategoryString & vbCrLf _
            & "Event Type:     " & objEvent.TargetInstance.Type & vbCrLf _
            & "User Name:      " & objEvent.TargetInstance.User & vbCrLf _
            & "Message:" & vbCrLf & vbCrLF _
            & objEvent.TargetInstance.Message
        Exit Sub
    End If

    Next ' evt
End Sub

Sub LogEvent(ID, EventType, Message)
    ' Log an event to the Windows event log
    If USE_EVENTLOG Then objShell.Exec "EVENTCREATE /L APPLICATION /SO " & EVENTLOG_SOURCE & " /ID " & ID & " /T " & EventType & " /D """ & Message & """"
End Sub

Sub SendMessage(strSubject, strBody)
    Dim objCDOMessage
    Set objCDOMessage = CreateObject("CDO.Message")

    objCDOMessage.From = EMAIL_SENDER
    objCDOMessage.To = EMAIL_RECIPIENT
    objCDOMessage.Subject = strSubject
    objCDOMessage.Textbody = strBody
    objCDOMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = EMAIL_SMTP_SERVER
    objCDOMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = EMAIL_SMTP_PORT
    objCDOMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = EMAIL_TIMEOUT
    objCDOMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objCDOMessage.Configuration.Fields.Update
    objCDOMessage.send
End Sub

Sub PushEventToMonitor(strID, strLog, strSource, strCategory, strType, strUser, strMessagePattern)
    Dim x

    x = dictEventsToMonitor.Count
    Set dictEventsToMonitor.Item(x) = CreateObject("Scripting.Dictionary")
    If NOT IsNull(strID) Then dictEventsToMonitor.Item(x).Add "EventCode", strID
    If NOT IsNull(strLog) Then dictEventsToMonitor.Item(x).Add "LogFile", strLog
    If NOT IsNull(strSource) Then dictEventsToMonitor.Item(x).Add "SourceName", strSource
    If NOT IsNull(strCategory) Then dictEventsToMonitor.Item(x).Add "CategoryString", strCategory
    If NOT IsNull(strType) Then dictEventsToMonitor.Item(x).Add "Type", strType
    If NOT IsNull(strType) Then dictEventsToMonitor.Item(x).Add "User", strUser
    If NOT IsNull(strMessagePattern) Then dictEventsToMonitor.Item(x).Add "Message", strMessagePattern
End Sub

Можно выполнить это как службу Windows при использовании чего-то как Ненеопытный Менеджер по сервису или SRVANY для установки ее. Используя NSSM, comamnd-строка была бы:

nssm install SimpleEventLogMonitor %SystemRoot%\System32\cscript.exe "\"Pull_path_and_filename_of_script\""

Обязательно займите место в Вашем почтовом получателе, отправителе и имени сервера SMTP.

Вы определяете события, на которых Вы хотите быть предупрежденными с вызовом "PushEventToMonitor". Аргументы: идентификатор события, название журнала событий, источник, категория, тип, пользователь и регулярное выражение, которое может быть подобрано против сообщения журнала. У меня есть пример там, который соответствует запуску / остановка сервиса TELNET, а также та, которая будет соответствовать запуску самого сценария (который регистрирует событие к Журналу приложения).

Это - первый проект, потому что тот, что я записал для Клиента, что это на самом деле работает, "" был записан на их десяти центов и "принадлежит" им. По сути, я повторно кодировал этого (который на самом деле существенно отличается от того, используемого Клиентом), и он может иметь глупые ошибки, скрывающиеся в нем. Я выполнил его на некоторое время сегодня вечером в некоторых моих системах, и я не вижу проблем.

Возможно, я в конечном счете сделаю это немного лучше. Было бы хорошо, если бы это вытащило свою конфигурацию из реестра (таким образом, этим можно было управлять с Групповой политикой), и если это было упаковано как MSI для простого развертывания на группах серверов. О, хорошо.

4
ответ дан 2 December 2019 в 23:24

Централизованный Инструмент управления журнала событий GFI (GFI EventsManager) делает это, хотя не FOSS.

Предупреждения в реальном времени, Включенное предупреждение прерываний SNMPv2

Последняя сборка GFI EventsManager™ улучшила аварийный уровень для ключевых событий или проникновений, которые обнаруживаются в сети. GFI EventsManager позволяет Вам инициировать действия, такие как сценарии или отправить предупреждение одному или нескольким людям по электронной почте, сетевым сообщениям, уведомлениям SMS-сообщением, отправленным через шлюз ЭЛЕКТРОННОЙ ПОЧТЫ К SMS или сервис, и теперь включает прерывания SNMPv2. Поколение предупреждений SNMP также позволит администраторам интегрировать GFI EventsManager с существованием ранее или универсальными механизмами контроля.

0
ответ дан 2 December 2019 в 23:24

Можно сделать это с Windows Task
См. здесь http://www.vistax64.com/tutorials/67961-event-viewer-email-notification.html

3
ответ дан 2 December 2019 в 23:24

См. https://serverfault.com/a/517457/75770 для способ отправки электронной почты на основе настраиваемых фильтров событий

Протестировано при работе на Server 2008 и даже при необходимости аутентификации SMTP.

0
ответ дан 2 December 2019 в 23:24

Теги

Похожие вопросы