본문 바로가기
IT 모바일 Gear Up

리눅스 Root 비밀번호 초기화 변경 가이드 [CentOS 8, 우분투]

by sk2nd 2025. 6. 30.
반응형

CentOS 7, 우분투, 리눅스 Root 비밀번호 초기화·변경 가이드

리눅스 서버를 운용하다 보면 root 비밀번호를 잊거나, 보안을 위해 주기적으로 비밀번호를 변경해야 하는 상황이 발생합니다. 특히 업무용 서버의 경우 서비스 중단 시간을 최소화하면서 안전하게 작업해야 하므로, 배포판별 차이를 정확히 이해하고 절차를 숙지하는 것이 필수입니다. 이 글에서는 CentOS 8, 우분투(데스크톱 및 서버), 그리고 기타 범용 리눅스 배포판에서 root 비밀번호를 초기화하거나 변경하는 방법을 단계별로 정리합니다. 실습 전 미리 준비해야 할 사항과 주의할 점까지 함께 다루어, 예상치 못한 장애를 예방하고 효율적으로 운영 환경을 유지하실 수 있을 것입니다.

리눅스 root 비밀번호 관리의 중요성

리눅스 root 계정은 리눅스 시스템의 최상위 권한을 보유하는 슈퍼유저입니다. 관리자 암호가 유출되면 시스템 전체가 위험에 노출되므로,

  • 비밀번호 주기 변경
  • 복잡도 정책 준수
  • 다중 인증(MFA) 적용
  • 필요 시 sudo만 사용해 root 로그인을 제한
    등의 정책이 필수입니다. 그러나 아무리 관리가 철저해도 분실·만료·설정 오류가 발생할 수 있기 때문에, 배포판별 복구 절차를 미리 실습해 두어야 서비스 중단을 최소화할 수 있습니다.

사전 점검: 위험 요소와 백업 전략

  1. 물리·콘솔 접근 필수: 원격 서버는 KVM 또는 IPMI 콘솔 기능이 있어야 합니다.
  2. 운영 중 서비스 영향: 재부팅이 필요하므로 운영 중인 애플리케이션의 세션 종료·데이터 손실 위험을 사전에 공지하세요.
  3. 파일시스템 백업: 중요한 설정 파일(/etc/ssh/sshd_config, 데이터베이스 디렉터리 등)을 백업해 두면 복구 실패 시 롤백이 쉽습니다.
  4. RAID·LVM 환경: 파티션 구조가 특수한 경우 마운트 지점 확인이 선행되어야 합니다.
  5. 암호화 볼륨(LUKS): 부팅 단계에서 추가 암호를 요구하므로, 키파일 또는 패스프레이즈를 준비하세요.

CentOS 8: GRUB 복구 모드로 리눅스 root 비밀번호 초기화

(1) 서버 재부팅 및 GRUB 화면 진입

  • 부팅 시 Press any key to enter the menu 메시지가 나타날 때 즉시 방향키를 눌러 GRUB 메뉴로 진입합니다.
  • 기본 커널 행을 선택한 뒤 e 키를 눌러 편집 모드로 들어갑니다.

(2) 시스템 루트 파티션 마운트

  • linux16 또는 linuxefi로 시작하는 줄 끝에 커서를 이동해 rd.break를 추가합니다.
  • Ctrl + X(또는 F10)로 부팅을 계속하면 Emergency Shell(initramfs)가 나타납니다.
  • 루트 파일시스템을 읽기-쓰기 모드로 전환합니다.
  • switch_root:/# mount -o remount,rw /sysroot switch_root:/# chroot /sysroot

(3) passwd 명령으로 새 비밀번호 설정

  • 이제 새 환경에서 비밀번호를 변경합니다.복잡도 규칙(대소문자, 숫자, 특수문자 1개 이상) 충족 여부를 확인합니다.
  • sh-4.2# passwd root
  • SELinux 레이블을 수정하지 않으면 이후 로그인에 실패할 수 있으므로 touch /.autorelabel을 실행해 부팅 시 자동 레이블링이 진행되게 합니다.
  • sh-4.2# touch /.autorelabel sh-4.2# exit sh-4.2# exit # 두 번 exit 후 재부팅
  • 재부팅이 완료되면 새 비밀번호로 root 로그인하여 정상 동작을 확인합니다.

