Как смотреть журналы событий Linux

Введение.

 В статье блога рассматривается возможность интеграции консольного просмотровщика логов lnav для анализа журналов Linux, в качестве примеров используются действующие журналы работы Kablink, appserver и catalina, в качестве стенда используется сервер ALT Linux.

 Встроенный в административную панель Kablink, системная кнопка отчёты, даёт администратору возможность контроля работы пользователей и системы в целом, но когда Портал выключен по различным причинам, сделать анализ журнал Tomcat-Apache становится невозможно. Существующие текстовые редакторы tail, cat, less … не позволяют уверенно ориентироваться в сложных системных сообщениях. Специальные программы для анализа логов, Rsyslog, ElasticsearchFluentd… требуют серьёзного изучения, сложны в настройках и отвлекают для своей работы дополнительные ресурсы. Анализатор lnav  — инструмент использующий облегчённую систему визуализации аналитики входящих сообщений.

  Просмотровщик lnav «всеядный» — может работать практически со всеми известными форматами журналов, на ‘лету’ анализировать, читать, индексировать и выводить на экран полученные результаты. Содержимое сообщений выходного файла журнала, объединяется в одно целое представление, на основе отметок времени происходящих событий.

 Регулярный мониторинг журналов, с поморью lnav , поможет администратору улучшить эксплуатационные характеристики своих приложений, расширяя потенциальные возможности управления программных комплексов.

Основные возможности Lnav

  • просмотр одного журнала
  • просмотр и извлечение сообщения нескольких журналов
  • автоматическое определение формата журнала
  • фильтрация сообщений журнала
  • наличие временных отметок журнала
  • включение режима pretty-print view
  • анализ журналов с использованием SQL запросов

Подготовка

  • Стенд
    • ALT Linux сервер, имя lin-lnav; ip-10.0.2.23;

 Развернуть lnav можно загрузив пакет из официального репозитория, с помощью менеджера пакетов synaptic, или скачать с сайта разработчика Lnav.

Если система безопасности организации требует, для установки lnav, использовать официальный репозиторий, консультируетесь со специалистами по безопасности ОС вашей организации.

# apt-get update
# apt-get install lnav
# ...

Если пакет загружен с сайта, выполните действия, как показано ниже.

# apt-get install lnav-x.x.x-x.x86_64.rpm

Теперь надо «нацелить» lnav на каталог, где хранятся журналы Kablink с помощью созданного для этого, запускающего сценария lnkb.

#!/bin/bash
# просмотр анализ журнала appserver.log
lnav /opt/novell/teaming/apache-tomcat/logs/appserver.log
# просмотр анализ журнала catalina.out
lnav /opt/novell/teaming/apache-tomcat/logs/catalina.out

Поместить сценарий lnkab в каталог /usr/local/bin

# ls -l /usr/local/bin
-rwxr-xr-x root root lnkb

Запускаем lnav командой…

$ sudo lnkb

