2008/07/02

솔라리스에서 사용자의 명령어 활동을 기록할 수 있을까 ? (CLI logging)

사용자 활동에 관한 로그는 기본적으로는 강제로 규정하게 하려면, 쉘 레이어에서 강제화 해야 하는데 현재 솔라리스에 들어있는 쉘은 강제적으로 활성화하는 방안이 없습니다.



현재 사용자의 터미널 활동을 로깅할 수 있는 방안으로는

1) 사용자의 쉘의 .profile이나 .login에서 로그인 시점에 script들이 자동으로 실행되어 자동으로 스크립트가 저장되도록 하는 방법. 사용자의 쉘 프로화일 파일 안에 다음과 같이 추가합니다.

...

exec script -a `date '+%m%d%y:%H%M'`.log




=> 사용자가 로그인하면 자동으로 저장되고, ctrl-d 혹은 logout하면 스크립트 내용이 저장됩니다.

매우 소극적 방법이고, 실제 사용자가 로그아웃할때까지 내용이 화일에 저장되지 않습니다. 또한, 사용자가
.profile을 변경해버리면 소용이 무용지물이 될 수 있습니다. 또한 쉘에 따라서 이런 구성이 지원 될 수도 있고, 안될 수도
있습니다.



2) dtrace를 이용하여 실시간 모든 쉘의 행위를 감시할 수 있습니다.

=> 매우 적극적인 방법입니다. 모든 쉘을 죄다 감시하게 되므로, 불필요한 데이타도 컬렉션 될 수 있습니다.
DtraceToolkit에 포함된 shellsnoop 이라는 dtrace 스크립트를 이용하면, 현재 실행되고 있는 대부분의
쉘(sh,ksh,bash,csh,tcsh,zsh)의 입출력을 실시간으로 감시가 가능합니다. 물론, 사용자는 알 수 없습니다.
커널단에서 syscall을 hooking하여 쉘의 read,write를 캡쳐해서 출력해주는 유틸리티입니다. 매우 강력합니다.
첨부 화일 참고



3) 쉘 자체가 log 기능을 가지고 있는 쉘을 사용자 쉘로 지정하는 방법이 있습니다.

솔라리스가 제공하는 기본 쉘들은 이런 기능을 가지고 있지 않으며, 오픈 소스 중에서 사용하여야 합니다.

대표적으로 수도쉘등이 있습니다.

다음 링크를 참고하십시요. http://www.egbok.com/sudoscript/sudoshell.1.html

댓글 없음: