레코드의 이름=값 필드가 잘못되었습니다.

레코드의 이름=값 필드가 잘못되었습니다.

저는 Linux Audit용 파서를 작성하고 있는데 표준이 아닌 것 같은 이상한 것들을 우연히 발견했습니다.

내 참조는레드햇 문서.

올바른 감사 기록은 다음과 같아야 합니다.

type=USER_CMD msg=audit(1464013671.517:403): pid=3569 uid=0 auid=1000 ses=7 msg='cwd="/root" cmd=123 terminal=pts/1 res=success'

레코드의 이름=값 필드가 잘못되었습니다.

다음 기록을 살펴보겠습니다.

type=DAEMON_START msg=audit(1464013652.147:626): auditd start, ver=2.4 format=raw kernel=3.16.0-4-586 auid=4294967295 pid=3557 res=success

문서에는 auditd start준수하지 않는 사항이 명시되어 있지 않습니다.이름=값체재.

이건 뭐죠? 이에 대한 내용은 어디서 읽을 수 있나요?

구분 기호로 사용되는 쉼표 및 공백

또한 설명서에 따르면

각 레코드는 공백이나 쉼표로 구분된 여러 이름=값 쌍으로 구성됩니다.

auditd start, ver=2.4명령으로 구분되어 있음을 알 수 있듯이 이것은 분명히 잘못된 것입니다.그리고공간.

왜 그럴까요? 기준은 어디에 있나요진짜설명하다?

레코드의 추가 공백

다음 기록을 살펴보겠습니다.

type=CWD msg=audit(1464013682.961:409):  cwd="/root"

type=CWD msg=audit(1464013682.961:409):와 사이에는 공백이 두 개 있습니다 cwd="/root". 이것은 말이 되지 않습니다. 실제로 type=CWD이 동작은 및 가 있는 레코드에서만 관찰되었습니다 cwd="/root".

왜 그럴까요?


참고: 최근 Debian에서 이 로그를 생성했습니다.

답변1

그래서 나는 문제의 작은 부분을 해결했습니다 auditd start, ver=2.2. 효과가 있는 것으로 나타났습니다. 하지만 어떤 문서도 찾지 못했습니다. 제가 가지고 있는 유일한 문서는 Red Hat 매뉴얼의 다음 예입니다.

예제 7.5. 기타 audit.log 이벤트

다음 감사 이벤트는 auditd 데몬의 성공적인 시작을 문서화합니다. ver 필드에는 시작된 감사 데몬의 버전이 표시됩니다.

type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success

다음 감사 이벤트는 사용자 UID 500이 루트로 로그인하려는 실패한 시도를 기록합니다.

type=USER_AUTH msg=audit(1364475353.159:24270): user pid=3280 uid=500 auid=500 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/0 res=failed'

안타깝게도 이는 단지 예일 뿐입니다. 어디에서도 찾을 수 없기 때문에 표준에 대한 실제 문서를 읽고 싶습니다.


고쳐 쓰다

나는 공식 메일링 리스트(내 질문에 대한 전체 답변 보기).

내가 배운 내용은 다음과 같습니다.

레코드의 이름=값 필드가 잘못되었습니다.

왜 존재하는지 잘 모르겠지만 auditd start여기에 내 질문에 대한 Steve Grubb의 답변이 있습니다.

auditd start, user 등과 같은 모든 요소는 어디에 나열됩니까? 콜론(필드에서 유형 및 msg=audit(…) 구분)과 레코드 필드 사이에 어떤 일이 발생할 수 있는지 지정하는 문서를 찾을 수 없습니다.

실제로는 Libauparse가 이 모든 것을 처리하므로 사용자가 그럴 필요가 없습니다. 번역을 원할 경우 로그를 auparse에 제공하고 원하는 방식으로 이벤트 형식을 지정할 수 있습니다.

기본적으로 답변은 auparse 라이브러리 어딘가에 숨겨져 있습니다.

구분 기호로 사용되는 쉼표 및 공백

일부 레코드가 쉼표와 공백으로 구분되는 이유는 무엇입니까? 예:

type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success

오래 전에 이러한 기록은 사람이 읽을 수 있고(웃지 마세요) 기계가 사용할 수 있어야 했습니다. 시간이 지나면서 이름=값 쌍으로 변환되었습니다. 위에서 언급한 문제도 해결되었습니다.

레코드의 추가 공백

Steve Grubb이 이 문제를 해결했습니다.

반점:https://www.redhat.com/archives/linux-audit/2016-July/msg00086.html

관련 정보