[Linux] Single User Mode 부팅 방법

Asher·어제

Linux

목록 보기
2/2
post-thumbnail

0. 도입

리눅스를 사용하며 root 비밀번호를 잃어버리거나 인스턴스(VM)이 정상적으로 부팅이 되지 않을 때가 있습니다. 저 역시 최근 PAM 정책 설정을 Ansible로 진행하다가 Script 오타로 인해 SSH 접근이 막혀 곤란했던 경험이 있습니다.
이런 곤란한 경험을 조금이라도 줄여주는 Single User Mode 부팅 방법을 설명드리겠습니다.

1. Single User Mode란?

  • Single User Mode?

    • 한 명의 사용자(root)만 접속 가능한 최소 환경으로 OS를 부팅하는 방식
    • 네트워크, 대부분의 서비스, 데몬을 띄우지 않음
    • 윈도우의 안전모드와 비슷한 방식
    • 리눅스의 경우 GRUB라는 부트로더를 통해 부팅 진행
    • runlevel 1로 실행
  • 사용 사례?

    • root 비밀번호 분실
    • 파일 시스템(fstab 등) 오류 복구
    • 네트워크 없이 로컬에서 강제 복구

2. GRUB(부트로더)란?

간단하게 부트로더 및 서버 부팅 흐름에 대해 설명하겠습니다
(알면 좋음)

  • 서버 부팅 흐름

위에서 보이는 그림 중 Boot Loader에 대해 알아보고 가겠습니다~!

  • GRUB?
    • Linux에서 가장 많이 쓰이는 부트로더
    • OS/커널 로딩
      • 디스크에서 Linux 커널과 initramfs(Initial RAM File System)를 직접 읽어 RAM에 적재
    • 커널 실행 후 제어권을 커널에 넘김

3. Single Mode 부팅 방법

위의 내용들을 잘 생각 하면서, Single Mode로 부팅하는 방법을 알아보겠습니다.

3.1 GRUB 진입

진입하는 방법은 OS에 따라 다르지만
ctrl + X, ESC, Shift 키 등 다양합니다.
전원을 넣은 즉시 연속적으로 클릭하여 GRUB에 진입합니다.

3.2 GRUB Kernel Parameter 수정

부팅 할 OS 선택 후 E 키를 눌러 커널 진입

화면을 내리다 보면 해당 파라메터들이 보입니다.

3.3 시스템 재시작

ro 부분을 rw init=/bin/bash로 변경 이후 Ctrl + X를 눌러 재부팅을 진행해 줍니다.

재부팅이 된다면 아래와 같이 Single Mode에서 패스워드 재시작 및 파일시스템 재마운트를 진행해주시면 됩니다.

3.4 간단한 방법(Recovery Mode)


4. GRUB 보안

앞서 말씀드린 방법을 사용하여 AWS, GCP 등 CSP 계정을 탈취 당하였을때 서버 내부의 정보들이 해킹당할 위험이 있을텐데요 이 위험을 방지하기 위해 GRUB에 암호를 설정하여
비인가 사용자의 접근이나 커널 매개변수 조작을 방지할 수 있습니다.

4.1 GRUB 비밀번호 생성

sudo grub-mkpasswd-pbkdf2

패스워드 입력 후 결과 값을 복사해둡니다.

4.2 GRUB 커스텀 설정 파일 수정

sudo vi /etc/grub.d/40_custom

set superusers="admin"
password_pbkdf2 admin [비밀번호_해시]

4.3 설정 업데이트 및 적용

sudo update-grub

4.4 설정 적용 확인

앞서 말씀드린대로 다시 재부팅을 실행하고 GRUB에 진입하려고 할 때 아래와 같이 username과 password를 입력하는 창이 나오게 됩니다.

4.5 실무 적용

만약 위의 설정처럼 적용하게 된다면 서버가 오류로 인해 재부팅이 될 경우 GRUB 화면에서 멈춰 Kernel을 로드하지 못해 서버가 정상적으로 재부팅 되지 않을 것입니;다.
실무에서는 부팅 메뉴 편집 제한을 통해 GRUB 보안을 강화합니다.

  • 설정 파일 수정

    sudo vi /etc/grub.d/10_linux

    # 수정 전
    CLASS="--class gnu-linux ..."
    
    # 수정 후
    CLASS="--class gnu-linux --class gnu --class os --unrestricted"

  • 설정 업데이트 및 적용

    sudo update-grub

해당 설정을 적용하게 된다면, GRUB 수정을 진행하려고 할 때 아까와 같이 super user의 ID와 PW를 요구하게 됩니다.

profile
System Engineer의 발전기록

2개의 댓글

comment-user-thumbnail
어제

지금 매우 필요한 상황인데 감사합니다!!

1개의 답글