Linux аудит запуска процессов

Содержание
  1. Аудит системных вызовов в Linux
  2. Теория
  3. Установка
  4. Настройка
  5. Правила аудита
  6. Аудит действий пользователей Linux
  7. Подсистема аудита Audit Daemon: структура и принцип работы
  8. Установка Audit Daemon
  9. Конфигурация программы
  10. Журнал Audit Daemon
  11. Инструкции
  12. Командная строка Linux: краткий курс для начинающих
  13. Перенаправление ввода/вывода в Linux
  14. Работа с файлами и каталогами в Linux
  15. Как сгенерировать SSH-ключ для доступа на сервер
  16. Как установить и настроить веб-сервер Apache
  17. Руководство по написанию скриптов в Linux Bash
  18. Введение в Git: настройка и основные команды
  19. Как установить MySQL на Windows
  20. Как установить и использовать MySQL Workbench
  21. Создание нового пользователя и настройка прав в MySQL
  22. Аудит системных событий в Linux
  23. Подсистема аудита: архитектура и принцип работы
  24. Установка
  25. Конфигурирование
  26. Создание правил
  27. Файлы правил
  28. Анализ журнальных файлов: утилита aureport
  29. Ausearch: поиск и анализ событий
  30. Анализ процессов с помощью утилиты autrace
  31. Централизованное хранение логов
  32. Заключение

Аудит системных вызовов в Linux

Теория

Установка

Установка auditd довольно просто, для Debian/Ubuntu:
$sudo apt-get install auditd
для CentOS:
#yum install audit
Домашняя страница проекта: people.redhat.com/sgrubb/audit

Настройка

Конфигурационный файл auditd /etc/audit/auditd.conf. На каждой строке может быть определена не более чем одна директива. Название директы и значение разделяет знак равно. Большинство директив отвечают за настройку логирования и не требуют изменения. Для подробного ознакомления можно почитать man auditd.conf.

Правила аудита

Правила аудита содержатся в файле /etc/audit/audit.rules.
auditctl -l просмотреть список правил и auditctl -D для удаления всех правил

Аудит доступа к файлам

Основные аргументы для правил аудита доступа к файлам:

  • -p [r|w|x|a] — фильтр по характеру доступа
  • -w path — путь до наблюдаемых файлов

Добавим правила в runtime для директории /sys
sudo auditctl -w /sys/ -p ra
Запустим skype и посмотрем результат:
sudo aureport -f
/sbin/audispd permissions should be 0750

File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 16.01.2011 22:42:04 /sys/class/video4linux/video0/dev 5 yes /usr/bin/skype -1 23
2. 16.01.2011 22:42:03 /sys/devices/system/cpu 5 yes /usr/bin/skype -1 22
3. 16.01.2011 22:42:04 /sys/class/video4linux/video0/device/modalias 5 yes /usr/bin/skype -1 24
4. 16.01.2011 22:42:04 /sys/class/dmi/id/sys_vendor 5 yes /usr/bin/skype -1 25
5. 16.01.2011 22:42:04 /sys/class/dmi/id/product_name 5 yes /usr/bin/skype -1 26
6. 16.01.2011 22:42:04 /sys/class/dmi/id/product_version 5 yes /usr/bin/skype -1 27
7. 16.01.2011 22:42:04 /sys/class/dmi/id/board_vendor 5 yes /usr/bin/skype -1 28
8. 16.01.2011 22:42:04 /sys/class/dmi/id/board_name 5 yes /usr/bin/skype -1 29
9. 16.01.2011 22:42:04 /sys/class/dmi/id/board_version 5 yes /usr/bin/skype -1 30

Источник

Аудит действий пользователей Linux

Аудит и классификация данных
на базе системы

О дним из инструментов, повышающих уровень безопасности в ОС c ядром Linux, является подсистема аудита Audit Daemon. С ее помощью можно получить детальную информацию о всех событиях в системе: созданных, измененных или удаленных файлах, новых хранилищах, изменении политик и т.д.

Аудит не обеспечит дополнительную защиту, но предоставит подробные данные об уязвимостях системы безопасности, которые необходимо устранить. В этой статье рассмотрим особенности использования Audit Daemon.

Подсистема аудита Audit Daemon: структура и принцип работы

Подсистема Audit Daemon интегрирована в ядро Linux, начиная с версии 2.6. Она проводит мониторинг критических системных событий безопасности в файлах и папках.

