Назад | Перейти на главную страницу

Как мне регистрировать каждую команду, выполняемую пользователем?

Я хочу отслеживать все действия пользователей на моем сервере.

Даже когда пользователь выполняет команду оболочки из какого-либо редактора, такого как 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 сеансы (как вы предлагаете).

Вот как его использовать, выполнив несколько простых шагов:

  1. Установить sudosh в вашей системе; это оболочка вокруг sudo команда, которая заставляет пользователя sudo сами (не root) и может использоваться как оболочка входа в систему
  2. включить sudo протоколирование. редактировать /etc/sudoers.d/sudosh: Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Добавьте эту команду в /etc/shells чтобы разрешить вход с его помощью: /usr/bin/sudosh

    Наконечник: чтобы пользователи не могли использовать другие оболочки для входа в систему, удалите эти оболочки из /etc/shells.

  4. Обновите пользователя 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

  • ням установить psacct (redhat)
  • sudo apt-get install acct

вы можете отображать статистику о пользовательских командах / подключениях и т. д.

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

Поиск в журналах учета по имени команды: $ lastcomm rm $ lastcomm passwd

и так далее, для получения дополнительной информации перейдите по указанной выше ссылке.