Лог команд, выполненных через SSH

Лог команд, выполненных через SSH

Я хотел бы регистрировать все команды, выполняемые через SSH.

Сказать,

ssh [email protected] COMMAND

Я хочу зарегистрировать "COMMAND" на server.com

Я тщательно искал, но ничего не нашел.

Есть еще один похожий вопрос, но я не думаю, что там есть решение.

Как регистрировать «удалённое выполнение через SSH»

Я могу получить просмотр в реальном времени с помощью

pstree -p | grep ssh

Я попробовал Snoopy, auditd и sudosh, но не смог зарегистрировать эти команды через SSH.

Eстьhttp://freecode.com/projects/shwatchr, но я не могу загрузить скрипт для тестирования.

Есть ли другой способ сделать это?

решение1

Я провел тестирование, используя эту опцию в своей лабораторной работе на сервере SUSE, и она работает, но, возможно, есть способ лучше.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

решение2

Вместо того, чтобы сосредоточиться на SSH, сделайте шаг назад и рассмотрите возможность использования auditd. Я предполагаю, что на самом деле вы хотите отслеживать пользователей, а не то, что делается с помощью SSH, в отличие от других типов входа.

man auditctlдолжно дать вам отправную точку.

решение3

Я нашел способ сделать это. Есть скрипт на perl, написанныйДжон М. Симпсон(https://www.jms1.net/).

Все, что вам нужно сделать, это добавить

command="#{path to log-session}"

перед каждым ключом в вашем ~/.ssh/authorized_keys

Это работает только если у вас есть SSH без пароля, но в какой-то степени это решает мою задачу.

http://www.jms1.net/log-session

решение4

В моем случае у меня было точно такое же требование. Единственное предостережение по этому методу в том, что я не уверен, как заставить его работать, если вы не используете ключи ssh. Я сделал короткий скрипт bash для регистрации команды перед ее выполнением:

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

Я сохранил эту команду в ~/bin/log-commands, а затем сделал ее исполняемой ( chmod +x ~/bin/log-commands).

В файле authorized_keys я добавил command=параметр в строку, принадлежащую ключу SSH, для которого я хотел вести журналы, чтобы принудительно запустить скрипт log-commands:

команда="/home/tricky/bin/log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ......6J0C1 [email protected]

Если кто-то знает о логировании, но не хочет, чтобы вы видели команды, он может просто перейти в интерактивный сеанс. Как вы упомянули, вы уже пробовали snoopy, который сделает это за вас. Популярные альтернативы, которые я не пробовал, это rootsh, sudosh и log-user-session.

Связанный контент