특정 액세스가 발생하도록 허용하는 SELinux 규칙을 찾을 수 있는 도구가 있습니까?

특정 액세스가 발생하도록 허용하는 SELinux 규칙을 찾을 수 있는 도구가 있습니까?

내 시스템에는 매우 복잡한 SELinux 정책이 있습니다. 특정 액세스 권한이 부여된 이유를 설명할 수 있는 도구가 있나요? 텍스트 검색을 사용하여 특정 규칙을 검색할 때 규칙이 매크로나 속성 규칙을 통해 생성되었기 때문에 찾을 수 없는 경우가 많습니다.

예를 들어, 내 시스템 어딘가에 이를 허용하는 동등한 규칙이 있다는 것을 알고 있습니다.

allow app_a app_b:fifo_file write;

이 특정 규칙에 대한 텍스트 검색에서는 매크로 및 유형 속성 연결의 과도한 사용으로 인해 아무 것도 나오지 않았습니다.

답변1

네, 당신은 찾고 있어요sesearch~에서setools.

특정 예에서는 를 사용할 수 있습니다 sesearch -A -s app_a -t app_b -c fifo_file -p write. 결과에는 allow두 유형 간의 명시적 규칙뿐만 아니라 특정 부울 값에 의존하는 속성 및 조건부 규칙으로 인한 규칙도 포함됩니다.

-A/는 --allow허용된 규칙을 검색하게 하며 감사, 변환 등에 대한 다른 옵션이 있습니다.

모든 소스/대상 유형, 클래스 및 권한을 지정할 필요는 없습니다. 예를 들어 를 사용하면 모든 소스의 해당 유형에 대한 모든 권한이 sesearch -A -t app_b -c fifo_file나열됩니다 .fifo_fileapp_b

기본적으로 sesearch현재 활성 정책이 사용되지만 검색할 정책의 경로를 지정할 수도 있습니다.

답변2

내가 아는 한, 아니오. 일반적으로 유형 속성과 관련된 매크로 및 쿼리 규칙을 "확장"하여 해당 의미를 찾고, 매크로 및 속성의 이름은 매우 설명적인 경우가 많습니다. git-log를 쿼리하여 git 커밋 메시지에 추가 정보가 포함되어 있는지 확인할 수도 있습니다.

매크로 확장에 도움이 되는 "macro-expander"라는 스크립트가 있고, 속성과 관련된 규칙을 찾는 데 도움이 되는 settools 정책 분석 제품군이 있습니다.

귀하의 예에서 규칙은 명명되지 않은 파이프를 사용하는 것 같습니다. 이는 일반적으로 대상의 입력 스트림으로 파이프를 허용하는 도메인 변환 매크로의 일부입니다. 이는 stdin/stdout/stderr을 처리하는 데 매우 일반적이기 때문입니다. 예: ( app_b | app_a)

https://github.com/SELinuxProject/refpolicy/blob/master/policy/support/misc_patterns.spt#L58

따라서 app_b가 도메인 전환을 통해 app_a를 실행한다고 가정하면 app_a는 app_b에서 상속된 파이프를 읽고 쓸 수 있습니다. 그래서 그것은 stdin, stdout, stderr의 처리에 관한 것입니다. 예를 들어 도메인 변환 대상이 도메인 변환 소스의 상속 파이프라인을 사용하도록 자동으로 허용합니다.

하지만 그렇습니다. 다른 사람이 작성한 복잡한 전략을 분석하는 것은 어려울 수 있습니다. 매크로 확장기와 같은 settool 및 스크립트는 일부 고통을 덜어줄 수 있으며 엄격한 스타일 규칙을 갖춘 자체 문서화 전략도 도움이 될 수 있습니다. 이들 중 다수는 일반적인 패턴입니다.

관련 정보