Как получить информацию о том, когда и кем были открыты папки и файлы в WinServer 2019/Win10?

Как можно получить историю открытия директорий или файлов в определенной директории на Windows Server 2019/Windows 10 с использованием логов, чтобы получить информацию о входе пользователя, его активности и продолжительности нахождения, возможно ли это реализовать с помощью Python?
  • 16 декабря 2023 г. 11:57
Ответы на вопрос 2
Для получения информации о времени и пользователе, открывшем папку или файл, можно использовать события аудита в Windows Server 2019/Windows 10. Они записываются в журнал событий системы. 

Чтобы включить аудит, следуйте этим шагам:
1. Откройте "Локальная групповая политика" на сервере/компьютере (введите gpedit.msc в командной строке).
2. Перейдите к "Конфигурация компьютера" -> "Параметры Windows" -> "Настройка параметров безопасности" -> "Локальные политики" -> "Аудит" -> "Успешное обнаружение открытия файлов".
3. Включите эту политику на определенных папках и/или файловых типах, которые вы хотите отслеживать.

Когда пользователь открывает папку или файл с активированной аудит политикой, соответствующая информация будет записываться в журнал событий. Вы можете использовать Python для анализа журнала событий и получения нужной информации. Ниже приведен пример кода на Python, который использует библиотеку pywin32 для чтения журнала событий:

```python
import win32evtlog

def read_event_log(log_type, query):
    log_handle = win32evtlog.OpenEventLog(None, log_type)
    records_returned = 1
    event_list = []

    while records_returned > 0:
        events = win32evtlog.ReadEventLog(log_handle, win32evtlog.EVENTLOG_BACKWARDS_READ | win32evtlog.EVENTLOG_SEQUENTIAL_READ,
                                          0)
        records_returned = len(events)

        for event in events:
            if query in event.StringInserts:
                event_list.append(event)

    win32evtlog.CloseEventLog(log_handle)
    return event_list

log_type = 'Security'
query = 'C:\\Path\\To\\Folder' # Путь к папке или файлу, который вы хотите отслеживать

events = read_event_log(log_type, query)
for event in events:
    print(event.TimeGenerated, event.Sid, event.SourceName)
```

Этот код открывает журнал аудита безопасности и ищет события, содержащие указанный путь к папке или файлу. Он выводит время создания события, идентификатор безопасности пользователя (SID) и источник события.

Обратите внимание, что для выполнения этого кода вам может потребоваться установить библиотеку `pywin32`.
Во-первых, включите в политике аудит доступа к файлам и папкам (в разделе аудита доступа к объектам). Во вторых, в свойстах папки (в окне по кнопке Дополнительно, на вкладке Аудит)   добавьте пользователей и группы, чью активность вы собираетесь отслеживать. После этого записи аудита доступа (создание и открытие файлов и папок) будут писаться в журнал событий Безопасность. 
А вот как дальше обрабатывать их на python - это я вам не скажу.
Похожие вопросы