02. 클라우드 보안 공부/실습로그

✅ [실습로그] sudo 권한 설정 및 제한 실습 (sudoers, visudo)

taegi- 2025. 5. 5. 16:22

🎯 실습 목표

  • sudo 명령어를 통해 일반 사용자에게 루트 권한 일부를 위임하는 방법을 익힌다.
  • visudo 명령어를 사용하여 /etc/sudoers 파일을 안전하게 수정한다.
  • wheel 그룹을 활용한 권한 부여, 특정 명령만 허용하는 제한 설정도 실습한다.

🖥️ 실습 환경

  • 운영체제: Rocky Linux 9.5 CLI
  • 실습 계정: root, user01
  • 주요 파일: /etc/sudoers, /etc/group
  • 명령어: usermod -aG wheel, visudo, sudo, whoami

🧠 사전 개념 정리

용어설명
sudo 일반 사용자가 제한된 루트 권한을 사용하는 명령
visudo /etc/sudoers 파일을 검증하고 열 수 있는 안전한 편집기
wheel 그룹 sudo 사용 권한이 부여된 기본 그룹 (RHEL 계열)
 

⚙️ 실습 과정

1. sudo 권한 없는 상태 확인

user01 계정에서 다음 명령어 실행:

bash
복사편집
sudo whoami → user01 is not in the sudoers file. This incident will be reported.

→ 현재는 sudo 사용 권한 없음


2. user01을 wheel 그룹에 추가

nginx
복사편집
usermod -aG wheel user01

→ wheel 그룹은 기본적으로 /etc/sudoers에서 sudo 허용됨

변경 적용 위해 로그아웃 → 재로그인 필요


3. sudo 권한 정상 동작 확인

user01 로그인 후:

bash
복사편집
sudo whoami → root

→ sudo 사용 성공


4. sudoers 파일 직접 수정 실습 – visudo

nginx
복사편집
visudo

→ /etc/sudoers 파일이 열리며, 구문 오류 방지를 위해 전용 에디터 사용

기본 설정 예:

sql
복사편집
%wheel ALL=(ALL) ALL

→ wheel 그룹 사용자는 모든 명령어를 sudo로 실행 가능


5. 특정 사용자에게 특정 명령만 허용

visudo 마지막 줄에 다음 항목 추가:

pgsql
복사편집
user01 ALL=(ALL) NOPASSWD: /usr/sbin/systemctl restart httpd

→ user01은 비밀번호 입력 없이 Apache 재시작만 가능

테스트:

pgsql
복사편집
sudo /usr/sbin/systemctl restart httpd → 성공 sudo reboot → user01 is not allowed to execute this command

6. sudo 사용 기록 확인

nginx
복사편집
journalctl _COMM=sudo

→ sudo 사용 내역 로그 확인 가능

또는:

bash
복사편집
cat /var/log/secure | grep sudo

→ 모든 sudo 명령 기록 남음


✅ 결과 요약

작업명령어/설정설명
그룹 부여 usermod -aG wheel user01 wheel 그룹에 추가
sudo 권한 확인 sudo whoami 루트 권한 테스트
sudoers 편집 visudo 안전한 설정 변경
명령 제한 NOPASSWD: 명령 특정 명령만 허용
로그 확인 journalctl, /var/log/secure sudo 기록 확인
 

🔐 실무 시사점

  • 실무에선 모든 사용자가 root를 사용하는 것이 금지되어 있으며,
    sudo는 통제된 루트 권한 위임을 위한 표준 방식이다.
  • visudo를 사용하지 않고 sudoers 파일을 직접 수정할 경우,
    오타 하나로도 sudo 기능이 완전히 마비될 수 있다.
  • NOPASSWD 설정은 자동화 목적 외에는 남용을 피해야 하며,
    명령 단위 허용 정책을 잘 설계해야 보안성을 유지할 수 있다.
  • 실무에서는 sudo 로그 분석을 통해 권한 남용 여부를 감시하는 것도 중요하다.

🔜 앞으로의 목표

  • sudo 사용 이력을 기반으로 자동 감사 스크립트 구성 실습
  • Ansible, shell script 자동화 시 NOPASSWD 조건부 적용 실습
  • /etc/sudoers.d/ 디렉터리를 활용한 사용자별 설정 분리 실습 예정

💬 느낀 점

단순히 sudo가 루트 명령어를 허용하는 도구라고 생각했는데,
실제로는 권한을 나누고 통제하며 기록까지 남기는 중요한 보안 체계라는 걸 알게 됐다.
특히 실습 중에 허용되지 않은 명령을 실행해 보며,
“정책이 존재한다는 것”이 얼마나 큰 보안 방패가 되는지 체감할 수 있었다.