목차
- SELinux 컨텍스트
- SELinux 컨텍스트 변경
- semanage fcontext
- SELinux 기본 파일 컨텍스트 정책 정의
- 예
SELinux 컨텍스트
프로세스, 파일, 포트와 같은 모든 리소스에는 SELinux 컨텍스트로 레이블이 지정된다. SELinux는 /etc/ selinux/targeted/contexts/files/ 디렉터리에서 파일 레이블 지정 정책에 대한 파일 기반 데이 터베이스를 유지 관리한다.
새 파일은 해당 파일 이름이 기존 레이블 지정 정책과 일치하는 경우 기본 레이블을 가져온다. 새 파일의 이름이 기존 레이블 지정 정책과 일치하지 않는 경우에는 파일에 상위 디렉터리와 동일한 레이블이 상속된다. 레이블 상속을 사용하면 파일에 대한 명시적 정책이 존재하는지의 여부와 관계없이 모든 파일이 생성될 때 항상 레이블이 지정된다.
기존의 레이블 지정 정책이 있는 기본 위치에 파일이 생성되거나 사용자 지정 위치에 대한 정책이 있는 경우 새 파일에 올바른 SELinux 컨텍스트로 레이블이 지정된다. 그러나 기존 레이블 지정 정책 없이 파일이 예 기치 않은 위치에 생성되면 상속된 레이블이 새 파일의 의도된 용도에 맞지 않을 수 있다.
또한 파일을 새 위치에 복사하면 해당 파일의 SELinux 컨텍스트가 새 위치의 레이블 지정 정책 또는 상위 디렉터리 상속(정책이 없는 경우)으로 결정된 새 컨텍스트로 변경될 수 있다.
복사하는 동안 파일의 SELinux 컨텍스트를 보존하여 파일의 원래 위치에 대해 결정된 컨텍스트 레이블을 유지할 수 있다. 예를 들어 cp -p 명령은 가능한 경우 모든 파일 특성을 유지하고, cp -c 명령은 복사하는 동안 SELinux 컨텍스트만 유지한다.
SELinux 컨텍스트 변경
파일의 SELinux 컨텍스트는 semanage fcontext, restorecon, chcon 명령으로 변경한다. 파일의 컨텍스트를 설정하는 데 권장되는 방법은 semanage fcontext 명령을 사용하여 파일 컨텍스트 정책을 생성한 다음 restorecon 명령을 사용하여 정책에 지정된 컨텍스트를 파일에 적용하는 것이다.
이 방법을 사용하면 필요할 때마다 restorecon 명령을 사용하여 파일의 레이블을 올바른 컨텍스트로 쉽 게 다시 지정할 수 있다. 이 방법의 장점은 컨텍스트가 무엇인지 기억할 필요가 없으며 파일 집합에서 컨 텍스트를 쉽게 수정할 수 있다는 것이다.
chcon 명령은 SELinux 컨텍스트를 파일에 직접 설정하지만 시스템의 SELinux 정책은 참조하지 않는예다. chcon은 테스트 및 디버깅에 유용하지만 이 방법을 사용하여 컨텍스트를 수동으로 설정하는 것은 일시적이다. 수동으로 설정한 파일 컨텍스트는 재부팅 후에도 유지되지만 restorecon을 실행하여 파일 시스템 콘텐츠에 레이블을 다시 지정하는 경우 바뀔 수 있다.
semanage fcontext
파일 컨텍스트 매핑은 SELinux에서 시스템에 있는 파일 및 디렉토리의 보안 컨텍스트를 결정하는 데 사용되며, 이에 따라 적용되는 권한 및 액세스 제어가 결정된다.
semanage fcontext의 목적은 특정 파일 및 디렉토리에 대한 보안 설정 또는 "컨텍스트"를 정의하고 관리하는 것이다. 이러한 컨텍스트는 SELinux에서 각 파일 및 디렉토리에 대해 허용 또는 거부되는 작업(예: 읽기, 쓰기, 실행)을 결정하는 데 사용된다.
SELinux 기본 파일 컨텍스트 정책 정의
semanage fcontext 명령은 기본 파일 컨텍스트를 결정하는 정책을 표시하고 수정한다. semanage fcontext -l 명령을 실행하여 모든 파일 컨텍스트 정책 규칙을 나열할 수 있다. 이러한 규칙은 확장 된 정규 표현식 구문을 사용하여 경로 및 파일 이름을 지정한다.
정책을 볼 때 가장 일반적인 확장 정규 표현식은 (/.*)?이며, 일반적으로 디렉터리 이름에 추가된다. 이 표기법은 유머러스하게 해적이라고 한다. 얼굴에 눈 가리개가 있고 그 옆에 갈고리 손이 있는 것처럼 보이 기 때문이다.
이 구문은 '슬래시로 시작하고 그 뒤에 임의의 수의 문자가 있는 문자 집합'으로 설명되며, 집합은 있을 수도 있고 없을 수도 있다. 더 간단히 말하면 이 구문은 비어 있는 경우에도 디렉터리 자체와 일치하지만 해당 디렉터리 내에 생성된 거의 모든 파일 이름과 일치한다.
예
새 파일 컨텍스트 매핑을 추가한다.
semanage fcontext -a -t my_custom_type_t '/path/to/directory(/.*)?'
이 명령은 /path/to/directory 및 그 내용에 대한 새 파일 컨텍스트 매핑을 추가하여 SELinux 유형 my_custom_type_t를 지정된 파일 및 디렉토리에 할당한다.
기존 파일 컨텍스트 매핑을 수정한다.
semanage fcontext -m -t new_type_t '/path/to/directory(/.*)?'
이 명령은 /path/to/directory 및 그 내용에 대한 파일 컨텍스트 매핑을 수정하여 SELinux 유형을 new_type_t로 변경한다.
파일 컨텍스트 매핑을 삭제한다.
semanage fcontext -d '/path/to/directory(/.*)?'
이 명령은 /path/to/directory 및 그 내용에 대한 파일 컨텍스트 매핑을 제거한다.
모든 파일 컨텍스트 매핑을 나열한다.
semanage fcontext -l
이 명령은 현재 시스템에 정의된 모든 파일 컨텍스트 매핑을 나열한다.
semanage fcontext를 사용하여 파일 컨텍스트 매핑을 수정한 후 일반적으로 restorecon 명령을 실행하여 파일 및 디렉토리에 새 컨텍스트를 적용해야 한다.
restorecon -Rv /path/to/directory
이 명령은 semanage fcontext에 의해 정의된 새 매핑을 기반으로 지정된 파일 및 디렉토리의 SELinux 컨텍스트를 업데이트한다.
SELinux 부분은 사실 현업에서는 잘 사용되지는 않는다고 한다. 때문에 참고만하고 시험을 준비하고 있다면 합격을 해야할 테니 알아두는 것이 좋다.
'Linux > Linux 이론' 카테고리의 다른 글
[Linux 이론] 리눅스 기본 용어 정리 및 개발자와 엔지니어 차이점 (0) | 2023.04.01 |
---|---|
[Linux 이론] 리눅스 보안 SELinux (0) | 2023.03.23 |
[Linux 이론] 리다이렉션 기호(>, >>) 활용 (0) | 2023.03.21 |
[Linux 이론] 정규 표현식(Regular Expression) (0) | 2023.03.21 |
[Linux 이론] 특정 특수문자의 역할 (0) | 2023.03.20 |