5.4. 로컬 SELinux 정책 모듈 생성


활성 SELinux 정책에 특정 SELinux 정책 모듈을 추가하면 SELinux 정책의 특정 문제를 해결할 수 있습니다. 이 절차를 사용하여 Red Hat 릴리스 노트에 설명된 특정 알려진 문제를 수정하거나 특정 Red Hat 솔루션을 구현할 수 있습니다.

주의

Red Hat에서 제공하는 규칙만 사용하십시오. Red Hat은 제품 지원 범위를 벗어나기 때문에 사용자 지정 규칙을 사용하여 SELinux 정책 모듈 생성을 지원하지 않습니다. 전문가가 아닌 경우 Red Hat 영업 담당자에게 연락하여 컨설팅 서비스를 요청하십시오.

사전 요구 사항

  • 확인을 위한 setools-console감사 패키지입니다.

절차

  1. 텍스트 편집기로 새 .cil 파일을 엽니다. 예를 들면 다음과 같습니다.

    # vim <local_module>.cil
    Copy to Clipboard Toggle word wrap

    로컬 모듈을 더 잘 정리하려면 로컬 SELinux 정책 모듈의 이름에 local_ 접두사를 사용합니다.

  2. 알려진 문제 또는 Red Hat 솔루션에서 사용자 지정 규칙을 삽입합니다.

    중요

    자체 규칙을 작성하지 마십시오. 특정 알려진 문제 또는 Red Hat 솔루션에서 제공되는 규칙만 사용하십시오.

    • 예를 들어 SELinux를 구현하면 RHEL 솔루션에서 cups.sock에 대한 cups-lpd 읽기 액세스를 거부하려면 다음 규칙을 삽입합니다.

      (allow cupsd_lpd_t cupsd_var_run_t (sock_file (read)))
      Copy to Clipboard Toggle word wrap

      RHBA-2021:4420 의 RHEL에 대해 예제 솔루션이 영구적으로 수정되었습니다. 따라서 이 솔루션과 관련된 이 절차의 일부는 업데이트된 RHEL 8 및 9 시스템에는 영향을 미치지 않으며 구문 예제로만 포함됩니다.

      두 가지 SELinux 규칙 구문, CIL(Common Intermediate Language) 및 m4 중 하나를 사용할 수 있습니다. 예를 들어 CIL의 (allow cupsd_lpd_t cupsd_var_run_t (sock_file (read))) 은 m4의 다음과 동일합니다.

      module local_cupslpd-read-cupssock 1.0;
      
      require {
          type cupsd_var_run_t;
          type cupsd_lpd_t;
          class sock_file read;
      }
      
      #============= cupsd_lpd_t ==============
      allow cupsd_lpd_t cupsd_var_run_t:sock_file read;
      Copy to Clipboard Toggle word wrap
  3. 파일을 저장하고 닫습니다.
  4. 정책 모듈을 설치합니다.

    # semodule -i <local_module>.cil
    Copy to Clipboard Toggle word wrap

    semodule -i 를 사용하여 생성한 로컬 정책 모듈을 제거하려면 .cil 접미사 없이 모듈 이름을 참조하십시오. 로컬 정책 모듈을 제거하려면 semodule -r < local_module> 을 사용합니다.

  5. 규칙과 관련된 서비스를 다시 시작합니다.

    # systemctl restart <service_name>
    Copy to Clipboard Toggle word wrap

검증

  1. SELinux 정책에 설치된 로컬 모듈을 나열합니다.

    # semodule -lfull | grep "local_"
    400 local_module  cil
    Copy to Clipboard Toggle word wrap

    로컬 모듈에는 우선순위 400 이 있으므로 semodule -lfull | grep -v ^100 명령을 사용하여 해당 값을 사용하여 목록에서도 필터링할 수 있습니다.

  2. SELinux 정책에서 관련 허용 규칙을 검색합니다.

    # sesearch -A --source=<SOURCE_NAME> --target=<TARGET_NAME> --class=<CLASS_NAME> --perm=<P1>,<P2>
    Copy to Clipboard Toggle word wrap

    여기서 < SOURCE_NAME >은 소스 SELinux 유형이며 < TARGET_NAME >은 대상 SELinux 유형이며 < CLASS_NAME >은 보안 클래스 또는 오브젝트 클래스 이름이며 < P1 > 및 < P2 >는 규칙의 특정 권한입니다.

    예를 들어 SELinux의 경우 RHEL 솔루션의 cups.sock에 대한 cups-lpd 읽기 액세스를 거부합니다.

    # sesearch -A --source=cupsd_lpd_t --target=cupsd_var_run_t --class=sock_file --perm=read
    allow cupsd_lpd_t cupsd_var_run_t:sock_file { append getattr open read write };
    Copy to Clipboard Toggle word wrap

    이제 마지막 줄에 읽기 작업이 포함되어야 합니다.

  3. 관련 서비스가 SELinux에 의해 제한된 상태로 실행되는지 확인합니다.

    1. 관련 서비스와 관련된 프로세스를 확인합니다.

      $ systemctl status <service_name>
      Copy to Clipboard Toggle word wrap
    2. 이전 명령의 출력에 나열된 프로세스의 SELinux 컨텍스트를 확인합니다.

      $ ps -efZ | grep <process_name>
      Copy to Clipboard Toggle word wrap
  4. 서비스에서 SELinux 거부를 유발하지 않는지 확인합니다.

    # ausearch -m AVC -i -ts recent
    <no matches>
    Copy to Clipboard Toggle word wrap

    i 옵션은 숫자 값을 사람이 읽을 수 있는 텍스트로 해석합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat