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)についての技術エントリはめちゃくちゃ勉強になります。
是非読んで見てください。