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/httpd
에chmod 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
, 포트 포워딩, 프록시 기반 구조로 전환하는 것이 바람직합니다.
반응형