리눅스 신호 로거

리눅스 신호 로거

커널을 패치하지 않고 Linux 커널용 신호 로거를 찾고 있습니다.

팅커링에 관한 기사를 많이 찾았지만 관심이 없습니다.

기본 Ubuntu 13.04를 실행하고 있습니다.

# uname -a
Linux bt 3.8.0-26-lowlatency #18-Ubuntu SMP PREEMPT Tue Jun 25 22:36:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

필요한 것: pid, comm(발신자) -> 신호(번호 0-31) -> pid, comm(포수)

또한 좋을 것입니다:

  pidtree of sender ----- - - - - - receiver(cmd) ---- child1 of receiver, etc
              /                     \----child2---child1 of child2(cmd)
             ppid(+cmd)               ----child3(+cmd)
            /                          \__child4(+cmd)
           ppid of ppid(cmd)
          ....
         /
        init

포수 역시 마찬가지다. + 타임스탬프.

내가 발견한 것:

superfrink.net: Chad Clark의 Linux UserSpace Signal Logging 패치(사용자 공간 프로그램에서 전송된 신호 로깅)(버전 2003년 3월 10일)

grsecurity 패치도 비슷한 구현을 가지고 있습니다.

우분투에서 이를 달성하려면 쉽고 간단한 방법이 필요합니다.

답변1

부분적인 해결책을 드릴 수 있습니다.

사용심사Linux 커널의 하위 시스템. 감사 하위 시스템은 코어 덤프 신호를 기록합니다. 코어 덤프 신호는 다음과 같습니다.

  1. ABRT
  2. FPE
  3. 아픈
  4. 사직하다
  5. SEGV
  6. 체계
  7. 최초 반응자
  8. 버스
  9. XCPU
  10. 신퓨즈

감사 로그는 /var/log/audit.log에서 찾을 수 있습니다. 코어 덤프 신호에 대한 감사 로그는 다음과 같습니다.

type=ANOM_ABEND msg=audit(1386433952.455:141): auid=1000 uid=1000 gid=1000 ses=2 pid=6664 comm="bash" reason="memory violation" sig=24

위는 사용자 UID 1000의 6664를 처리하기 위해 SIGXCPU 신호를 로깅하는 예입니다. 이 로그에서 "catcher"의 comm 및 pid 세부 정보를 확인할 수 있습니다. 로그의 이유 필드가 손상되었습니다. 이 로그를 가지고도 우리는 여전히 발신자에 대해 아무것도 모릅니다.

구성 세부정보를 확인할 수 있습니다.여기

관련 정보