Под несанкционированным входом подразумевается ситуация, когда у одного пользователя более одного открытого сеанса. То есть, в журнале присутствует две записи «Вход», между которыми нет записи «Выход» для одного пользователя.
Для упрощения поиска таких записей существует 2 подхода: использовать MS Excel с настроенными фильтрами и сортировкой или написать программу, которая в автоматическом режиме будет осуществлять разбор записей журнала и определение пользователей с несколькими открытыми сеансами.
Пример функционирования такой программы:
1) Из файла журнала берется очередная запись (строка).
2) Из строки выделяется Логин и ТипОперации (по разделительным символам).
3) Если ТипОперации – «Вход», добавляем Логин в массив пользователей с открытым сеансом. Если такой пользователь в массиве уже есть – обнаружен несанкционированный вход.
4) Если ТипОперации – «Выход», удаляем Логин из массива пользователей с открытым сеансом.
Пример реализации программы на языке программирования Python приведен в листинге 2.2-1.
Листинг 2.2-1 – Реализация поиска несанкционированной записи в журнале на языке программирования Python
# словарь открытых сессий
sessions = {}
# открытие файла журнала и считывание содержимого в txt
fi = open("audit_v2.log.txt")
txt = fi.read()
txt = txt.split("\n")
# цикл построчно
for el in txt:
# пропуск пустых строчек
if not el:
continue
# разбиение строки по символу TAB
el = el.split("\t")
# el[0] - это Логин
# el[1] - это ТипОперации
# убираем лишние пробелы в начале и в конце
el[0] = el[0].strip()
# поиск логина (el[0]) в словарь сеансов (sessions)
# нашли Логин и ТипОперации совпадает - несанкционированная запись
if el[0] in sessions and sessions[el[0]] == el[1]:
print('Bad login: ' + ' '.join(el))
# не нашли Логин - добавляем в словарь сеансов
elif el[0] not in sessions:
sessions[el[0]] = el[1]
# нашли Логин, но ТипОперации не совпадает - удаляем его
else:
del sessions[el[0]]
В результате программа выведет следующий результат:
Bad login: operator16 Вход 10.02.2021 11:56:21
Осуществив поиск в файле журнала по логину operator16, можно найти следующие записи:
operator16 Вход 10.02.2021 10:09:52
operator16 Вход 10.02.2021 11:56:21
operator16 Выход 10.02.2021 15:30:51
operator16 Выход 10.02.2021 16:39:47
В результате можно сделать вывод, что была попытка несанкционированного подключения от имени пользователя
operator16 10.02.2021 10:09:52 или 10.02.2021 11:56:21.