10장. 여러 시스템에 동일한 SELinux 구성 배포
다음 방법 중 하나를 사용하여 여러 시스템에 확인된 SELinux 구성을 배포할 수 있습니다.
- RHEL 시스템 역할 및 Ansible 사용
- RHEL 웹 콘솔 사용
-
스크립트에서
semanage
내보내기 및 가져오기 명령 사용
10.1. RHEL 시스템 역할을 사용하여 SELinux 구성 링크 복사링크가 클립보드에 복사되었습니다!
selinux
RHEL 시스템 역할을 사용하여 SELinux 권한을 원격으로 구성하고 관리할 수 있습니다. 예를 들면 다음과 같습니다.
- SELinux 부울, 파일 컨텍스트, 포트 및 로그인과 관련된 로컬 정책 수정 정리.
- SELinux 정책 부울, 파일 컨텍스트, 포트, 로그인 설정.
- 지정된 파일 또는 디렉터리에서 파일 컨텍스트 복원.
- SELinux 모듈 관리.
10.1.1. selinux RHEL 시스템 역할을 사용하여 디렉터리에서 SELinux 컨텍스트 복원 링크 복사링크가 클립보드에 복사되었습니다!
파일에 잘못된 SELinux 컨텍스트가 있는 경우 여러 경우가 있을 수 있습니다. 예를 들어 파일이 복사되거나 디렉터리로 이동하는 경우 SELinux 컨텍스트가 새 위치의 예상 컨텍스트와 일치하지 않을 수 있습니다. 잘못된 SELinux 컨텍스트를 사용하면 애플리케이션이 파일에 액세스하지 못할 수 있습니다. 많은 호스트의 디렉터리에서 SELinux 컨텍스트를 원격으로 재설정하려면 selinux
RHEL 시스템 역할을 사용할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
selinux_restore_dirs: <list>
- SELinux 컨텍스트를 재설정해야 하는 디렉터리 목록을 정의합니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
컨텍스트를 재설정한 파일 또는 디렉터리에 대한 SELinux 컨텍스트를 표시합니다. 예를 들어
/var/www/
디렉터리에 컨텍스트를 표시하려면 다음을 입력합니다.ansible rhel10.example.com -m command -a 'ls -ldZ /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 Copied! Toggle word wrap Toggle overflow
10.1.2. selinux RHEL 시스템 역할을 사용하여 SELinux 네트워크 포트 레이블 관리 링크 복사링크가 클립보드에 복사되었습니다!
비표준 포트에서 서비스를 실행하려면 이 포트에서 해당 SELinux 유형 레이블을 설정해야 합니다. 이렇게 하면 서비스가 비표준 포트에서 수신 대기하려고 할 때 SELinux가 서비스에 대한 권한을 거부합니다. selinux
RHEL 시스템 역할을 사용하면 이 작업을 자동화하고 포트에 type 레이블을 원격으로 할당할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
포트: < ;port_number>
- SELinux 레이블을 할당할 포트 번호를 정의합니다. 여러 값을 쉼표로 구분합니다.
setype: <type_label>
- SELinux 유형 레이블을 정의합니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
http_port_t
레이블이 할당된 포트 번호를 표시합니다.ansible managed-node-01.example.com -m shell -a 'semanage port --list | grep 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 Copied! Toggle word wrap Toggle overflow
10.1.3. selinux RHEL 시스템 역할을 사용하여 SELinux 모듈 배포 링크 복사링크가 클립보드에 복사되었습니다!
기본 SELinux 정책이 요구 사항을 충족하지 않는 경우 사용자 지정 모듈을 생성하여 애플리케이션이 필요한 리소스에 액세스할 수 있도록 할 수 있습니다. selinux
RHEL 시스템 역할을 사용하면 이 프로세스를 자동화하고 SELinux 모듈을 원격으로 배포할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 배포하려는 SELinux 모듈은 플레이북과 동일한 디렉터리에 저장됩니다.
SELinux 모듈은 CIL(Common Intermediate Language) 또는 정책 패키지(PP) 형식으로 사용할 수 있습니다.
PP 모듈을 사용하는 경우 관리 노드의
policydb
버전이 PP 모듈을 빌드하는 데 사용되는 버전과 같거나 그 이상인지 확인하십시오.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
path: <module_file>
- 제어 노드에서 모듈 파일의 경로를 설정합니다.
우선순위: < ;value>
-
SELinux 모듈 우선 순위를 설정합니다.
400
은 기본값입니다. state: < ;value>
모듈의 상태를 정의합니다.
-
enabled
: 모듈을 설치하거나 활성화합니다. -
disabled
: 모듈을 비활성화합니다. -
absent
: 모듈을 제거합니다.
-
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
SELinux 모듈 목록을 원격으로 표시하고 플레이북에서 사용한 모듈 목록을 필터링합니다.
ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'
# ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모듈이 나열되면 설치되어 활성화되어 있습니다.