Pull to refresh
16
0
Андрей @Deks

User

Send message
Пожалуй вы правы. Напишу ещё статьи, как логическое продолжение предыдущих. Займусь на этой неделе. Думаю к концу недели сделаю.
Постараюсь там более подробно все описать.
На самом деле проще разбирать виндовое событие по подстрокам. Я об этом вскользь упомянул в статье про мониторинг ад, короткую вы указали выше. Выборка по подстрокам имеет более читабельный код.
С хмл сложнее, т.к. слишком много служебных символов — велика вероятность ошибки в коде.
Попробуйте использовать подстроки и у вас все получиться:)
Regexp конечно хорошо, но виндовый Eventlog очень хорошо структурирован и его можно разобрать по подстрокам, не трогая поле Message совсем.
Если открыть любой лог и посмотреть его в XML-форме, то вы увидите стандартный XML-шаблон.
Его можно обработать как XML, либо взять подстроки (начиная с 0).
К примеру: Событие 4624
Поле Message очень больше, вот его часть:
Событие 4624
Вход с учетной записью выполнен успешно.

Субъект:
ИД безопасности: NULL SID
Имя учетной записи: — Домен учетной записи: — Код входа: 0x0

Тип входа: 3

Новый вход:
ИД безопасности: АНОНИМНЫЙ ВХОД
Имя учетной записи: АНОНИМНЫЙ ВХОД
Домен учетной записи: NT AUTHORITY
Код входа: 0x2b78a448
GUID входа: {00000000-0000-0000-0000-000000000000}

Сведения о процессе:
Идентификатор процесса: 0x0
Имя процесса: — Сведения о сети:
Имя рабочей станции: 069-DAR
Сетевой адрес источника: 10.0.5.27
Порт источника: 1056

Сведения о проверке подлинности:
Процесс входа: NtLmSsp
Пакет проверки подлинности: NTLM
Промежуточные службы: — Имя пакета (только NTLM): NTLM V1
Длина ключа: 128
Далее идет описание почему это происходит и что с этим делать.


Парсить его RegExp не очень удобно.

Однако можно открыть его как XML или отобразить в «Понятном представлении»:
И взять из поля EventData только нужные нам подстроки (начиная с 0):

$a = Get-Eventlog Security -InstanceId 4624|
Select TimeGenerated,ReplacementStrings |
% {
New-Object PSObject -Property @{
UserName = $_.ReplacementStrings[5]
IPAddress = $_.ReplacementStrings[18]
WSName = $_.ReplacementStrings[11]
Date = $_.TimeGenerated
}
}

И получить в итоге только необходимую информацию без написания шаблонов под RegExp.
В общем то могу конечно. Вы можете мне отписать в аську 375173554 или в скайп: deks__
После публикации данного поста, я немного изменил скрипты, добавил запись логов не в файл, а в SQL. И переписал все скрипты на .NET C# в виде Windows-службы, которая все время висит в фоне и парсит лог. Работает в разы быстрее — и ест всего 8МБ памяти (судя по диспетчеру задач).

1. все верно.
2. да
3. К сожалению новое имя файла не фиксируется в логах. Возможно стоит поиграться с политиками аудита, но объем логов может вырасти в десятки раз.
При переименовании файла фиксируется доступ к данному файлу и папке (4663), которая его содержит.

В дополнении хотелось бы еще указать на еще один евент под номером 4659.

Он так же фиксирует удаление файлов при определенных случаях. Сейчас уже не помню при каких конкретно, но он может появиться при удалении файла.

а хотя… тут то постарше будут и процессоры и платформа. Прощу прощения.
Каждый сервер обошелся в почти миллион рублей

Недавно покупали
IBM System X 3550 M4:
2 x Xeon E5-2670v2 (10 Core)
192 Gb PC-14900 ECC DDR3
2 HBA Qlogic
Additional PowerSupply
8 SSD 256GB
638 т. руб.

