Гид по технологиям

Как отслеживать использование sudo и root-доступа в Linux

6 min read Linux Обновлено 25 Dec 2025
Отслеживание использования sudo в Linux
Отслеживание использования sudo в Linux

  • Контролируйте использование sudo через системные журналы: /var/log/auth.log на старых дистрибутивах и journalctl на systemd-системах.
  • Фильтруйте по пользователю, по исполняемому файлу или по временным интервалам; используйте grep, journalctl и графические утилиты GNOME Logs.
  • Заводите SOP для расследований, ограничивайте доступ и настраивайте расширённое логирование при необходимости.

Зачем следить за sudo и root-доступом

Sudo даёт временные полномочия суперпользователя. Это удобно, но рискованно: ошибка или необдуманная команда под root может повредить систему. Мониторинг позволяет быстро выявить неправильное или неожиданное использование привилегий и вовремя отреагировать.

Краткое определение: sudo — инструмент, который позволяет пользователю выполнять команды от имени другого пользователя (по умолчанию — root).

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

Команда sudo — что именно логируется

По умолчанию sudo записывает в системные журналы информацию о факте вызова: кто, когда и какую команду запустил (в большинстве конфигураций виден путь к исполняемому файлу и аргументы). Детальный захват ввода/вывода требует дополнительной настройки (плагин log_input/log_output или session-recording).

Совет: перед расследованием проверьте /etc/sudoers и файлы в /etc/sudoers.d, чтобы понять, какие пользователи или группы имеют привилегии и есть ли у них ограничения.

Файл auth.log — где искать на старых дистрибутивах

Некоторые системы продолжают писать аутентификационные события в /var/log/auth.log или в /var/log/audit/audit.log. Если он присутствует, можно просмотреть его напрямую.

Пример открытия файла (Ubuntu 22.04 пример):

less /var/log/auth.log

Чтобы отфильтровать все строки с sudo и затем конкретного пользователя (например, mary):

sudo grep sudo /var/log/auth.log | grep mary

Этот простой приём даёт строки с упоминаниями sudo и «mary», но может пропустить распределённые/архивные логи или записи в системный журнал systemd.

Содержимое файла /var/log/auth.log, показанное в less

journalctl — предпочтённый метод на systemd

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

Основные полезные приёмы:

  • Показать записи, связанные с sudo (исполняемый файл):
sudo journalctl -e _EXE=/usr/bin/sudo
  • Фильтровать по имени команды (COMM):
sudo journalctl -e _COMM=sudo
  • Отобразить записи за определённый период:
sudo journalctl _COMM=sudo --since "2 days ago" --until "now"
  • Показать записи конкретного пользователя (ряд методов):
    • Через UID:
sudo journalctl _EXE=/usr/bin/sudo _UID=$(id -u mary) --since "2025-01-01"
  • Или сначала посмотреть вызовы sudo, а затем сузить поиск по имени пользователя в выводе.

Примечание: конструкции с _EXE и _COMM могут отличаться в зависимости от версии systemd и способа запуска sudo — если команда не даёт ожидаемых результатов, попробуйте оба варианта.

journalctl отображает записи, содержащие sudo, в просмотрщике less

Подсказка: в less можно использовать стрелки вправо/влево, чтобы увидеть длинные команды и аргументы.

Прокрутка вбок, чтобы увидеть команды, запущенные с sudo

GNOME Logs — графический способ

Если вы работаете в GNOME, встроенное приложение Logs (Журналы) позволяет искать и фильтровать события через GUI.

Как открыть: нажмите клавишу «Super», введите «Logs» (Журналы) и откройте приложение. Затем выберите «All» и нажмите значок увеличительного стекла для поиска по слову sudo.

Значок GNOME Logs

Приложение GNOME Logs

Поиск записей с sudo в GNOME Logs

GUI удобен для быстрой визуальной проверки и для тех, кто не хочет запоминать синтаксис journalctl.

Что искать: практические индикаторы подозрительной активности

  • Внезапный рост числа вызовов sudo от одного пользователя.
  • Непривычные команды (редактирование /etc/fstab, изменение конфигураций сети, изменение sudoers).
  • Использование текстовых редакторов с привилегиями (vim, nano, ed) — это может быть оправдано, но требует проверки.
  • Попытки сменить владельцев/права на чувствительные каталоги.

Важно: одна запись не обязательно означает злоумышленные действия — сначала соберите контекст и свяжитесь с пользователем.

Что делать при подозрительных вызовах sudo — пошаговый план (SOP)

  1. Сохраните журналы текущего дня (экспорт):
sudo journalctl _EXE=/usr/bin/sudo --since "today" > /tmp/sudo-investigation-$(date +%F).log
  1. Найдите все записи конкретного пользователя в логах и отметьте временные метки.
  2. Проверьте, какие команды запускал пользователь (именно команды и аргументы).
  3. Свяжитесь с пользователем: попросите объяснить причину и контекст.
  4. Если есть риск компрометации — временно отозвать sudo-привилегии и начать инцидент-расследование.
  5. Восстановите систему из резервной копии, если обнаружена вредоносная модификация.

Критерии приёмки

  • Журналы собраны и сохранены в защищённом месте;
  • Владелец, время и команды установлены;
  • Проведено интервью с пользователем;
  • Решение принято (обучение, отзыв прав, расследование дальше).

