Зачем нужно журналирование
+7 (495) 640-47-10
+7 (812) 612-00-12
sales@acribia.ru
13 мая 2019
Журналирование. Почему нужны журналы и зачем их защищать?
Журналирование — это процесс записи в хронологическом порядке событий, происходящих с каким-то объектом. В информационных технологиях в качестве такого объекта может представать файловая система, операционная система или отдельное приложение. Запись может совершаться в файл или в базу данных. По этим записям можно понять, что сейчас происходит с наблюдаемым объектом или же восстановить, что с ним происходило в какой-то интересующий нас момент времени.
Благодаря записям в журналах можно узнать о том, что какой-то инцидент происходит прямо сейчас, или же расследовать уже случившийся инцидент, найти предпосылки к нему, восстановить предшествующий его возникновению ход событий и обнаружить те элементы, взаимодействие с которыми сделало его возможным.
Предположим, перестал отвечать сервер, на котором работает некое веб-приложение. В ответ на запросы сервер возвращает код 404 или 500 (а то и вовсе молчит) и должным образом работать не желает. В таком случае можно посмотреть журналы регистрации событий этого сервера, которые обычно представляют собой все получаемые сервером запросы. Их можно посмотреть и найти тот из них, предшествовавший прекращению работы сервера, который к этому мог привести.
Помимо получаемых веб-сервером запросов журналировать можно события в операционной системе, на серверах баз данных, в различных средствах безопасности, в пользовательских приложениях, на внешнем прокси-сервере и другие. Если нас интересует только веб-сервер и то, что происходит с ним, то и события нас будут интересовать только его. Если же нас интересует общее состояние защищенности и работоспособности информационной системы, то есть смысл следить за событиями на разных ее узлах, а также на сетевом оборудовании. Это позволит отслеживать более сложные взаимодействия внутри системы. Например, в системе появился вирус — по журналам можно попробовать определить, как и куда он дальше распространяется и откуда вообще появился. Или если происходит DoS-атака — можно понять, с какого устройства. И так далее.
Примеры журналируемых событий:
- успешный или неуспешный вход пользователя в систему;
- выход пользователя из системы;
- добавление, удаление или изменение пользовательских данных;
- добавление, удаление или изменение файлов;
- запросы к серверу;
- заблокированные сетевые пакеты;
- разрешенные сетевые пакеты;
- передача файлов;
- и другое.
Очевидно, может происходить много событий разного рода, особенно если речь идет о большой информационной системе. Вручную просматривать все события может быть тяжело, а отделить «обычные» события от «необычных» не так и просто. Например, если пользователь обратился к главной странице некоего веб-сайта — это нормально. Если же за одну секунду пользователь обратился к главной странице того же сайта 100 раз — это уже подозрительно. Но если все 100 обращений совершены с разных IP-адресов, и сделаны они к главной странице какого-то популярного сайта, то данная ситуация снова в порядке вещей. Фильтрацией таких событий, а также мониторингом и поиском корреляций между событиями из разных источников занимаются, например, решения класса SIEM и SOC.
Итак, события журналируются, инциденты детектируются и/или расследуются. А теперь предположим, что у нас есть веб-сервер и некий злоумышленник залил на него веб-шелл. При помощи шелла он внес свои коррективы (удалил какие-то файлы, изменил конфигурацию и т. п.), удалил из журнала запись о POST-запросе с отправкой веб-шелла и о всех своих действиях, после чего удалил шелл и скрылся. Когда последствия его действий будут замечены, соответствующих записей в журнале мы не найдем. Если мы и обнаружим подозрительное изменение временной метки у системных файлов, то этой информации может быть не достаточно для восстановления хода событий и поиска уязвимого места в системе. Именно поэтому журналы необходимо защищать. Ведь при малейшем сомнении в целостности и подлинности записей журнала такому же сомнению подвергается вся получаемая из него информация. Соответственно, ставится под вопрос использование журнала в качестве достоверного источника. Так же и заинтересованный свидетель в суде лишь запутывает следствие.
Ни для кого не должно быть возможно редактировать или удалять записи в нем. Обычно это решается назначением прав доступа, не позволяющих запись и редактирование никому кроме системы. На случай если злоумышленнику все же удастся модифицировать журнал хорошо бы иметь его резервную копию. Данная копия может храниться на удаленном сервере или на том же, но в зашифрованном виде и, возможно, в другой директории. Помимо этого, иногда журналами может пользоваться злоумышленник в своих целях даже в режиме чтения, поэтому данные в них, которые приходят со стороны пользователя и на которые он может повлиять, рекомендуется экранировать.
Журналирование событий (Event Logging): запись, управление и аудит информации
Журналирование событий (Event Logging) – процесс записи, управления и аудита информации о действиях, происходящих в системе. В этой статье мы рассмотрим основные аспекты журналирования событий и дадим советы по настройке и использованию этой технологии.
Приходите на наш бесплатный вебинар по разработке без кода, чтобы задать вопросы, узнать больше про зерокодинг и попробовать себя в новой профессии!
Что такое журналирование событий (Event Logging)
Журналирование событий (Event Logging) – это процесс записи информации о различных действиях, происходящих в системе или приложении. Действия над пользователями, процессами, ошибками, изменениями настроек. Эти записи, известные как журналы (логи), содержат важную информацию, которая может быть использована для анализа работы, поиска и устранения ошибок, отслеживания действий пользователей и безопасности.
Зачем нужно
Вот несколько основных причин, почему оно является неотъемлемой частью различных приложений и систем:
- Отладка и поиск ошибок: позволяют разработчикам отслеживать и анализировать ошибки и проблемы, возникающие в приложениях. Записи помогают идентифицировать места возникновения ошибок, их причины и последствия.
- Мониторинг и производительность: предоставляет информацию о работе системы, производительности приложений, нагрузке на сервер и других ключевых показателях. Это позволяет операторам сервисов и администраторам мониторить состояние, выявлять узкие места и оптимизировать ее работу.
- Аудит и безопасность: логи являются важным инструментом для обеспечения безопасности. Они позволяют отслеживать действия пользователей, изменения конфигурации, попытки несанкционированного доступа. Журналы могут служить важным источником информации для расследования инцидентов и обеспечения соответствия требованиям безопасности.
Как работает
Процесс журналирования событий включает несколько этапов:
- Выбор источника: для начала нужно определить, что регистрировать. Это может быть пользовательские действия, системные события, ошибки, предупреждения, информационные сообщения и другие, связанные с работой сервиса или приложения.
- Настройка: после определения источников необходимо настроить сам журнал. Это включает выбор формата записей, выбор места хранения (локальное хранилище, централизованное.), уровни логирования (отладка, информация, предупреждение, ошибка) и другие параметры.
- Запись: приложение начинает записывать все в логах. Каждое действие обычно содержит информацию о времени возникновения, типе, источнике, пользователе и других сопутствующих данных. Журналы обычно представлены в виде текстовых файлов или сохраняются в специальной базе данных.
- Управление и аудит: логи должны быть управляемыми и доступными для просмотра и анализа. Существуют различные инструменты и панели управления, которые позволяют администраторам системы или разработчикам просматривать и анализировать журналы, фильтровать события по различным параметрам, находить причины ошибок и обнаруживать потенциально подозрительную активность.
Советы по настройке и использованию
- Определите важные события: перед началом настройки журналирования определите, что критично для сервиса или приложения. Фокусируйтесь на том, что может оказать наибольшее влияние на безопасность и производительность.
- Выберите подходящий формат и хранилище: выберите формат записей и место хранения, учитывая ваши требования вашей системы. Некоторые предпочитают использовать централизацию, чтобы собирать и анализировать логи со всех серверов и устройств.
- Настройте уровни логирования: определите уровни логирования для каждого источника. Высокий уровень логирования (отладка) может помочь при отладке и анализе проблем, но может создавать большие объемы данных. Выбирайте уровень логирования с умом, чтобы балансировать между необходимостью информации и объемом файлов.
- Используйте инструменты для анализа журналов: используйте специализированные инструменты и панели управления для анализа. Это может быть программное обеспечение для мониторинга и анализа журналов или встроенные инструменты.
- Кибербезопасность: обратите внимание на безопасность логов, особенно если они содержат конфиденциальную информацию. Установите соответствующие права доступа, резервируйте их регулярно и храните копии в защищенном месте.
Заключение
Журналирование событий (Event Logging) – элемент безопасности приложений. Настройка и использование этой технологии требует внимания к деталям.
Логирование: понятие, механизмы и уровни
Программисты и системные администраторы занимаются структурированием и контролем за работой сайтов, серверов и программного обеспечения отдельного компьютера. При возникновении ошибок в работе того или иного сервиса специалист обращается к логам.
Что такое логи?
Лог (log) — это хронологическая запись наиболее значимой информации о работе системы. Подобная фиксация событий дает представление и том, что происходило в системе, в какой именно момент, какой пользователь спровоцировал то или иное событие, какие ошибки возникли и т.д.
Запись оформляется в особый файл, который еще называют лог-файлом или журналом логов. Для специалиста такой файл — это книга или справочник, рассказывающий о том, что происходило в системе в конкретный период времени. Грамотные администраторы, обращаясь к подобным записям, могут не только выявить проблему в работе системы на ранней стадии, но и вовремя предотвратить сбой в ее работе. Несанкционированные действия или установление вредоносных программ также фиксируются журналами логов. И по ним можно достаточно эффективно выявить внешнее вмешательство в работу сайта. Таким образом логи используются для контроля, мониторинга, анализа, защиты и оптимизации работы приложений и серверов.
Типы логов
В зависимости от того, информация какого типа фиксируется системой, формируются разные типы записей. Поэтому логи делятся на: системные, серверные, почтовые, логи аутентификации, авторизации, log file приложений, баз данных и т.д. Подобная группировка помогает быстрее находить нужный лог и оптимизировать работу с ним.
Еще существует разделение логов в порядке их значимости для ситуационной ошибки:
- Срочное исправление — Fatal error
- Ошибки, не влияющие на пользователя — Not critical error
- События, требующие внимания — Warning
- Информация о вызовах сервера — Initial information
Что такое логирование?
Логирование — это процесс формирования логов, а именно: фиксация и структурирование информации о работе системы в отдельные лог-файлы с возможностью быстрого доступа к ним в случае необходимости. Файлы содержат отчет обо всем, что происходило с системой: какие действия совершали конкретные пользователи, когда это происходило, как система реагировала на события и т.д.
Фиксацию всех важных для системы событий производит специальное программное обеспечение. В процессе логирования учитываются настройки уровня детализации записей, поскольку ни одна система не проводит записи абсолютно всех событий.
Кроме формирования журнала записей, важной компонентой настройки логирования является правильная организация хранения логов. Она должна обеспечивать своевременный и быстрый доступ к ним.
Лог-файлы могут храниться на компьютере, на удалённом жёстком диске, на отдельном сервере, в облачных хранилищах, т.е. на любом удобном носителе с ограниченным доступом для посторонних.
Настройка автоматического сбора и хранения логов делается для того, чтобы во время возникновения проблем на сервере была возможность проанализировать сохраненные данные. При этом важно не просто выявить сбой, но и исправить возникшие проблемы, предотвратить появление ошибок в будущем. В этом заключается основная задача работы программиста с log file.
Механизмы записи информации
Как было сказано выше, в журналах логов не фиксируется абсолютно вся информация. Система производит запись наиболее важных для анализа данных. Например, при обращении пользователя к конкретной странице сайта, в лог записываются: URL, к которому обращается посетитель, его IP-адрес, используемый браузер, операционная система, дата и точное время обращения, код ответа сервера и прочее.
Для формирования журналов логирования программисты используют разные механизмы фиксации информации:
- Самый понятный и распространенный механизм — запись логов в текстовый файл. Это запись каждого события отдельной строкой.Подобные журналы легко читать, открыв файл в любом текстовом редакторе.
- Более углубленный лог — когда одно событие записывается несколькими строками, например, журнал ошибок. Такие записи имеют сложную многоступенчатую структуру, в которой человеку легко пропустить важную информацию. Поэтому для чтения этого вида log files используются специальные программы.
- Бинарный — самый сложный механизм записи файлов. Обычно такие логи обрабатываются тем же программным обеспечением, что и ПО, их записывающее.
- Приложения, использующие БД или сами СУБД. Основным недостатком такой фиксации является вероятность замедления работы базы данных из-за интенсивной записи логов. Поэтому при использовании такого механизма ведения записи крайне важно четко определить, что именно система должна фиксировать.
Настраивая логирование, важно учитывать, что процесс формирования лог-файлов должно быть незаметным для пользователя. Если отладка проведена не правильно, производительность системы будет снижаться из-за нехватки места на диске.
Уровни логирования
При любом механизме записи событий их объем все равно будет большим. И работать с таким количеством информации будет достаточно сложно. Поэтому логи структурируют по уровням. Наиболее известными и востребованными являются следующие уровни логирования:
На уровне debug едет запись значимых переходных состояний, например, запуск или остановка сервера, запрос в БД, верификация, обработка информации. Уровень info расскажет программисту об общих событиях работы сервиса. Экстренные ситуации, проблемы, некорректные запросы будут записаны в warning. Основные ошибки на уровне error.
Чтобы соблюдались уровни логирования, программисту нужно прописать условия или внутри самой программы, или выставить условия в зависимости от ситуации при запуске программы, которая производит логирование.
Ротация файлов
Представим, что логирование данных системы налажено. Например, мы прописали в приложении уровни: debug, info, warning, error. Выбрали в качестве механизма записи обычные текстовые файлы и у нас благополучно все логи собираются в отдельном месте. Теперь нам стоит разобраться с ротацией логов.
Ротация файлов логирования представляет собой архивирование логов с одновременным удалением старых файлов и заменой их вновь созданными. Во время ротации происходит сортировка логов и удаление тех файлов, к которым точно не нужно будет обращаться. Такой подход позволяет сократить объем памяти, используемой для хранения журналов логирования. Поскольку не все файлы одинаково значимы для системного администратора, в удалении части из них заложен смысл сохранения работоспособности и эффективности системы. Ведь чем больше памяти на жёстком диске, тем быстрее обрабатываются запросы пользователей.
Во время ротации происходит несколько технических процедур: сохранение и архивирование нового лога, переименование ранее сформированных файлов и удаление самых старых. Конечно, такое представление последовательности действий значительно упрощено. В реальности же ротация логов – это сложный многоступенчатый порядок действий системы, который запускается специальными утилитами.
На рынке существует системы логирования с высокими рейтингами, которые не только реализуют функцию формирования журналов с хронологической записью истории событий, но и с настройкой их последующей ротации.
Как читать логи?
Для чтения простых логов можно использовать обыкновенный текстовый редактор. А вот для расшифровки более сложных и объемных записей стоит воспользоваться специальным программным обеспечением. Ассортимент готовых решений для анализа файлов логирования достаточно широк. Выбирать ПО стоит, исходя из задач и объемов вашего ресурса. Расшифровка логов имеет свои особенности, поэтому во время анализа необходимо следовать рекомендациям разработчика ПО.
Заключение
Логирование данных — это фиксация событий в работе веб-ресурса, помогающая его администраторам вовремя выявлять баги системы, исправлять их, предотвращать появление ошибок или сбоев в будущем. Кроме указанных выше функций, информация из логов позволяет маркетологам получать данные про объем трафика, время посещения страниц, страницы входа/выхода, географию посетителей и другую важную для повышения конверсии информацию. Таким образом, логирование является важным этапом контроля и мониторинга работы системы, позволяющим увеличить коэффициент ее производительности.
Логирование: что это и в чем его польза
Система логирования – один из важных моментов в процессе разработки программных продуктов, контроля над работой сервисов, веб-сайтов. Но часто ее недооценивают, не используют своевременно. А необходимость в ней понимают только тогда, когда проект уже находится на этапе сдачи и что-то в нем идет не так и остается только разводить руками. Чтобы этого не произошло, надо знать, что это, запись логов, зачем она нужна, когда и как ее применять на практике. К ней стоит обращаться IT-специалистам, чтобы разобраться, почему не работает или работает некорректно приложение или сайтов. Администраторы, основываясь на логах, смогут причины в сбое сервисов. Используя логирование, система безопасности сможет быстро установить вид взлома, оценить нанесенный ущерб, а в ряде случаев еще и выявить злоумышленника. Но, обо всем по порядку.
Проблемы, с которыми сталкиваются реальные приложения
Чтобы понять, для чего нужны лог файлы, следует знать, с какими проблемами могут столкнуться реальные программные продукты. Так, рассмотрим самый простой сайт. Он включает:
- систему передачи названия веб-сайта в ip-адрес сервера – DNS;
- интернет-сервер: программу, обрабатывающую входящие запросы, перенаправляющую их в код софта и получающую из него данные, необходимые пользователю;
- физический или виртуальный сервер и его инфраструктуру: аппаратное обеспечение, операционная система, обслуживающие программы;
- базу данных: внешнее хранилище, с которым будет работать код приложения, чтобы отправить или получить нужную информацию;
- программу: включает код самого приложения, а также миллионы строк библиотек, работает в рамках фреймворка со своими правилами обработки поступающих запросов;
- фронт-энд часть: код, выполняемый на пользовательском браузере, системы сборки и пр.
Это самая простая из возможных структур. Но большая часть современных сайтов имеет куда более сложное строение. Огромное количество дополнительных серверов, систем кеширования для ускорения доступа, внешние, в том числе облачные сервисы, очереди, асинхронные коды и многое другое. В результате написанный программистом код обрастает многослойной, разветвленной структурой. И что делать, если произошел сбой? Основная задача – найти, где это случилось и почему. Но в решении она очень сложная. И самое неприятное то, что проблемы могут быть выявлены не на этапе создания продукта, а уже тогда, когда он запушен в работу.
Аренда выделенного
сервера
Разместим оборудование
в собственном дата-центре
уровня TIER III.
Конфигуратор сервера
Подбор оборудования для решения Ваших задач и экономии бюджета IT
Зачем нужно логирование
И единственный способ эффективно решить ее – проанализировать лог. Осталось только понять, что значит логирование? Речь идет о записи специального текстового файла (лога) с полной информацией о работе программы, действиях пользователей. В результате получается некий журнал, каждая строчка в котором соответствует определенному действию. И если возникает любая непредвиденная ситуация, специалисту надо анализировать логи. Так он сможет узнать, что происходило и когда. Анализируя данные, программист выявит не только проблему, но и те факторы, которые спровоцировали ее появление, сможет понять, возникает ли она постоянно или только при определенных обстоятельствах.
Логи стоит записывать в процессе работы каждого компонента IT-инфраструктуры. Выгоду от его использования получит каждый специалист:
- администратор сможет понять почему произошел сбой устройства, ОС или «лег» сайт;
- Seo-специалисты получат наглядную картину о посещаемости, смогут оценить целевой трафик;
- разработчики, выполняя регулярно просмотр лога, выявят и устранят ошибки в продукте еще в процессе программирования, смогут при помощи простых интерфейсов отслеживать работу продукта в режиме реального времени;
- администраторы интернет-магазинов смогут держать под контролем процесс взаимодействия с заказами, платежными системами, видеть изменения, происходящие в них;
- представители системы безопасности компании смогут выявить факт посягательства на конфиденциальность информации и связанных с этим лиц.
Контроль над приложением необходимо будет продолжить даже после того, как оно пойдет в работу. Это позволит постоянно быть в курсе происходящего, мгновенно реагировать на чрезвычайные происшествия. То есть анализ логов – это одна из обязанностей в работе ИТ-специалистов. Это возможность быстро находить и проблемы, и их источники, устранять их, выявлять конфликты в конфигурационных файлах, следить за безопасностью. Поэтому специалисты не рекомендуют пренебрегать логированием и повсеместно использовать его администрировании бизнеса, при отладке программных продуктов, диагностике проблем как ПО, так и баз данных.
Знакомимся с типами логов
Чтобы процесс работы с логами был более простым и удобным, их разделяют на несколько типов:
- системные – связаны с событиями, происходящими в операционной системе;
- серверные – формируют список обращений к серверу;
- баз данных – фиксируют обращения к базам данных;
- почтовые – работают с входящими или исходящими письмами, находят ошибки, ввиду которых они не были отправлены или получены;
- авторизации и аутентификации – отвечают за все моменты, связанные с входом и выходом из системы, восстановлением доступа;
- приложений – отвечают за установленные софты.
Для каждого из них надо создавать отдельный журнал записи в особом формате. Так будет более удобно анализировать состояние продукта, находить источники проблем и инструменты для работы с ними.
Дополнительно предусмотрена классификация логов по степени их важности. Так, к группе Fatal/critical error будут относиться те, которые требуют как можно более быстрого выполнения. Ошибки, которые не будут влиять на работу пользователей стоит записывать в группу Not critical error. В файле Warning будут храниться предупреждающие строки, то есть то, на что стоит обратить внимание. Для записи информации о запросах баз данных, вызовах API или других серверов предусмотрена категория Initial information.
Знакомимся с уровнями логирования
Заниматься логированием необходимо во время разработки и последующей эксплуатации всех IT-систем. Но если так делать, подучим огромное количество файлов и разобраться в них будет крайне сложно. Даже в том случае, если классифицировать их по типам и степени важности. Чтобы не разводить хаос, систематизировать важную информацию, упростить ее последующее использование, предусмотрены уровни логирования. Всего выделяют 4 основных:
- Debug. Здесь будут записывать масштабными переходы состояний. Речь идет об обращении к базам данных, запуск и остановка сервиса, подтверждение успешной обработки информации.
- Warning. В этой папке будет находиться все то, что относится к внештатной ситуации, проблемах, требующих внимания. Корявые запросы, некорректные вызовы – все эти логи можно будет найти здесь.
- Error. Этот уровень предполагает сбор типичных ошибок.
- Fatal. Искать проблему серьезных сбоев в работе необходимо в этой папке. Логи, хранящиеся в ней, помогут найти проблему отказа в доступе к базе данных, отсутствии свободного места на жестком диске и пр.
- Trace. Предполагает пошаговую запись происходящих процессов. Сюда стоит заглянуть в том случае, если возникнут сложности с локализацией проблемы.
- Info. Общеознакомительный файл, содержащий информацию о работе сервиса, службы.
Как работать с каждым из этих уровней прописывается в соответствующие методологической документации и внутренних правилах компании. Она определяет последовательность действия специалистов при возникновении той или иной ситуации, порядок обработки каждого из уровней.
Основы грамотного логирования
Чтобы получить файлы логирования, которые будут удобными в последующей работе, следует грамотно подойти к процессу их создания:
- логировать все важные события, будь то запуск приложение, остановка или возобновление транзакций, успешная регистрация, ошибки и пр.;
- исключить часто повторяющиеся слова, что существенно упростит поиск нужной информации в будущем;
- добавлять к логам теги: переходя по ним вы сможете находить данные, даже если они находятся в разных категориях;
- установить для своей компании стандартизированный формат для создания файлов: унифицированное решение будет удобным и для разработчиков, и для пользователей;
- вводить каждое новое сообщение в новую строку;
- использовать только нужную информацию: лишние сведения будут только засорять дисплей;
- использовать типы и уровни логирования осознанно, ведь только так удастся правильно структурировать данные.
Задать вопросы специалистам компании «Xelent, получить профессиональную помощь в логировании, узнать условия сотрудничества можно по телефону или через форму обратной связи.
Популярные услуги
Аренда FTP сервера
Разработчики приложений часто сталкиваются с ситуаций, когда нужно создать backup файлов, но места для его хранения нет. Аренда FTP сервера в Xelent поможет решить эту проблему.
Аренда терминального сервера
Аренда терминального сервера – отличная альтернатива покупке дорогостоящего компьютерного оборудования. Клиент приобретает готовую систему на базе Windows, предназначенную для корпоративных пользователей. Работники компании получат облачный доступ к стандартным приложениям ОС и специализированным программам (1С: Бухгалтерия, PayDox и т.д.).
Отказоустойчивое облако Xelent
Каждый элемент в отказоустойчивом облаке подключен к двум независимым линиям питания. Система АВР позволяет корректно переключать нагрузку между основным и резервным питанием.