SELinux에서 특정 디렉토리에 대한 접근을 제한하는 방법은 무엇인가요?
_____A1. SELinux(Security-Enhanced Linux)는 리눅스 커널에 포함된 보안 모듈로, 강제 접근 제어(MAC)를 통해 시스템 보안을 강화합니다. 프로세스와 파일, 디렉토리 간의 접근 권한을 세밀하게 제어할 수 있습니다.
Q2. SELinux에서 특정 디렉토리에 대한 접근을 제한하는 기본 원리는 무엇인가요?
A2. SELinux는 각 파일과 디렉토리에 보안 컨텍스트(label)를 부여하며, 프로세스도 보안 컨텍스트를 가집니다. 정책에 따라 프로세스의 컨텍스트가 파일이나 디렉토리 컨텍스트에 기반한 접근 권한을 갖게 되는 구조입니다. 접근 제한은 해당 디렉토리의 SELinux 컨텍스트와 정책 설정을 통해 이뤄집니다.
Q3. 특정 디렉토리에 대한 SELinux 접근 제한 설정 순서는 어떻게 되나요?
A3.
1. 디렉토리의 현재 SELinux 컨텍스트 확인 (`ls -Z /path/to/dir`)
2. 필요에 따라 적절한 SELinux 타입(`type`) 생성 또는 기존 타입 사용
3. 디렉토리의 보안 컨텍스트 변경 (`semanage fcontext -a -t custom_t '/path/to/dir(/.*)?'`)
4. 실제 컨텍스트 적용 (`restorecon -Rv /path/to/dir`)
5. 정책 모듈 생성 또는 boolean 설정으로 프로세스의 접근 허용/제한
6. `audit.log`를 모니터링하여 접근 거부 여부 확인 및 정책 조정
Q4. 디렉토리의 SELinux 컨텍스트는 어떻게 확인하나요?
A4. `ls -Zd /path/to/dir` 명령어를 사용하면 디렉토리의 SELinux 보안 컨텍스트를 확인할 수 있습니다.
Q5. 디렉토리에 새로운 SELinux 타입을 지정하는 방법은?
A5. 다음 명령을 사용합니다.
```
semanage fcontext -a -t my_custom_t '/path/to/dir(/.*)?'
restorecon -Rv /path/to/dir
```
`my_custom_t`는 새로 지정할 SELinux 타입입니다. 커스텀 타입을 만들 때는 SELinux 정책 모듈이 별도로 필요할 수 있습니다.
A6.
1. 정책 파일 작성(예: `my_policy.te`)
2. `my_custom_t` 타입 정의 및 필요한 allow 규칙 추가
3. `checkmodule`과 `semodule_package`로 컴파일 및 패키징
4. `semodule -i my_policy.pp`로 설치
5. 위의 `semanage fcontext` 명령으로 파일 컨텍스트 지정 및 복구
Q7. SELinux boolean으로 접근 제한을 조정할 수 있나요?
A7. 네, SELinux에서 특정 기능별로 boolean 변수를 제공하여 접근 권한을 조절할 수 있습니다. `getsebool -a`로 현재 boolean 목록을 확인하고, `setsebool`로 변경할 수 있습니다. 다만, 특정 디렉토리에 대한 직접적인 접근 제한은 boolean보다 타입과 정책으로 관리하는 것이 일반적입니다.
Q8. 접근 제한 정책 작성 시 주의사항은?
A8.
- 필요한 최소 권한 원칙 적용
- 정책 변경 전, `audit.log` 확인으로 어떤 접근이 차단되는지 파악
- 정책을 잘못 작성하면 정상 서비스에 영향이 생길 수 있으니 단계별 테스트 권장
Q9. 접근 제한 후 테스트 방법은?
A9. 제한 대상 디렉토리에 대해 의도한 프로세스나 사용자로 접근해 보고, 접근이 차단되는지 확인합니다. `ausearch -m avc -ts recent` 또는 `/var/log/audit/audit.log`에서 SELinux 차단 로그를 모니터링하여 정확한 차단 여부 및 원인을 분석합니다.
Q10. SELinux가 'Enforcing' 모드가 아니면 접근 제한이 작동하나요?
A10. 'Permissive' 모드에서는 접근 제한 규칙이 적용되지만 차단하지 않고 로그만 기록하기 때문에 실제 차단은 되지 않습니다. 접근 제한을 원한다면 SELinux가 'Enforcing' 모드여야 합니다.
---
위 내용을 참고하여 SELinux 환경에서 특정 디렉토리에 접근 제한을 정확히 설정할 수 있습니다.
SELinux는 기본적으로 "정책 기반" 접근 제어를 사용하여, 각 프로세스와 파일에 대해 어떤 작업을 수행할 수 있는지를 정의합니다.
특정 디렉토리에 대한 접근을 제한하는 방법은 다음과 같습니다.
1. SELinux 모드 확인 SELinux는 세 가지 모드로 작동합니다: `enforcing`, `permissive`, `disabled`. 먼저 현재 SELinux 모드를 확인해야 합니다.
```bash sestatus ``` 이 명령어를 통해 SELinux의 상태와 모드를 확인할 수 있습니다.
2. 정책 이해하기 SELinux는 파일, 프로세스, 포트 등 다양한 객체에 대해 정책을 적용합니다.
각 객체는 특정한 컨텍스트를 가지며, 이 컨텍스트는 접근 제어를 결정하는 데 사용됩니다.
파일의 컨텍스트를 확인하려면 다음 명령어를 사용합니다.
```bash ls -Z /path/to/directory ``` 이 명령어는 지정한 디렉토리의 SELinux 컨텍스트를 보여줍니다.
3. 특정 디렉토리의 접근 제한하기 특정 디렉토리에 대한 접근을 제한하려면, 해당 디렉토리의 SELinux 컨텍스트를 변경하거나, 새로운 정책을 작성해야 합니다.
3.1. 컨텍스트 변경 디렉토리의 SELinux 컨텍스트를 변경하여 접근을 제한할 수 있습니다.
예를 들어, 특정 디렉토리에 대해 `httpd_sys_content_t` 컨텍스트를 제거하고 싶다면, 다음과 같이 변경할 수 있습니다.
```bash chcon -t my_custom_t /path/to/directory ``` 여기서 `my_custom_t`는 사용자 정의 타입입니다.
이 타입에 대한 정책을 작성하여 접근을 제한할 수 있습니다.
3.2. 정책 작성 SELinux 정책을 작성하여 특정 디렉토리에 대한 접근을 제한할 수 있습니다.
이를 위해서는 다음과 같은 단계를 따릅니다.
1. 정책 파일 생성 : 새로운 정책 파일을 생성합니다.
예를 들어, `my_policy.te`라는 파일을 생성합니다.
```bash nano my_policy.te ```
2. 정책 내용 작성 : 파일에 다음과 같은 내용을 추가합니다.
```plaintext module my_policy 1.0; require { type my_custom_t; 위에서 설정한 사용자 정의 타입 class dir { read write search }; } 특정 디렉토리에 대한 접근 제한 deny my_custom_t dir { read write search }; ```
3. 정책 컴파일 : 정책 파일을 컴파일하여 모듈을 생성합니다.
```bash checkmodule -M -m -o my_policy.mod my_policy.te semodule_package -o my_policy.pp -m my_policy.mod ```
4. 정책 설치 : 생성한 정책 모듈을 시스템에 설치합니다.
```bash semodule -i my_policy.pp ```
4. 정책 테스트 및 검증 정책을 적용한 후, 해당 디렉토리에 접근을 시도하여 정책이 제대로 작동하는지 확인합니다.
SELinux의 로그를 확인하여 접근이 차단되었는지 확인할 수 있습니다.
```bash ausearch -m avc -ts recent ``` 이 명령어는 최근의 AVC(Access Vector Cache) 로그를 보여줍니다.
여기서 접근이 차단된 기록을 확인할 수 있습니다.
5. 문제 해결 정책이 예상대로 작동하지 않거나, 특정 프로세스가 필요한 접근을 차단당하는 경우, `audit2allow` 도구를 사용하여 필요한 접근을 허용하는 정책을 생성할 수 있습니다.
```bash ausearch -m avc -ts recent | audit2allow -M my_new_policy semodule -i my_new_policy.pp ``` 이렇게 하면, 최근의 AVC 로그를 기반으로 새로운 정책을 생성하여 적용할 수 있습니다.
결론 SELinux를 사용하여 특정 디렉토리에 대한 접근을 제한하는 것은 시스템 보안을 강화하는 중요한 방법입니다.
정책을 작성하고 적용하는 과정은 다소 복잡할 수 있지만, 이를 통해 시스템의 보안을 한층 더 강화할 수 있습니다.
SELinux의 정책을 이해하고 적절히 활용하는 것이 중요합니다.
작성자:
박채린 [비회원]
| 작성일자: 1년 전
2024-12-28 07:21:40
조회수: 148 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 148 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.