
Я хотел бы регистрировать все команды, выполняемые через 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 без пароля, но в какой-то степени это решает мою задачу.
решение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.