Вот несколько примеров таких событий:

  • старт и окончание работы ОС;
  • чтение, запись и изменение прав доступа к файлам;
  • инициирование сетевых подключений;
  • попытки неудачного входа в учетную запись;
  • добавление новых настроек сети;
  • добавление новых данных о пользователях и группах;
  • работа с приложениями;
  • осуществление системных вызовов.

Создание файла, любые изменения в нем, подключение к сети, отображение информации на дисплее – все эти процессы выполняются при помощи вызовов функций ядра ОС, которые принято называть «системными вызовами».

Когда приложение не использует в своих действиях вызовы ядра, оно способно взаимодействовать с другими файлами системы и с пользователем. Поэтому для отслеживания любого системного события достаточно перехвата всех вызовов. Как раз этим и занимается Audit Daemon.

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

Конечно, поддерживать все эти фильтры активными до тех пор, пока работает операционная система, дорого и крайне невыгодно. К примеру, только во время запуска Audit Daemon приложением выполняется около десятка тысяч системных вызовов. Потребуется много времени, чтобы полностью проанализировать регистр контроля. Поэтому фильтры в Audit Daemon отключены по умолчанию. Их можно активировать избирательно при помощи правил, которые определяют название системного вызова: его эффективность, пользователи, от имени которых были инициированы вызовы и т.д.

С помощью этой простой схемы, сисадмин может отслеживать все аспекты работы ОС (за исключением действий, вызванных компонентом ядра). Вот почему, при обнаружении системой какой-либо подозрительной активности, вызванной работой взломщика или вирусного ПО, обнаружить их и виновного при помощи Audit Daemon будет несложно.

Установка Audit Daemon

Подсистема доступна всем версиям ОС, поэтому для установки требуется стандартный установочный пакет.

Читайте также:  Gpedit msc как открыть windows 10

Для установки в Debian/Ubuntu необходимо использовать такую команду:

Sudo apt-get install auditd audispd-plugins

В дополнение к Audit Daemon устанавливаются утилиты для управления системой наблюдения и поиска отчетов в файлах регистра:

  • auditctl – это софт, контролирующий работу Audit Daemon. Наблюдает за текущим состоянием системы, добавляет и удаляет правила;
  • autrace – мониторинг событий, генерируемых указанным процессом;
  • ausearch – функция, позволяющая искать события в лог-файлах;
  • aureport – утилита, формирующая сводные отчеты по системе аудита.

Изначально Audit Daemon неактивен и не реагирует на изменения файлов в системе. Чтобы система сообщала о любых действиях, нужно настроить программу.

Конфигурация программы

Параметры системы содержатся в двух файлах. Первый файл называется auditd.conf и хранит инструменты службы мониторинга: отвечает за то, какие события фиксируются в определённый отрезок времени. Второй файл – audit.rules, включает правила и триггеры, которые используются программой при работе ОС. Сисадмин вносит в файлы коррективы, добавляет новые установки, а также редактирует действующие или удаляет устаревшие шаблоны.

Чтобы просмотреть инсталлированные шаблоны, нужно использовать команду auditctl –l. В случае невыполнения настроек, откроется пустая таблица. Чтобы активировать аудит конкретного файла, нужно прописать в строке команду:

auditctl -a command,action -S path=name_file -F perm=permission

Для создания, удаления и изменения правил аудита используется утилита auditctl. Существует три главных опции, которые принимает эта команда:

  • a – добавление правила в список;
  • d – удаление правила из списка;
  • D – удаление всех правил.

Можно использовать такие переменные для command, которые добавляются в список событий:

  • task – события, отвечающие за создание любого процесса;
  • entry – событие на входе в системные вызовы;
  • exit – событие на выходе из системных вызовов;
  • user – событие с использованием области пользователя (uid, pid и gid);
  • exclude – требуется, чтобы исключить события.

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

Следующий параметр команды «-а» – это последующие событие, которое происходит в ответ на действие. Их бывает два: «никогда» и «всегда». Первое событие не фиксируется в реестре аудита, второе – фиксируется.

Дальнейший параметр «-S», определяющий название системного вызова. Есть также необязательный параметр «-F», который предназначен для отметки дополнительных опций фильтрации событий.

К примеру, если пользователь желает вести хронику событий, использующихся в системном вызове «открытие», но в то же время хочет записывать только вызовы файлов в каталоге / etc, он должен воспользоваться следующим правилом:

