Linux 감사 이벤트가 go-audit로 전달되지 않습니다.

Linux 감사 이벤트가 go-audit로 전달되지 않습니다.

Slack의 go-audit 도구를 사용하여 Linux 감사 이벤트를 캡처/처리하려고 합니다. 추가 정보:https://github.com/slackhq/go-audit

문제는 Linux 감사가 이벤트를 올바르게 선택하지만 go-audit가 이벤트를 선택하지 않거나 go-audit가 이벤트를 올바르게 출력하지 않는다는 것입니다.

예제 go-audit 구성 파일은 /opt/secret.txt 파일에 대한 액세스에 대한 정보를 캡처하는 단일 규칙을 갖도록 수정되었습니다.

rules:
- -a exit,always -F path=/opt/secret.txt -F perm=wra -k test_changes

전체 go-audit 구성 파일은 다음과 같습니다. https://gist.github.com/tom-chaoscube/fc2f14b448650ea4018620bbbf2c3345

go-audit를 실행한 후 이 규칙이 성공적으로 배포되었음을 확인할 수 있습니다.

# auditctl -l
-w /opt/secret.txt -p rwa -k test_changes

파일에 액세스하려고 하면 감사 로그 파일에서 감사 기록을 볼 수 있습니다.

$ cat secret.txt
# cat /var/log/audit/audit.log

type=SYSCALL msg=audit(1485357520.702:868): arch=c000003e syscall=2 success=yes exit=3 a0=7ffee46830dc a1=0 a2=1fffffffffff0000 a3=7ffee4681670 items=1 ppid=5199 pid=5469 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts5 ses=7 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="test_changes"
type=CWD msg=audit(1485357520.702:868):  cwd="/opt"
type=PATH msg=audit(1485357520.702:868): item=0 name="secret.txt" inode=26244598 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:usr_t:s0 objtype=NORMAL

그러나 go-audit의 출력을 보면 이벤트가 기록되지 않습니다. 우리는 stdout과 파일로 출력하도록 go-audit를 설정해 보았습니다.

go-audit에서 strace를 실행하면 auditd에 대한 연결인 NETLINK 소켓이 열리는 것처럼 보입니다. 또한 audit.log의 일반 항목과 일치하여 일부 데이터가 소켓을 통해 수신되고 있음을 볼 수 있지만 그렇지 않습니다.~인 것 같다auditd가 파일 액세스 감사 항목을 작성할 때 특정 데이터를 수신하는 것과 같습니다. (이것은 반드시 명시적으로 말할 수는 없습니다).

socket(PF_NETLINK, SOCK_RAW, 9)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
setsockopt(4, SOL_SOCKET, SO_RCVBUF, [16384], 4) = 0
getsockopt(4, SOL_SOCKET, SO_RCVBUF, [32768], [4]) = 0
... ...
... ...
write(1, "Started processing events\n", 26) = 26
recvfrom(4, "L\0\0\0\2\0\0\0\1\0\0\0\261\25\0\0\357\377\377\3778\0\0\0\351\3\5\0\1\0\0\0"..., 8970, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 76
futex(0xa0f1d0, FUTEX_WAIT, 0, NULL)    = 0

제안사항:

  • Go-Audit이 이벤트를 수신하지 못한 이유는 무엇입니까?
  • go-audit가 실제로 소켓을 통해 이벤트 정보를 수신하고 있는지 조사하기 위한 추가 단계를 수행할 수 있습니다. (즉, 감사에서 길을 잃지 않도록 하기 위한 단계)

편집: 이후 Ubunutu 16.10(원본 Centos 7 시스템 포함)에서 로컬로 시도했지만 동일한 결과를 얻었습니다.

건배.

답변1

해결하다.

이 질문에 대한 대답은 auditd가 시스템에서 여전히 실행 중이라는 것입니다.

감사 데이터를 받으려면 auditd를 중지하고 go-audit를 다시 시작하기만 하면 됩니다.

sudo service auditd stop

관련 정보