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

SELinux에서 특정 프로세스의 접근을 차단하는 방법은 무엇인가요?

_____
Q1: SELinux에서 특정 프로세스의 접근을 차단하려면 어떻게 해야 하나요?
A1: SELinux는 보안 컨텍스트와 정책을 기반으로 동작합니다. 특정 프로세스의 접근을 차단하려면 해당 프로세스의 SELinux 도메인(domain) 또는 유형(type)에 대해 필요한 접근 권한을 제한하는 규칙을 추가하거나 수정해야 합니다.

---

Q2: SELinux 정책에서 도메인(domain)과 유형(type)이란 무엇인가요?
A2:
- 도메인(domain) : 프로세스에 할당되는 SELinux 보안 컨텍스트의 한 부분으로, 프로세스를 그룹화하여 권한을 부여합니다.
- 유형(type) : 파일이나 리소스에 지정된 보안 컨텍스트 부분으로, 프로세스 도메인이 이 유형에 접근할 수 있는 권한을 설정합니다.

---

Q3: 특정 프로세스의 도메인을 어떻게 확인하나요?
A3:
```bash
ps -eZ | grep <프로세스명>
```
또는
```bash
ps auxZ | grep <프로세스명>
```
명령어를 사용해 프로세스의 SELinux 보안 컨텍스트를 확인할 수 있으며, 여기서 도메인을 확인할 수 있습니다.

---

Q4: 특정 접근을 차단하려면 어떻게 SELinux 정책을 작성하나요?
A4:
1. 도메인과 접근하려는 파일 또는 리소스의 유형을 확인한다.
2. 정책 모듈을 작성해 도메인이 해당 유형에 특정 권한을 갖지 못하도록 deny 규칙을 추가한다.
3. 정책을 컴파일하고 로드한다.

예시:
```te
module deny_example 1.0;

require {
type my_process_t;
type target_type_t;
}

my_process_t가 target_type_t에 대한 읽기 권한을 차단
deny my_process_t target_type_t:file read;
```
---

Q5: 정책 모듈을 만들어 적용하는 방법은?
A5:
1. 정책 파일(예: deny_example.te)을 작성한다.
2. 다음 명령어로 컴파일 및 패키징한다.
```bash
checkmodule -M -m -o deny_example.mod deny_example.te
semodule_package -o deny_example.pp -m deny_example.mod
```
3. 모듈을 로드한다.
```bash
semodule -i deny_example.pp
```

---

Q6: 기존 정책에서 권한을 수정하는 다른 방법은?
A6: `semanage`와 `audit2allow`를 이용해 기존 정책을 분석하고 수정할 수 있지만, 접근 차단(deny)은 명시적 규칙으로만 효과적입니다. 기본적으로 SELinux는 허용을 기반으로 하므로, 권한이 허용되어 있으면 접근 가능하므로 deny 규칙을 명시적으로 추가해야 합니다.

---

Q7: 임시로 특정 접근을 차단하는 방법은?
A7: SELinux는 일시적 상태 변경을 지원하지 않으므로 정책 모듈을 작성해 적용하거나, 도메인을 변경하는 방법으로 접근을 제한해야 합니다. 단, `setenforce 0` 등으로 SELinux를 잠시 비활성화하는 것은 권장하지 않습니다.

---

Q8: SELinux 로그에서 거부 항목을 확인하는 방법은?
A8:
```bash
ausearch -m avc -ts recent
```
또는
```bash
grep AVC /var/log/audit/audit.log
```
이를 통해 어떤 접근이 거부되었는지 확인 후 필요한 deny 규칙을 작성할 수 있습니다.

---

요약:
- 특정 프로세스는 SELinux 도메인으로 식별한다.
- 해당 도메인의 접근을 차단하려면 맞춤형 정책 모듈에서 `deny` 규칙을 작성한다.
- 작성한 정책을 컴파일하고 로드해 즉시 적용한다.
- 로그에서 접근 거부 정보를 참고하며 정책을 점검한다.
SELinux(보안 강화 리눅스)는 리눅스 커널에 통합된 보안 모듈로, 시스템의 보안을 강화하기 위해 프로세스와 파일 간의 접근 제어를 제공합니다.