auditctl -a exit,always -S open -F path=/etc/

Чтобы ускорить поиск, можно сделать так, чтобы в реестр попадали только те события, при которых файл открывается только на запись и изменение атрибутов:

auditctl -a exit,always -S open -F path=/etc/ -F perm=aw

Чтобы все внесенные изменения в установочные файлы Audit Daemon вступили в силу, нужно его перезагрузить при помощи команды:

/etc/init.d/auditd restart

Журнал Audit Daemon

Правила установлены, мониторинг состоялся, но как узнать о его результатах? Для этого существует утилита aureport. Все собранные данные хранятся в журнальных файлах/ var / log / audit /, а у папок действительно расширение .log. Нюанс состоит в том, что для уточнения результатов аудита нужно прописывать определенные команды, иначе в отчете будет отражена общая статистика такого вида:

Поэтому большинство юзеров пользуется дополнительными опциями (командами). Так, с помощью опции -au (или −−auth), можно получить отчет о попытках входа в систему:

Самый популярный фильтр – дата. За нее отвечают параметры «начало» и «конец», за которыми указываются дата и точное время. Например:

aureport —start 07/15/2008 01:05:18 —end 07/19/2018 030:42:12

Также довольно популярный фильтр – обзор «неудовлетворительных» процессов. К таковым относятся, например, неудачные попытки входа в учетную запись. Юзер может их прочитать, используя команду:

aureport -u —failed —summary –i

Подсистема Daemon Audit требует обширных знаний об операционной системе для установки и обработки файлов реестров. Для опытных пользователей – это мощное средство, которое поможет выявить ошибки и уязвимости в файлах ОС и обнаружить их источник.

Источник

Инструкции

27 сентября 2021

Командная строка Linux: краткий курс для начинающих

27 сентября 2021

Перенаправление ввода/вывода в Linux

27 сентября 2021

Работа с файлами и каталогами в Linux

26 сентября 2021

Как сгенерировать SSH-ключ для доступа на сервер

23 сентября 2021

Как установить и настроить веб-сервер Apache

23 сентября 2021

Руководство по написанию скриптов в Linux Bash

21 сентября 2021

Введение в Git: настройка и основные команды

21 сентября 2021

Как установить MySQL на Windows

21 сентября 2021

Как установить и использовать MySQL Workbench

20 сентября 2021

Создание нового пользователя и настройка прав в MySQL

© ООО «Селектел», 2008—2021

Полностью изолированные физические серверы любой конфигурации с облачной готовностью

Виртуальные машины с моментальным масштабированием и поддержкой Infrastructure-as-code

В дата-центрах TIER III Москвы, Санкт‑Петербурга и ЛО

Инфраструктура на базе VMware для бизнес-критичных задач любой сложности

Читайте также:  Как открыть свойства микрофона windows 10

Готовые к работе управляемые базы данных PostgreSQL и MySQL™

Полностью готовый к работе кластер Kubernetes для управления контейнерами

Масштабируемое хранилище данных с гибким ценообразованием, поддержкой FTP и S3 API

Запуск кода по запросу или событию без создания и обслуживания сервера

Источник

Аудит системных событий в Linux

Одним из инструментов, позволяющих повысить уровень безопасности в Linux, является подсистема аудита. C её помощью можно получить подробную информацию обо всех системных событиях.
Она не обеспечивает никакой дополнительной защиты, но предоставляет подробную информацию о нарушениях безопасности, на основании которой можно принять конкретные меры. Особенности работы с подсистемой аудита мы рассмотрим в этой статье.

Подсистема аудита: архитектура и принцип работы

Подсистема аудита была добавлена в ядро Linux начиная с версии 2.6. Она предназначена для отслеживания критичных с точки зрения безопасности системных событий. В качестве примеров таких событий можно привести следующие (список далеко не полный):

  • запуск и завершение работы системы;
  • чтение, запись и изменение прав доступа к файлам;
  • инициация сетевых соединений;
  • попытки неудачной авторизации в системе;
  • изменение сетевых настроек;
  • изменение информации о пользователях и группах;
  • запуск и остановка приложений;
  • выполнение системных вызовов.

Ни одно из названных событий не может произойти без использования системных вызовов ядра. Чтобы их отслеживать, достаточно просто перехватывать соответствующие системные вызовы. Именно это и делает подсистема аудита:

