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

32

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

Даже когда пользователь выполняет команду оболочки из какого-либо редактора, такого как vim, я хочу видеть их в файле журнала.

Я проверил инструмент acct, но в нем нет полных команд. (Пожалуйста, исправьте меня, если я пропустил некоторые варианты, которые уже есть).

Какой инструмент Linux я должен рассмотреть, чтобы решить эту проблему?

Supratik
источник
1
, сценарий man (1)
adaptr 30.11.11
Хорошая ссылка 8gwifi.org/docs/linux-monitor-commands.jsp
Anish

Ответы:

32

Добавьте эту строку в ваш конфигурационный файл 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>
Мэтью Ифе
источник
Спасибо за подробности. Я использую Ubuntu 10.04 LTS Когда я проверяю папку / lib / security /, модуль отсутствует, но для этого модуля есть страница руководства. Я думаю, что столкнулся с этой ошибкой bugs.launchpad.net/ubuntu/+source/pam/+bug/588547 Есть ли другой способ установить этот модуль?
Supratik
Отчет об ошибке предлагает исправление и обновление было распространено.
Мэтью Ифе
@Mlfe Я скомпилировал исходный код PAM и скопировал файл .so в / lib / security /, и это сработало. Еще раз спасибо.
Supratik
1
@CameronKerr: проблема с паролем устранена: redhat.com/archives/linux-audit/2013-May/msg00007.html
Йоханн
3
Обратите внимание, что стоит упомянуть, что для того, чтобы все вышеперечисленное работало, auditdсначала необходимо включить демон (по умолчанию это не происходило при установке CentOS 6.7). Чтобы запустить демон, используйте:, service auditd startи чтобы сделать это изменение постоянным (после перезагрузки), используйте chkconfig auditd on Source: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/… и access.redhat.com/documentation/en-US/ Red_Hat_Enterprise_Linux /…
Джонни
8

Лучшим решением вашей проблемы будет встроенная система аудита Linux . Используйте man 8 auditdили проверьте эту страницу для получения дополнительной информации: http://linux.die.net/man/8/auditd .

Кроме того, вы можете проверить этот учебник - хотя он немного выходит за рамки вашего вопроса, он показывает, как работает система аудита.

Владимир Бласков
источник
2

Вы могли бы использовать Snoopy .

Это простая библиотека регистрации команд, а не подходящее решение для аудита (ее легко обойти). Раскрытие информации: я текущий сопровождающий.

Бостян Скуфча
источник
2

Менее известная уловка, но, пожалуй, самая удивительная - просто использовать встроенные возможности аудита 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/

Эрик Остерман
источник
1

вот волшебное решение: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

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

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

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

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

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

Мед Али Дифалла
источник
3
В вопросе было сказано: «действовать это не список полных команд».
Путник