Получить цепочку пользователей, созданную путем цепочки вызовов su.

Вопрос или проблема

При администрировании Linux-сервера (например, сервера Debian) я часто переключаю пользователей. Иногда я связываю несколько переключений пользователей вместе:

aluriak$ sudo -s
root$ […]
root$ su aluriak
aluriak$ […]
db$ su db
db$ […]
db$ <ctrl-D>
aluriak$ su front
front$ […]

Есть ли способ получить “цепочку пользователей”, которую я создал таким образом?

В приведенном выше примере эта гипотетическая утилита выдала бы что-то вроде front aluriak root aluriak, потому что я — пользователь front, который вошел с пользователя aluriak, который, в свою очередь, вошел с аккаунта root, который сам был достигнут с аккаунта aluriak.

Решение заключается в том, чтобы просмотреть логи аутентификации системы, такие как /var/log/auth.log, чтобы получить строки типа:

su: (to aluriak) root on pts/1
su: (to root) aluriak on pts/1
su: (to db) root on pts/1
su: pam_unix(su:session): session closed for user db
su: pam_unix(su:session): session closed for user root
su: pam_unix(su:session): session closed for user aluriak

Поскольку логи упорядочены по времени, можно восстановить действия входа/выхода и, следовательно, перечислить каждый шаг. Информация pts/1 предоставляет номер сессии, чтобы избежать смешивания двух сессий. Вы можете получить вашу сессию, используя tty.

Ответ прослеживается в /var/log/audit/audit.log, если вы не делали systemctl disable | stop> auditd. Это будет видно в полях UID и AUID для элементов exe=/usr/bin/su.

а также в /var/log/secure {в RHEL 8} для строк su:session

Ответ или решение

Теория

На Linux-серверах, включая серверы, работающие на Debian, администраторы зачастую используют команду su для смены пользователя. Эта команда необходима для выполнения задач от имени другого пользователя без необходимости выхода и повторного входа в систему. Когда вы переключаете нескольких пользователей подряд, важно иметь возможность ретроспективно проследить эту последовательность для аудита или диагностики. Одним из подходов является просмотр системных логов, таких как /var/log/auth.log, которые содержат записи обо всех изменениях сеансов, осуществленных командой su.

Пример

Рассмотрим следующий сценарий использования команды su:

aluriak$ sudo -s
root$ […]
root$ su aluriak
aluriak$ […]
db$ su db
db$ […]
db$ <ctrl-D>
aluriak$ su front
front$ […]

Этот пример показывает многошаговую схему смены пользователей от имени aluriak к root, затем обратно к aluriak, и затем к db, чтобы в конце переключиться на front. Для восстановления этой цепочки можно обратиться к файлам с логами, чтобы определить последовательность изменений.

Применение

Для анализа и восстановления цепочки пользователей из примера выше можно использовать файлы логов /var/log/auth.log или /var/log/audit/audit.log. Рассмотрим применение этого метода подробнее:

  1. Логи аутентификации: В логах /var/log/auth.log содержатся строки, отражающие каждый акт смены пользователя. Пример таких записей:

    su: (to aluriak) root on pts/1
    su: (to root) aluriak on pts/1
    su: (to db) root on pts/1
    su: pam_unix(su:session): session closed for user db
    su: pam_unix(su:session): session closed for user root
    su: pam_unix(su:session): session closed for user aluriak

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

  2. Аудитные логи: Еще одним уровнем детализации являются лог-файлы /var/log/audit/audit.log, в которых также можно найти записи о смене пользователей. Эти записи содержат поля UID и AUID, которые менее контекстно-зависимы и предоставляют более надежный след для аудита. Эти логи позволяют отследить все действия, произведенные пользователями через команду su.

  3. Командная строка и скрипты: Для автоматизации данной задачи можно написать скрипт на Bash либо Python, который будет считывать указанные лог-файлы и генерировать отчеты о цепочке пользователей. Например, этот скрипт может анализировать строки по заданным условиям (например, используя регулярные выражения) для извлечения необходимой последовательности.

Кроме того, для более продвинутого разбора цепочек пользователей можно использовать такие утилиты, как auditctl и ausearch, с их помощью можно провести более глубинный анализ аудита безопасности системы. Это особенно актуально в критических средах, где крайне важна безопасность и отслеживание действий пользователей.

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

Оцените материал
Добавить комментарий

Капча загружается...