SELinux가 손상되었나요? 이제 SELinux가 활성화된 CentOS 7을 부팅할 수 없습니다.

SELinux가 손상되었나요? 이제 SELinux가 활성화된 CentOS 7을 부팅할 수 없습니다.

최근 우리는 정전 및 동시 백업 발전기 장애를 경험했는데, 이는 UPS가 방전되면서 모든 서버를 안전하게 종료해야 할 정도로 심각했습니다.

하나의 CentOS 7.4.1708 서버 백업을 가져오자(몇 달 만에 처음으로 "재부팅"되지만 CentOS 업데이트 측면에서는 최신 상태임) SELinux가 활성화된 상태에서 부팅할 수 없는 벽에 부딪혔습니다. 나는 광범위하게 조사했지만 다른 사람이 이것을 경험했다는 증거를 찾을 수 없는 것 같으며 다음에 무엇을 시도해야 할지 모릅니다. 여기 누군가가 몇 가지 아이디어를 제시할 수 있기를 바랍니다.

타임라인은 다음과 같습니다.

  1. 부팅됨
  2. 여러 서비스가 시작되지 않아 부팅에 실패했습니다.

    FAILED Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
    FAILED Failed to start Authorization Manager.
    See 'systemctl status polkit.service' for details.
    DEPEND Dependency failed for Dynamic System Tuning Daemon.
    
  3. 메시지를 보낸 사람이것selinux=0grub 으로 재부팅했습니다.

  4. 이 방법은 작동하고 시스템을 실행하게 하지만 SELinux가 비활성화된 경우 임시 해결 방법 외에는 실행 가능하지 않습니다.

  5. 팔로우됨온라인에서 찾은 조언:

    sudo yum reinstall selinux-policy-targeted
    
  6. 재부팅됨

  7. 다음 문제로 인해 부팅에 실패했습니다.

    Failed to load SELinux policy, freezing
    
  8. selinux=0다시 grub 으로 재부팅했습니다 .

  9. 설립하다더 많은 조언그래서 수행 :

    sudo yum reinstall selinux-policy-targeted
    sudo touch /.autorelabel
    

    그리고 허용 설정/etc/selinux/config

  10. 재부팅됨

  11. 다음 배너를 볼 수 있습니다.

    Warning -- SELinux targeted policy relabel is required.
    Relabeling could take a very long time, depending on file
    system size and speed of hard drives.
    

    그러나 실제로 레이블을 다시 지정하는 대신 시스템이 즉시 재부팅되었습니다. 너무 빨라서 다른 출력을 볼 수 없었습니다.

  12. 원래 오류로 인해 부팅이 다시 실패했습니다.

    그럼 우리는 다시 여기로 돌아왔습니다. 그리고 그것이 여전히 존재한다는 것을 알 수 있는데 /.autorelabel, 이는 레이블 재지정이 발생하지 않았음을 시사합니다. 하지만 우리가 오류가 있는 원점으로 돌아왔다는 것이 나에게는 놀랍습니다.

    또한 SELinux는 여전히 시행 모드가 아닌 허용 모드에 있다는 점을 기억하세요.

최종 결과는 허용 모드나 적용 모드에서 SELinux를 활성화할 수 없는 상태에서 멈추는 것입니다. 이는 괜찮지 않습니다.

어떻게 진행해야 하나요?

답변1

tl;dr:모든 것이 잘못된 값으로 나타났습니다 SELINUXTYPE.

유효한 값이 있는지 확인한 SELINUXTYPE다음 필요한 경우 레이블을 다시 지정하고(예: 진단 중에 SELinux를 끄고 부팅한 경우) 재부팅하고 샴페인을 엽니다.


어떤 이유에서인지, 어느 시점에 /etc/selinux/config설정을 획득했습니다 SELINUXTYPE=permissive.

이는 해당 매개변수에 대한 유효한 옵션이 아니며 Dbus, 로그인 서비스 및 권한 부여 관리자가 실패한 이유에 따라 값을 "기본값"으로 대체하는 것으로 보입니다.

Failed to open "/etc/selinux/default/contexts/dbus_contexts": No such file or directory

selinux-policy-defaultCentOS 7에는 패키지 가 없기 때문에 이것이 번거롭습니다 (예를 들어 Debian에서는 Jessie에서 의도적으로 제거되었습니다.그래서 나는 여기서도 마찬가지라고 생각합니다).

이것이 또한 restorecon(단일 사용자 모드 및 에 의해 도달한 쉘에서 init=/sbin/sh)을 사용하여 파일 시스템의 레이블을 재지정하려는 시도가 당황스러운 "해당 파일 또는 디렉토리 없음" 출력을 초래하고 getenforce뚜렷한 이유 없이 여전히 "비활성화됨"을 표시하는 이유라고 생각합니다. .

selinux-policy-targeted해당 항목 으로 전환하려면~이다설치한 후 구성을 다음 SELINUXTYPE=targeted과 같이 수정한 다음(계속 그랬어야 한다고 생각함) enforcing=0 autorelabel=1.

그런 다음 재 라벨링이 발생했습니다. 그 후 시스템이 정상적으로 부팅되었습니다.

답변2

다음을 사용하여 파일 시스템의 레이블을 다시 지정할 수 있어야 합니다.

# restorecon -rv /

비활성화 모드에서 작동하는지 100% 확신할 수 없습니다. 허용/시행 모드에 있어야 할 수도 있습니다.

selinux를 활성화한 상태로 부팅할 수 있습니까 init=/bin/sh?

답변3

복구 모드로 부팅한 다음 루트 쉘 터미널을 사용하고 비활성화=1을 입력한 다음 재부팅하지 않고 다시 시작한 다음 구성 파일에서 비활성화해야 합니다. 그런 다음 selinux를 제거한 다음 다시 시작하십시오.

답변4

SELinuxtype이 올바르게 설정된 경우에도 SELinux 정책으로 인해 동일한 문제가 발생할 수 있는 경우가 있습니다. 부팅 화면에 다음 줄이 표시됩니다.
Failed to load SELinux policy, freezing
또 다른 해결 방법으로 이 문제를 해결하려면 permissive먼저 SELinux를 모드 로 설정한
다음 시스템을 재부팅하면 재부팅 화면에서 SELinux 생성 정책을 볼 수 있습니다. 그 후에는 문제 없이 다시 적용 모드로 설정할 수 있습니다.

문제를 해결하기 전에 정책 개발 패키지를 확인할 수 있습니다.
sudo yum install policycoreutils-devel
그리고 아마도 설치할 때 오류가 발생할 수도 있습니다. 이는 대부분 충돌 패키지로 인해 발생하며 Red Hat 8에서도 여전히 나타납니다.

관련 정보