Расширенные методы логирования и контроль целостности

  • Включите системный аудит (auditd) для записи execve и других системных вызовов. auditd позволяет захватывать подробные события, но требует внимания к объёму логов и политике ротации.
  • Настройте sudo для более подробного логирования (например, session recording через плагин log_input/log_output), если политика безопасности требует полного захвата сессий.
  • Централизуйте логи (rsyslog/remote journal) на отдельный лог-сервер — это сильно помогает при расследовании и предотвращает удаление локальных следов.

Важно: расширенное логирование повышает объём данных и может содержать конфиденциальную информацию — продумайте хранение и доступ.

Когда журналы не дают полной картины — типичные причины и обходные пути

  • Пользователь мог получить root-доступ не через sudo (su, прямой вход под root, эксплойт).
  • Логи могли быть очищены или подменены локально — проверяйте удалённые копии и резервные сервера.
  • Некоторая деятельность внутри привилегированной сессии (например, редактирование файла в интерактивном редакторе) не покажет каждый ввод в стандартных логах; для этого нужен session recording.

Альтернатива: используйте PAM-модули для аудита tty-сессий или специализированные средства EDR/IDS.

Ролевая проверка: чеклист для админа и для руководителя

Чеклист для администратора

  • Проверить /etc/sudoers и /etc/sudoers.d на нештатные записи.
  • Выполнить фильтрацию логов по пользователю и по интервалу.
  • Экспортировать подозрительные записи и создать инцидент-тикет.
  • При необходимости временно отозвать права и провести форензик.

Чеклист для менеджера/владельца сервиса

  • Иметь политику выдачи sudo и процесс одобрения.
  • Запрашивать отчёт о проведённой проверке и о мерах по предотвращению повторений.
  • Убедиться, что доступы ревьюятся регулярно.

Безопасность и конфиденциальность логов

  • Логи содержат персональные идентификаторы (имена пользователей, IP). Обрабатывайте в соответствии с политикой конфиденциальности и требованиями законодательства.
  • Ограничьте доступ к логам минимумом необходимого.
  • Настройте ротацию и срок хранения логов: храните достаточно для расследований, но не дольше, чем нужно.

Совместимость и особенности разных дистрибутивов

  • systemd-ориентированные дистрибутивы (Ubuntu, Fedora, Debian recent) используют journalctl.
  • Некоторые серверные окружения всё ещё используют rsyslog и /var/log/auth.log.
  • В дистрибутивах с SELinux/auditd подробные события обычно доступнее через audit.log и ausearch.

Совет по миграции: при переходе на systemd проверьте, что сбор и хранение журналов настроены так, чтобы старые политики rsyslog не терялись.

Быстрые команды и шпаргалка

  • Показать последние 200 записей sudo:
sudo journalctl _COMM=sudo -n 200
  • Показать записи sudo за последние 7 дней:
sudo journalctl _COMM=sudo --since "7 days ago"
  • Поиск по конкретной сессии или строке в экспортированном логе:
grep -n "mary" /tmp/sudo-investigation-2025-01-01.log
  • Экспортировать локальный auth.log за месяц:
sudo cp /var/log/auth.log /tmp/auth.log.$(date +%F)

Шаблон предварительного расследования (короткий)

  1. Собрать логи за временной диапазон.
  2. Выделить записи пользователя и команды.
  3. Проверить наличие изменений в конфигурациях/критичных файлах.
  4. Интервьюировать пользователя.
  5. Принять решение: обучение / отзыв прав / полное расследование.

Решение: когда давать sudo и когда ограничивать

Давайте sudo тогда, когда пользователю действительно нужны привилегии для работы на регулярной основе. Где можно — применяйте принцип наименьших прав: выдавайте узкие права на команды, а не полный root-доступ. Регулярно пересматривайте выданные полномочия.

Простая модель зрелости контроля доступа (уровни)

  • Уровень 0 — нет контроля: root-доступ повсеместно.
  • Уровень 1 — базовый sudo: несколько администраторов с полными правами и минимальным логированием.
  • Уровень 2 — аудит и SOP: централизованные логи, регулярные проверки.
  • Уровень 3 — полный контроль: session recording, централизованный SIEM, автоматические алерты.

Decision flow (Mermaid)

flowchart TD
  A[Наблюдаем необычные вызовы sudo] --> B{Проверен лог}
  B -- Да --> C[Собрать контекст и экспортировать логи]
  B -- Нет --> D[Использовать journalctl/rsyslog/auditd]
  C --> E{Активность объяснима}
  E -- Да --> F[Документировать и закрыть инцидент]
  E -- Нет --> G[Отозвать привилегии и начать полное расследование]
  D --> C

Заключение

Мониторинг использования sudo — не только вопрос безопасности, но и хорошая практика управления изменениями. Комбинация простых команд (grep, journalctl), политики выдачи прав и SOP для расследований даёт баланс между оперативностью и контролем.

Ключевые выводы

  • Используйте journalctl на systemd-системах и /var/log/auth.log там, где он есть.
  • Централизуйте логи и настроьте ротацию.
  • Внедрите процедуры расследования и отзыв прав при подозрениях.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Добавить дефрагментацию в контекстное меню Windows
Windows

Добавить дефрагментацию в контекстное меню Windows

Команды работы с файлами в Linux — справочник
Linux

Команды работы с файлами в Linux — справочник

Как заблокировать человека в Facebook
Социальные сети

Как заблокировать человека в Facebook

Как скачивать фильмы и сериалы с Disney+
Руководство

Как скачивать фильмы и сериалы с Disney+

Покупки на Amazon за криптовалюту: 9 проверенных способов
Криптовалюта

Покупки на Amazon за криптовалюту: 9 проверенных способов

Почему современные игры портят удовольствие
Игры

Почему современные игры портят удовольствие