Получив вызов от приложения в пространстве пользователя, подсистема аудита пропускает его через один из следующих фильтров: user, task или exit (более подробно о них речь пойдёт ниже). После этого вызов пропускается через фильтр exclude, который исходя из правил аудита передаёт его демону auditd для дальнейшей обработки.

Такая простая схема позволяет вполне эффективно отслеживать любой аспект работы ОС, а в случае компрометации системы выявлять подозрительные действия и определять их причину.

Установка

Чтобы начать работать с подсистемой аудита, нужно установить пакет auditd (здесь и далее приводятся примеры команд для OC Ubuntu 14.04):

В cостав этого пакета входят демон auditd и несколько вспомогательных утилит:

  • auditctl — утилита для управления демоном auditd; позволяет получать информацию о текущем состоянии подсистемы аудита, а также добавлять и удалять правила;
  • autrace — утилита для аудита событий, порождаемых процессами (работает по тому же принципу, что и strace);
  • ausearch — утилита для поиска событий в журнальных файлах;
  • aureport — утилита для генерации отчётов о работе системы аудита.

Конфигурирование

Настройки подсистемы аудита хранятся в конфигурационном файле etc/audit/auditd.conf. Он содержит в числе прочих следующие параметры:

  • log_file — файл, в котором будут храниться логи подсистемы аудита;
  • log_format — формат, в котором будет сохранены логи;
  • freq — максимальное число записей протокола, которые могут храниться в буфере;
  • flush — режим синхронизации буфера с диском (none — ничего не делать, incremental — переносить данные из буфера на диск с частотой, указанной в значении параметра freq; data — синхронизировать немедленно, sync — синхронизировать как данные, так и метаданные файла при записи на диск);
  • max_log_file — максимальный размер файла лога в мегабайтах;
  • max_log_file_action — действие при превышении максимального размера файла лога;
  • space_left — минимум свободного пространства в мегабайтах, по достижении которого должно быть осуществлено действие, указанное в следующем параметре;
  • space_left_admin — указывает, что делать, когда на диске недостаточно свободного места (ignore — ничего не делать; syslog — отправлять в syslog, email — отправлять уведомление по почте; suspend — прекратить запись логов на диск; single — перейти в однопользовательский режим; halt — выключить машину)
  • disk_full_action — действие, которое нужно осуществить при переполнении диска (этот параметр может принимать те же значения, что и space_left_admin).

Создание правил

Для добавления и настройки правил используется команда auditctl. Вот список её опций:

  • -l — вывести список имеющихся правил;
  • -а — добавить новое правило;
  • -d — удалить правило из списка;
  • -D — удалить все имеющиеся правила.

Чтобы создать новое правило, нужно выполнить команду вида:

Сначала после опции -а указывается список, в который нужно добавить правило. Всего существует 5 таких списков:

  • task — события, связанные с созданием новых процессов;
  • entry — события, которые имеют место при входе в системный вызов;
  • exit — события, которые имеют место при выходе из системного вызова;
  • user — события, использующие параметры пользовательского пространства;
  • exclude — используется для исключения событий.

Затем указывается, что нужно делать после наступления события. Здесь возможны два варианта: always (события будут записываться в журнал) и never (не будут).

После опции -S идёт имя системного вызова, при котором событие нужно перехватить (open, close и т.п.).

После опции -F указываются дополнительные параметры фильтрации. Например, если нам требуется вести аудит обращений к файлам из каталога /etc, правило будет выглядеть так:

Можно установить и дополнительный фильтр:

Аббревиатура aw означает следующее: а — изменение атрибута (attribute change), w — запись (write). Формулировка perm = aw указывает, что для директории /etc нужно отслеживать все факты изменения атрибутов (а — attribute change) и w (w — write).

Читайте также:  Скрипты для пользователей линукс

При настройке слежения за отдельными файлами можно опустить опцию -S, например:

Файлы правил

Правила можно не только задавать через командную строку, но и прописывать в файле etc/audit/audit.rules.
Начинается этот файл с так называемых метаправил, в которых задаются общие настройки журналирования:

Далее следуют пользовательские правила. Их синтаксис предельно прост: достаточно просто перечислить соответствующие опции команды auditctl. Рассмотрим пример типового файла правил:

Изменения конфигурации вступят в силу после перезапуска демона auditd:

