안전하지 않은 Apache + mod_userdir 구성

안전하지 않은 Apache + mod_userdir 구성

요약:안전한 방법으로 mod_userdir을 활성화하려면 어떻게 해야 합니까? (의미: 각 사용자는 ~/public_html에서 자신의 콘텐츠를 생성하고 제공할 수 있어야 하지만 서로의 콘텐츠를 읽거나 직접 읽도록 허용되어서는 안 됩니다. - cat /home/userX/public_html/filePHP 함수( file_get_contents('/home/userX/public_html/file')를 통해서도 마찬가지입니다.)

세부: 사용자에게 ~/public_html 폴더에 파일을 삭제하는 콘텐츠를 제공하는 옵션을 제공하기 위해 mod_userdir을 사용하여 Apache를 구성했습니다. 파일 액세스를 보호하고 어떤 사용자도 다른 사용자의 파일을 읽을 수 없도록 하기 위해 다음 권한을 구성했습니다.

/home/userA user.user drwx--x--x (711)  
/home/userA/public_html  user.user drwxrwx--x  (771)

www-data각 사용자의 그룹에 추가했습니다 . usermod -a -G user www-data (그룹을 만들고 을(를) 포함한 모든 사용자를 그룹에 추가할 수도 있습니다 www-data.)

모든 구성이 예상대로 작동합니다. 모든 사용자는 https://server/~user에서 해당 콘텐츠에 액세스할 수 있으며 다른 사용자의 파일은 읽을 수 없습니다.

userA@ubuntu:/home$ cat userB/public_html/index.php 
cat: userB/public_html/index.php: Permission denied

여태까지는 그런대로 잘됐다. 그러나 문제는 Apache가 다음과 같이 실행되고 있고 /home/* 내부의 모든 파일에 대한 그룹 액세스 권한이 있기 때문에 모든 사용자가 PHP 파일을 생성하여 , , 등과 www-data같은 기능을 사용하여 다른 사람의 콘텐츠를 읽을 수 있다는 것입니다.execsystemfile_get_contents

나는 그러한 기능이 disable_functions블록 에 추가되는 것을 비활성화할 수 있다는 것을 알고 있지만 php.ini이것은 해결책이 아닌 패치로 봅니다. 따라서 이 userdir이 활성화된 Apache 구성을 구성하는 보다 안전한 다른 방법이 있어야 한다고 생각됩니다. 이 작업을 올바르게 수행하는 방법을 찾았지만 적절한 해결책을 찾지 못했습니다.

관련 정보