복구 중 또는 chroot에서 올바른 보안 레이블을 적용하는 방법

복구 중 또는 chroot에서 올바른 보안 레이블을 적용하는 방법

별도의 시스템(즉, 파일 시스템이 원래 설치되어 사용된 시스템과 다를 수 있는 시스템)에서 파일 시스템을 복원할 때 복원되는 파일에 올바른 보안 레이블을 적용하고 싶습니다.

이 쿼리에는 여러 측면이 있습니다.

  1. 가능하다면 각 파일에 올바른 태그를 적용하고 싶습니다.~처럼복원을 수행합니다(먼저 복원한 다음 SELinux 도구를 사용하여 개별적으로 태그를 적용하는 대신).

  2. 복원 중인 운영 체제는 복원 중인 파일 시스템을 원래 호스팅했던 운영 체제와 다를 수 있습니다.

  3. (1)이 가능하다면 어떻게든 복구 도구를 복구 OS 기본값이 아닌 다른 파일 컨텍스트 세트(예: /etc/selinux/targeted/contexts/files/file_contexts)로 지정하거나 보안 컨텍스트를 무시할 수 있습니다. 아카이브 관련 정보와 연결됩니다. (5)도 참조하세요.

  4. (2)와 마찬가지로 복구 OS는 대상 OS와 얼마나 "다릅니까"? 즉, 다른 커널 버전(예: 복구 OS의 경우 Linux 2.6, 대상 OS의 경우 4.4), 다른 파일 시스템 또는 다른 사용자 공간(예: libc 및 selinux 도구)이 어떤 시점에서 작업을 수행합니까? 차이점? "교차 버전" 복구에 적용되는 경험적 규칙이 있습니까(예: API/ABI는 운영 체제의 한 주요 버전에서 다른 주요 버전으로의 보장 및 알아야 할 전방/하위 호환성 문제).

  5. 기존 UNIX 권한, 파일 소유권 및 확장된 파일 속성을 보존하려는 것처럼 복원되는 파일의 원래 보안 컨텍스트를 보존하려고 할 수도 있습니다. 많은 백업 도구[1]는 파일 소유권을 포함할 수 있지만 대부분은 보안 컨텍스트를 보존하기 위한 확장 기능이 없을 것입니다(따라서 복구 중에 컨텍스트를 더 쉽게 복원할 수 있음). 어쩌면 일부가 있을 수도 있습니다. 보안 컨텍스트는 아카이브에 포함될 필요가 없습니다. 아카이브 자체와 함께 저장할 수 있는 하나 이상의 파일에 "대역 외"로 저장할 수 있습니다.

이 질문은 주로 SELinux 구현에 초점을 맞춰 질문되지만 일반적으로 다른 보안 프레임워크(예: MAC 및 Capsicum)에도 적용 가능합니다. 다른 보안 프레임워크에 적용되는 관련 정보도 도움이 됩니다.

이 질문은 파일 시스템 복원과도 관련이 있지만 일반적으로 파일 시스템일 필요는 없는 백업 이미지에서 복원하는 데 적용됩니다. 파일 시스템의 일부인 파일 계층일 수도 있습니다. 백업 도구마다 아카이브 내용에 대한 일부 확장 정보를 저장(및 추출)하는 기능이 다르기 때문에 이러한 구별이 중요할 때도 있습니다.

[1] 이 문제는 dump(8)/restore(8) 도구에도 적용되지만 tar(1) 및 libarchive(3) 기반 옵션과 같은 다른 도구에도 적용됩니다.

최신 RPM 형식은 보안 정책 정보 내장을 일부 지원합니다. 실제로 일반적인 백업 도구가 아니기 때문에 자세히 살펴보지는 않았습니다. 백업에 RPM을 사용해야 할까요? </농담>

고쳐 쓰다: selinux 컨텍스트가 올바르게 정의되어 있지만 호스트의 selinux 컨텍스트(chroot 외부)가 다른 chroot에서 복원을 시도하면 <chroot_dir>/etc/selinux문제가 해결되지 않습니다. 예를 들어 호스트 환경이 CentOS 6인 경우 CentOS 7 chroot(/mnt)에서 CentOS 7 파일의 컨텍스트를 설정하려고 하면 실패합니다.

sudo chroot /mnt chcon -v -v system_u:object_r:vmtools_unconfined_exec_t /etc/vmware-tools changing security context of '/etc/vmware-tools'
chcon: failed to change context of '/etc/vmware-tools' to 'system_u:object_r:vmtools_unconfined_exec_t': Invalid argument

관련 정보