쉘에 관계없이 실행된 모든 명령을 기록하시겠습니까?

쉘에 관계없이 실행된 모든 명령을 기록하시겠습니까?

사용자가 다음 명령을 실행한다고 가정합니다.

zcat file.gz | grep something | gzip > grepped.gz

execve나는 모든 s를 기록하고 stdins/stdouts를 함께 연결하고 비슷한 형식으로 재구성하여 syslog에 넣는 커널 함수(아마도 BPF 필터?)를 찾고 있습니다 . 쉘과 상호작용하지 않고 이를 수행할 수 있는 방법이 있습니까?

답변1

프로세스 회계 사용

패키지는 일반적으로 이름이 지정 psacct되거나acct

필수 패키지 설치

sudo apt install acct

데몬을 시작하여 프로세스 계정을 자동으로 활성화합니다.

sudo systemctl enable --now acct.service

마지막 실행 명령 실행 확인lastcomm

감사 사용

auditd 데몬 설치

시작 시 활성화

sudo systemctl enable auditd

다음 규칙을 추가하세요.

sudo auditctl -a always,exit -F arch=b64 -S execve -k search_comment

이제 사용자가 기록한 모든 메시지를 봅니다.

sudo ausearch -k search_comment

또는 특정 UID로 검색

sudo ausearch -k search_comment -ui 1000

관련 정보