사용자의 호스트 이름이나 사용자 이름을 사용하여 서버의 모든 SSH 활동을 어떻게 기록할 수 있습니까?

사용자의 호스트 이름이나 사용자 이름을 사용하여 서버의 모든 SSH 활동을 어떻게 기록할 수 있습니까?

Ubuntu 서버가 있고 내 서버의 모든 SSH 활동을 기록하고 싶습니다.

여기에서 이에 대한 좋은 문서를 찾았습니다.서버의 모든 사용자에 대한 모든 Bash 명령을 기록하는 방법은 무엇입니까?이 문서에 따라 서버에서 로깅을 활성화했습니다. 다음 줄을 사용하여 명령을 기록합니다.

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"

내 서버에서 실행된 모든 명령(로컬에서 실행되고 SSH로 실행됨)에 대한 로그를 제공합니다. 동일한 출력을 첨부했습니다.

나에게 필요한 것은 로그 파일에 내 로컬 서버에 연결하는 데 사용되는 사용자의 사용자 이름 또는 호스트 이름과 공용 IP 주소가 있어야 한다는 것입니다.

누구든지 이것에 대해 어떤 생각을 가지고 있습니까?

출력 로그 파일:

Aug 7 11:03:34 local ajay: ajay [1906]: sudo rm -rf commands.log*
Aug 7 11:03:36 local ajay: ajay [1906]: ll
Aug 7 11:03:59 local ajay: ajay [1906]: sudo rm -rf messages*
Aug 7 11:04:19 local ajay: ajay [1906]: sudo rm -rf usercommands
Aug 7 11:04:49 local ajay: ajay [1906]: sudo rm -rf history.log
Aug 7 11:05:11 local ajay: ajay [1906]: ll
Aug 7 11:05:21 local ajay: ajay [1906]: cat commands.log
Aug 7 11:05:33 local ajay: ajay [1906]: cat commands.log
Aug 7 11:05:46 local ajay: ajay [1906]: sudo chmod -R 777 commands.log
Aug 7 11:05:48 local ajay: ajay [1906]: cat commands.log
Aug 7 11:06:19 local ajay: ajay [1906]: cat commands.log

답변1

$SSH_CONNECTION 변수는 사용자가 연결하는 포트와 소스/대상 IP 주소를 제공합니다. 따라서 logger 명령에 매개변수로 추가하세요.

좋다:

 export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$SSH_CONNECTION $(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"

자세한 내용은 다음을 확인하세요.SSH_TTY와 SSH_CONNECTION은 무엇입니까?

호스트 이름은 DNS 확인에 따라 다릅니다. 언제든지 로그의 역방향 DNS를 확인하는 스크립트를 작성할 수 있습니다. 내가 아는 한, DNS 이름을 직접 확인하는 지침은 없습니다.

관련 정보