SSH를 통해 실행되는 로그 명령

SSH를 통해 실행되는 로그 명령

SSH를 통해 실행된 모든 명령을 기록하고 싶습니다.

말하다,

ssh [email protected] COMMAND

server.com에 "COMMAND"를 기록하고 싶습니다.

나는 광범위하게 검색했지만 아무것도 찾을 수 없었습니다.

비슷한 질문이 하나 더 있는데 거기에는 해결책이 없는 것 같아요.

"SSH를 통한 원격 실행"을 기록하는 방법

실시간으로 볼 수 있어요

pstree -p | grep ssh

Snoopy, auditd 및 sudosh를 시도했지만 SSH를 통해 해당 명령을 기록할 수 없었습니다.

이있다http://freecode.com/projects/shwatchr, 그러나 테스트할 스크립트를 다운로드할 수 없습니다.

이 작업을 수행하는 다른 방법이 있나요?

답변1

내 서버 Suse Lab에서 이 옵션을 사용하여 테스트를 했는데 작동했지만 더 나은 방법이 있을 수도 있습니다.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

답변2

SSH에 집중하는 대신 한발 물러나 auditd 사용을 고려해보세요. 나는 당신이 정말로 원하는 것은 다른 유형의 로그인과 달리 SSH에서 수행되는 작업을 추적하는 것이 아니라 사용자를 추적하는 것이라고 가정합니다.

man auditctl출발점을 주어야 합니다.

답변3

나는 이것을 할 수 있는 방법을 찾았습니다. 다음이 작성한 Perl 스크립트가 있습니다.존 M. 심슨(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 [이메일 보호됨]

누군가가 로깅을 알고 있지만 명령을 보는 것을 원하지 않는 경우 간단히 대화형 세션으로 들어갈 수 있습니다. 언급한 대로 이미 snoopy를 사용해 보셨을 것입니다. 내가 시도하지 않은 인기 있는 대안은 rootsh, sudosh 및 log-user-session입니다.

관련 정보