黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

ApacheのPortが80の時のサービスon/offについて(3日目)

スレッド発見

1日目2日目で色々と書いてましたが、psコマンドのオプション見つけて進展があったので書きます。

psコマンドのHオプションや-Lなどでプロセスだけではなく、スレッドも表示させられます。

$ ps aux -L | grep httpd | grep -v grep
root     23947 23947  0.0    1  0.2  70508  2504 ?        Ss   Feb26   0:40 /usr/local/apache2/bin/httpd -k start
hogehoge   27894 27894  0.0   27  0.4 676912  4768 ?        Sl   Mar02   0:00 /usr/local/apache2/bin/httpd -k start
hogehoge   27894 27900  0.0   27  0.4 676912  4768 ?        Sl   Mar02   0:00 /usr/local/apache2/bin/httpd -k start
hogehoge   27894 27904  0.0   27  0.4 676912  4768 ?        Sl   Mar02   0:00 /usr/local/apache2/bin/httpd -k start
hogehoge   27894 27905  0.0   27  0.4 676912  4768 ?        Sl   Mar02   0:00 /usr/local/apache2/bin/httpd -k start
…

実行ユーザrootの他にhogehogeがいくつかいるのは以前と同じですが、以前と違うのはこれが大量にあとにもでてくるということ。
更に、実行ユーザの次に表示されているPIDの更にその次、LWPも表示されていることがわかります。
LWPは「スレッドID」というもので、PIDのスレッド版です。
このLWPの2つ右、27という数字はNOLWPという項目で、「1つのプロセスが持つスレッドの数」を表しています。

つまり、以前の記事ではrootでのプロセスがあって、hogehogeというスレッドがありますね〜と書いていましたが、そうではんかったと。
rootとhogehogeのプロセスがあって、実際にクライアントと通信しているhogehogeのプロセスの中にスレッドが大量にあるというのが正解みたいです。

リバースプロキシなんかを導入しない限りApacheのPort番号を80から変えるのは考えにくいかなあと思うので、実際に通信を担当するプロセスもrootで起動しない限り、問題はないのかなぁと思います。

じゃあApacheのセキュリティで大切なことってなんだ?

例えばアクセスするファイルのパーミッションを適切に設定する、ということはよく言われていますが、本当に堅牢な設定ってなんだろうと調べていて見つけたのが、こちら
mod_mrubyなどの生みの親で、今年のOSS奨励賞を受賞された松本さんのエントリになります。

松本さんのブログはなかなかに専門的で読み解くのも難しい時がありますが、Webサーバ(Apache,Nginx)についての技術エントリはめちゃくちゃ勉強になります。
是非読んで見てください。