11.3. selinux RHEL 시스템 역할을 사용하여 포트 관리
selinux RHEL 시스템 역할을 사용하여 여러 시스템에서 일관되게 SELinux의 포트 액세스 관리를 자동화할 수 있습니다. 예를 들어 다른 포트에서 수신 대기하도록 Apache HTTP 서버를 구성할 때 유용할 수 있습니다. selinux RHEL 시스템 역할로 http_port_t SELinux 유형을 특정 포트 번호에 할당하는 플레이북을 생성하여 이 작업을 수행할 수 있습니다. 관리 노드에서 플레이북을 실행하면 SELinux 정책에 정의된 특정 서비스가 이 포트에 액세스할 수 있습니다.
SELinux에서 포트 액세스 관리를 자동화할 수 있습니다. seport 모듈을 사용하면 전체 역할을 사용하는 것보다 빠르거나 selinux RHEL 시스템 역할을 사용하면 SELinux 구성을 다른 변경할 때 더 유용합니다. 실제로 selinux RHEL 시스템 역할은 포트를 구성할 때 seport 모듈을 사용합니다. 각 방법은 관리 노드에서 semanage port -a -t http_port_t -p tcp < port_number > 명령을 입력하는 것과 동일한 효과가 있습니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되었습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리형 노드에 연결하는 데 사용하는 계정에는
sudo권한이 있습니다. -
선택 사항:
semanage명령을 사용하여 포트 상태를 확인하려면policycoreutils-python-utils패키지를 설치해야 합니다.
절차
다른 변경을 수행하지 않고 포트 번호만 구성하려면
seport모듈을 사용합니다.- name: Allow Apache to listen on tcp port <port_number> community.general.seport: ports: <port_number> proto: tcp setype: http_port_t state: present&
lt;port_number>를http_port_t유형을 할당할 포트 번호로 바꿉니다.SELinux의 다른 사용자 지정과 관련된 관리형 노드를 보다 복잡한 구성하려면
selinuxRHEL 시스템 역할을 사용합니다. 플레이북 파일(예:~/playbook.yml)을 생성하고 다음 콘텐츠를 추가합니다.--- - name: Modify SELinux port mapping example hosts: all vars: # Map tcp port <port_number> to the 'http_port_t' SELinux port type selinux_ports: - ports: <port_number> proto: tcp setype: http_port_t state: present tasks: - name: Include selinux role ansible.builtin.include_role: name: rhel-system-roles.selinux&
lt;port_number>를http_port_t유형을 할당할 포트 번호로 바꿉니다.
검증
http_port_t유형에 포트가 할당되었는지 확인합니다.# semanage port --list | grep http_port_t http_port_t tcp <port_number>, 80, 81, 443, 488, 8008, 8009, 8443, 9000