AuditObjectAccess (служба Windows), Інші СУБД, Бази даних, статті

Аудит доступу до об’єктів на файлових серверах – це одна з головних болів адміністратора. Як часто до вас вбігає скуйовджений користувач і в паніці запитує, хто видалив важливий файл з мережевого ресурсу? Думаю, буває …
Я пропоную свій спосіб логування цих подій, у вигляді служби Windows і зберіганням історії в БД MS SQL Server.

Спершу в політиках включаємо Аудит на доступ до об’єктів (“Control Panel -> Administrative Tools – > Local Security Settings“)

Потім на папках, за якими ми будемо “стежити”, включаємо аудит (припустимо тільки видалення)

Після цього, при видаленні файлу, в журналі подій Windows (Security) З’являється відповідний запис (EventID=560)

Перш, ніж приступити до установки моєї служби, опишу на який параметр необхідно дивитися (http://support.microsoft.com/kb/299475/ru):


 Код події: 560 (0x0230) Тип: Аудит успіхів Опис: Відкриття об’єкта Сервер об’єкта:% 1 Тип об’єкта:% 2 Назва об’єкту:% 3 Код дескриптора:% 4 Код операції: {% 5,% 6} Код процесу:% 7 Основний користувач:% 8 Основний домен:% 9 Основний код входу:% 10 Користувач-клієнт:% 11 Домен клієнта:% 12 Код входу клієнта:% 13 Доступ% 14 Привілеї% 15
 

Нам необхідно відстежувати п’ятнадцятий параметр “Привілеї“. Ось список основних значень цього параметра:
1537 = Delete
1538 = Read_CONTROL
1541 = synchronize
4416 = ReadData(or List Directory)
4417 = WriteData(or Add File)
4418 = AppendData (or AddSubdirectory or CreatePipeInstance)
4419 = ReadEA
4420 = WriteEA
4423 = ReadAttributes
4424 = WriteAttributes.


На цьому теорії вистачить. Приступаємо до установки служби:
1) Створюємо БД для аудиту:


 
01.USE master
02.GO
03.  
04.IF DB_ID(“AuditObjectAccess”) IS NOT NULL DROP DATABASE AuditObjectAccess
05.GO
06.  
07.CREATE DATABASE AuditObjectAccess
08.GO
09.  
10.USE AuditObjectAccess
11.GO
12.  
13.IF OBJECT_ID(“Events”, “U”) IS NOT NULL DROP TABLE Events
14.GO
15.  
16.– Таблиця Аудиту
17.CREATE TABLE Events
18.(
19.id INT IDENTITY,
20.[Index] INT,
21.TimeGenerated DATETIME,
22.Source VARCHAR(255),
23.Category VARCHAR(255),
24.EventID VARCHAR(255),
25.UserName VARCHAR(255),
26.MachineName VARCHAR(255),
27.Message VARCHAR(max),
28.Mask VARCHAR(max),
29.DateAt DATETIME default GETDATE(),
30.HostAt VARCHAR(255) default HOST_NAME(),
31.UserAt VARCHAR(255) default ORIGINAL_LOGIN()
32.)
33.GO
34.  
35.IF OBJECT_ID(“AddEvent”, “P”) IS NOT NULL DROP PROCEDURE AddEvent
36.GO
37.  
38.– Процедура на додавання нового запису-події
39.CREATE PROCEDURE AddEvent
40.(
41.@index INT =null,
42.@TimeGenerated DATETIME =null,
43.@Source VARCHAR(255) =null,
44.@Category VARCHAR(255) =null,
45.@EventID VARCHAR(255) =null,
46.@UserName VARCHAR(255) =null,
47.@MachineName VARCHAR(255)= null,
48.@Message VARCHAR(max)= null,
49.@Mask VARCHAR(max)=null
50.)
51.  
52.AS
53.  
54.SET NOCOUNT ON
55.  
56.INSERT INTO Events
57.(
58.[Index],
59.TimeGenerated,
60.Source,
61.Category,
62.EventID,
63.UserName,
64.MachineName,
65.[Message],
66.Mask
67.)
68.  
69.SELECT
70.@Index,
71.@TimeGenerated,
72.@Source,
73.@Category,
74.@EventID,
75.@UserName,
76.@MachineName,
77.@Message,
78.@Mask
79.  
80.GO

2) Тепер створимо в реєстрі кілька записів для роботи служби (settings.reg-Файл знаходиться в архіві разом з ЕХЕ-шником служби):
TimeOut-Час (мс), через яке служба читає журнал
EventID-Подія, у нас це значення = 560
Mask той самий п’ятнадцятий параметр, якщо значення дорівнює нулю (0), то записуємо всі привілеї.
MachineName-Ім’я сервера на якому читаємо журнал (. – Локальний комп’ютер)
ConnectionString-Рядок коннекціі до сервера БД, де зберігаємо наші записи.


3) Встановлюємо саму службу:
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727installutil AuditObjectAccess.exe

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*