Анализ журнальных файлов: утилита aureport

Все журнальные файлы сохраняются в директории /var/log/audit в машиночитаемом формате. Их можно сделать человекопонятными c помощью утилиты aureport.

Если ввести команду aureport без аргументов, мы увидим общую системную статистику (количество пользователей системы, общее количество системных вызовов, число открытых терминалов и т.п.):

Она не имеет особой практической ценности. Гораздо больший интерес представляют специализированные отчёты. Вот так, например, можно просмотреть информацию обо всех системных вызовах:

Воспользовавшись опцией -au (или −−auth), можно просмотреть информацию обо всех попытках входа в систему:

В аureport поддерживается фильтрация по дате и времени:

Можно указывать как конкретные время и дату, так и специальные человекопонятные конструкции:

  • now — текущий момент;
  • yesterday — вчерашнее сутки;
  • recent — 10 минут назад;
  • this-week (или this-month, this-year) — текущая неделя (месяц, год).

С помощью aureport можно просмотреть информацию о действиях любого пользователя системы. Для этого нужно сначала узнать id этого пользователя:

и затем выполнить следующую команду:

Ausearch: поиск и анализ событий

Для просмотра детальной информации о событии используется утилита ausearch:

Вывод приведённой выше команды выглядит так:

type=SYSCALL msg=audit(1364481363.243:24287): arch=c000003e syscall=2 success=no exit=-13 a0=7fffd19c5592 a1=0 a2=7fffd19c4b50 a3=a items=1 ppid=2686 pid=3538 auid=500 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts0 ses=1 comm=»cat» exe=»/bin/cat» subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=»sshd_config»

Рассмотрим его структуру более подробно. В поле type указывается тип записи; type = syscall означает, что запись была сделана после выполнения системного вызова. В поле msg указано время события в формате Unix Timestamp и его уникальный идентификационный номер.

В поле arch содержится информация об используемой архитектуре системы (c000003e означает x86_84), представленная в закодированном шестнадцатеричном формате. Чтобы она выводилась в человекочитаемом виде, можно воспользоваться опцией -i или −−interpret.

В поле syscall указан тип системного вызова — в нашем случае это 2, то есть вызов open. Параметр success сообщает, был ли вызов обработан успешно или нет. В нашем примере вызов был обработан неудачно (success = no).

Для каждого вызова в отчёте также перечисляются индивидуальные параметры; более подробно о них можно почитать в официальном руководстве. Вывести на консоль информацию о любом параметре в человекочитаемой форме можно получить при помощи упомянутой выше опции -i или −−interpret, например:

Опция -sc позволяет включать в список события, относящиеся к указанному системному вызову, например:

Опция -ui служит для поиска событий по идентификатору пользователя:

Поиск по именам демонов осуществляется с помощью опции -tm:

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

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

Анализ процессов с помощью утилиты autrace

В некоторых случаях бывает полезным получить информацию о событиях, связанных с одним конкретным процессом. Для этой цели можно воспользоваться утилитой autrace. Предположим, нам нужно отследить процесс date и узнать, какие системные вызовы и файлы он использует. Выполним команду:

На консоли появится следующий текст:

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

В результате мы получим вот такой отчёт:

Централизованное хранение логов

Для отправки логов подсистемы аудита в централизованное хранилище используется плагин audisp-remote. Он входит в пакет audisp-plugins, который нужно устанавливать дополнительно:

Конфигурационные файлы всех плагинов хранятся в директории /etc/audisp/plugins.d.

Настройки удалённого логгирования прописываются в конфигурационном файле /etc/audisp/plugins.d/audisp-remote.conf. По умолчанию этот файл выглядит так:

Чтобы активировать отправку логов в удалённое хранилище, заменим значение параметра active на yes. Затем откроем файл etc/audisp/audisp-remote.conf и в качестве значения параметра remote_server укажем буквенный или IP-адрес cервера, на котором будут храниться логи.

Чтобы принимать логи с удалённых хостов и сохранять их на сервере, в файле /etc/audit/auditd.conf нужно прописать следующие параметры:

tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535 #optional
tcp_client_max_idle = 0

Заключение

В этой статье мы изложили основы работы с подсистемой аудита Linux. Мы рассмотрели принцип работы системы аудита, научились формулировать правила, читать логи и пользоваться вспомогательными утилитами.

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

Источник

Оцените статью