115.39K

tema9

1.

TEMA: ЖУРНАЛИЗАЦИЯ
ДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЕЙ
(LOGGING)
Autor: N.Pleșca, lector univ.

2.

Содержание
■ Определение понятий
■ Предотвращение утечки данных и предотвращение сбоя
приложения (создание журналов учета)
■ Обнаружение вторжений и внедрение методов устранения или
минимизации последствий незаконных вхождений в приложение
■ Пример журнализации действий пользователей

3.

Как определяют понятия крупные
компании - Microsoft
■ Аудит - важный элемент системы безопасности, позволяющий
регистрировать в специальных журналах события, связанные с действиями
пользователей в системе
■ Журнал безопасности - (Security Log) содержит информацию об успешных и
неудачных попытках выполнения действий, регистрируемых средствами
аудита. События, регистрируемые в этом журнале, определяются заданной
администратором стратегией аудита
■ Протокол приложения - (Application Log) содержит сообщения об ошибках,
предупреждения и другую информацию, выдаваемую различными
приложениями. Список событий, регистрируемых в этом журнале,
определяется разработчиками приложений

4.

Требования OWASP
■ Обработка ошибок, создание сообщений, аудит и ведение журнала - это разные
аспекты одной и той же темы: как отслеживать события в веб приложениях
■ Детально рассматиривается раздел управление данными, в частности:
– Обработка ошибок исходных данных
– Обработка ошибок ввода данных
■ Хорошо написанные приложения будут вести журнал двойного назначения:
– для отслеживания активности, для аудита и мониторинга,
– а также для упрощения отслеживания транзакций, без чрезмерных усилий или доступа к
системе
■ Журналы должны обладать способностью легко отслеживать или выявлять потенциальные
мошенничества или аномалии от начала и до конца
■ В соответствии с законодательными и нормативными требованиями требуется произвести:
– Аудит - все действия, которые влияют на состояние пользователя, формально
отслеживаются
– Прослеживание – существует возможность определить, где происходит какое-то действие,
на всех уровнях приложения
– Обеспечение высокой целостности – журналы учета не могут быть перезаписаны или
изменены локальными или удаленными пользователями

5.

Logging (Журналирование)
■ Журналирование (англ. logging) — форма автоматической записи, в
хронологическом порядке операций в информационных технологиях, процесс
записи информации о происходящих в рамках какого-либо процесса с
некоторым объектом, событиях, например, в файл регистрации или в базу
данных
■ В системах управления базами данных используется журнализация изменений —
ведение записей обо всех изменениях данных, притом сохраняемых до
непосредственного применения в базе данных
■ Журналируемая файловая система — файловая система, в которой широко
применяется журналирование для обеспечения целостности и возможного
восстановления при сбоях

6.

Что и как регистрируется?
■ Журналы должны быть написаны так, что бы можно было записать только новую
информацию (старые записи не могут быть перезаписаны или удалены). Для
дополнительной безопасности журналы также должны записываться в однократно /
читаемое устройство записи, такое как CD-R
■ Копии лог-файлов должны производиться с регулярными интервалами в зависимости от
объема и размера (ежедневно, еженедельно, ежемесячно и т.д). В отношении журналов
должно быть принято общее соглашение об именах, что упрощает их индексирование
■ Файлы журналов должны быть скопированы и перенесены в постоянное хранилище и
включены в общую стратегию резервного копирования организации
■ Файлы журналов и носители должны быть удалены надлежащим образом и включены в
план уничтожения или безопасного удаления средств организации. Отчеты должны
создаваться на регулярной основе, включая отчет об ошибках и тренд обнаружения
аномалий
■ Необходимо сохранять журналы безопасными, в конфиденциальности даже при
резервном копировании

7.

Зачем нужны журналы?
Журналы полезны при восстановлении событий после возникновения проблемы, связанной с
безопасностью. Реконструкция событий может позволить администратору безопасности
определять всю степень деятельности злоумышленника и ускорять процесс восстановления
■ Судебные доказательства – журналы могут в некоторых случаях нуждаться в судебных
разбирательствах для доказательства нарушений. В этом случае решающее значение имеет
фактическая обработка данных журнала
■ Обнаружение атак – журналы часто являются единственной записью, в которой происходит
подозрительное поведение: поэтому журналы могут иногда передаваться в реальном
времени непосредственно в системы обнаружения вторжений
■ Качество обслуживания – можно протоколировать сетевые отключения или остановки
сервера; поведение может быть проанализировано позже, или ответственный человек
может предпринять немедленные действия
■ Доказательство работы приложения - разработчики приложений иногда пишут журналы,
чтобы доказать клиентам, что их приложения ведут себя так, как и ожидалось
■ Требуется по закону или корпоративной политике – журналы могут обеспечивать
индивидуальную отчетность, отслеживая действия пользователя

