NginxとPHPのログファイルの所有権をどのように処理しますか?

NginxとPHPのログファイルの所有権をどのように処理しますか?

私は現在、UbuntuのApache PHPサーバーの前でNginxリバースプロキシを実行しています。log.txt私のサイトにPHPファイルを提供するのと同じディレクトリにファイルがあります。 PHPはこのログファイルにAPIアクティビティを記録します。 Webブラウザでアクセス時lookup.phpにURLをからに変更すると、ログファイルにアクセスできますが、これはまったく安全ではありません。log.txtSSH経由で接続されている場合にのみログファイルにアクセスしたいと思います。

ログファイルの所有権をwww-data現在PHPが実行されているグループに変更しました。私が望むのは、PHPファイルはこのログファイルに書き込むことができますが、ユーザーがWebブラウザでログファイルパスを参照して表示できないことです。問題は、Nginxも実行されているため、www-dataログファイルの所有者をwww-dataPHPに変更して書き込むことができ、Nginxが今すぐ読むことができるということです。

心の中に浮かんだいくつかのアイデアは次のとおりです。しかし、ここに深刻なセキュリティ欠陥があるかどうかはわかりません。

  • ログファイルをファイル所有者の読み取り専用ファイルに変更しますwww-data。私は研究をしていますが、これは珍しいアプローチのようです。

  • PHPとNginxを別々のグループとして実行して、PHPにrwxアクセスを許可し、nginxにアクセスを許可しないようにします。

  • www-dataファイルに関連付けられたWeb URLがないように、Webルートの外部に新しいディレクトリを作成します。ただし、ディレクトリはPHPとNginxが所有しています。ここに抜け穴があるかどうかはわかりません。

  • Nginxを介したログファイルへのアクセスを無効にします。これは私に少し「ハッキング」されたようです。

どのパスが正しい選択ですか?

ベストアンサー1

私はWebサーバーとプロキシに対してnginxを実行する傾向があるので、Apacheの無知を許してください。ただし、通常、これにはファイル権限を使用しません。代わりに、私は私のWebサーバーに特定のファイルを提供しないように指示することを好みます。 こここれはサーバーエラーからこれを行う方法です。

ロギング用に別々のディレクトリを作成することをお勧めします。そのディレクトリがまだURLにアクセスできる場所にある場合、Apacheは単に無効にすることができます。または、/var/log/場所を使用することもできますが、これは通常オペレーティングシステムで実行されているサービス用に予約されています。

Webサーバーを使用してアクセスを拒否するのは面倒ではありません。これは、機密ファイルに部分的に使用できるためです。さらに、Webサーバーのルートディレクトリは、上記のように明示的に拒否されない限り、その下のすべてのファイルがWeb用であると仮定します。これは、必要に応じてWebサーバーを使用して取るパスです。

おすすめ記事