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

✅ [실습로그] 서비스 계정 분리 및 디렉터리 권한 제한 실습

taegi- 2025. 5. 4. 14:30

🎯 실습 목표

  • 리눅스 시스템에서 웹 서비스와 DB 서비스 계정을 분리하고,
    각 서비스 전용 디렉터리에 접근 권한을 엄격히 제한한다.
  • 일반 사용자가 /webdata, /dbdata 디렉터리에 접근하지 못하도록 설정하고,
    서비스 계정만 해당 디렉터리에 접근 가능하도록 보안성을 강화한다.

🖥️ 실습 환경

  • 운영체제: Rocky Linux 9.5 CLI
  • 계정 정보:
    • webuser: 웹 서비스 계정
    • dbuser: DB 서비스 계정
    • user01: 일반 사용자
  • 디렉터리:
    • /webdata: 웹 전용
    • /dbdata: DB 전용

⚙️ 실습 과정

1. 서비스 전용 계정 생성

nginx
복사편집
useradd webuser useradd dbuser

→ 웹과 DB 각각 별도의 계정으로 분리
→ /home/webuser, /home/dbuser 디렉터리 자동 생성됨


2. 서비스 전용 디렉터리 생성 및 권한 설정

bash
복사편집
mkdir /webdata /dbdata chown webuser:webuser /webdata chown dbuser:dbuser /dbdata chmod 700 /webdata chmod 700 /dbdata

→ 소유자만 접근 가능 (rwx------)


3. 일반 사용자 접근 제한 확인

user01 계정으로 전환 후 디렉터리 접근을 시도하였다:

bash
복사편집
su - user01 cd /webdata → Permission denied cd /dbdata → Permission denied

접근 차단 성공, “Permission denied” 메시지가 출력됨
→ 서비스 계정 외에는 디렉터리 접근이 불가함을 확인


4. 서비스 계정 접근 확인

각 계정에서 접근 테스트:

bash
복사편집
su - webuser cd /webdata → 정상 접근 su - dbuser cd /dbdata → 정상 접근

→ 해당 계정은 전용 디렉터리에 정상 접근 가능


✅ 결과 요약

계정디렉터리접근 결과
user01 /webdata 차단됨 (Permission denied)
user01 /dbdata 차단됨 (Permission denied)
webuser /webdata 접근 가능
dbuser /dbdata 접근 가능
 

🔐 실무 시사점

  • 시스템 보안의 기본은 역할 분리와 최소 권한 부여이다.
  • 서비스마다 전용 계정을 사용하고,
    서비스 전용 디렉터리를 독립적으로 운영함으로써
    사고 발생 시 피해를 최소화할 수 있다.
  • 예: 웹 해킹 발생 시에도 /dbdata에는 접근이 불가능하여 DB 탈취 방지 가능
  • /var/www, /var/lib/mysql 등 서비스 운영 디렉터리에도
    이와 동일한 방식의 접근 제한이 적용되어야 한다.

🔜 앞으로의 목표

  • setfacl을 이용한 서비스 계정 + 관리자 계정 이중 접근 허용 설정 실습 예정
  • systemd 서비스와 연계하여 서비스 계정이 실제로 사용되는 흐름 분석
  • /var/log/audit 기반 디렉터리 접근 추적 실습도 계획 중

💬 느낀 점

파일 하나라도 누가 보고 쓸 수 있느냐에 따라
시스템 전체의 보안 수준이 달라진다는 걸 실감했다.
특히 “Permission denied” 메시지를 실제로 확인하며,
불필요한 접근 차단이 실질적인 보안 조치임을 체험할 수 있었다.
단순한 계정 분리가 아닌, 디렉터리와 권한까지 설계하는 감각이 중요하다는 걸 배웠다.