Apache VirtualHosts와 같은 다양한 웹 사이트를 호스팅하는 웹 서버를 설정하고 있습니다. 이들 각각은 스크립트 (주로 PHP, possiblu 기타)를 실행할 수 있습니다.
내 질문은 이러한 VirtualHost를 서로 및 시스템의 나머지 부분에서 어떻게 분리합니까? 예를 들어 웹 사이트 X가 웹 사이트 Y의 구성이나 서버의 "비공개"파일을 읽는 것을 원하지 않습니다.
현재 여기에 설명 된 것처럼 FastCGI, PHP 및 SUExec으로 VirtualHosts를 설정했습니다 ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ), SUExec은 사용자가 자신이 아닌 다른 파일을 편집 / 실행하는 것을 방지합니다. 사용자는 여전히 구성 파일과 같은 민감한 정보를 읽을 수 있습니다.
서버의 모든 파일에 대한 UNIX 전역 읽기 권한을 제거하는 것이 위의 문제를 해결하기 때문에 생각했지만 서버 기능을 방해하지 않고 안전하게 할 수 있는지 확실하지 않습니다.
또한 chroot를 사용하는 것을 살펴 보았지만 이것은 가상 호스트별로가 아니라 서버별로 만 수행 할 수있는 것으로 보입니다.
VirtualHost를 시스템의 나머지 부분과 격리시키는 제안을 찾고 있습니다.
추신 : 나는 우분투 12.04 서버를 실행
내 대답 : 나는 현재 구성을 거의 따르지 만 모든 가상 호스트에 대해 chroot jail을 수행했습니다. 예를 들어 chroot jail을 /var/www
넣은 다음 그룹 / 기타 r / w / x 권한을 가진 하위 폴더에 모든 사용자 데이터를 갖습니다. 비활성화 됨. 이 옵션은 특히 소스 코드를 수정하지 않고도 가능하기 때문에 바람직했습니다.
@Chris의 답변을 철저히 작성했으며 FTP 및 SELinux로 간주했기 때문에 답변을 선택했습니다.
mod_userdir
별도 도메인의 가상 호스팅을 제공 하는 방법을 모르겠습니다 . 또한 Apache의 사용자 디렉토리간에 아무것도 찾을 수 없으므로 격리 측면에서 보안에 대한 우려가 있습니다. 그 기능을 제공하지 않는 것 같습니다.