Bind9 동적 영역 업데이트가 Debian11의 Apparmor에 의해 거부되었습니다.

Bind9 동적 영역 업데이트가 Debian11의 Apparmor에 의해 거부되었습니다.

이 튜토리얼에 설명된 대로 Debian11에서 chroot를 사용하여 바인딩9를 설치했습니다.https://wiki.debian.org/Bind9#Debian_Jessie_and_later

정상적으로 작동하지만 동적 영역 업데이트를 켜자마자 시스템 로그에 다음과 같은 이유로 실패합니다.

Jul 18 19:22:52 NS kernel: [12161.968582] audit: type=1400 audit(1658164972.109:107): apparmor="DENIED" operation="open" profile="named" name="/var/bind9/chroot/" pid=18104 comm="named" requested_mask="r" denied_mask="r" fsuid=106 ouid=0

일부 옵션이 누락되었을 수 있다고 생각하여 /etc/apparmor.d/local/usr.sbin.named추가했고 /var/bind9/chroot이제 파일은 다음과 같습니다.

/var/bind9/chroot/** r,
/var/bind9/chroot/etc/bind/** r,
/var/bind9/chroot/usr/** rw,
/var/bind9/chroot/var/** rw,
/var/bind9/chroot/dev/** rw,
/var/bind9/chroot/run/** rw,

apparmor그런 다음 서비스를 다시 시작했지만 named문제는 여전히 동일합니다. with 명령을 보면 apparmor_status올바른 이름의 프로세스 ID가 표시되므로 다른 잘못된 프로세스가 실행되고 있지 않습니다. chrooted가 잘 작동하기를 기대합니다 named. 이 프로필에 대한 시행을 끄거나 완전히 비활성화하는 경우에도 apparmor동적 업데이트가 작동 하지만 이 문제를 어떻게든 해결하고 싶습니다.

고쳐 쓰다:

다음과 같이 수정하면 /etc/apparmor.d/local/usr.sbin.named:

/var/bind9/chroot/** r,
/var/bind9/chroot/etc/bind/** rw,
/var/bind9/chroot/usr/** rw,
/var/bind9/chroot/var/** rw,
/var/bind9/chroot/dev/** rw,
/var/bind9/chroot/run/** rw,

그러면 동적 영역 업데이트가 작동합니다. 하지만 동적 영역 업데이트가 트리거되기 전과 정확히 그 시점에 여전히 오류 메시지가 표시됩니다. 왜 이런 메시지를 받는지 좀 짜증스럽습니다.

답변1

로그 메시지(읽기 쉽도록 줄바꿈됨)

Jul 18 19:22:52 NS kernel: [12161.968582] audit: type=1400 audit(1658164972.109:107): \
    apparmor="DENIED" operation="open" profile="named" name="/var/bind9/chroot/" pid=18104 \
    comm="named" requested_mask="r" denied_mask="r" fsuid=106 ouid=0

named프로세스가 디렉터리 읽기를 시도했지만 /var/bind9/chroot거부되었음을 나타냅니다 .

예제 규칙은 다음과 같습니다 man 5 apparmor.d(강조).

AppArmor가 디렉터리를 찾을 때 찾는 경로 이름은 슬래시로 끝나게 됩니다(예: /var/tmp/). 그렇지 않으면 슬래시로 끝나지 않습니다. 후행 슬래시와 일치하는 규칙만 디렉터리와 일치합니다. 몇 가지 예,/tmp/디렉터리 자체와 일치하는 항목이 없습니다., 예:

  /tmp/*
      Files directly in /tmp.

  /tmp/*/
      Directories directly in /tmp.

  /tmp/**
      Files and directories anywhere underneath /tmp.

  /tmp/**/
      Directories anywhere underneath /tmp.

즉, 첫 번째 규칙은

/var/bind9/chroot/** r,

만 허용됨파일 읽기/var/bind9/chroot/디렉토리 에 있지만디렉토리 목록 읽기허용되지 않습니다. 우리가 named하고 싶은 일은 분명히 그것이다 .

이 문제를 해결하려면 다음 줄을 추가해야 합니다.

/var/bind9/chroot/ r,

**빈 문자열은 일치하지 않기 때문입니다 .

관련 정보