Ubuntu 11.10ボックスをスピンアップしてapt-get install apache2 php5
から、実行してapache2とPHP 5をボックスにインストールしました。これで「Webサーバー」として機能し、「It Works!」がロードされます。ページ。現在、セキュリティを強化しようとしていますが、Linux Webサーバーについて次の質問があります。
- apacheの実行者は誰ですか?
- このユーザーはどのグループに所属する必要がありますか?
- PHP(およびApache?)をファイルの所有者として実行できるパッケージは何ですか?(共有Webホストなど)これらのパッケージを使用する必要がありますか?小規模なシステムで保守するのは簡単ですか?
- apacheを実行しているWebに提供されるファイルとフォルダのデフォルトのアクセス許可は何
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
内容を持つルートとしてファイルを作成する場合:
<?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の実行者は誰ですか?おそらく最初のプロセスはas root
であるように見えます。おそらく/etc/init.d/apache
システムが起動したときのスクリプトからのものであり、他のプロセスはwww-data
最初から生成されたものです。あれは正しいですか?
次に、入力するgroups www-data
と表示www-data : www-data
されwww-data
ます。そのため、グループにのみ含まれているように見えます。これも標準的な方法だと思います。
共有ホスティングとセキュリティ
したがって、物事を正しく理解している場合、Apacheが実行されていてwww-data
、Apacheがディレクトリを読み取れるようにするには、x
ビットを世界(その他)グループ(o+x
)に設定する必要があり、それもすべての親に設定する必要がありますチェーン全体のディレクトリ(www
、var
)。また、Apacheがファイルから読み取れるようにするには、o+r
ビットを設定する必要があります。
残念ながら、これにより、同じlinuxボックス上の複数のアプリケーションおよび/または複数のユーザーにセキュリティホールが導入されると考えています。システムにインストールされた1つのアプリケーションに、未検証のユーザー入力を許可するセキュリティ上の脆弱性があり、それがPHPによって実行された場合、リモートの攻撃者はWebシステム上の他のすべてのファイルを閲覧できます。同様に、ボックスに複数のユーザーがいて、ユーザーが別のユーザーのWebファイルのパスを知っていた場合、そのユーザーはファイルの内容を読み取ることができます(データベース接続文字列などの機密事項を参照できます)。
2つのパッケージのことを聞いたことがありますが、suphp
それphpsuexec
はユーザーのファイルを共有システムで「そのまま」提供できるようにすることを扱っています。この利点の1つは、Webアプリケーション(Wordpressなど)がファイルを作成および変更できることです-テーマ、プラグインの追加、ソフトウェアのアップグレードに非常に役立ちます。もちろん、これらを手動で行う方がおそらく安全ですが、おそらく上記のパッケージのいずれかで妥協することができますか?または、おそらくchown
wordpressディレクトリグループをグループに所属www-data
させ、グループのスティッキービットを設定するために使用しg+s
ます()?
私はこれらをウェブホスティング会社のエンドユーザーとしてのみ使用しているので、それらの詳細を知りません。小さなシステムにインストールするのが妥当かどうか、または他に何かがある場合は代わりに使用すべきセキュリティ対策ですが、私の懸念のいくつかに対処するための1つの可能な方法のように見えるので、ここでそれらについて言及するつもりでした。
質問に戻る
- apacheの実行者は誰ですか?
- このユーザーはどのグループに所属する必要がありますか?
- PHP(およびApache?)をファイルの所有者として実行できるパッケージは何ですか?(共有Webホストなど)これらのパッケージを使用する必要がありますか?小規模なシステムで保守するのは簡単ですか?
- apacheを実行しているWebに提供されるファイルとフォルダのデフォルトのアクセス許可は何
www-data
ですか?ユーザーとして実行されているapache / phpの場合