로컬 개발 상자에 FastCGI(mod_fastcgi), suExec 및 PHP와 함께 Apache를 설치했습니다. 한 가지를 제외하면 완벽하게 작동합니다.
두 명의 사용자가 있다고 가정해 보겠습니다.
user1 - /home/user1/public_html
user2 - /home/user2/public_html
내 구성에서 심각한 보안 허점을 발견했습니다. user1 파일에 user2 웹 루트의 파일을 포함할 수 있습니다. 예방하는 방법? 어떤 팁이 있나요?
php-cgi
프로세스가 올바른 사용자로 실행 중입니다.
답변1
base_path
VirtualHost 내에서 다음을 설정하는 것이 좋습니다 .
php_admin_value open_basedir /usr/local/www/sixeightzero
답변2
사용자 이름으로 PHP를 실행하는 것이 목표라면 사용자 이름을 분리한 다음 시도해 보세요.apache2-mpm-itk, fast-cgi보다 배포하기가 훨씬 쉽고 훌륭하게 작동합니다.
사용하려면 virtualhost 구성에 다음 행을 추가하기만 하면 됩니다.
AssignUserId someuser somegroup
원하는 경우 MaxClientsVHost 및 NiceValue를 설정할 수도 있습니다.
답변3
이를 올바르게 수행하는 유일한 방법은 한 사용자가 다른 사용자의 homedir에서 파일을 읽는 것을 금지하고 웹 서버에서는 읽을 수 있도록 남겨 두는 것입니다.
다음과 같은 방법으로 이를 수행할 수 있습니다.
acl 옵션을 사용하여 파일 시스템 마운트:
mount -o acl /dev/sda /home
웹서버가 접근할 수 있도록 허용하세요:
setfacl -m u:nobody:r-x /home/user1
setfacl -m u:nobody:r-x /home/user2
소유자가 읽을 수 있도록 허용:
setfacl -m u:user1:r-x /home/user1
setfacl -m u:user2:r-x /home/user2