Горячие клавиши Lnav.               

  • ПРОСТРАНСТВЕННАЯ НАВИГАЦИЯ
    PgUp — вниз на страницу
    PgDn  — вверх на страницу
      — вверх на одну строку
    — вниз на одну строку
    l → — право половина страницы
    Shift + l — Право десять столбцов
    n|N — следующий / предыдущий поисковый запрос
    > <  — следующий / предыдущий поисковый запрос по горизонтали
    s|S — следующее / существенное замедление в скорости сообщений журнала формат экрана
    T — отключение s
    u|U  — перемещение по закладкам, вверх низ
    w|W — поиск предупреждений начало, конец
    e|E — поиск ошибок начало, конец
    g|G Начало журнала / конец журнала
    { }  — предыдущее / следующее место в истории
  • ХРОНОЛОГИЧЕСКАЯ НАВИГАЦИЯ
    d|D — переместить на 24h верх или низ
    1-6|Shift 1-6  — следующая |предыдущая 10 мин часа
    7-8  — предыдущая / следующая минута
    0|Shift 0  — предыдущий / следующая день
  • ЗАКЛАДКИ
    m — пометить / снять отметку с верхней строки
    M — пометить / снять отметку диапазона строк от последней помеченной до верхней
    j — пометить следующей строки после ранее отмеченной вниз
    k — снять отметку с предыдущей строки вверх
    c — копировать отмеченные строки в буфер обмена
    C — очистить отмеченные линии
  • ДИСПЛЕЙ
    q — выход возврат предыдущий
    P — симпатичный видов
    T — отображение прошедшего времени между строками
    — гистограмма
    — откл.гистограммы
    p — разбор строки
    L — отключение lnav функций вид становится как простой терминал
    Ctrl-w — отмена переносов всё в одном экране
    Ctrl + f — включение / выключение всех фильтров в текущем представлении
    x  — переключить скрытие полей сообщения журнала. Скрытые поля будут заменены тремя маркерами и выделены желтым цветом.
    СЕССИЯ
    Ctrl + R — сброс утекшей сессии
  • ЗАПРОС
    / —  Поиск строк, соответствующих регулярному выражению
    / — повторное нажатие отменяет поиск

 После получения представления и общих сведений о работе и назначении горячих клавиш lnav, рассмотрим применение его на практике, анализируя сообщений основного appserver.log.

 Практика работы с Lnav.

 Набрав команду $ sudo lnkb  попадаем в окно журнала appserver.log, где указано расположение журнала, анализ которого нас интересуют.

Если используется буфер clipboard, для запуска lnav ввести $ sudo -E lnkab .

 Навигатор позволяет сортировать сообщения, выделяя из них строки со статусом WARN или ERROR, используя ← → клавиши перемещать строки в право или в лево, искать информацию выбирая строки с помощью клавиш ↓ ↑листать страницы сообщений с помощью клавиш PgDn PgUp , быстро переходить в начало или конец журнала.

 Для более точного разбора хронологии исследуемых событий журнала, воспользуемся выделением временных врезок: секундное, минутныесуточные, часовые или 24 часовые хронологические периоды появляющихся событий.

 Возможность делать отметки в сообщениях журнала с помощью закладок, делает навигатора lnav ещё привлекательней. Закладки можно ставить на одну строку или выделять несколько строк перемещаясь вверх или вниз по журналу, поиск закладок осуществляется с помощью клавиш u|U. Предусмотрена возможность выделения диапазона строк.

Для дальнейшего разбора, все закладки можно копировать в буфер clipboard, очистить журнал от пометок закладок можно с помощью сочетания клавиш Shift + C.

 Управлять выводимой, дисплейной, информации в удобном для восприятия виде, ещё одна хорошая особенность lnav. Нажимая последовательность клавиш Shift+p мы переключаемся в режим Pretty-Print View. Нажимая клавишу p, переходим в режим просмотра журналов XML и JSON форматов. Можно включить подробную хронологическую историю, выводимых сообщений, с помощью Shift+t и плавно перемещаться в диапазоне времени нажимая s↑S↓. Построение гистограмм, используя кнопки, iI, позволяет оценить наличие сообщений и их количество со статусом Error или Warn, Нажимая клавиши z Z,, мы можем увеличит или уменьшить временной ряд гистограммы. Иногда, для отчёта, требуется показать информацию в привычном терминальном виде, без режима подсветки синтаксиса строк журнала, используя сочетанием клавиш Ctrl+l. Если надо вывести компактный экран сообщений журнала, без переносов, нажимаем комбинацию кнопок Ctrl^w. Вернутся в главное окно lnav, или выйти из режима просмотровщика, можно используя клавиши q Q.

 Вся информационная история о манипуляциях пользователя с журналом, сохраняются в журнале сессии. При следующей загрузки пользователем исследуемого лога, находясь в своём профиле, сеанс lnav, восстанавливает некоторые режимы и позиции предыдущей истории работы lnav, такие как:

  • положение в файлах для просмотра
  • информацию о поиске
  • фильтры или подсветки фильтров
  • закладки
  • настройки временных хронологии

 Сбросить историю текущей сессии можно воспользовавшись сочетанием клавиш Ctrl^R, в командной строке экрана lnav.

 Пожалуй самым востребованным режимом при разборе сообщений журнала, является поиск. В lnav этот функционал встроен в командную строку и имеет привычный знак-символ / , выполняющий двойное значение — включает и выключает режим поиска.

 На этом обзор навигатора lnav заканчивается, остаётся только напомнить, что всё сказанное относится к разбору сообщений журналов Kablink, и поэтому другие возможности lnav опушены, чтобы не усложнять понимание возможностей использования lnav & Kablink.

