분석과탐구

웹서버 권한

씨알메리 2025. 3. 25. 13:37

1. 개요

웹서버 권한을 보면 644, 600이 보이는데, 왜 이런 권한을 사용하는지 알아본다

2. 644, 600 권한의 의미

644 권한은 rw | r | r 권한으로 사용자는 rw, 그룹은 r, other는 r인 권한이다. 실행은 없는 권한이다. 600은 이것보다 더 강력한 권한으로 그룹과 other는 읽기조차 못한다. 이러한 권한의 주요 특징은 다음과 같다.

  • 보안(실행을 하지 못함)
  • 필요 최소의 권한(목적에 맞는)

 

644 권한이 들어간 파일은 주로 html, css, js로 공개적으로 읽을 수 있는 파일들이다.

600 권한이 들어간 파일은 소유자만 읽고 쓸수있는 설정 파일, 비밀 키 등이다.

3. 웹서버에서 644, 600 권한을 사용하는 이유

644 권한

웹 서버는 클라이언트에 콘텐츠를 제공해야하므로, 웹서버 프로세스가 파일을 읽을 수 있어야 한다.

  • 파일의 소유자는 파일을 작성하고 수정한다
  • 웹서버 프로세스는 오로지 읽기만 한다.

 

쓰기 권한이 있다면, 악의적 사용자에 의하여 파일이 훼손될 수 있다.(put으로 덮어쓰기 등)

 

600 권한

데이터베이스 비밀번호, api 키 같은 민감한 번호가 외부에 노출되지 않도록 보호

4. 웹서버는 group이나 other로 취급되나?

대부분의 웹서버(Apache, nginx)는 보안을 위해 특정 사용자, 그룹으로 지정되어 실행된다.

  • Apache: www-data (Ubuntu/Debian), apache (RHEL/CentOS)
  • Nginx: www-data (Ubuntu), nginx (CentOS)

 

웹서버 프로세스를 www-data:www-data로 실행한다면, 아래 파일에 대하여 group으로 접근 제어됨.

-rw-r--r-- 1 user www-data 1234 Nov 28 10:00 index.html

 

어떤 유저, 어떤 그룹으로 실행하지는 설정파일에서 제어가능

// 아파치
# /etc/apache2/apache2.conf (Debian/Ubuntu)
# /etc/httpd/conf/httpd.conf (CentOS/RHEL)
User www-data
Group www-data

// nginx
# /etc/nginx/nginx.conf
user www-data;