Журнал команд, выполненных через ssh

8

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

Сказать,

ssh something@server.com COMMAND

Я хочу войти "КОМАНДА" на server.com

Я много искал, но ничего не смог найти.

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

Как войти "удаленное выполнение через SSH"

Я могу получить живой вид с

pstree -p | grep ssh

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

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

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

Спасибо.........

Prashanth
источник

Ответы:

4

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

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

Дженни Д
источник
Приятный намек, но для меня тоже абстрактный. Как использовать auditctlдля входа в SSH команды?
Геттли
3

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

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
c4f4t0r
источник
Это регистрирует отправленную команду, но не выполняет ее в удаленной системе.
Майкл МакГарра
1

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

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

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

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

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

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

Prashanth
источник
1

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

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

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

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

command = "/ home / tricky / bin / log-command" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ...... 6J0C1 tricky@tricky-testing.mydomain

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

zaTricky
источник
1

Поможет ли вам Снупи с этим? «Записывайте каждую выполненную команду в системный журнал (он же Snoopy Logger)».

https://github.com/a2o/snoopy

Бен Лаванда
источник