Заключение.

 Для проведения анализа и контроля работы ОС Linux, создано много аналитических программ. Большинство из которых, имеют собственные программы для анализа журналов и входят в ‘коробочные’ версии при базовой установке. Все они, как правило, имеют графический интерфейс и работают только когда запущенна базовая программа. Просмотр и анализ журналов событий, происходит периодически, как правило, когда всё работает без сбоев. Но, такая работа может прерываться неожиданными событиями — приложения не запускаются, логи нельзя просмотреть, телефон надрывается, в дверь стучат возмущённые пользователи. Здесь может пригодится небольшой консольный просмотровщик. Он доберётся до любого журнала, ему не нужен тяжёлый интерфейс GUI, главное что бы сервер «дышал». Просмотровщик lnav не занимает много места, не требует особых навыков в работе и большого времени на изучение. Необходима небольшая практика в использовании и вот у вас в руках ещё один инструмент, который может выручить админа в критическую минуту.

Полезные ссылки.

Что такое модель разрешений Linux.

Введение.

 В конспекте, «Классическая модель разрешений Linux», рассмотрены основные принципы модели распределения прав операционной системы Linux, материал сопровождается примерами.

 Linux позаимствовал у Unix простую модель прав доступа к файлам, обозначив её как «Классическая модель разрешений Linux». Модель прав является гибким и относительно простым инструментом для понимания дизайна безопасности файлов и каталогов.

  • Стенд
    • Simply Linux, имя lin-sl; ip-10.0.2.14;

Классическая модель разрешений Linux.

 В OC Linux у каждого создаваемого файла и каталога есть два владельца — пользователь и группа. Владельцем файла становится зарегистрированный в системе пользователь, создатель файла, и группа в которую входит этот пользователь. Каждый раз когда система обращается к файлу происходит сопоставление: является ли тот, кто пытается получить доступ к файлу его владельцем (owner) с правами владельца, если нет, система проверяет членство пользователя в группе (group) и права этой группы, если нет, происходит сопоставление прав для других (other), после чего принимается решение о правах доступа к файлу или каталогу для пользователя.

Ещё одно условие при получение прав разрешения наличие — UID и GID, соответственно, для пользователя и группы. Когда пользователь входит в систему ему присваивается, вернее существует при создании учётной записи, уникальный идентификатор — UID. В дальнейшем все процессы, которые будет выполнять пользователь, система сравнивает с его UID, определяя права разрешений для доступа к файлу и каталогу. Узнать UID любого пользователя можно командой id, Пример1.

// Пример1 $ id usertest uid=500(usertest) gid=500(usertest) группы=500(usertest) $ groups usertest usertest : usertest uucp proc cdrom floppy cdwriter audio radio scanner xgrp camera vboxusers video sambashare

 При подготовке статьи использовались команды и обозначения принятые в OC Linux, Таблица 1.

Синтаксис команд
Таблица1.

 GID — группа пользователя. Как правило название GID совпадает с именем UID пользователя и является основной, Пример1. В дальнейшем пользователь может быть членом многих групп, но основная группа будет главной. Для просмотра членства в группе используется команда groups и др.

Кроме пользователей и групп создаваемых администратором, существуют системные пользователи и системные группы. Числовой диапазон UID и GID которых, как правило, начинается от 0-499. Системные пользователи и группы выполняют управление служебными программами такими как, FTP, Apache, MySQL… Пример 2;

//Пример 2 $ id root uid=0(root) gid=0(root) $ id apache uid=96(apache) gid=96(apache) группы=96(apache) $ groups root root : root bin daemon sys adm disk wheel pro

