Webサーバの仮想ホスティングにおけるパーミッション設定の答え(Apacheの場合)

Webサーバを構築する上で、複数のユーザーでサーバを共有する場合、Apacheの仮想ホスト方式(VirtualHost)を使う場合が多いと思う。この方式の利点としては、単一のサーバプロセスのみを動作させておけば良く、リソース効率が良いからだ。

個別のユーザーごとにサーバプロセスを立ち上げたり、chrootで区別したり、仮想マシンやコンテナ等で区別する手法があるが、Webサーバを共有したい目的においては、非常にオーバースペックな共有の仕方と言える。そのため、仮想ホスト方式を使う場合が多いのだが、ここでよくよく注意しなければならないことがある。

それは、セキュリティである。

続きを読む

Apache 2.4.1まとめ – リリース後2週間を迎えて

Apache2.4.1がリリースしてから、約2週間たった。

自分が思っていた以上に、世の中の人はApacheやWebサーバに関心があるようで、この2週間でもかなりの検証や調査が行われていた。僕自身も、自分の記事をここまで見て頂けて光栄である。

ということで、2週間たったのでApache2.4.1に関して注目された(個人的に)9つの記事をまとめておきたいと思う。

続きを読む

引き続き Apache 2.4.1のスループット評価(旧Apacheと動的コンテンツ処理性能比較)

前回の記事「Apache 2.4.1のスループット評価(旧ApacheとNginxとのベンチマーク比較)」を非常に多くの方に見て頂いており、こういう情報が重要なんだなぁ、としみじみ思った。多くのオープンソースを使わしてもらっているので、こういう形でフィードバックしていけたらよいな。参考にして頂いてありがとうございます。

今回は、前回の記事に続き、個人的にも非常に興味のあるApache2.4.1の「動的コンテンツのスループット」がどの程度なのかを評価したいと思う。

続きを読む

Apache 2.4.1のスループット評価(旧ApacheとNginxとのベンチマーク比較)

久々のApache HTTP Server 2.4.1という安定版がリリースされたので、早速ベンチマーク評価を行う。今回はevent_mpmのExperimentがとれて、晴れてデフォルトMPMになったのでそれを使ってみたい。

日本一(ひょっとすると世界一)早いApache 2.4.1 event_mpmのレビューを意識してみた。

続きを読む

mod_ruid2はgroupsを元の状態に戻せないのでpatch作成

mod_ruid2はDSO版のPHP等を効率良くある程度安全に使うにはかなり良いモジュールである。

「ある程度」と書いたのは、それなりに脆弱性があるためで、それは今後紹介するとして今回はそこに関しては言及しない。

簡単なmod_ruid2の動作だが、preforkされているサーバプロセスに対してリクエストがあった場合、サーバプロセスそのものをリクエスト対象のファイルの権限(uidやgid等)もしくは任意 の権限に変更し、そのごリクエスト処理を行なって、最後に変更されたサーバプロセスの権限を元の権限に戻す。このあたりの細かい話はLinux Capabilityの話になってくるので省略する。

ところが、今回色々試していると、サーバプロセスのユーザー、例えばapacheユーザー等がgroupsの設定を持っていた場合には、groupsの権限は戻せない実装になっていた。そのため、ある ディレクトリをgroupsで設定された別のgroup、例えばwww-admin等で権限設定されていた場合、元のapacheユーザーはwww-adminにアクセスできるが、mod_ruidの処理後そのgroups設定がなくなってしまい、アクセスできなくなる。

続きを読む