8.

Различные требования и стратегии
создания журналов
■ Предыдущие слайды показывают что существуют разные мотивы создания журналов учета, а это
означает что необходимо придерживаться разных требованиях и стратегиях. Прежде чем мы сможем
внедрить механизм регистрации в приложение или систему, мы должны знать требования и их
последующее использование
■ Неспособность включить или разработать надлежащие механизмы регистрации событий в вебприложении, может подорвать способность организации обнаруживать попытки
несанкционированного доступа и степень, в которой эти попытки могут или не могут быть успешными
■ Существует еще одна причина, по которой механизм регистрации действий, должен быть
запланирован до реализации. В некоторых странах законы определяют, какую личную информацию
разрешается не только регистрировать, но и анализировать. Например, в Швейцарии компаниям не
разрешается регистрировать личную информацию своих сотрудников (например, что они делают в
Интернете или что они пишут в своих письмах). Поэтому, если компания хочет регистрировать
привычки серфинга у работников, корпорация должна заранее сообщить им о своих планах
■ Это, часто, приводит к необходимости создания анонимных журналов или де-персонализированных
журналов, с возможностью переориентировать их позже, если это необходимо. Если
несанкционированное лицо имеет доступ к персонализированным журналам, корпорация действует
незаконно. Таким образом, может быть несколько юридических ловушек, которые необходимо иметь
в виду

9.

Типы ведения журнала
Журналы могут содержать разные типы данных. На выбор используемых данных обычно влияет
мотивация, ведущая к регистрации. В общем случае функции ведения журнала включают в себя
время события, кто инициирует процесс и подробное описание события. Ниже перечислены типы
системных событий, которые могут регистрироваться в приложении. Это зависит от конкретного
приложения или системы и необходимости решить, какие из них будут использоваться в журналах:
■ Чтение файла данных – это не только позволяет увидеть, были ли данные прочитаны, но и кем и
когда
■ Запись данных – кто, где и в каком режиме (добавить, изменить) данные были записаны. Это
можно использовать, чтобы увидеть, были ли данные перезаписаны
■ Модификация любых характеристик данных – включая разрешения или контроль доступа.
Администраторы могут определить, были ли изменены их конфигурации
■ Удаление любых данных (объектов)
■ Административные функции и изменения конфигурации - действия управления учетными
записями, просмотр данных любого пользователя, включение или отключение ведения журнала
и т. д.
■ Все попытки авторизации (включая время), такие как успех / сбой, разрешаемый ресурс или
функция, и пользователь, запрашивающий авторизацию. Эти журналы могут быть отправлены в
систему обнаружения вторжений, которая будет обнаруживать аномалии
■ Все события аутентификации – вход в систему, выход из системы, неудачные логины и т. д

10.

