SELinux에서 허용하는 모든 것을 기록/감사합니다.

SELinux에서 허용하는 모든 것을 기록/감사합니다.

저는 Oracle Linux(또는 모든 RHEL 파생 제품)에서 설치하고 실행할 수 있도록 허용하는 일련의 권한 요구 사항과 SELinux 정책을 구성하기 위해 일부 독점 소프트웨어를 프로파일링하고 있습니다.

저는 허용 모드에서 SELinux를 실행하고 있습니다. semodule -DB를 실행하여 "dontaudit"를 비활성화했으며 /var/log/audit/audit.log를 보고 결과를 확인하고 있습니다.

그러나 허용된 모든 것(거부 또는 감사 허용뿐만 아니라)도 보고 싶습니다. 이는 다음과 같이 판단하는 대다수인 것 같습니다.

[root@aw-selinuxtest ~]# seinfo --stats

Statistics for policy file: /etc/selinux/targeted/policy/policy.24
Policy Version & Type: v.24 (binary, mls)

   Classes:            81    Permissions:       237
   Sensitivities:       1    Categories:       1024
   Types:            3852    Attributes:        291
   Users:               9    Roles:              12
   Booleans:          228    Cond. Expr.:       268
   Allow:          311381    Neverallow:          0
   Auditallow:        133    Dontaudit:           0
   Type_trans:      38576    Type_change:        38
   Type_member:        48    Role allow:         19
   Role_trans:        368    Range_trans:      5601
   Constraints:        90    Validatetrans:       0
   Initial SIDs:       27    Fs_use:             24
   Genfscon:           84    Portcon:           471
   Netifcon:            0    Nodecon:             0
   Permissives:        91    Polcap:              2

이 작업을 수행하는 방법을 아는 사람이 있습니까? 나는 지금까지 답을 찾기 위해 애쓰고 있습니다.

답변1

일반적인 관행과 달리 permissive정책 모듈을 개발하기 위해 SELinux를 모드로 설정하고 모든 AVC 거부를 기록하면 해당 정책에 잘못된 권한 세트가 포함될 수 있습니다.

이에 대한 예는 다음과 같습니다. 이 독점 소프트웨어의 정상적인 작동에도메인 전환, 허용 모드에서는 전환이 발생하지 않으며 원본 도메인에 AVC 거부로 기록된 모든 권한이 필요한 것처럼 보입니다(Sven Vermeulen의 SELinux 요리책이 잠재적인 문제에 대한 여러 참조가 포함되어 있습니다).

독점 소프트웨어에 대한 정책 모듈을 생성하는 더 나은 접근 방식은 우선 SELinux를 시행 모드로 유지하여 다음을 보장하는 것입니다.최소 권한가능을 부여하고 있습니다.

다음은 온라인(문서가 있습니까?)과 오프라인( ss, strace, ipcs, ...) 모두에서 소프트웨어를 조사하여 아키텍처 설계를 자세히 결정하는 것입니다. 즉, 다음 사항에 국한되지 않습니다.

  • 하위 그룹(구성, 트랜잭션, 로그 등)으로 나누어야 하는 파일

  • 프로세스, 서비스(소프트웨어에 systemd/upstart/init 스크립트가 있습니까?)

  • 네트워크 연결(인바운드 및 아웃바운드 트래픽, 포트 등)

  • 사용자, 그룹

모든 정보를 가지고 있으면 해당 소프트웨어에 대한 정책 개발을 시작할 수 있습니다.

다음을 수행해야 합니다.

  • 관련된 모든 파일의 보안 컨텍스트를 정의하는 filecontexts 파일을 만듭니다.

  • 파일, 프로세스, 포트, 사용자, 도메인 전환 등 간의 모든 상호 작용 측면에서 도메인을 정의하는 인터페이스 파일을 만듭니다.

  • 위 도메인에 대한 액세스 권한이 부여된 사용자와 실제 규칙을 설명하는 유형 적용 파일을 생성합니다.

이를 컴파일하고 로드하고, AVC 거부를 확인하고, 정책을 디버깅하고 강화하세요. 헹구고 반복하십시오.

위에서 언급한 책에서 마지막 인용문은 다음과 같습니다.

일부 정책 개발자는 애플리케이션 허용 모드를 실행하고(전체 시스템을 허용 모드에서 실행하거나 이 특정 도메인을 허용 도메인으로 표시하여) 수행된 모든 액세스를 등록하고(AVC 거부를 통해) 해당 정보를 기반으로 정책을 강화하는 것을 좋아합니다. 이렇게 하면 작업 속도가 빨라지는 정책이 제공될 수 있지만 이러한 개발자는 정책에 너무 많은 권한을 추가할 위험이 있으며, 이는 나중에 문제를 제기하고 변경하기가 매우 어렵습니다. 대신 SELinux가 액세스를 방지하고 애플리케이션이 어떻게 반응하는지 살펴보도록 합니다. 애플리케이션의 오류 로깅이나 애플리케이션의 동작 및 로그를 통해 확인된 AVC 거부를 기반으로 실제로 어떤 권한이 필요한지 잘 파악할 수 있습니다.

관련 정보