Синтаксис классической модели разрешений Linux.

 В Linux каждый файл или каталог имеет три (триада) правил для разрешений доступа к файлам и каталогам в структуре дерева папок и файлов после установки из коробки.

Теперь рассмотрим и расшифруем полное значение выходных данных файла, созданного в домашнем каталоге пользователя. Рассмотрим использования команды и оператора ‘=’, для установки прав доступа к файлу.

 Следующие примеры демонстрируют назначение, по умолчанию, прав при создании файлов и каталогов в операционной системе Linux. 

  • набор прав, по умолчанию, для файла 644
  • набор прав, по умолчанию, для каталога 755

Отключить модель разрешений можно установив восьмеричное число 777 или его буквенный аналог ugo+rwx. Это приведёт к тому — любой зарегистрированный пользователь будет иметь доступ к файлу или каталогу для чтения и редактирования.

  • Роли пользователей
    • суперпользователь, root, имеет право
      • менять разрешения доступа для любого файла или каталога запускать любую команду
    • пользователь имеет право
      • менять права доступа для файлов и каталогов в своём профиле или у других пользователей при наличии делегированных прав
      • запуск ограниченного числа программ

Модель разрешений доступа для каталога.

 Как и файлы, каталоги имеют полный набор атрибутов и флагов безопасности Пример 3. В отличие от файлов, для каталогов атрибуты и флаги имеют особое значение.

Для понимания возможности разрешений прав на каталоги рассмотрим несколько примеров лабораторной работы, следующей статьи. Теория не может показать все особенности работы с каталогами.

Использование umask.

Linux umask, контролирует права доступа для вновь создаваемых файлов определяя, наложением своей маски, какие разрешения следует отключить. Параметр umask указывается в файле /etc/profile. Структура маски идентична структуре прав доступа к файлам, Команда umask может быть представлен в двоичной, восьмеричной или символьной записи. Утилита umask позволяет установить маску во всех трех триадах.

Понимание значения маска исходит из того, что изначально при создании пользователем каталога или файла, устанавливается значение 0777 каталог, 0666 файл — любой пользователь может иметь полный доступ к каталогам и файлам системы см. Пример 2.1.

Маска устраняет этот недостаток ограничивая разрешения файла или каталога при его создании, накладывая на них свои права. В большинстве системах Linux значение маски определено следующим числовым параметром, Пример 4.

// Пример 4 $ umask 0022 // отобразить в цифровом виде $ umask -S // отобразить в виде символов u=rwx,g=rx,o=rx

 Зная значение маски, по умолчанию, можно определить разрешение для создаваемых каталогов и файлов, накладывая параметр маски на соответствующие значения

  • Параметры маски
    • для каталога получаем ограничения 0777-0022=0755
    • для файла эти ограничения будут составлять 0666-0022=0644

 Значение маски указывается в файле /etc/profile — применяется для всей системы в целом Если требуется применить этот параметр для отдельного каталога, можно воспользоваться следующими рекомендациями, поместив выбранный набор в требуемый каталог.

Значение маски в файле profile
Пример 4a

Специальные права доступа к файлам и каталогам SUID, SGID, Sticky Bit.

 Пользователи Linux при регистрации, запускают процесс доступа к файлам и каталогам системы, используя свой UID см.выше.

Каждый каталог и файл в системе имеет триаду прав: | владелец | группа | другие. При необходимости в каждой тройке прав, бит ‘x’, при некоторых обстоятельствах, может меняться на специальный бит, который изменит параметры доступа к каталогу или файлу.

  • Синтаксис специальных атрибутов
  • SUID для владельца ‘u’ — синтаксис
    • ‘s’ — если стоял бит ‘x’
    • ‘S’ — если Не стоял бит ‘x’
    • 4  — в числовом написании
  • SGID для группы ‘g’ — синтаксист:
    • ‘s’ — если стоял бит ‘x’
    • ‘S’ — если Не стоял бит ‘x’
    • 2  — в числовом написании
  • Sticky Bit для остальных ‘o’ — синтаксис
    • ‘t’ — если стоял бит ‘x’
    • ‘T’ — если Не стоял бит ‘x’
    • 1  — в числовом написании

