10.3. selinux RHEL 시스템 역할을 사용하여 포트 관리
selinux
RHEL 시스템 역할을 사용하여 여러 시스템에서 일관되게 SELinux의 포트 액세스 관리를 자동화할 수 있습니다. 예를 들어 다른 포트에서 수신 대기하도록 Apache HTTP 서버를 구성할 때 유용할 수 있습니다. 이를 위해 http_port_t
SELinux 유형을 특정 포트 번호에 할당하는 selinux
RHEL 시스템 역할로 플레이북을 생성할 수 있습니다. 관리 노드에서 플레이북을 실행하면 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의 다른 사용자 지정과 관련된 관리형 노드를 보다 복잡한 구성하려면
selinux
RHEL 시스템 역할을 사용합니다. 플레이북 파일(예:~/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
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
파일 -
/usr/share/doc/rhel-system-roles/selinux/
디렉터리