다음을 통해 공유


SELinux 구성 오류로 인해 Azure Linux Virtual Machines에 대한 SSH 연결 실패

적용 대상: ✔️ Linux VM

참고 항목

이 문서에서 참조하는 CentOS는 Linux 배포이며 EOL(수명 종료)에 도달합니다. 사용 및 계획을 적절하게 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조 하세요.

이 문서에서는 SELinux 잘못 구성으로 인해 Azure VM(가상 머신)에 대한 SSH(Secure Shell) 연결이 실패하는 문제에 대한 솔루션을 제공합니다.

배경

Unix 보안 모델은 DAC(임의 액세스 제어)를 기반으로 합니다. SELinux(보안 강화 Linux)는 커널 모듈 및 사용자 공간 도구를 사용하여 Linux용 MAC(필수 액세스 제어)를 구현합니다. MAC는 리소스 액세스를 위한 보다 제어된 환경을 제공하고 루트 사용자가 OS(운영 체제)의 모든 리소스에 제한 없이 액세스할 수 있는 기능을 제거합니다. 또한 기존 Unix 보안 모델을 활용하여 여러 종류의 보안 위험을 완화합니다.

다양한 배포판에는 기본 제공 SELinux가 포함되거나 커널 지원을 활성화하고 사용자 공간 도구를 설치하는 간단한 방법을 제공합니다. 자세한 내용은 주요 Linux 공급자 중 일부의 다음 SELinux 문서를 참조하세요.

Azure의 Red Hat 기반 이미지는 SELinux를 사용하도록 설정된 상태로 제공됩니다. 다른 배포는 그렇지 않습니다. Ubuntu에서 SELinux를 사용하는 경우 이 배포에서 매핑되지 않은 상태에 대한 경고가 있습니다. Ubuntu는 AppArmor라는 MAC용 다른 솔루션을 구현합니다.

필수 조건

Linux VM에서 직렬 콘솔 이 활성화되고 작동하는지 확인합니다.

증상

SELinux가 잘못 구성되면 OS가 SELinux 정책을 로드할 수 없게 되어 OS가 부팅을 완료하지 못할 수 있습니다.

Azure Portal 또는 Azure CLI를 통해 직렬 콘솔을 확인합니다. 다음 메시지가 출력의 끝 부분에 나타납니다.

직렬 콘솔 로그의 'SELinux 정책 로드 실패' 오류를 보여 주는 스크린샷

SELinux 구성은 시스템 관리자가 관리합니다. 시스템 관리자는 다음 방법 중 하나를 사용하여 이 문제를 해결할 수 있습니다.

솔루션 1: 직렬 콘솔을 사용하여 SELinux가 꺼진 VM 시작

  1. Azure 직렬 콘솔에서 VM 다시 시작(하드)트리거합니다.

  2. ESC 키를 사용하여 GRUB 메뉴에서 VM을 중단합니다.

  3. E를 선택하여 GRUB 메뉴에서 첫 번째 커널 항목을 수정합니다.

  4. 줄로 linux16 이동하여 SELinux를 일시적으로 사용하지 않도록 설정하려면 추가 selinux=0 합니다.

    GRUB 메뉴 수준에서 부팅을 중단하여 SELinux를 일시적으로 사용하지 않도록 설정하는 프로세스를 보여 주는 애니메이션 GIF입니다.

  5. 에서 SELinux 구성의 유효성을 검사하고 수정합니다 /etc/selinux/config.

    예를 들어 한 가지 일반적인 실수는 키를 키에 사용되는 값 중 하나로 설정하는 SELINUXTYPE 것입니다 SELINUX . 예제는 다음 스크린샷을 참조하세요.

    SELINUXTYPE 키가 비활성화로 잘못 설정되었음을 보여 주는 스크린샷.

    마지막 줄을 확인합니다 SELINUXTYPE=disabled. SELINUXTYPE 키를 설정해야 targetedminimum합니다. 또는 mls 키를 설정하지 disabled않아야 합니다. 다음 스크린샷은 올바른 구성을 보여줍니다.

    /etc/selinux/config의 올바른 구성을 보여 주는 스크린샷

해결 방법 2: 복구 VM을 사용하여 SELinux 구성 오류 복구

VM 의 최근 백업이 있는 경우 백업 에서 VM을 복원하여 구성 문제를 해결합니다.

  1. Azure 직렬 콘솔특정 VM에서 작동하지 않거나 구독의 옵션이 아닌 경우 복구/복구 VM을 사용하여 이 문제를 해결합니다. vm 복구 명령을 사용하여 영향을 받는 VM의 OS 디스크 복사본이 연결된 복구 VM을 만듭니다. 크로트를 사용하여 복구 VM에 OS 파일 시스템의 복사본을 탑재합니다.

    참고 항목

    또는 Azure Portal 사용하여 구조 VM을 수동으로 만들 수 있습니다. 자자세한 내용은 Azure Portal을 사용하여 OS 디스크를 복구 VM에 연결함으로써 Linux VM 문제 해결을 참조하세요.

  2. 에서 SELinux 구성의 유효성을 검사하고 수정합니다 /etc/selinux/config. 이렇게 하려면 솔루션 1: 직렬 콘솔에서 SELinux가 꺼진 VM 시작의 5단계를 수행합니다.

  3. SELinux 구성이 수정된 후 다음 작업을 수행합니다.

    1. 크로트를 종료합니다.
    2. 복구/복구 VM에서 파일 시스템의 복사본을 분리합니다.
    3. az vm repair restore 이 명령을 실행하여 복구된 OS 디스크를 VM의 원래 OS 디스크로 교환합니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구의 5 단계를 참조하세요.
    4. Azure 직렬 콘솔을 살펴보거나 VM에 연결하여 VM이 부팅할 수 있는지 확인합니다.

다음 단계

SELinux 잘못된 구성으로 인해 문제가 발생하는 경우 추가 문제 해결 옵션은 Azure Linux Virtual Machines 부팅 오류 문제를 참조하세요.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.