Записывать все действия пользователя root с оригинальным именем пользователя, который su'd / sudoed для root

11

Каков предпочтительный метод для отслеживания того, кто выступает в роли root в журналах, когда root-вход отключен (SSH), но пользователи могут работать sudo -iили su -стать пользователем root? Я также хотел бы следовать каждой команде с исходным именем пользователя. RHEL 6 или любой Linux rsyslog и т. Д.

Грегг Левенталь
источник

Ответы:

7

Наиболее надежные методы, как представляется, Auditd:

http://blog.ptsecurity.com/2010/11/requirement-10-track-and-monitor-all.html

Auditd в основном перехватывает все системные вызовы и проверяет их на соответствие вашему набору правил. Таким образом, в вашем /etc/audit/audit.rulesфайле у вас будет что-то вроде следующего:

# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION

Последнее правило является единственным правилом не по умолчанию.

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

Пример запроса для этого правила:

ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f

Здравым решением, вероятно, будет создание cron, который будет запрашивать ваши необработанные журналы audd, а затем отправлять их в ваше решение для ведения журналов.

freb
источник
Если вы ищете что-то, что заменяет audd и выполняет корреляцию необработанных событий для вас, проверьте: github.com/slackhq/go-audit
freb
3

В дистрибутивах Red Hat вы обычно используете /var/log/secureжурнал, чтобы определить, кто входил в систему или использовал ее sudoв системе Fedora / CentOS / RHEL.

Примеры

пример sudo
$ sudo -Es

лог результат:

1 сентября 19:32:51 greeneggs sudo: saml: TTY = pts / 2; PWD = / home / saml; ПОЛЬЗОВАТЕЛЬ = root; COMMAND = / бен / Баш

пример su
$ su -

лог результат:

1 сентября 19:34:49 greeneggs su: pam_unix (su-l: session): сеанс, открытый для пользователя root пользователем saml (uid = 1000)

SLM
источник
3

Если у вас есть взаимодействующие пользователи, вы можете настроить rooth для регистрации всех типов пользователей root в syslog.

http://linux.die.net/man/1/rootsh

ROOPS RMSH доступны в EPEL.

Версия sudo на RHEL6 также может записывать стандартный вывод в файл для каждого сеанса sudo. Загляните в справочную страницу sudo_plugins.

Ни один из этих подходов не является полностью пуленепробиваемым.

Фред Волшебная Чудо-Собака
источник