Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Аудит AD

Ответить
Настройки темы
PowerShell - [решено] Аудит AD

Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Спасибо за отзывы в теме, но что-то готовые решения аудита оказались очень дорогими.
В итоге решил попробовать сделать подобное скриптом.
Как включить аудит для стандартных телодвижений в AD написано тут
В инете был найден скрипт и слегка модифицирован:

Код: Выделить весь код
$objExcel = New-Object -comobject Excel.Application
$objExcel.visible = $True
$objWorkbook = $objExcel.Workbooks.Add()
$objSheet = $objWorkbook.Worksheets.Item(1)
$objSheet.Cells.Item(1,1) = "Server"
$objSheet.Cells.Item(1,2) = "LogName"
$objSheet.Cells.Item(1,3) = "Time"
$objSheet.Cells.Item(1,4) = "Source"
$objSheet.Cells.Item(1,5) = "EventID"
$objSheet.Cells.Item(1,6) = "Message"
$objSheet.Cells.Item(1,7) = "UserName"
$objSheetFormat = $objSheet.UsedRange
$objSheetFormat.Interior.ColorIndex = 19
$objSheetFormat.Font.ColorIndex = 11
$objSheetFormat.Font.Bold = $True

$row = 1

$servers = Get-Content D:\scripts\ps\servers.txt

foreach ($server in $servers)
{
  $row = $row + 1
  #$AppLog = Get-EventLog -LogName Application -computer $server -Newest 5
  $SecLog = Get-EventLog -LogName Security -ComputerName $server -Newest 10 -ea SilentlyContinue | where {$_.EventID -eq 4624}
  #$SysLog = Get-EventLog -LogName System -computer $server -Newest 5
  #foreach ($cat in $AppLog,$Syslog,$Seclog)
  foreach ($cat in $SecLog)
  {
    #if ($cat -is [array])
    #{
      #if ($AppLog -contains $cat[0]) {$Catname = "Application"}
      if ($SecLog -contains $cat[0]) {$Catname = "Security"}
      #if ($SysLog -contains $cat[0]) {$Catname = "System"}
      Foreach ($event in $cat)
      {
        $objSheet.Cells.Item($row,1).Font.Bold = $True
        $objSheet.Cells.Item($row,1) = $server
        $objSheet.Cells.Item($row,2) = $Catname
        $objSheet.Cells.Item($row,3) = $Event.TimeGenerated
        $objSheet.Cells.Item($row,4) = $Event.Source
        $objSheet.Cells.Item($row,5) = $Event.EventID
        $objSheet.Cells.Item($row,6) = $Event.Message
        #$objSheet.Cells.Item($row,7) = $Event.Message | where {$_ -match "(\s|^)Account\sName"} #Select-String "Account"
        $row = $row + 1
      }
    #}
  }
}

$objSheetFormat = $objSheet.UsedRange
$objSheetFormat.EntireColumn.AutoFit()
$objSheetFormat.RowHeight = 15
Закомментированые строки нужны для того, что бы получать логи не только из журнала "Безопасность\Security", но для аудита они не нужны.
В процессе написания возникла проблема, которую пока не удалось решить.
Надо что бы в таблице было ещё одно поле, userName, что бы можно было сразу посмотреть, когда последний раз осуществляла логин какая-то учётка.
Для примера вот кусок сообщения $Event.Message от EventID=4624

Цитата:
New Logon:
Security ID: DOMAIL\user10
Account Name: user10
Account Domain: Domain
Logon ID: 0x533df4e2a0
Logon GUID: {c1fcf540-9843-1112-b2a8-8fds3c3dcfd}
И надо что бы в это последнее поле userName записывалось значение Account Name, т.е. user10.
Подскажите пожалуйста, как это можно реализовать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:28, 22-05-2014

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


$objSheet.Cells.Item($row,7) = $Event.ReplacementStrings[5]
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:05, 22-05-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Большое спасибо!! То что нужно.

Отправлено: 09:31, 23-05-2014 | #3


Новый участник


Сообщения: 21
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Как целиком теперь выглядит решение и куда его вставить чтоб заработало? новичек ))

Отправлено: 18:42, 14-07-2014 | #4


Новый участник


Сообщения: 14
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: 7z logon.7z
(1.7 Kb, 27 просмотров)

Выкладываю данный скрипт аудита, я пользуюсь им постоянно, при желании можно под себя заточить.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:45, 15-07-2014 | #5


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

У себя в домене я реализовал такую фичу:

Через GPO (нацеленную только на клиентские ОС по WMI фильтру) прописал в логон скрипт код на vb:
Код: Выделить весь код
On Error Resume Next
Dim adsinfo, ThisComp, oUser
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
Thiscomp.put "description", "Выход: " + oUser.cn + " " + CStr(Now)
ThisComp.Setinfo
В логофф скрипт:
Код: Выделить весь код
On Error Resume Next
Dim adsinfo, ThisComp, oUser
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
Thiscomp.put "description", "Вход: " + oUser.cn + " " + CStr(Now)
ThisComp.Setinfo
На выходе получаем:
В поле Description (которое потом можно использовать для каких-нибудь отчетов) компьютера в AD имеем что-то типа "Вход: Иван Иванович Иванов 16.07.2014 9:03:32" или "Выход:... Бла бла бла"

Куски скрипта где-то стащил, переделал под себя. А так, достаточно наглядно и эффективно.

Отправлено: 09:20, 16-07-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Главное в ентом деле, чтоб связь не терялась, машины не зависали и свет не выключался .

Отправлено: 10:23, 16-07-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Аудит AD

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Аудит AD pogo Windows Server 2008/2008 R2 4 20-05-2014 15:35
Аудит в домене clin Microsoft Windows NT/2000/2003 1 16-07-2009 13:26
Аудит clin Microsoft Windows NT/2000/2003 3 19-06-2009 10:57
Аудит ! Kobzar Microsoft Windows NT/2000/2003 3 26-11-2008 12:50
Аудит событий GreenIce Microsoft Windows NT/2000/2003 0 14-05-2007 22:40




 
Переход