응용 프로그램이 Apache에서 실행되는 경우 (절반 이상 인터넷상의 웹 사이트), Apache 구성에서 SuExec을 활성화하는 것이 좋습니다. SuExec 는 스크립트를 웹 서버 사용자로 실행하지 않고 스크립트를 소유 한 사용자로 실행되도록하는 Apache와 함께 제공되는 메커니즘입니다.
비 SuExec 환경에서 모든 스크립트는 웹 서버와 동일한 사용자 ID로 실행됩니다. 불행히도 하나의 취약한 스크립트는 악의적 인 사용자에게 동일한 서버에서 호스팅되는 다른 사이트에서 실행되는 스크립트를 포함하여 전체 웹 서버에 대한 백도어 액세스를 제공 할 수 있습니다.
SuExec은 웹 응용 프로그램을 자신의 영역으로 제한하고 웹 서버의 사용자 ID가 아닌 소유자의 사용자 ID로 실행함으로써이 문제를 완화하려고 시도합니다. 예를 들어이 스크립트는 jsmith:
/ home / ~ jsmith / public_html / scripts / please_hack_me의 사용자 ID로 실행됩니다. php
악의적 인 사용자가이 스크립트를 악용 할 수 있지만 jsmith 사용자가 사용할 수있는 파일 및 프로그램에만 액세스 할 수 있습니다. 서버상의 다른 모든 사용자는 jsmith의 안전하지 않은 스크립트로부터 보호됩니다.
가상 호스트, 또는 물리적으로 동일한 웹 서버에있는 여러 개의 독립적 인 웹 사이트에서 SuExec을 제대로 작동시키는 것이 까다로울 수 있습니다. SuExec은 웹 서버의 문서 루트에있는 스크립트를 실행하도록 설계되었습니다. 대부분의 가상 호스트는 각 개별 웹 사이트에 자체 문서 루트를 제공하고 각 사이트의 문서 루트가 웹 서버의 문서 루트 아래에 있지 않도록 설정됩니다. 이 제한을 피하기 위해 시스템 관리자는 각 가상 호스트의 문서 루트를 Apache 구성 파일의 웹 서버 문서 루트 변수에 추가해야합니다.매우 간단한 웹 서버의 경우 SuExec은 한 가지 안전하지 않은 응용 프로그램을 다른 모든 곳을 짓밟지 않도록 유지할 수 있습니다. 그러나 가상 서버, 미리 컴파일 된 모듈 및 수십 또는 수백 명의 사용자가있는보다 복잡한 환경에서는 좀 더 강력한 보안 모델이 필요합니다.