공유호스팅 보안 방법 성능 평가
초록
본 논문은 공유호스팅 환경에서 발생하는 사이트 간 권한 침해 문제를 해결하기 위한 다양한 격리 기술들을 조사하고, 각각의 보안 메커니즘이 시스템 자원에 미치는 영향을 실험적으로 비교한다. suEXEC·suPHP·CGI·FastCGI·mod_ruid2·mod_itk·컨테이너·가상화 등 8가지 대표 방식을 선정해 요청 처리량, 응답 시간, CPU·메모리 사용량을 측정하고, 보안 수준과 운영 복잡성을 종합적으로 평가한다. 실험 결과는 높은 보안성을 제공하는 방법일수록 오버헤드가 증가하지만, 최신 컨테이너 기반 격리와 mod_ruid2 같은 경량 모듈은 성능 저하를 최소화하면서 충분한 격리를 제공함을 보여준다.
상세 분석
논문은 먼저 공유호스팅의 기본 구조를 설명하고, 웹서버 프로세스가 모든 사이트의 스크립트를 동일한 UID·GID로 실행함으로써 발생하는 파일·데이터 접근 위험을 명확히 제시한다. 이를 해결하기 위한 전통적인 방법으로는 CGI 기반의 별도 프로세스 실행, suEXEC·suPHP와 같은 SUID 바이너리를 이용한 사용자 전환, 그리고 Apache 모듈인 mod_ruid2·mod_itk이 있다. 각각은 격리 수준과 구현 복잡도에서 차이를 보인다. 예를 들어 suEXEC은 요청당 프로세스 포크와 사용자 전환을 수행해 보안은 강화하지만, 빈번한 포크·exec로 인한 CPU 오버헤드가 크다. suPHP는 PHP 전용으로 동작해 스크립트 레벨에서 사용자 전환을 제공하지만, PHP 인터프리터 자체가 무거워 응답 시간이 늘어난다.
FastCGI는 지속적인 워커 프로세스를 유지해 포크 비용을 절감하면서도 개별 워커를 특정 UID로 실행해 격리를 제공한다. 그러나 워커 수와 연결 관리가 복잡해 설정 오류 시 메모리 누수가 발생할 수 있다. mod_ruid2와 mod_itk은 Apache 내부에서 요청마다 프로세스 UID를 전환해 경량 격리를 구현한다. 이들 모듈은 커널 수준의 setuid 호출만으로 동작하므로 오버헤드가 가장 낮으며, 기존 Apache 설정과의 호환성도 우수하다.
컨테이너 기반 방법(LXC, Docker)은 네임스페이스와 cgroup을 활용해 파일 시스템·네트워크·프로세스 격리를 제공한다. 논문은 Docker를 이용해 각 사이트를 독립적인 컨테이너 이미지로 배포하고, 호스트와 공유하는 리소스는 최소화하도록 설계하였다. 실험 결과, 컨테이너는 가상머신에 비해 메모리·CPU 효율이 2~3배 높으며, 격리 수준도 거의 동일함을 확인했다. 다만, 이미지 관리와 네트워크 프록시 설정이 추가적인 운영 부담을 만든다.
가상화(VPS) 방식은 하이퍼바이저가 전체 OS를 분리해 가장 강력한 격리를 제공하지만, 하드웨어 자원을 완전히 복제해야 하므로 비용이 크게 상승한다. 논문은 KVM 기반 VPS를 비교 대상으로 삼아, 동일한 하드웨어에서 4개의 VPS를 운영했을 때 전체 처리량이 물리 서버 대비 30% 감소함을 보고한다.
성능 측정은 ApacheBench와 wrk를 이용해 동시 연결 수 50, 100, 200에서 평균 응답 시간, 초당 요청 수(RPS), CPU 사용률, 메모리 사용량을 기록했다. 결과는 다음과 같다. 가장 낮은 오버헤드를 보인 것은 mod_ruid2(응답 시간 12 ms, RPS 850)였으며, suEXEC은 28 ms, 620 RPS로 뒤처졌다. FastCGI는 15 ms, 800 RPS로 중간 수준을 차지했고, Docker 컨테이너는 14 ms, 820 RPS로 경쟁력을 보였다. VPS는 30 ms, 580 RPS로 가장 큰 성능 저하를 보였다.
종합적으로, 논문은 보안 요구 수준과 운영 비용을 고려해 선택지를 제시한다. 고보안이 필요하고 예산이 충분하면 컨테이너 혹은 VPS를, 중간 수준 보안과 높은 성능이 요구될 경우 mod_ruid2·mod_itk을, 기존 PHP 환경을 그대로 유지하면서 최소한의 격리를 원한다면 suPHP·FastCGI를 권장한다.
댓글 및 학술 토론
Loading comments...
의견 남기기