Термин маскировка бита соответствует тому, что перед установкой спец.бита в этой позиции уже стоит флаг ‘x’ и на него накладывается спец. бит.

 При выполнении SUID, атрибут UIDвремени выполнения- устанавливается для владельца файла, а не для пользователя, запустившего файл.

Рассмотрим использования SUID, на примере команды ping, надеюсь она хорошо всем известна и не требует пояснений. Обращение к утилите ping, должно быть доступно любому зарегистрированному пользователю системы, для этого применяют атрибут SUID. Рассмотрим пример использования команды ping на примере Ubuntu, Пример 5.

Для Simply Linux путь к команде ping: ls-l /usr/libexec/ping

 В OC Linux существует несколько десятков SUID файлов, они являются причиной многих эксплойтов — программ поиска уязвимости в ПО.

 

Файлы с SUID подвергаются строгому аудиту безопасности от захвата программами эксплойтов.

Атрибут SGID — изменяет правила наследования для новых файлов в каталоге. Файлы созданные в этом каталоге будут иметь привилегированного владельца, а не права первичной группы пользователя создавшего файл.

Подкаталоги и созданные файлы наследует SGID владельца корневого каталога, Пример 5a.

  • Пример 5a/1
    • пользователи Alex и Eustace создали файлы в каталоге dir
    • владельцем каталога dir является Alex
    • все созданные файлы имеют разные группы
  • Пример 5a/2
    • Alex установил бит ‘s‘ на каталог dir
    • Eustace создал file2 в каталоге dir 
    • file2 в каталоге dir принадлежит группе Alex

 

Файлы с SGID подвергаются строгому аудиту безопасности от захвата программами эксплойтов

 Атрибут Sticky bit — запрещает удаление файлов кем-либо кроме владельца файла, владельца каталога и пользователя root.

Работу Sticky bit можно увидеть на примере каталога /tmp находящегося в корневой структуре папок Linux. Пример 5b.

//Пример 5b
$ cd /  
$ pwd 
/  
$ ls -ld tmp  drwxrwxrwt 14 root root   tmp

Sticky bit получил свое название в ранних системах Linux, до создания виртуальной памяти с постраничной загрузкой. Если был установлен Sticky bit исполняемого файла, то после выхода из программы копия его текстового сегмента сохранялась в области подкачки системы, где хранилась для следующего использования. Эта функция использовалась для ускорения загрузки часто запускаемых программ. Теперь применяется только как защита файла от удаления другими пользователем.

Числовое значение прав.

 Все выше перечисленные примеры представлены в символьном виде, но они могут быть записаны и в числовом виде, Пример 5c.

 В некоторых случаях требуется одной командой назначит атрибуты SUID, SGID и Sticky Bit каталогам и файлам. Для этих задач созданы наборы флагов с цифровым обозначением, Таблица 2.

Таблица 2
Таблица 2

В Пример 5d демонстрируются действия синтаксиса Таблицы 2.

Заключение.

 Классическая модель разрешений Linux — является базовым знаниями управления безопасностью unix систем. Вопросы безопасности, где бы вы с ними не сталкивались, упираются в права доступа к каталогам и файлам. Если администратор не имеет возможности, времени или терпения разобраться в тонкостях и особенностях этого механизма, то постоянно будет испытывать трудности при работе в самых неожиданных случаях.

В материале не были рассмотрены примеры использования флагов: устройств (block), ссылок (link), гнезд (socket), каналов (pipe) …, т.к на практике, в основном, приходится имеет дело с каталогами и файлами.

Как установить WordPress Linux

 Статья блога посвящена развёртыванию популярной CMS WordPress использующего Apache2 в качестве веб-сервера, в смешанном окружение Microsoft и Linux. В качестве стенда использован Российский дистрибутив ALT Linux. Продолжение статьи и подробную инструкцию по развёртыванию WP, можно прочитать в блоге сайта kabtim-t.ru. Работу сайта можно организовать с помощью популярного веб-сервера Nginx, подробности смотри здесь.