Я хочу отслеживать все действия пользователей на моем сервере.
Даже когда пользователь выполняет команду оболочки из какого-либо редактора, такого как vim, я хочу видеть их в файле журнала.
Я проверил инструмент acct, но он не перечисляет полные команды. (Пожалуйста, поправьте меня, если я пропустил некоторые варианты, которые уже есть).
Какой инструмент Linux мне следует искать, чтобы решить эту проблему?
Добавьте эту строку в свою конфигурацию pam, отвечающую за вход в систему (ее системная авторизация в дистрибутивах на основе RedHat)
session required pam_tty_audit.so enable=*
Чтобы узнать, что было сделано, можно воспользоваться.
ausearch -ts <some_timestamp> -m tty -i
Результат будет примерно таким:
type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>
Единственным недостатком этого является то, что его может быть немного трудно читать, но это намного лучше, чем большинство предлагаемых решений, поскольку теоретически его можно использовать для записи всего сеанса, что касается всех.
Изменить: О, и вы можете использовать aureport для создания списка, который может быть более полезным.
# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>
Лучшим решением вашей проблемы будет встроенный в Linux аудит система. Использовать man 8 auditd
или проверьте эту страницу для получения дополнительной информации: http://linux.die.net/man/8/auditd.
Также вы можете проверить этот учебник - хотя это немного выходит за рамки вашего вопроса, но показывает, как работает система аудита.
Вы могли бы использовать любопытный.
Это простая библиотека регистрации команд, а не подходящее решение для аудита (легко обойти). Раскрытие информации: я текущий сопровождающий.
Менее известный трюк, но, пожалуй, самый крутой - просто использовать встроенные возможности аудита sudo
. Судо поставляется с sudoreplay
команда, которая упрощает воспроизведение сеансов. Он даже будет ретранслировать vim
сеансы (как вы предлагаете).
Вот как его использовать, выполнив несколько простых шагов:
sudosh
в вашей системе; это оболочка вокруг sudo
команда, которая заставляет пользователя sudo
сами (не root
) и может использоваться как оболочка входа в системувключить sudo
протоколирование. редактировать /etc/sudoers.d/sudosh
:
Defaults log_output
Defaults!/usr/bin/sudoreplay !log_output
Defaults!/sbin/reboot !log_output
Добавьте эту команду в /etc/shells
чтобы разрешить вход с его помощью:
/usr/bin/sudosh
Наконечник: чтобы пользователи не могли использовать другие оболочки для входа в систему, удалите эти оболочки из /etc/shells
.
Обновите пользователя foobar
использовать sudosh
оболочка.
chsh -s /usr/bin/sudosh foobar
Для получения более подробной информации см .: https://github.com/cloudposse/sudosh/
вот волшебное решение: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html
вы можете отображать статистику о пользовательских командах / подключениях и т. д.
Перечислить все команды, запущенные данным пользователем ...
Поиск в журналах учета по имени команды: $ lastcomm rm $ lastcomm passwd
и так далее, для получения дополнительной информации перейдите по указанной выше ссылке.