Apache를 웹 서버로 사용하는 서버 S1과 웹 서버로 NGINX를 실행하는 다른 서버 S2가 있습니다. S2는 S1에 마운트되고 S1은 NFS를 사용하여 S2에 파일을 업로드합니다.
따라서 NGINX 서버 S2에 새로 추가된 파일에는 Apache의 소유자와 그룹이 있습니다. 파일을 제공하는 데 문제가 없고 모든 것이 잘 작동하지만 NGINX를 사용하여 Apache 파일을 읽는 데 보안 문제가 있습니까? 이것은 단순히 잘못된 것입니까? 그렇다면 내 선택은 무엇입니까?
업데이트 1:구성 파일에서 NGINX에 설정된 사용자는 apache가 아닌 nginx입니다.
답변1
NFS 서버의 파일에 대한 모든 액세스(읽기/쓰기)에 대해 클라이언트는 사용자의 사용자 ID 및 그룹 ID를 NFS 서버와 공유합니다. NFS 서버가 사용자 ID와 그룹 ID가 실제로 파일에 액세스할 수 있음을 확인한 경우에만 요청이 허용됩니다.
귀하의 질문에 대해:
따라서 NGINX 서버 S2에 새로 추가된 파일에는 Apache의 소유자와 그룹이 있습니다. 파일을 제공하는 데 문제가 없고 모든 것이 잘 작동하지만 NGINX를 사용하여 Apache 파일을 읽는 데 보안 문제가 있습니까? 이것은 단순히 잘못된 것입니까? 그렇다면 내 선택은 무엇입니까?
어떻게첫째, NGINX는 Apache에서 생성된 파일에 액세스할 수 있습니까? 여기서는 S1의 Apache 프로세스가 파일을 생성한다고 가정합니다. 그리고 생성된 파일은 누구나 읽을 수 있는(?) 파일입니다. 그렇다면 이는 상황에 따라 보안 문제일 수 있습니다. 일반적으로 Apache 프로세스에서 생성된 파일은 파일 생성을 시작하는 스크립트에 명시적으로 권한을 변경하는 코드가 없는 한 누구나 읽을 수 있습니다. 한 번 살펴보고 싶을 수도 있습니다.
S1의 Apache 합계는 user id
S2의 NGINX 합계와 일치할 수 있습니다. 또는 그렇지 않은 경우 이러한 파일이 포함된 디렉터리는 누구나 읽을 수 있으므로(또 다른 보안 문제) Apache(S1)를 제외한 모든 사람이 액세스할 수 있습니다.group id
user id
group id
read and executable bits turned on
NGINX와 Apache가 권한 있는 포트에서 실행 중인 경우 특히 주의가 필요할 수 있습니다. 실행 중인 NGINX/Apache 버전에서 확인된 권한 상승 또는 루트 취약점으로 인해 해커가 서버에 액세스할 수 있습니다. NGINX/Apache 서버 중 하나가 매우 민감한 데이터를 보유하고 있는 경우 다른 서버를 통해 해당 데이터를 가져올 수 있는 방법을 제공합니다.
외부 세계에서는 NGINX 프로세스가 Apache와 동일한 폴더를 공유한다는 사실을 모를 수도 있지만, S1 또는 S2에 대한 로컬 셸 액세스 권한이 있는 사람은 누구나 결국 이 취약점을 악용하여 다른 서버에 액세스할 수 있습니다.
서버/프로세스 간에 파일을 공유하는 것 외에 다른 옵션이 없다면 다음을 살펴보는 것이 좋습니다. - 파일 읽기 및 쓰기 권한 - 폴더 액세스 권한
공유 파일이 소스 파일인 경우 버전 제어 저장소(예: GIT)의 일부이고 두 위치 모두에서 최신 코드를 체크아웃하는 것이 좋습니다(결국 두 개의 복사본을 유지한다는 의미).
귀하의 사용 사례가 알려지면 주변의 다른 사람들이 더 나은 대안을 제시할 수도 있습니다.