Web Servers

Apache에 chmod 6775 권한 부여하는 방법과 보안상의 주의사항

midworker 2025. 5. 13. 20:54
반응형

Apache에 chmod 6775 권한 부여하는 방법과 보안상의 주의사항

실제 운영 환경에서는 일반 사용자 계정으로 Apache를 실행해야 할 때가 있습니다.
이 때 1024 이하 포트(예: 80, 443)를 사용하려면 루트 권한이 필요하지만, 실무에서는 이를 우회하기 위해 Apache 실행 파일에 chmod 6775를 부여하는 방식이 종종 사용됩니다.

이 글에서는 chmod 6775 설정 방법, 실무에서 쓰는 이유, 그리고 보안상의 위험성 및 대안까지 함께 설명합니다.


✅ 1. chmod 6775란?

sudo chmod 6775 /usr/sbin/httpd

이 명령은 다음과 같은 권한을 Apache 실행 파일에 부여합니다:

  • 6 = setuid + setgid + rwx → 실행 시 파일의 소유자(root) 권한으로 동작
  • 7 = 그룹 rwx
  • 5 = 다른 사용자 r-x

즉, 일반 사용자가 이 바이너리를 실행하면 루트 권한으로 httpd가 실행됩니다.


✅ 2. 실무에서 사용하는 이유

  • WAS와 Apache를 동일 계정에서 관리하려는 요구가 있을 때
  • CI/CD 자동화된 환경에서 루트 권한 없이 httpd 기동/중지 필요
  • 테스트 서버나 사내망 내부 시스템에서 운영 단순화를 위해

실제 사례:

  • /usr/sbin/httpdchmod 6775를 주고 소유자 root, 그룹 webadmin으로 변경
  • webadmin 그룹 사용자들이 포트 80에서 Apache를 직접 실행 가능

⚠️ 3. 보안상의 위험성

문제 설명
권한 상승 일반 사용자가 root 권한으로 Apache를 실행 가능해짐
서비스 공격 노출 외부 요청을 받는 Apache는 취약점이 생기면 root 전체 권한을 뺏길 수 있음
감사 시스템 탐지 보안 솔루션, SELinux, AppArmor 등이 setuid 실행을 위험하게 간주
정책 위반 금융/공공기관, 보안 인증 시스템에서 허용되지 않음

✅ 4. 최소한의 안전장치

  • 실행 파일 소유자: root, 그룹: webadmin 등으로 제한
  • 실행 권한을 그룹으로만 허용 (다른 사용자 r-x로 제한)
  • sudo를 통해 루트만 실행 가능하도록 wrapper 스크립트 제공
  • SELinux 정책 조정 또는 audit 설정 통해 로그 모니터링
# 예: 소유자 및 그룹 설정
sudo chown root:webadmin /usr/sbin/httpd
sudo chmod 6775 /usr/sbin/httpd

✅ 5. 안전한 대안 (추천)

목적 대안
포트 80 사용 setcap 'cap_net_bind_service=+ep' /usr/sbin/httpd
일반 사용자 실행 1024 이상 포트에서 실행 후 포트 포워딩 사용
운영 통제 systemd 유닛 파일에서 루트 → 일반 사용자 전환 설정
프록시 구조 Nginx를 루트로 실행, Apache는 고포트 백엔드로 운영

✅ 결론

chmod 6775실무에서 빠르게 해결하려는 방식으로 사용되곤 하지만, 루트 권한이 일반 사용자에게 열려 있다는 점에서 보안 리스크가 매우 큽니다.
만약 사용해야 한다면 반드시 최소 권한 원칙(Least Privilege)을 지켜서 설정하고, 장기적으로는 setcap, 포트 포워딩, 프록시 기반 구조로 전환하는 것이 바람직합니다.

반응형