개요
semanage는 SELinux 정책을 영구적으로 변경하는 데 사용됩니다. `chcon`이나 `restorecon`이 임시 또는 기존 정책을 적용하는 반면, `semanage`는 새로운 정책 규칙을 정의하고 시스템 재부팅 후에도 유지되도록 합니다.
주요 관리 대상
semanage를 통해 관리할 수 있는 주요 SELinux 정책 요소들입니다.
- 파일 컨텍스트 (File Contexts): 특정 경로의 파일 및 디렉토리에 대한 SELinux 타입 지정
- 네트워크 포트 (Network Ports): 특정 포트에 대한 SELinux 타입 지정
- SELinux 불리언 (Booleans): SELinux 정책의 특정 동작을 켜거나 끄는 스위치
- SELinux 사용자 매핑 (User Mappings): 리눅스 사용자를 SELinux 사용자에 매핑
주요 옵션
semanage는 다양한 SELinux 객체 유형에 대해 정책을 관리합니다. 각 객체 유형과 함께 사용되는 일반적인 옵션들을 설명합니다.
일반 관리 옵션
객체 유형
생성된 명령어:
명령어를 조합해 보세요.
설명:
`semanage` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
semanage 명령어를 사용하여 SELinux 정책을 관리하는 다양한 시나리오를 보여줍니다.
모든 파일 컨텍스트 규칙 나열
sudo semanage fcontext -l
현재 시스템에 정의된 모든 파일 컨텍스트 매핑 규칙을 확인합니다.
특정 포트 규칙 나열
sudo semanage port -l | grep http
HTTP 서비스에 사용되는 포트 규칙을 나열합니다.
사용자 정의 파일 컨텍스트 추가
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/my_app(/.*)?"
/var/www/html/my_app 디렉토리와 그 하위 파일들을 httpd_sys_content_t 타입으로 지정하는 규칙을 추가합니다. (추가 후 restorecon 필요)
사용자 정의 포트 추가
sudo semanage port -a -t http_port_t -p tcp 8080
TCP 8080 포트를 http_port_t 타입으로 추가하여 웹 서비스에서 사용할 수 있도록 합니다.
SELinux 불리언 활성화
sudo semanage boolean -m --on httpd_can_network_connect
httpd_can_network_connect 불리언을 활성화하여 Apache 웹 서버가 네트워크 연결을 시작할 수 있도록 허용합니다.
설치
semanage는 대부분의 SELinux를 사용하는 리눅스 배포판에서 'policycoreutils' 또는 유사한 패키지의 일부로 제공됩니다. 다음은 주요 배포판에서의 설치 방법입니다.
RHEL/CentOS/Fedora
sudo dnf install policycoreutils-python-utils
DNF 또는 YUM 패키지 관리자를 사용하여 'policycoreutils-python-utils' 패키지를 설치합니다.
Debian/Ubuntu
sudo apt install selinux-utils
APT 패키지 관리자를 사용하여 'selinux-utils' 패키지를 설치합니다.
팁 & 주의사항
semanage를 사용하여 SELinux 정책을 관리할 때 유용한 팁과 주의해야 할 사항들입니다.
변경 사항 적용
파일 컨텍스트 규칙을 변경한 후에는 반드시 'restorecon' 명령어를 사용하여 변경된 컨텍스트를 파일 시스템에 적용해야 합니다.
- `sudo restorecon -Rv /path/to/directory`
문제 진단 및 정책 생성
SELinux 관련 문제가 발생하면 `/var/log/audit/audit.log` 파일을 확인하여 거부된 작업을 파악하고, `audit2allow` 도구를 사용하여 필요한 정책 규칙을 생성할 수 있습니다.
- `sudo tail -f /var/log/audit/audit.log` (실시간 로그 확인)
- `sudo audit2allow -a -M mypolicy` (정책 위반 로그를 기반으로 'mypolicy.te' 및 'mypolicy.pp' 파일 생성)
- `sudo semodule -i mypolicy.pp` (생성된 정책 모듈 로드)
주의사항
SELinux 정책을 잘못 변경하면 시스템의 특정 서비스나 전체 시스템에 대한 접근이 차단될 수 있습니다. 변경 전에 현재 정책을 백업하거나 신중하게 테스트하는 것이 중요합니다.