답변:
연결하는 각 새 사용자 sshd
는 특정 PID를 사용하여 새 세션을 생성합니다 . 당신이 사용할 수 pstree
있는 상속되는 명령 인쇄 sshd
이 PID를 확인 크로스 다음 세션, 그리고 /var/log/auth.log
.
예 (익명) : 동일한 원격 사용자로 3 개의 동시 세션을 사용하여 원격 서버에 로그인했습니다. 이제 클라이언트가 어느 IP에서 명령을 실행했는지 확인하고 싶습니다 watch date
.
$ pstree -p | grep watch
| |-sshd(15243)---sshd(15342)---bash(15343)---watch(15450)
$ sudo grep 15243 /var/log/auth.log
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: Accepted publickey for XXXXXXXXXX from 12.34.56.78 port 48218 ssh2
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: pam_unix(sshd:session): session opened for user XXXXXXXXXX by (uid=0)
Mar 7 15:37:44 XXXXXXXXXX sudo: XXXXXXXXXX : TTY=pts/7 ; PWD=/home/XXXXXXXXXX ; USER=root ; COMMAND=/bin/grep 15243 /var/log/auth.log
pstree -p
이 watch
명령은 sshd
PID 15243으로 상속 되었음을 나타냅니다. grep
이 PID를 /var/auth/auth.log
표시하면이 세션을 시작한 IP 12.34.56.78임을 알 수 있습니다. 따라서이 또한 시작한 사용자입니다 watch
.
history
구체적 으로이 사용자 를 찾는 경우 모든 원격 사용자가 동일한 로컬 SSH 사용자를 사용하고있을 때 볼 수있는 것으로 수행 할 수 없습니다. 또한 쉽게 스푸핑 / 비활성화 될 수 있으므로 실제로 신뢰할 수는 없습니다. 히스토리 파일에 저장되면 cp
명령을 찾아 파일에서 뒤로 볼 수 있지만 파일이 없으면 할 일이별로 없습니다.
/var/log/secure
입니다.
/var/log/auth.log.1
등이있는 경우 정보가 포함되어 있는지 확인하십시오. 그런 다음 rsyslog
( sudo service rsyslog restart
)를 다시 시작 auth.log
하고 이미 시작중인 채우기 시작하는지 확인하십시오 . 에 SSHD 로그 /var/log/auth.log
우분투에서 기본적으로 사용자가 명시 적으로 통해 로깅 대상을 변경 한 그렇게하지 않는 한, /etc/ssh/ssd_config
또는 /etc/syslog.conf
(당신이 어떤 파일을 확인할 수 있습니다 auth
, 그것은이 있어야 레벨이 여기에 기록됩니다). 그렇지 않은 경우 : 무언가가 작동합니다 :-).
bash가 실행 한 모든 명령을 기록하기 위해이 두 줄을 / etc / profile 또는 / etc / bashrc에 추가 할 수 있습니다.
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local3.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
syslog를 사용하여 실행 한 모든 사용자와 함께 IP 주소를 다음과 같은 형식으로 기록합니다.
Jan 8 08:43:49 xpto local3.debug root: root@192.168.x.y [29385]: ls -al [0]
또한 아래 줄을 syslog 구성 (/etc/syslog.conf)에 추가하여 local3 메시지를 특정 파일로 리디렉션 할 수 있습니다.
local3.* /var/log/prompt.log
syslog-ng
개선되었으며 구성 파일은 /etc/syslog-ng/syslog-ng.conf
입니다.
당신이 떠들썩한 파티를 사용하고 있다고 가정하면, history
단지 당신에게 보여줄 것이다 당신의 명령 행 역사를. 기본적으로 ~/.bash_history
기록을 읽습니다 . 이와 같은 작업을 수행하면 (거의 가능성은 낮지 만) 변경할 수 있습니다 HISTFILE=/home/userFoo/.my_alt_history
.
상자에 루트가 있다고 가정하면 모든 사용자 디렉토리를 스캔하고 해당 내역을 읽고 누가 해당 명령을 실행하고 있는지 확인할 수 있습니다.
ps -aux | grep "cp file1.sh file2.sh"
grep: /var/log/auth.log: No such file or directory
:-(