입력 한 모든 명령을 기록하는 방법


24

누군가가 쉘에 입력 한 모든 명령을 어떻게 기록 할 수 있습니까?

나는 당신이 다른 사람의 서버에 로그인하고 무언가가 고장 났거나 누군가가 당신의 서버에 (의도적으로 또는 악의적으로) 로그인했는지를 스스로 보호하는 것에 기초하여 묻습니다.

초보자조차도 트랙을 숨기도록 기록우회unset history 하거나 새 셸을 만들 수 있습니다.

선임 리눅스 관리자가 어떤 명령이 시스템에 입력 / 변경되었는지 추적하는 방법이 궁금합니다.

답변:


29

감사를 확인하십시오 . 추가하면

-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve

/etc/audit/audit.rules실행 된 모든 명령이 기록됩니다. 참조 : http://whmcr.com/2011/10/14/auditd-logging-all-commands/

그런 다음 syslog 서버로 보내십시오.


반드시 execve기록해야하는 유일한 시스템 콜은 아닙니다. 왜 안돼 execvp? 아니면 execl? 등
2rs2ts

실제로 매뉴얼 페이지에서 exec" exec() 함수 패밀리는 현재 프로세스 이미지를 새로운 프로세스 이미지로 대체합니다.이 매뉴얼 페이지에 설명 된 기능은의 프론트 엔드 execve(2)" 입니다 . 확실하지 않은 동안 나는 가족 execveat에 대해 안심할 수 있습니다 exec.
2rs2ts

5

스크립트 명령을 사용할 수 있습니다 . 이 명령은 POSIX에 포함되어 있지 않지만 출력 및 오류 메시지뿐만 아니라 모든 키 입력을 파일에 저장하는 것이 유용하다는 것을 알 수 있습니다. 나중에 파일을 볼 수 있습니다. 중요한 작업을 수행하고 있고 모든 활동을 기록하려면 로그인 한 직후에이 명령을 호출해야합니다.

$ script
스크립트가 시작되었습니다. 파일은 typescript입니다.
$ _ 이것은 다른 쉘인 로그인 쉘의 자식입니다.

프롬프트가 표시되고 여기에 입력 한 모든 키 입력 (백 스페이스에 사용 된 키 입력 포함)이 'typescript'파일에 기록됩니다. 기록이 끝나면 exit 를 입력하여 세션을 종료 할 수 있습니다 .
참고 : 입력하면 스크립트 파일 이름을 , 세션이 파일에 저장 될 파일 이름 이 아닌 타이프 라이터 특정 파일 이름이 지정되지 않은 경우 기본값입니다 타이프 라이터, 즉.

이제 cat filename 또는 cat typescript를 사용 하여 기록 된 세션을 볼 수 있습니다.

기존 파일 에 새 세션을 추가 하려면 다음을 사용하십시오. script -a 새 세션을 typescript에 추가하면 여기에도 동일한 기본 규칙이 적용됩니다.

이것은 시스템 관리자가 세션을 추적 할 수있는 한 가지 방법입니다. 유익하고 유용하기를 바랍니다. 건배!

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