2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

SELinux의 사용자 정의 정책을 만드는 방법은 무엇인가요?

_____
Q1: SELinux 사용자 정의 정책이란 무엇인가요?
A1: SELinux 사용자 정의 정책은 기본 제공되는 정책 외에 특정 애플리케이션이나 서비스, 환경에 맞춰 권한을 세밀하게 조정하기 위해 사용자가 직접 작성하는 정책입니다. 이를 통해 시스템 보안을 강화하고 필요한 권한만 최소한으로 부여할 수 있습니다.

Q2: SELinux 사용자 정의 정책을 만들기 위한 준비 작업은 무엇인가요?
A2:
- SELinux가 Enforcing 모드로 활성화되어 있어야 합니다.
- 관련 개발 도구 설치 (예: `policycoreutils`, `selinux-policy-devel` 패키지).
- 필요한 경우 대상 애플리케이션을 설치 및 테스트용으로 준비합니다.

Q3: 기본적인 사용자 정의 정책 작성 절차는 어떻게 되나요?
A3:
1. 문제 분석 및 요구 권한 파악 : 애플리케이션 로그(`/var/log/audit/audit.log`)에서 거부 이벤트를 확인합니다.
2. 모듈 소스 작성 : `module_name.te` 텍스트 파일을 작성하여 타입, 도메인, 권한을 정의합니다.
3. 모듈 컴파일 및 패키징 : `checkmodule`, `semodule_package` 명령어를 사용해 `.mod` 및 `.pp` 파일 생성.
4. 모듈 설치 및 적용 : `semodule -i module_name.pp` 명령어로 정책을 시스템에 로드합니다.
5. 검증 및 조정 : 예상대로 권한이 적용되는지 확인 후 필요시 정책 수정.

Q4: `audit2allow` 도구를 활용하는 방법은?
A4:
- `audit2allow`는 `/var/log/audit/audit.log`에서 거부 메시지를 자동으로 분석해 허용 규칙 초안을 생성합니다.
- 명령 예시: `grep AVC /var/log/audit/audit.log | audit2allow -M mymodule`
- 이 명령어는 `mymodule.te`와 컴파일된 `mymodule.pp` 파일을 생성하며, `semodule -i mymodule.pp`로 적용할 수 있습니다.

Q5: 사용자 정의 정책 파일(`.te`) 예제는 어떻게 되나요?
A5:
```te
policy_module(mymodule, 1.0)

require {
type unconfined_t;
class file read open;
}
allow unconfined_t self:file { read open };
```

Q6: 사용자 정의 정책 개발 시 주의할 점은?
A6:
- 최소 권한 원칙을 지키고, 불필요하게 넓은 권한을 부여하지 않도록 합니다.
- 정책 적용 전 테스트 환경에서 충분히 검증합니다.
- 정책 버전을 관리하고 변경 이력을 기록합니다.
- 기존 정책과 충돌이 없는지 확인합니다.

Q7: 정책을 적용한 후 권한 문제가 계속 발생하면 어떻게 해야 하나요?
A7:
- `/var/log/audit/audit.log` 또는 `journalctl -t setroubleshoot` 로그에서 추가 거부 메시지를 확인합니다.
- 추가로 필요한 권한을 파악해 정책에 반영합니다.
- 필요 시 `setroubleshoot` 같은 도구를 사용해 문제를 분석합니다.

Q8: SELinux 사용자별 정책 작성도 가능한가요?
A8:
- SELinux는 기본적으로 프로세스 컨텍스트(도메인) 및 파일 컨텍스트 단위로 관리하며 사용자 단위 정책도 가능하나 매우 복잡합니다.
- 보통은 사용자 전용 도메인 또는 영역을 생성해 적용합니다.
- 이는 고급 설정에 해당하며 SELinux 전문 지식이 필요합니다.

Q9: 사용자 정의 정책을 제거하려면 어떻게 하나요?
A9:
- `semodule -r 모듈명` 명령어를 사용해 설치한 정책 모듈을 삭제합니다.
- 예: `semodule -r mymodule`