SELinux는 기본적으로 모든 프로세스와 파일에 대해 엄격한 정책을 적용하여, 시스템의 보안을 높이는 데 기여합니다.

특정 프로세스의 접근을 차단하는 방법은 다음과 같은 단계로 진행할 수 있습니다.

1. SELinux 모드 확인 먼저, SELinux가 활성화되어 있는지 확인해야 합니다.

이를 위해 다음 명령어를 사용할 수 있습니다.

```bash sestatus ``` 이 명령어는 SELinux의 현재 상태와 모드를 보여줍니다.

SELinux는 `enforcing`, `permissive`, `disabled` 세 가지 모드 중 하나로 설정될 수 있습니다.

`enforcing` 모드는 정책을 강제로 적용하며, `permissive` 모드는 정책 위반을 기록하지만 차단하지는 않습니다.



2. 정책 이해하기 SELinux는 정책 기반으로 작동합니다.

각 프로세스와 파일은 특정 도메인과 컨텍스트를 가지며, SELinux 정책은 이러한 도메인 간의 상호작용을 정의합니다.

특정 프로세스의 접근을 차단하려면 해당 프로세스의 도메인과 차단하고자 하는 리소스의 컨텍스트를 이해해야 합니다.



3. 프로세스와 파일의 컨텍스트 확인 특정 프로세스와 파일의 SELinux 컨텍스트를 확인하려면 다음 명령어를 사용할 수 있습니다.

```bash ps -Z ls -Z /path/to/file ``` 이 명령어는 각각 프로세스와 파일의 SELinux 컨텍스트를 보여줍니다.

프로세스의 컨텍스트는 `user:role:type` 형식으로 표시됩니다.



4. 정책 수정 특정 프로세스의 접근을 차단하려면 SELinux 정책을 수정해야 합니다.

이를 위해 `audit2allow` 도구를 사용할 수 있습니다.

먼저, SELinux가 접근을 차단한 로그를 확인합니다.

```bash ausearch -m avc -ts recent ``` 이 명령어는 최근의 AVC(Access Vector Cache) 로그를 보여줍니다.

로그에서 차단된 접근을 확인한 후, `audit2allow`를 사용하여 해당 접근을 차단하는 정책을 생성할 수 있습니다.

```bash ausearch -m avc -ts recent | audit2allow -M mypolicy ``` 이 명령어는 `mypolicy.te`라는 파일을 생성합니다.

이 파일을 수정하여 특정 프로세스의 접근을 차단하는 규칙을 추가할 수 있습니다.



5. 정책 컴파일 및 적용 정책 파일을 수정한 후, 이를 컴파일하고 적용해야 합니다.

다음 명령어를 사용하여 정책을 컴파일합니다.

```bash semodule -i mypolicy.pp ``` 이 명령어는 `mypolicy.pp` 파일을 시스템에 적용하여 새로운 정책을 활성화합니다.



6. 정책 테스트 정책을 적용한 후, 해당 프로세스가 차단된 리소스에 접근하려고 시도할 때 SELinux가 올바르게 작동하는지 확인해야 합니다.

이를 위해 프로세스를 실행하고 로그를 모니터링합니다.

```bash ausearch -m avc -ts recent ``` 이 명령어를 사용하여 차단된 접근이 기록되는지 확인합니다.



7. 문제 해결 정책이 예상대로 작동하지 않거나, 필요하지 않은 접근이 차단되는 경우, `audit2allow`를 사용하여 추가적인 규칙을 생성하거나 기존 규칙을 수정할 수 있습니다.

SELinux 정책은 복잡할 수 있으므로, 필요한 경우 SELinux 문서나 커뮤니티의 도움을 받을 수 있습니다.

결론 SELinux를 사용하여 특정 프로세스의 접근을 차단하는 것은 시스템 보안을 강화하는 중요한 방법입니다.

위의 단계들을 통해 SELinux 정책을 이해하고, 필요한 접근 제어를 설정함으로써 시스템의 보안을 한층 더 강화할 수 있습니다.

SELinux의 정책은 매우 유연하고 강력하므로, 적절한 설정을 통해 원하는 보안 수준을 달성할 수 있습니다.

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