설명: 웹 루트의 Apache 프로세스에 대한 권한 및 소유권

설명: 웹 루트의 Apache 프로세스에 대한 권한 및 소유권

나는 올바른/안전한 (1) 소유권과 (2) 아파치가 제공하는 웹 액세스 가능 디렉터리(예: )에 있는 디렉터리 및 파일에 대한 액세스 권한에 대해 많이 읽었습니다 /var/www/. 나는 쉽게 혼란스러워지거나 주위에 혼란스럽고 상충되는 조언이 많이 있습니다.

755일반적 으로 디렉터리와 파일에는 일반적인 CMS(예: drupal, wordpress 등)를 권장합니다 644. 그러나 웹 루트(예 chown -R :www-data /var/www/: .

(1) 첫 번째 질문: 디렉터리와 파일에 그룹 소유권이 /var/www/*있고 www-data평소와 같이 Apache 프로세스 사용자가 www-data그룹의 유일한 구성원이라고 가정합니다. 동시에 디렉토리와 파일의 사용자 소유권은 /var/www/*Linux 시스템의 그룹에 속한 sudo일반 사용자 에게 속합니다(예 somesudouser: ). 이는 다음과 같은 결과를 제공합니다.

    ----------  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php
    d--------- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

위의 소유권 구조를 고려하여 "기타"에 대한 액세스 권한을 로 설정할 수 있습니다 0. 예를 들어 750디렉터리, 740파일의 경우 브라우저 요청에 대한 응답으로 아파치가 이러한 파일을 올바르게 제공하는 것을 막지는 못합니다.

    -rwxr-----  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php
    drwxr-x--- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

이게 무슨 문제야? 나는 "기타" 권한을 (종종 권장되는 디렉토리 및 파일 0과 달리 ) 다른 것으로 설정하는 것이 타당하지 않다고 생각하며 파일의 사용자 소유권을 다음과 같이 설정하면 안되는 이유가 없습니다. 종종 권장됨 ). 내가 무엇을 놓치고 있나요?5476

(2) 두 번째 질문: 웹 루트에 있는 디렉터리 및 파일의 그룹 소유권이 Apache 프로세스를 포함하지 않는 그룹에 속하는 경우(예: somesudouser:somesudouser), Apache 프로세스는 "기타" 액세스 권한이 있는 경우에만 웹 루트와 상호 작용할 수 있습니다. .NET의 디렉터리 및 파일과 상호 작용할 수 있습니다. 보안 측면에서 다음 중 실제 장점/단점이 있습니까?

    -rwx---r--  1 somesudouser somesudouser   3012 Jan 10 13:46 some-file.php
    drwx---r-x 16 somesudouser somesudouser  12288 Jan 10 13:25 some-directory/

또는:

    -rwxr-----  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php
    drwxr-x--- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

심지어:

    -r--------  1 www-data www-data   3012 Jan 10 13:46 some-file.php
    dr-x------ 16 www-data www-data  12288 Jan 10 13:25 some-directory/

(3) 권한에 대한 마지막 w질문입니다. Apache 프로세스에 파일의 그룹 소유권이 있고 그룹에 다음 액세스 권한이 있다고 가정합니다 7.

    ----rwx---  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php

이것이 왜 문제가 됩니까? 악의적인 공격자가 Apache 사용자를 납치하고 이를 편집 some-file.php하여 Linux 시스템에서 악성 PHP를 실행할 수 있습니까? 이 일은 어떻게 이루어질 것인가?

디렉터리에 동일한 권한이 있으면 어떻게 되나요?

    d---rwx--- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

악의적인 행위자가 Apache 프로세스가 이 디렉터리에 새 파일을 쓰도록 할 수 있습니까? 다시 말하지만, 이 일이 어떻게 이루어질까요?

감사해요.

답변1

(1) 첫 번째 질문: ... 평소와 같이 아파치 프로세스 사용자인 www-data가 그룹의 유일한 구성원입니다... 무엇이 문제입니까? "기타" 권한을 0이 아닌 다른 권한으로 설정하는 것은 의미가 없다고 생각합니다(일반적으로 디렉터리에 권장되는 5, 파일에 4를 권장하는 대신).

먼저 자신을 시스템 관리자/개발자로 이 그룹의 구성원으로 추가하는 것은 www-data웹 서버에서 생성된 파일 및 폴더로 작업할 수 있게 해주기 때문에 매우 훌륭하고 효과적인 아이디어입니다.
웹 서버 문서 루트 권한이 이와 같이 설정된 경우 디렉터리에 setgid 비트를 설정하면 웹 서버에서 생성된 파일과 폴더를 사용할 수 있으며 공유에 대한 그룹 소유권이 있으므로(umask가 002라고 가정) ), 네트워크 서버는 사용자가 생성하고 FTP를 통해 전송하고 생성한 파일 및 폴더에 대한 전체 액세스 권한을 가지고 정상적으로 작동할 수 있습니다.
이 경우, 당신 말이 맞습니다. 다른 UNIX 계정은 문서 루트에 대한 액세스 권한이 없어야 하므로 다른 비트를 0으로 설정하는 것이 좋습니다.
귀하의 CMS 문서에서는 대부분의 비전문 관리자가 setgid 등을 설정하는 데 충분한 지식이 없기 때문에 다른 사람이 적어도 읽을 수 있도록 허용할 것을 권장하는 것으로 생각됩니다. 따라서 www-data가 소유한 파일의 경우 귀하는 하나는 다른 것입니다. 최소한 파일을 읽을 수 있으며 그 반대의 경우도 마찬가지입니다.

(2) 두 번째 질문: 웹 루트 디렉터리 및 파일의 그룹 소유권이 Apache 프로세스를 포함하지 않는 그룹에 속하는 경우

디렉토리의 용도와 웹 서버가 작동하기 위해 쓰기 권한이 필요한지 여부에 따라 달라질 수 있습니다. 일반적으로 네트워크 서버가 작동하는 데 필요한 권한만 부여해야 하지만, 네트워크 서버에 권한이 필요한 경우 소유권이나 그룹 역할을 통해 이상적으로 할당해야 합니다. 네트워크 서버가 읽고 쓸 수 있도록 전 세계 읽기/쓰기 액세스 권한을 부여하면 다른 UNIX 사용자 계정에도 동일한 자유가 허용됩니다. 예를 들어, 공유 시스템의 다른 "이웃"은 귀하의 파일에 접근할 수 없어야 하지만 시스템 관리자가 실수를 하면 때때로 접근할 수 있습니다. 그렇습니다. 그런 일이 일어나는 것을 본 적이 있습니다.

(3) w 권한에 대한 마지막 질문입니다. Apache 프로세스에 파일의 그룹 소유권이 있고 그룹의 액세스 권한이 7이라고 가정합니다.

예, 이것이 거의 문제의 주요 원인이 될 것입니다. 웹 서버가 인터넷에 연결되어 있습니다. 웹 서버는 지속적으로 남용될 것이며, 악의적인 사람들은 원하는 작업을 수행하기 위해 웹 서버를 하이재킹하려고 할 것입니다. 여기에는 파일 문서가 포함될 수 있습니다. 다음과 같은 디렉토리 및 웹사이트 내의 루트 작업

  • 카탈로그 색인/탐색
  • 파일 쓰기/손상 - 웹 서버가 작동하기 위해 이러한 파일을 읽기만 하면 되는 경우

일반적인 보안 문제로 네트워크 서버를 통한 파일 시스템 남용은 비밀번호 읽기 등 운영 체제의 나머지 부분으로 전파될 수 있으므로 주의하시기 바랍니다. 따라서 중요한 시스템 정보, 비밀번호, 로그 등을 볼 수 있는 네트워크 서버의 권한에도 문제가 있습니다.외부문서 루트 디렉터리.
문서 루트 권한과 관련하여 잘 구성된 권한은 어떤 모습입니까? 나는 추천하고 싶다

그리고 독서

관련 정보