Q10: 참고할 만한 공식 문서나 자료는 무엇인가요?
A10:
- Red Hat 공식 SELinux 가이드 (https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_user_guide/)
- Fedora SELinux Wiki (https://fedoraproject.org/wiki/SELinux)
- `man selinux` 및 `man audit2allow` 명령어 도움말
- SELinux 프로젝트 공식 GitHub 및 커뮤니티 포럼
SELinux(보안 강화 리눅스)는 리눅스 커널의 보안 모듈로, 시스템의 보안을 강화하기 위해 프로세스와 파일에 대한 접근 제어를 제공합니다.

SELinux는 기본적으로 정책 기반으로 작동하며, 이러한 정책은 시스템의 보안 요구 사항에 맞게 조정할 수 있습니다.

사용자 정의 SELinux 정책을 만드는 과정은 다음과 같습니다.

1. SELinux 모드 확인 SELinux는 세 가지 모드에서 작동합니다: Enforcing, Permissive, Disabled. 사용자 정의 정책을 만들기 전에 SELinux가 Enforcing 또는 Permissive 모드로 설정되어 있는지 확인해야 합니다.

이를 확인하려면 다음 명령어를 사용합니다.

```bash sestatus ```

2. 필요한 패키지 설치 SELinux 정책을 작성하고 관리하기 위해 필요한 도구를 설치합니다.

일반적으로 `policycoreutils`, `selinux-policy-devel`, `setools-console` 패키지가 필요합니다.

다음 명령어로 설치할 수 있습니다.

```bash sudo yum install policycoreutils selinux-policy-devel setools-console ```

3. 정책 작성 SELinux 정책은 주로 두 가지 형식으로 작성됩니다: 모듈 형식과 정책 파일 형식. 일반적으로 모듈 형식이 더 간단합니다.

새로운 정책 모듈을 만들기 위해 다음과 같은 파일을 생성합니다.

```bash nano my_custom_policy.te ``` 여기서 `.te` 파일은 "Type Enforcement"의 약자로, SELinux의 기본 정책 언어입니다.

이 파일에 필요한 규칙을 작성합니다.

예를 들어, 특정 프로세스가 특정 파일에 접근할 수 있도록 허용하는 규칙을 추가할 수 있습니다.

```plaintext module my_custom_policy 1.0; require { type httpd_t; type var_t; class file { read write }; } Allow httpd to read and write to var allow httpd_t var_t:file { read write }; ```

4. 정책 컴파일 작성한 정책 파일을 컴파일하여 모듈 파일을 생성합니다.

다음 명령어를 사용합니다.

```bash checkmodule -M -m -o my_custom_policy.mod my_custom_policy.te ``` 이 명령어는 `.mod` 파일을 생성합니다.

다음으로, 이 모듈을 패키징하여 설치할 수 있는 형식으로 변환합니다.

```bash semodule_package -o my_custom_policy.pp -m my_custom_policy.mod ```

5. 정책 설치 이제 생성한 정책 모듈을 시스템에 설치할 수 있습니다.

다음 명령어를 사용합니다.

```bash sudo semodule -i my_custom_policy.pp ```

6. 정책 테스트 정책을 설치한 후, 시스템에서 해당 정책이 제대로 작동하는지 테스트해야 합니다.

SELinux의 로그를 확인하여 정책이 예상대로 작동하는지 확인할 수 있습니다.

로그는 `/var/log/audit/audit.log` 파일에 기록됩니다.

`ausearch` 명령어를 사용하여 특정 이벤트를 검색할 수 있습니다.

```bash ausearch -m avc -ts recent ```

7. 정책 수정 및 업데이트 정책이 예상대로 작동하지 않거나 추가적인 권한이 필요할 경우, `.te` 파일을 수정하고 위의 컴파일 및 설치 단계를 반복합니다.

SELinux는 정책을 동적으로 업데이트할 수 있으므로, 시스템을 재부팅하지 않고도 변경 사항을 적용할 수 있습니다.



8. 정책 제거 더 이상 필요하지 않은 정책 모듈은 다음 명령어로 제거할 수 있습니다.

```bash sudo semodule -r my_custom_policy ``` 결론 SELinux의 사용자 정의 정책을 만드는 과정은 다소 복잡할 수 있지만, 시스템의 보안을 강화하는 데 매우 유용합니다.

정책을 작성하고 테스트하는 과정에서 SELinux의 동작 방식을 이해하고, 필요한 권한을 정확히 설정하는 것이 중요합니다.

SELinux의 문서와 커뮤니티 자료를 참고하여 더 깊이 있는 이해를 쌓는 것도 좋은 방법입니다.

작성자: 최민서 [비회원] | 작성일자: 1년 전 2024-12-28 07:21:25
조회수: 110 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.