SELinux: 프로세스가 디렉터리에 모든 파일을 생성하도록 허용

SELinux: 프로세스가 디렉터리에 모든 파일을 생성하도록 허용

dmesg호출되면 해당 내용이 파일에 기록되고 파일 이름은 기본적으로 타임스탬프인 스크립트가 있습니다 . SELinux는 이를 방지합니다. Fedora의 SELinux 문제 해결 앱의 제안에 따라 다음을 시도했습니다.

grep dmesg /var/log/audit/audit.log | grep dmesg /var/log/audit/audit.log audit2allow-M mypol

semodule -i mypol.pp

그러나 이것은 작동하지 않는 것 같습니다. 아마도 생성되는 파일이 매번 다른 이름을 갖기 때문일 것입니다. 그렇다면 SELinux가 dmesg디렉토리에 모든 파일을 생성(및 기록)할 수 있도록 하려면 어떻게 해야 할까요 ? 아니면 문제의 스크립트(및 그것이 생성하는 모든 프로세스)가 이를 수행할 수 있다고 말합니까?

답변1

AVC 거부를 필터링하는 방법과 특정 작업(이 경우 스크립트)에 대한 액세스를 허용하는 사용자 정의 정책 모듈을 작성하는 방법을 이해해야 합니다.

먼저 위에 삽입된 모듈을 제거하고 새 모듈을 시작합니다.

# semodule -r mymodule.pp

그런 다음 스크립트를 실행합니다.

# date && ./my_script.sh

date호출은 타임스탬프를 기준으로 AVC 거부를 필터링하는 데 유용합니다.

다음으로, AVC 거부를 디버그하는 일반적인 방법을 사용합니다. 즉, 다음 명령을 사용합니다 ausearch(8).

# ausearch -m avc -ts $timestamp | audit2allow

-ts사용할 수 있는 스위치(특히 플래그)에 대한 자세한 내용은 맨페이지를 확인하세요 .

이 정보를 통해 기존 정책에 따라 어떤 콘텐츠가 거부되는지 알아볼 수 있습니다.

이제 이 액세스 권한을 부여할지 여부를 결정해야 합니다. 액세스 권한을 부여한다고 가정해 보겠습니다. 부여할 액세스 권한을 정의하는 규칙을 설명하는 사용자 정의 정책 모듈을 생성해야 합니다. 스크립트의 복잡성에 따라 이는 다소 간단합니다.

# ausearch -m avc -ts 10:40:00 | audit2allow -m my_script > my_script.te

그러면 설명이 생성됩니다 type enforcement.

계속해서 코드를 확인하여 정확성을 확인하고 type enforcement다음과 같이 코드를 컴파일해야 합니다 module.

# checkmodule -M -m -o my_script.mod my_script.te

모듈은 policy package마음대로 로드 및 언로드할 수 있도록 패키지로 패키지되어야 합니다.

# semodule_package -o my_script.pp -m my_script.mod

이제 다음을 사용하여 정책을 로드할 수 있습니다.

# semodule -i my_script.pp

올바르게 로드되었는지 확인하세요.

# semodule -l | grep my_script

그런 다음 거부를 다시 트리거하고 동일한 프로세스에 대한 감사 로그에 더 많은 (다른) 경고가 있는지 확인하십시오.

코드의 추가 버전을 type enforcement업데이트해야 합니다 version(). 그렇지 않으면 패키지 로드가 실패합니다. 1.0컴파일 및 패키징 후 업데이트 policy package가 완료됩니다.

# semodule -u my_script.pp

SELinux를 시작할 때 배울 점이 많습니다. 몇 가지 유용한 참고자료:

  • 명령의 맨페이지입니다.
  • 또한 출력을 확인하십시오 apropos selinux.

RHEL 문서에서

Dave Quigley는 다음과 같은 훌륭한 소개 강연을 했습니다.

답변2

실행할 수 있습니다 semanage permissive -a dmesg_t. 그런 다음 /bin/dmesg유형의 dmesg_t허용 모드에서 실행됩니다. 액세스는 허용되지만 SELinux는 여전히 AVC 메시지를 생성합니다.

관련 정보