Процессы, службы, systemd и журналы
Linux для безопасности: от прав до усиленияКак устроен запуск служб, что можно увидеть в журналах и как настроить аудит под свои задачи.
Зачем это нужно
- Большинство защитных детектов на Linux опираются на процессы, службы и журналы.
- Понимание systemd объясняет автозапуск, изоляцию сервисов и типовые ошибки конфигурации.
- Без журналов невозможно ни расследование, ни проверка гипотез.
Теория
Процессы имеют идентификаторы, приоритеты, ограничения ресурсов и связи родитель-потомок. Состояние процессов видно через виртуальную файловую систему: командную строку, окружение, дескрипторы файлов, сетевые соединения. Практически важны: кто слушает порт, какие файлы открыты, какие процессы запущены от администратора, какие имеют необычные аргументы.
systemd управляет службами, таймерами, точками монтирования и сокетами. Описания юнитов определяют, что запускать, от какого пользователя и с какими ограничениями: защита от записи в системные каталоги, ограничение возможностей, отдельные пространства имён. Для безопасности это ключ и к управляемому запуску, и к изоляции сервисов.
Журналирование: системный журнал собирает сообщения служб и ядра, отдельная служба может перенаправлять их дальше, подсистема аудита фиксирует события безопасности с высокой детализацией: запуск процессов, доступ к файлам, изменения конфигураций. Правила аудита пишут под конкретные задачи — мониторинг критичных файлов, отслеживание системных вызовов, фиксация административных действий.
Практическая гигиена журналов: централизованный сбор, достаточный срок хранения, защита от изменения на самом узле, синхронизация времени, разумный уровень детализации. Без централизации злоумышленник с высокими правами удалит локальные журналы.
Ключевые концепции
- Описание юнита
- Файл службы, таймера или сокета в systemd с параметрами запуска и ограничениями.
- Системный журнал
- Служба сбора журналов: хранит структурированные записи с метаданными.
- Подсистема аудита
- Аудит ядра Linux: правила, события, отчёты о событиях безопасности.
- Возможности (capabilities)
- Разделение привилегий администратора на отдельные возможности, например привязка к низкому порту.
- Пространства имён и cgroups
- Изоляция видимости ресурсов и ограничение потребления: основа контейнеров.
- Открытые дескрипторы
- Файлы и сокеты, с которыми работает процесс: источник данных для анализа.
Инструменты
- ps, top, htop — обзор процессов и потребления ресурсов.
- ss и lsof — соединения, слушающие порты, открытые файлы.
- systemctl и journalctl — управление службами и чтение журналов.
- auditctl, ausearch, aureport — правила и отчёты аудита.
- sysdig и bpftrace — наблюдение за системными вызовами без остановки сервиса.
Практика в легальных лабораториях
- Определите, какие службы слушают сеть на учебной машине, и обоснуйте необходимость каждой.
- Напишите описание службы для простого скрипта и добавьте ограничения: отдельный пользователь, минимальные права.
- Настройте правило аудита для контроля изменений в каталоге конфигурации и проверьте его работу.
- Соберите журналы за сутки и составьте сводку: вход в систему, изменения служб, ошибки.
- Настройте пересылку журналов на отдельный узел и проверьте, что записи доходят.
Защита, детект и защитные меры
- Ограничивайте службы отдельными пользователями и минимальными возможностями.
- Включите аудит критичных файлов и административных действий.
- Централизуйте журналы и защищайте их от изменения на источнике.
- Следите за аномалиями: новые слушающие порты, службы из временных каталогов, изменения описаний юнитов.
Правовая рамка и этика
- Наблюдение за процессами и журналами допустимо на своих системах; на чужих — только по разрешению.
- Журналы могут содержать персональные данные: ограничьте доступ и срок хранения.
Типичные ошибки
- Запускать сервисы от администратора без необходимости.
- Хранить журналы только локально и без защиты.
- Отключать аудит ради производительности без анализа последствий.
Чек-лист «умею»
- Знаю, как определить, что слушает порт и кто владелец процесса.
- Умею написать описание службы с ограничениями.
- Настраиваю правила аудита под задачу.
- Умею собрать из журналов сводку событий за период.
- Понимаю, почему журналы нужно централизовать.
Вопросы на интервью
- Как вы определите, какой процесс слушает порт 8080?
- Как настроить аудит изменений конфигурации службы?
- Почему локальных журналов недостаточно при компрометации узла?