몇 마디로
두 머신에서 ssh의 로그를 사용하십시오 : 생성 된 쉘의 PID를 제공합니다. 이렇게하면 셸의 PID를 프로그램 실행과 연결하고 tty와 특정 일치를 가질 수 있습니다. 더 깊은 감사를 위해 감사 도구를 사용할 수 있습니다.
다시 말하면
last
단순한 last
사용 된 tty와 관련된 연결 목록을 가질 수 있습니다.
당신은 당신의 대리 machine (나는 Gateway, GW라고 부르고 싶다.) 그리고 다른 하나는 섬기는 사람 .
명령 last
기본적으로 사용자 이름, pts / tty, IP / 호스트 이름을 제공합니다. 로그인 날짜 시간, 로그 아웃 날짜 시간. 형식 등을 수정할 수 있습니다.
그런 다음 기간의 오버레이에서 작업하고 누가 있었는지 추측해야합니다.
내가 보는이 문제는 가능한 모든 일치를 제공하는 도구 (스크립트)를 작성해야하며 동시에 일치하는 항목을 제거해야한다는 것입니다. 그럼에도 불구하고 이상한 상황이 발생할 수 있습니다.
사례 연구를 해보 죠. Nicolas라고하는 첫 번째 사용자는 GW에 로그온 할 수 있습니다. 그런 다음 그는 커피를 가져 가거나 전화를받습니다. 한편, 두 번째 사용자는 Hastur에 로그인하여 GW에 로그인 한 다음 1 성 사용자가 서버에 기록합니다. 이 순간 당신의 이중 기록은 복잡합니다. 이제 Hastur는 커피가 필요하다고 느끼고 Nicolas가 서버에 로그인합니다. 누가 커피를 마시고 프로그램과 처음으로 연결될 것입니까?
/var/log/auth
(또는 ssh의 다른 로그 파일) [ 1 ] ..
각 시스템의 로그인 및 로그 아웃을 모니터하는 데 사용되는 로그 파일이 있습니다. 올바른 경로와 이름, 해당 ca 시스템을 검색하십시오. 와
sudo grep TheUsername /var/log/auth.log
당신은 비슷한 줄을 얻을 것이다.
May 1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May 1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)
올바른 로그인 시간과 PID ( [9024]
), 그리고 IP.
이번에는이 파일의 데이터를 다음 중 하나와 일치시킬 수 있습니다. last
명령을 사용하여 tty를 알거나 프로그램 자체를 호출 한 셸의 PID를 프로그램 내부에 기록 할 수 있습니다 (셸에 대한 시스템 호출로 수행 할 수 있습니다).
이러한 파일을 작업 할 때마다 각 세션마다 고유 한 일치 항목을 가질 수 있습니다. 게이트웨이의 유사한 로그 파일의 경우 원래 IP와 사용자 이름을 갖습니다.
audit tools
[ 2 ], [ 삼 ]
할 수있는 권한이 있고 그것이 합법적 인 경우, 감사 도구를 사용하고 호스트 시스템에서 쉘의 전체 로그를 작성할 수 있습니다.
참고 문헌
- [ 1 ] SSH 액세스 시도 로깅
- [ 2 ] 쉘 / ssh / tty 세션 로거
- [ 삼 ] 원격 호스트에서의 BASH 셸 세션 로깅