10장. 여러 시스템에 동일한 SELinux 구성 배포


다음 방법 중 하나를 사용하여 여러 시스템에 확인된 SELinux 구성을 배포할 수 있습니다.

  • RHEL 시스템 역할 및 Ansible 사용
  • RHEL 웹 콘솔 사용
  • 스크립트에서 semanage 내보내기 및 가져오기 명령 사용

10.1. RHEL 시스템 역할을 사용하여 SELinux 구성

selinux RHEL 시스템 역할을 사용하여 SELinux 권한을 원격으로 구성하고 관리할 수 있습니다. 예를 들면 다음과 같습니다.

  • SELinux 부울, 파일 컨텍스트, 포트 및 로그인과 관련된 로컬 정책 수정 정리.
  • SELinux 정책 부울, 파일 컨텍스트, 포트, 로그인 설정.
  • 지정된 파일 또는 디렉터리에서 파일 컨텍스트 복원.
  • SELinux 모듈 관리.

파일에 잘못된 SELinux 컨텍스트가 있는 경우 여러 경우가 있을 수 있습니다. 예를 들어 파일이 복사되거나 디렉터리로 이동하는 경우 SELinux 컨텍스트가 새 위치의 예상 컨텍스트와 일치하지 않을 수 있습니다. 잘못된 SELinux 컨텍스트를 사용하면 애플리케이션이 파일에 액세스하지 못할 수 있습니다. 많은 호스트의 디렉터리에서 SELinux 컨텍스트를 원격으로 재설정하려면 selinux RHEL 시스템 역할을 사용할 수 있습니다.

사전 요구 사항

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Managing SELinux
      hosts: managed-node-01.example.com
      tasks:
        - name: Restore SELinux context
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.selinux
          vars:
            selinux_restore_dirs:
              - /var/www/
              - /etc/
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    selinux_restore_dirs: <list>
    SELinux 컨텍스트를 재설정해야 하는 디렉터리 목록을 정의합니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.selinux/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  • 컨텍스트를 재설정한 파일 또는 디렉터리에 대한 SELinux 컨텍스트를 표시합니다. 예를 들어 /var/www/ 디렉터리에 컨텍스트를 표시하려면 다음을 입력합니다.

    # ansible rhel10.example.com -m command -a 'ls -ldZ /var/www/'
    drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Feb 28 13:20 /var/www/
    Copy to Clipboard Toggle word wrap

비표준 포트에서 서비스를 실행하려면 이 포트에서 해당 SELinux 유형 레이블을 설정해야 합니다. 이렇게 하면 서비스가 비표준 포트에서 수신 대기하려고 할 때 SELinux가 서비스에 대한 권한을 거부합니다. selinux RHEL 시스템 역할을 사용하면 이 작업을 자동화하고 포트에 type 레이블을 원격으로 할당할 수 있습니다.

사전 요구 사항

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Managing SELinux
      hosts: managed-node-01.example.com
      tasks:
        - name: Set http_port_t label on network port
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.selinux
          vars:
            selinux_ports:
              - ports: <port_number>
                proto: tcp
                setype: http_port_t
                state: present
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    포트: &lt ;port_number>
    SELinux 레이블을 할당할 포트 번호를 정의합니다. 여러 값을 쉼표로 구분합니다.
    setype: <type_label>
    SELinux 유형 레이블을 정의합니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.selinux/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  • http_port_t 레이블이 할당된 포트 번호를 표시합니다.

    # ansible managed-node-01.example.com -m shell -a 'semanage port --list | grep http_port_t'
    http_port_t      tcp     80, 81, 443, <port_number>, 488, 8008, 8009, 8443, 9000
    Copy to Clipboard Toggle word wrap

10.1.3. selinux RHEL 시스템 역할을 사용하여 SELinux 모듈 배포

기본 SELinux 정책이 요구 사항을 충족하지 않는 경우 사용자 지정 모듈을 생성하여 애플리케이션이 필요한 리소스에 액세스할 수 있도록 할 수 있습니다. selinux RHEL 시스템 역할을 사용하면 이 프로세스를 자동화하고 SELinux 모듈을 원격으로 배포할 수 있습니다.

사전 요구 사항

  • 컨트롤 노드 및 관리형 노드를 준비했습니다.
  • 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
  • 관리 노드에 연결하는 데 사용하는 계정에는 sudo 권한이 있습니다.
  • 배포하려는 SELinux 모듈은 플레이북과 동일한 디렉터리에 저장됩니다.
  • SELinux 모듈은 CIL(Common Intermediate Language) 또는 정책 패키지(PP) 형식으로 사용할 수 있습니다.

    PP 모듈을 사용하는 경우 관리 노드의 policydb 버전이 PP 모듈을 빌드하는 데 사용되는 버전과 같거나 그 이상인지 확인하십시오.

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Managing SELinux
      hosts: managed-node-01.example.com
      tasks:
        - name: Deploying a SELinux module
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.selinux
          vars:
            selinux_modules:
              - path: <module_file>
    	    priority: <value>
                state: enabled
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    path: <module_file>
    제어 노드에서 모듈 파일의 경로를 설정합니다.
    우선순위: &lt ;value>
    SELinux 모듈 우선 순위를 설정합니다. 400 은 기본값입니다.
    state: &lt ;value>

    모듈의 상태를 정의합니다.

    • enabled: 모듈을 설치하거나 활성화합니다.
    • disabled: 모듈을 비활성화합니다.
    • absent: 모듈을 제거합니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.selinux/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  • SELinux 모듈 목록을 원격으로 표시하고 플레이북에서 사용한 모듈 목록을 필터링합니다.

    # ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'
    Copy to Clipboard Toggle word wrap

    모듈이 나열되면 설치되어 활성화되어 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat