그래서 이것저것 검색해봤는데많은상충되는 답변을 찾았습니다.
모든 사람의 이익을 위해 누구든지 /var/www/html에서 소유권/권한을 설정하는 방법에 대해 완전히 합리적이고 참조적인 답변을 제시할 수 있다면 감사하겠습니다.
예를 들어, sftp를 사용하여 디렉토리에 액세스하려고 하지만 기본적으로 사용자가 디렉토리에 파일을 쓸 수 없다고 가정해 보겠습니다. 보안 관점에서 올바른 솔루션은 무엇입니까?
(우리는램프환경)
답변1
보안 관점에서 볼 때 이 디렉토리와 웹 서버가 액세스해야 하는 모든 디렉토리는 다음과 같이 설정되어야 하는 것 같습니다.아니요파일/디렉토리의 소유자는 이런 식으로힘이 없다모든 디렉터리/파일에 씁니다.
이렇게 하면 서버의 취약점으로 인해 DOS 및 유출만 발생하고 웹 서버는 파일을 쓸 수 없게 됩니다.
물론 실제 생활에서는 상황이 더 복잡해질 수 있습니다.
- 웹 서버 내의 일부 CGI/응용 프로그램은 어딘가에 쓰기 액세스가 필요할 수 있습니다(예: 데이터베이스가 세션 데이터 저장을 완료하는 데 사용되지 않는 경우).
- 웹 서버 자체에는 일반적으로 로그 파일 등에 쓰기 위해 어딘가에 쓰기 액세스 권한이 필요합니다.
- 일부 설정에서는 웹 서버 내의 각 응용 프로그램이 웹 서버 자체가 아닌 다른 UID에서 실행될 수 있으며 이는 긍정적인 보안 효과를 가져올 수 있습니다. 소유권과 권리의 균형은 복잡해질 수 있습니다. 이것이 아마도 인터넷에서 많은 사람들이 말하는 것을 여러 번 볼 수 있는 이유일 것입니다.
rwx
그냥 아무 곳에나 두십시오. 물론 모든 사람에게 모든 권리를 부여하면 "작동"하지만 보안에 따른 결과가 발생합니다.
따라서 유사한 사용자가 귀하의 서버에 연결하고 SFTP를 통해 새 파일을 업로드하여 웹 서버가 해당 파일을 제공할 수 있다면 다음과 같이 할 것입니다.
- 각 사용자가 자신의 특정 디렉터리를 소유하고 모든 권한을 갖도록 허용
- 웹 서버 마스터 그룹을 사용자별 디렉터리별 그룹으로 만들고
rx
권한을 부여합니다 . - 다른 사용자에게는 권한이 없습니다.
이렇게 하면 각 사용자는 자신의 파일만 볼 수 있고 다른 파일은 볼 수 없으며(SFTP에는 보안 강화를 위해 chrooting 옵션도 있지만 이로 인해 문제가 발생함) 웹 서버는 읽기 위해 모든 파일에 액세스할 수만 있습니다.
각 디렉토리에는 웹서버 그룹이 소유한 모든 파일을 가질 수도 있고 rx
파일이 최상위 디렉토리에 의해 보호되고 소유자나 웹서버를 제외한 다른 사용자는 권한을 가지지 않으므로 모든 사람을 위해 모든 파일을 넣을 수도 있습니다.