Nextcloud では、インストールディレクトリ内のいくつかのシステムファイルが Web経由でアクセス可能となっていることがあります。今回は、これらのファイルの必要性とセキュリティ対策について整理してみました。
一例として次のようなファイルがWeb経由でアクセス可能になっています:
status.php
: システム状態監視用のエンドポイントcomposer.json
,composer.lock
: PHP依存関係定義ファイルpackage.json
,package-lock.json
: JavaScript依存関係定義ファイル
1.status.php
status.php は、公開アクセスできるように設計されており、アプリケーションサーバが稼働しているかどうかを確認するために必要な機能です。
アクセスをブロックすると、監視機能が動作しなくなる可能性がありますので、基本的に公開が推奨されます。
status.php は一般的に以下のような用途で使用されています
- フェデレーション共有のためのサーバ間通信
- 監視システムからのヘルスチェック
- メンテナンス時のWebUI の自動リフレッシュ
2.依存関係管理ファイル(composer.json等)
これらのファイルは、phpとJavaScriptパッケージの要件とバージョンを定義する依存関係管理ファイルです。特別な機密情報は含まれていませんが、どうしてもファイルを公開したくないという場合には、アクセスを制限することも可能です。
ただし、Nextcloud の機能ではファイルを非公開化することができないため、Webサーバの設定にてアクセスを制限する必要があります。
以下は、WEBサーバに Nginx を使用している場合の制限方法の一例です。
依存関係管理ファイルをブロックする場合には、次の location 設定を追加します。
# Block access to dependency files
location ~ ^/(composer\.(json|lock)|package\.json)$ {
deny all;
return 404;
}
なお、composer.json や package.json 等の依存関係ファイルは、Nextcloud の開発時やパッケージをビルドする際にのみ使用されるファイルです。削除しても Nextcloud の動作に影響はないかと思いますが、Nextcloud のバージョンアップ時などにファイルが戻りますので、手動削除よりも WEBサーバの機能でアクセス制限した方が無難かと思います。
以上、現場よりお届けいたしました。