XAMPPで自宅サーバの外部公開は止めときなさい!

まずXAMPP(ザンプ)とは何かという話だが、apachefriends.orgから提供されている、Apache(WEBサーバ)、MySQL(SQLサーバ)、PHPとPerl(プログラミング言語)をクロスプラットフォーム(X-platform)で簡単に実現するためのパッケージアプリケーションである。主にWEBサイト・アプリケーションの開発環境・動作検証環境を構築するために利用される。

普通のソフトウェアのようにインストーラでインストールでき、またほとんどなんの設定をしなくても簡単に上記のようなWEBサーバ環境が構築できるために、WEB開発者にとってはもはや必須アイテムだといっても過言ではない。だがこのあまりに簡単にWEBサーバ環境が構築できてしまうがために、同じように簡単にこれをインターネット上に外部公開できてしまうのではないかと勘違いする人がたまにいるのが大問題なのである。

なおXAMPPを開発しているapachefriends.orgの公式ページには以下のような文言がある。

XAMPPは開発者の皆様が、簡単にApacheの環境を構築できることを目的に設計されています。そのため、開発しやすいよう、XAMPPのデフォルト設定はすべての機能が有効になっています。

デフォルトの設定では、セキュリティ上好ましくありません。本番環境で利用するには十分なセキュリティが確保できません。このような環境のままXAMPPは使わないでください。

まるでデフォルトの設定でなければ本番環境を運用しても大丈夫であるかのようにも読めるが、私が懸念する問題点はそこではない。それに私とて十分なセキュリティ設定を施した上で、クライアントなどに動作検証をしてもらうために一時的にXAMPPを外部公開する程度ならば問題ないと思っている。

私が問題だと思うのは、レンタルサーバーなどの代わりに、XAMPPで構築したサーバ環境を連続して長期間外部公開するユーザーがいるという事である。

試しに「XAMPP 自宅サーバー」などの検索ワードで検索してみると、その手の解説サイトが数多くヒットする。そしてそのサイトの多くがapachefriends.orgの公式ページに書いてあるような、セキュリティ設定を少々いじる程度のことしか解説しておらず、サーバを長期間運用する際に最も重要なセキュリティ管理の常識について触れているサイトが無い。

その常識とは、

ソフトウェアというものはバグと脆弱性の問題が避けられないものであり、特に深刻な脆弱性が見つかったソフトウェアについてはただちに対策の施された最新版への更新がかかせないと言う事である。

にも関わらずXAMPPには、本体およびコンポーネント(Apache、MySQL、PHPとPerl)の更新通知・自動更新機能がないのだ。

特にXAMPPに含まれているコンポーネントは基本的にその時々の最新のブランチである事が多い。この最新のブランチというのが実はやっかいで、たとえばWEBサーバのApacheひとつをとっても 1.3系、2.0系、2.2系、2.4系という4つのブランチがあり、既に開発元がサポートを終了した1.3系は問題外としても、現在のXAMPPが採用している2.4系というのは、リリースからあまり期間が経ていないために他のブランチに比べてバグや脆弱性が見つかりやすいのである。そしてもしこの2.4系Apacheやその他のコンポーネントに重大な脆弱性が見つかり、対策を施した最新版がリリースされたとしても、XAMPPは脆弱性を放置したまま稼働し続ける。これがどれほど問題であるかは特に説明をしなくても解っていただけると信じている。

なのでXAMPPで長期的に自宅サーバを運用するならば、自分でコンポーネントの脆弱性を追跡し、最新版のXAMPPまたはコンポーネントに更新し続けなくてはならない。であるにも関わらず、この事について触れている解説サイトが無い、もしくはほとんど無いのである。

中には「PHPのセーフモードをONにしましょう」なんて書いてある解説サイトまであった。おそらくXAMPPのセキュリティコンソールの表示を見て、セーフモードがセキュリティのための設定だと言うだけで、それがどういうものか理解せずに書いたのだと思われる。セーフモードは共有サーバなど複数ユーザーがPHPを利用する場合のセキュリティを高めるための設定なので、個人で利用する事が多い自宅サーバには不要なのにも関わらずだ。もしXAMPPで共有サーバを構築するなんて人がいたらぜひともお目にかかりたい。

最後になるが、何も私は「XAMPPでの自宅サーバの外部公開は絶対してはいけない」などというつもりは無いのだと言う事は解って欲しい。繰り返しになるが、ちゃんとセキュリティ上必要な設定さえすれば期間をくぎった一時的な外部公開やきちんと脆弱性を管理した上での連続運用ならば大きな問題は無いと思っている。私が言いたいのはサーバ管理者になる以上、サーバ管理者としての心構えや基礎的な知識を持った上でサーバ運用をして欲しいと言う事なのだ。確かにXAMPPを使った「サーバ構築」は簡単だ、しかし「サーバの管理運用」という面ではXAMPPはまったく機能不足である。長期的に自宅サーバ運用をするならば、最初に手間がかかっても少しつづ基礎知識を勉強しながら時間をかけてサーバを構築した方が良いと私は考える次第である。

管理者が脆弱性を放置したままでクラックされたXAMPPってたくさんあるんだろうなぁ…