Пример создания лог-файла (журнал учета
действий пользователей веб приложения)
■ Я буду использовать приложение-пример, созданную в 3-й лабораторной
■ Там были определены несколько ролей – продавец, мереджер, администратор. Были
определены права доступа пользователей к ресурсам, в зависимости от ролей
■ Необходимо создать файл который будет сохранять все действия пользователей при доступе к
приложению
■ Я решила что буду сохранять данные соблюдая следующую структуру: DataOra, Fisier accesat,
ID sesiune, ID user, ID rol, Actiune
– Дата и время – я возьму из системы с помощья функции Date()
– Название используемого файла – буду использовать суперглобал $_SERVER['PHP_SELF’]
– Id сессии, нужен мне чтобы знать из какой сессии было использовано приложение – буду
использовать функцию SESSION_ID()
– ID user и ID rol – возьму значение из переменных-сессии определенные в скрипте
– Действия – определяю я
PS: можно еще добавить IP клиента, тип используемого браузера – используем суперглобал
$_SERVER['REMOTE_ADDR’], ...

11.

Определение действий
■ Я определила функцию function write_logs($action), с переменной $action типа
текстовая строка, которую я буду вызывать в файлах со скриптами,
определенные ранее. Итак, я определю несколько ключевых слов которые буду
использовать как значение функции:
– View – посмотренный/ увиденный
– Logged – успешно аутентифицированный
– Log fault – не прошел аутентификацию
– Log out – выход
■ ...и в зависимости от того что сделает пользователь я передам какое-то значение
функции

12.

Где я вызывала функцию?
■ В скрипте, отвечающий за вывод формы аутентификации, я вызвала
write_logs("view"); прямо когда я начинаю сессию
■ В скрипте который проверяет успешный вход пользователя и где я определяю
переменные сессии – я вызываю write_logs("logged");
■ В скрипте где я проверяю что пользователь не смог войти в приложние в
результате аутентификации, я вызываю write_logs("log fault");
■ В скрипте отвечающий за создание и вывод меню пользователю, в
зависимости от роли - я вызову write_logs("view");
■ И в скрипте который реализует выход из приложения – я вызову write_logs("log
out");
... И начнем

13.

Я открываю приложение...
■ Вошла под несколькими ролями... Что у меня сохранилось в файле
логгов?

14.

Скрипт функции ... Не забываем включить файл содержащий
функцию во всех файлах где необходимо вызывать функцию
<?php function write_logs($action){
$fileName = "d:/loguri/date_loguri.txt";
// Cimpuri: data ora, $_SERVER['PHP_SELF'], SESSION_ID(), $_SESSION['id_user'] $_SESSION['id_rol'] Action
$fieldsSeparator = "\t\t";
$logLine =date("d/m/y
H:i:s").$fieldsSeparator.$_SERVER['PHP_SELF'].$fieldsSeparator.SESSION_ID().$fieldsSeparator.(("".$_SESSION['id_user'] !="")
?$_SESSION['id_user']:"[-]").$fieldsSeparator.(("".$_SESSION['id_rol'] !="") ?$_SESSION['id_rol']:"[-]").$fieldsSeparator.$action;
if (!file_exists($fileName))
{
$fileO=fopen($fileName,"w") or die("Eroare!");
$antet = "Data ora".$fieldsSeparator."Fisier accesat".$fieldsSeparator."ID sesiune".$fieldsSeparator."ID
user".$fieldsSeparator."ID rol".$fieldsSeparator."Actiune";
fwrite($fileO, $antet."\r\n");
fclose($fileO);
}
$fileO=fopen($fileName,"a") or die("Eroare!");
fwrite($fileO, $logLine."\r\n");
fclose($fileO);
}
?>

15.

Задание
■ Добавьте администратору функцию «Просмотр логфайла» и выведите ему
содержание данного файла

16.

Ротация журналов
■ При активном использовании сервера пользователями или очень подробном
журналировании или просто продолжительном времени работы программного
обеспечения, в журнале становится очень много записей, что приводит к следующим
затруднениям:
– файл регистрации потребляет значительные ресурсы хранения,
– большой файл регистрации становится тяжёлым для чтения и анализа
■ Таким образом бывает необходима ротация журналов — усечение текущего файла
регистрации, архивирование или удаление предыдущих накопленных данных:
– по временному промежутку (каждый час, каждый день, за последние сутки/
неделю) в новый файл
– по достижении определённого объёма или количества записей
– циклический журнал — методика хранения какого-то определённого объёма
или количества записей, при этом новые записи удаляют самые старые
записи, на базе такой структуры как кольцевой буфер
– каждый новый запуск экземпляра ПО создает новый файл лога или
переименовывает предыдущий файл лога
■ Если автоматическая ротация журнала не предусмотрена при разработке
программного обеспечения, то эта задача ложится на системного администратора,
которые автоматизируют её с помощью планировщиков, или специализированых
утилит

17.

Выводы
■ Логи доступа — хранят информацию обо всех запросах, которые были отправлены на сервер
■ Системы / подсистемы контроля действий пользователя — это программный
комплекс, позволяющий отслеживать действия пользователя
■ Данная система осуществляет мониторинг рабочих операций пользователя на предмет
их соответствия корпоративным политикам
■ Необходимость возникновения таких систем была обусловлена увеличением
инсайдерских угроз. Подобные программные комплексы предотвращают или помогают
расследовать утечки конфиденциальной информации, а также выявить нецелевое
использование рабочего времени
■ Проведённое в 2007 г. первое открытое глобальное исследование внутренних угроз
информационной безопасности компанией Infowatch (по итогам 2006 г.) показало, что
внутренние угрозы являются не менее распространёнными (56,5 %), чем внешние
(вредоносные программы, спам, действия хакеров и т. д.). В подавляющем
большинстве (77 %) причиной реализации внутренней угрозы является халатность
самих пользователей:
– невыполнение должностных инструкций
– либо пренебрежение элементарными средствами защиты информации
■ Так же большую опасность представляют злоумышленники с высокими полномочиями
доступа: администраторы сетей, операционных систем, приложений, баз данных
English     Русский Правила