ApacheとPHPはどのユーザーとして実行する必要がありますか? /var/www ファイルにはどのような権限が必要ですか?

ApacheとPHPはどのユーザーとして実行する必要がありますか? /var/www ファイルにはどのような権限が必要ですか?

私はUbuntu 11.10システムを起動し、apt-get install apache2 php5そのシステムにapache2とPHP 5のインストールを実行しました。これで「Webサーバー」として実行され、「It Works!」ページがロードされます。これでセキュリティを強化しようとしていますが、Linux Webサーバーについて次の質問があります。

  1. Apacheは誰で実行されるべきですか?
  2. このユーザーはどのグループに属する必要がありますか?
  3. PHP(およびApache?)をファイル所有者として実行できるパッケージは何ですか? (共有Webホストと同じように)このパッケージを使用する必要がありますか?小規模なシステムでこれを維持するのは簡単で、妥当ですか?
  4. Apacheの実行中にファイルとフォルダをネットワークに提供するための基本的な権限は何ですかwww-data?ユーザーとして実行されるApache / PHPの場合?

デフォルト設定を確認するときは、次のことを行いました。

ファイル構造

私が見るコンテンツをcd /リストすると、次のようになります。ls -al/var

drwxr-xr-x 13 root root  4096 2012-02-04 20:47 var/

私がcd入ってvarみるとls -al

drwxr-xr-x  2 root root  4096 2012-02-04 20:47 www/

最後に、内部は次の/var/wwwようになります。

drwxr-xr-x  2 root root 4096 2012-02-04 20:47 ./
drwxr-xr-x 13 root root 4096 2012-02-04 20:47 ../
-rw-r--r--  1 root root  177 2012-02-04 20:47 index.html

重要なのは、これまでのところ、これらすべてのファイルが属しており、ファイルのroot:root権限は644、ディレクトリの権限は755ということです。

Apache権限

/var/www/test.php次の内容でrootとしてファイルを生成する場合:

<?php echo shell_exec('whoami');

そして、ファイルをブラウザにロードすると、www-dataこれがファイルと同じであることがわかります/etc/apache2/envvars

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

これにより、ps aux | grep -i apache次のようになります。

root      1916  1.2 104664  7488 Ss   20:47 /usr/sbin/apache2 -k start
www-data  1920  0.8 105144  5436 S    20:47 /usr/sbin/apache2 -k start
www-data  1921  1.0 105144  6312 S    20:47 /usr/sbin/apache2 -k start
www-data  1922  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start
www-data  1923  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start
www-data  1924  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start
www-data  1925  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start

それでは、Apacheは誰で実行されますか?最初のプロセスはシステムの起動時にスクリプト内のままでrootある可​​能性/etc/init.d/apacheがあり、他のプロセスはwww-data最初のプロセスで作成されたように見えます。そうですか?

次のように入力すると、グループにのみ存在するように見えますgroups www-data。私はこれが標準的な慣行だと思います。www-data : www-datawww-data

共有ホスティングとセキュリティ

したがって、私が正しく理解したら、Apacheが実行されていてApacheがディレクトリをwww-data読み取ることができるようにするには、xworld(other)グループo+x(チェーンの下にディレクトリを上に(、)wwwvaro+rます。

残念ながら、これは同じLinuxシステム上の複数のアプリケーションおよび/または複数のユーザーにセキュリティホールを引き起こすと思います。すべてのWebファイルは誰でも読むことができる必要があるため、他のアプリケーションやシステムの他のユーザーが読み取ったりアクセスしたりできます。システムにインストールされているアプリケーションに検証されていない生のユーザー入力(PHPで実行)を許可するセキュリティ上の脆弱性がある場合、リモート攻撃者はWebシステムで読み取り可能な他のすべてのファイルを閲覧する可能性があります。同様に、ボックスに複数のユーザーがあり、あるユーザーが別のユーザーのWebファイルパスを知っている場合、そのユーザーはファイルの内容を読み取ることができます(データベース接続文字列などの機密コンテンツも表示できます)。

共有システムでユーザーのファイルを「現状のまま」使用できるようにするsuphp2つのソフトウェアパッケージについて聞きました。phpsuexecこれの利点の1つは、Webアプリケーション(WordPressなど)がファイルを作成および変更できることです。これはテーマ、プラグインの追加、ソフトウェアのアップグレードに非常に便利です。もちろん、これらの作業を手動で実行する方が安全ですが、上記のパッケージのいずれかを使用すると長所と短所がありますか?それとも、chownそれが属するWordPressディレクトリグループを作成し、www-dataグループに固定ビットを設定することによって(g+s)?

私はこれをWebホスティング会社のエンドユーザーとしてのみ使用してきたので、その内容を詳しく知らず、小規模システムにインストールするのに適しているのか、それを使用する必要がある他のセキュリティ対策もあるかもしれません。私はそれが私の懸念のいくつかに対する可能な解決策であるように見えるので、ここで言及する必要があると思います。

質問に戻る

  1. Apacheは誰で実行されるべきですか?
  2. このユーザーはどのグループに属する必要がありますか?
  3. PHP(およびApache?)をファイル所有者として実行できるパッケージは何ですか? (共有Webホストと同じように)このパッケージを使用する必要がありますか?小規模なシステムでこれを維持するのは簡単で、妥当ですか?
  4. Apacheの実行中にファイルとフォルダをネットワークに提供するための基本的な権限は何ですかwww-data?ユーザーとして実行されるApache / PHPの場合?

ベストアンサー1

  1. ルートではない
  2. ルートではない
  3. 数を実行
  4. 頼る。ファイルの場合は644、フォルダの場合は755が安全なデフォルトです。

PHPがファイル/フォルダの内容を編集できるようにしたくない限り、所有権をwww-dataに変更しないでください。

何をしても:フォルダには、ファイルを見つけるにはユーザーの読み取りおよび実行権限が必要です。コンテンツの変更中に権限エラーが発生した場合は、基本的に必要な権限を正常に削除しました。

PHPアプリケーションを介してファイルを作成しない場合は、現在持っているファイルをそのまま残すことができます。この場合、World License(xx4/5)が適用されます。

ファイルを所有している場合:ファイル権限は644(ファイル)です。ただWebサイトファイルを編集できます。 www-dataはあなたではないため、ファイルを編集することはできません。

Apache +あなたへのアクセスを制限し、他のすべてのアクセスをブロックしたい場合chown -R you:www-data *。ファイル権限は640、フォルダ権限は750で編集でき、www-dataを読むことができます。これは、Apacheがグループ権限(x4/5x)を読み取ることができるからです。

apache / phpが書き込むことができるパスを最小限に抑える - アプリケーションがtmpディレクトリに書き込む必要がある場合 - 書き込みを許可するこのフォルダのみ- 書き込み可能な場所は可能であれば確認してください。外部ルートを文書化するか、この書き込み可能なパスがWebからアクセスされないようにしてください。

「あなた」はいいえ根になるルートとして直接SSHアクセスを許可することは、他のセキュリティの脆弱性を示す指標です(例:いいえパスワードログインを無効にする)しかし、それ自体が多くの問題を引き起こします。

おすすめ記事