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


8

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

말하다,

ssh something@server.com COMMAND

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

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

비슷한 질문이 하나 더 있지만 거기에 해결책이 있다고 생각하지 않습니다.

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

나는 라이브 뷰를 얻을 수 있습니다

pstree -p | grep ssh

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

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

이 작업을 수행하는 다른 방법이 있습니까?

감사.........

답변:


4

SSH에 중점을 두지 않고 한 걸음 물러서서 감사 사용을 고려하십시오. 나는 당신이 정말로 원하는 것은 다른 유형의 로그인과 달리 SSH에서 수행되는 것을 추적하지 않고 사용자를 추적하는 것이라고 가정합니다.

man auditctl 시작점을 제공해야합니다.


좋은 힌트이지만 나에게는 너무 추상적입니다. auditctlSSH 명령을 기록 하는 방법 ?
guettli

3

내 서버 수세 랩 에서이 옵션을 사용하여 테스트를 수행했지만 작동하지만 더 좋은 방법이 있습니다.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

전송 된 명령은 기록하지만 원격 시스템에서는 실행되지 않습니다.
Michael McGarrah

1

나는 이것을 할 수있는 방법을 찾았습니다. John M. Simpson ( https://www.jms1.net/ )이 작성한 perl 스크립트가 있습니다.

당신이해야 할 추가

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

~ / .ssh / authorized_keys의 각 키 앞에

암호가없는 ssh가있는 경우에만 작동하지만 이것이 내 목적을 어느 정도 해결합니다.

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


1

제 경우에는 똑같은 요구 사항이있었습니다. 이 방법의 유일한주의 사항은 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 스크립트를 실행해야합니다.

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

누군가가 로깅에 대해 알고 있지만 명령을보고 싶지 않은 경우 대화식 세션으로 이동하면됩니다. 언급했듯이 이미 스누피를 시도해 보았습니다. 내가 시도하지 않은 인기있는 대안은 rootsh, sudosh 및 log-user-session입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.