우분투: recovery 모드와 init 프롬프트 활용

(1) Advanced options 진입

  • 재부팅 중 GRUB 화면에서 사용하는 커널 행의 Advanced options for Ubuntu를 선택합니다.
  • recovery 모드가 붙은 커널을 선택하면 여러 복구 메뉴가 나타납니다.

(2) root 쉘 드롭 후 비밀번호 재설정

  • 메뉴 중 root - Drop to root shell prompt를 선택합니다. 파일시스템이 기본적으로 읽기 전용으로 마운트되어 있으므로 아래 명령으로 쓰기 모드로 변경합니다.
  • root@hostname:~# mount -o remount,rw /
  • passwd 명령으로 root 비밀번호를 변경합니다.
  • root@hostname:~# passwd root
  • 클라우드 이미지(EC2·DigitalOcean 등)에서 PermitRootLogin이 기본적으로 prohibit-password 또는 no일 수 있습니다. 필요 시 /etc/ssh/sshd_config를 편집해 yes 또는 without-password로 수정 후 systemctl restart ssh로 적용합니다. 실 서비스에서는 보안상 sudo 사용을 권장합니다.
  • 모든 작업이 끝났다면 reboot로 시스템을 재시작하고 새 비밀번호를 시험합니다.

Live USB·Rescue ISO를 이용한 공통 절차

물리 서버나 GRUB 암호로 보호된 환경에서는 Live CD/USB로 부팅해야 할 때가 많습니다.

  1. 부트 미디어 준비: 배포판과 동일 아키텍처의 Rescue ISO를 제작(예: centos-rescue.iso, ubuntu-22.04-live-server.iso).
  2. 부팅 후 파티션 탐색: lsblk·blkid 명령으로 대상 루트 파티션을 확인합니다.
  3. chroot 환경 구성
  4. sudo mount /dev/mapper/centos-root /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt passwd root exit
  5. 재부팅 및 테스트: 부트 미디어 분리 후 정상 부팅을 확인합니다.

비밀번호 변경 자동화: cloud-init·Ansible 예시

대규모 인프라에서는 수동으로 각 서버에 접근하기 어렵습니다.

  • cloud-init: 배포 시 chpasswd 모듈을 활용해 초기 root 비밀번호를 스크립트로 정의할 수 있습니다.
  • #cloud-config chpasswd: list: | root:NewS3cure!Pass expire: False
  • Ansible: ansible.builtin.user 모듈로 SSH 키 또는 비밀번호를 일괄 변경할 수 있습니다.
  • - name: Set root password user: name: root password: "{{ 'NewS3cure!Pass' | password_hash('sha512') }}"

보안 강화: 다중 인증·sudo 최소 권한 원칙

  1. MFA 적용: Google Authenticator·OTP token을 PAM 모듈에 연동.
  2. sudo rule 최소화: /etc/sudoers.d/로 세분화해 특정 명령만 허용.
  3. 패스워드 만료 정책: chage -M 90 -W 7 root로 90일 주기, 만료 7일 전 경고.
  4. 로그 모니터링: faillock, auditd로 로그인 실패·권한 상승을 실시간 탐지.

결론 및 체크리스트

  • 사전 백업: OS·애플리케이션 설정, 중요한 데이터
  • 물리 콘솔 확보: 원격 서버는 IPMI/KVM over IP 준비
  • 배포판별 절차 숙지: CentOS 7(rd.break)·우분투(recovery)·Live USB 공통 방식
  • 보안 정책 재확인: 비밀번호 복잡도, 만료, sudo 최소 권한, MFA
  • 테스트 환경 실습: 운영 서버에 적용 전 가상머신에서 충분히 검증

위 단계들을 순서대로 진행하면 비상 상황에서도 빠르게 root 권한을 복구하고, 시스템 가용성과 보안을 동시에 확보할 수 있습니다. 평소 문서화와 주기적인 복습을 통해 실제 장애 시 스트레스를 최소화하시길 바랍니다.


반응형