모든 SUID 프로그램의 모든 호출을 기록 하시겠습니까?


12

사용자가 사용자 이름, 프로그램 및 전달 된 명령 줄 인수를 포함하여 suid 프로그램을 실행할 때마다 항목이 포함 된 로그 파일을 갖고 싶습니다. Linux에서 이것을 달성하는 표준 방법이 있습니까?

답변:


7

감사 하위 시스템을 통해 특정 실행 파일의 모든 호출 (setuid 여부)을 기록 할 수 있습니다 . 문서는 다소 희박합니다. 시작 AUDITCTL man 페이지 , 혹은 이 튜토리얼 . 최신 배포판은 auditd패키지를 제공합니다. 설치하고 auditd데몬이 실행 중인지 확인한 다음

auditctl -A exit,always -F path=/path/to/executable -S execve

통화가 로그인되어 /var/log/audit/audit.log있는지 확인하십시오 (또는 배포판에서 설정 한 위치).


1
먼저 모든 SUID 바이너리를 찾은 다음 각 솔루션에 솔루션을 사용하는 스크립트를 작성할 수 있습니다. 우아하지는 않지만 확실히 할 수 있습니다. 감사!
Kim

2
@Kim : 나는 당신이 바꾸어하지 루트 사용자에 의해 setuid를 루트 이진의 모든 호출을 기록 할 수 있습니다 생각 -F path=…으로 -F euid=0 -F 'uid!=0'나 같은. 감사 서브 시스템 에서 호출 된 setxid 코드execve 또는 특정 setxid 감시에서 후크를 볼 수 없습니다 . 또는 물론 모든 후 처리를 기록 할 수 있습니다 . execve
Gilles 'SO- 악마 중지'

흥미 롭군 전에는 들어 본 적이 없습니다. 나는 그것이 얼마나 널리 사용되는지 궁금합니다. 데비안 팝콘에는에 대한 항목이 없습니다 auditd.
Faheem Mitha

find모든 SUID 파일을 나열하는 명령 :find / -xdev \( -perm -4000 \) -type f -print

1
@FaheemMitha 팝콘 항목이 있습니다 : qa.debian.org/popcon-graph.php?packages=auditd
jofel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.