Россия… такая Роиссия.
Согласен, не 100%, не учел авторизацию без сетевого подключения к домену.
Это можно делать анализируя события керберос, точнее запрос тикетов (4769 событие).
На каждом КД анализировать лог на предмет этого события, и он со 100% вероятностью скажет кто залогинился, на какой машине и в какое время.
Тем самым кстати можно посмотреть как делятся кеорберос-запросы между КД в домене.
А вы события входа в домен пользователей не собираете?
К примеру чтобы знать где какой пользователь и в какое время залогинился?
А за документик с событиями — отдельное спасибо!
Способ интересный.
Но есть один минус, названия созданных/удаленных/измененных групп не отображаются. Только SID.
Если группу удалить, то мы никогда названия не узнаем:)
Такую же вещь можно сделать встроенными средствами: например powershell. Только плюсом к этому вместо SID в именах группы писать диспейл_нейм группы (отдельным запросом доставать имя группы по SID).
1 скрипт, может запускаться раз в 1/2/3.../24 часа или как угодно, парсить лог, доставать инфу, писать в базу к примеру, а там уже как хотите работаете с этой базой.
Вот пример. Правда не в базу. Но прикрутить запрос к базе несложно.
Хотя нет, есть интеграция с LDAP.
Но в данном случае, серверная часть XMPP не имеет значения, все делает клиент, с сервера никаких данных не запрашивается. Звонок будет работать даже если сервер будет в «дауне»:)
Спасибо за комментарий.
Я думаю что на гитхаб не стоит с «этим» идти:) Исходные коды приложения, которое вызывает миранда довольно просты: стандартные методы поиска и работы с Active Directory + создание web-request.
А в сообщество.., возможно было бы удобнее если бы вместо приложения это был бы плагин миранды, было бы удобнее конечно.
prosody… интересно, хотя бегло пробежался по configuration — не увидел интеграции с АД (плохо если нет).
А два клиента, так это только из-за функций описанных в начале статьи, для поддержки пользователей (чтобы они не пугались большому количеству функций в контекстном меню).
Думаю что лучше писать в базу данных. Создать простенькую страничку на php, и смотреть базу в таблице, с возможностью выборки по пользователю к примеру. Это будет намного удобнее чем возиться с файлами.
А вообще реализации зачет.
Правда на Powershell вышло бы намного меньше кода:) Один минус — он должен быть на всех тачках.
Аналитики агенства оценивают переход компании в 10 000 компьютеров с XP на «семёрку» с сумму, которая колеблется от 1274$ до 2069$

Наверное имелось ввиду:
Аналитики агенства оценивают переход компании в 10 000 компьютеров с XP на «семёрку» с сумму, которая колеблется от 1274$ до 2069$ на один компьютер.
А вообще статья отличнейшая!
IPSec over GRE: данная «похабщина» может быть сделана к примеру если Вы хотите использовать только сертифицированные средства криптозащиты (читай шифрования), но при этом к примеру сертифицированный модуль в циску стоит «нехилую такую копейку» (если все правильно помню порядка 100 тыс. руб), а бюджет ограничен. Тогда вы ставите какой нибудь дешевый «шифратор» с лицензией (какой нибудь VIPNet к примеру). Загоняете в него трафик который хотите шифровать, а дальше пускаете этот трафик до удаленной точки через GRE-туннель.
Дешего, сердито, и не нарушает ФЗ о защите ПДн:)
О! спасибо огромное за направление.
Для страждущих, SNARE тут.
Плюсанул бы, но не могу:(
У меня так же работает SYSlog сервер который собирает себе в MySQLную базу все логи с Windows-серверов. Заметил только, что неокторые логи приходят обрезаные:( Поле Message, если оно достаточно большое, обрезается, видимо. Проверил прямым запросом к базе, и там они так же обрезаны. Так же заметил, что некоторые логи вообще пустые в поле Message. Возможно проблема конечно с клиентом который кидает все это на сислог-сервер. У меня Evtsys используется.
Кстати вопрос как раз таки… кто нибудь вкурсе как кидать алерты с rsyslog-сервера в Jabber? :)
1

Information

Rating
Does not participate
Location
Ижевск, Удмуртия, Россия
Date of birth
Registered
Activity