Nginx 및 PHP 로그 파일의 소유권을 어떻게 처리합니까?

Nginx 및 PHP 로그 파일의 소유권을 어떻게 처리합니까?

저는 현재 Ubuntu의 Apache PHP 서버 앞에서 Nginx 역방향 프록시를 실행하고 있습니다. log.txt내 사이트에 PHP 파일을 제공하는 동일한 디렉토리에 파일이 있습니다 . PHP는 이 로그 파일에 API 활동을 기록합니다. 웹브라우저에서 접속시 lookup.phpURL을 에서 로 변경하면 로그파일에 접속이 가능하는데, 이는 전혀 보안되지 않습니다. log.txtSSH를 통해 연결된 경우에만 로그 파일에 액세스하고 싶습니다.

로그 파일의 소유권을 www-data현재 PHP가 실행 중인 그룹으로 변경했습니다. 내가 원하는 것은 PHP 파일이 이 로그 파일에 쓸 수 있지만 사용자가 웹 브라우저에서 로그 파일 경로를 탐색하여 표시할 수 없다는 것입니다. 문제는 Nginx도 로 실행되고 있기 때문에 www-data로그 파일 소유자를 www-dataPHP로 변경하여 쓸 수 있고 Nginx가 이제 읽을 수 있다는 것입니다.

마음속에 떠오른 몇 가지 아이디어는 다음과 같습니다. 그러나 여기에 심각한 보안 결함이 있는지는 확실하지 않습니다.

  • 로그 파일을 파일 소유자에 대한 읽기 전용 파일로 변경합니다 www-data. 나는 연구를 하고 있는데 이것은 드문 접근 방식인 것 같습니다.

  • PHP와 Nginx를 별도의 그룹으로 실행하여 PHP에 rwx 액세스 권한을 부여하고 nginx에는 액세스 권한을 부여하지 않도록 합니다.

  • www-data파일과 연결된 웹 URL이 없도록 웹 루트 외부에 새 디렉터리를 만듭니다. 그러나 디렉터리는 PHP 및 Nginx가 소유합니다. 여기에 허점이 있는지 잘 모르겠습니다.

  • Nginx를 통한 로그 파일 액세스를 비활성화합니다. 이것은 나에게 약간 "해킹"된 것 같습니다.

어떤 경로가 올바른 선택인가요?

답변1

나는 웹 서버와 프록시에 대해 nginx를 실행하는 경향이 있으므로 Apache의 무지를 용서해 주십시오. 그러나 일반적으로 이에 대해 파일 권한을 사용하지 않습니다. 대신, 나는 내 웹 서버에 특정 파일을 제공하지 않도록 지시하는 것을 선호합니다. 여기서버 오류로부터 이를 수행하는 방법입니다.

로깅을 위해 별도의 디렉터리를 만드는 것도 좋으며, 해당 디렉터리가 아직 URL에 액세스할 수 있는 위치에 있으면 Apache는 간단히 이를 비활성화할 수 있습니다. 또는 /var/log/위치를 사용할 수도 있지만 이는 일반적으로 운영 체제에서 실행되는 서비스용으로 예약되어 있습니다.

웹 서버를 사용하여 액세스를 거부하는 것은 번거롭지 않습니다. 이 기능은 민감한 파일에 부분적으로 사용할 수 있기 때문입니다. 또한 웹 서버의 루트 디렉터리는 위에서 언급한 것처럼 명시적으로 거부되지 않는 한 그 아래의 모든 파일이 웹용이라고 가정합니다. 이것은 필요할 때 웹서버를 사용하여 취하는 경로입니다.

관련 정보