ここからはサーバー管理者の視点に引き続き、CMSをサーバーに設置するクライアント側の視点で注意すべきポイントについて説明します。
本稿では LAN内に設置されたサーバーに、LAN内のユーザー(Web制作スタッフ)が、自由にCMSを導入できる開発環境を構築する目的に主眼を置いて説明していますが、ホスティングサービスを利用してる場合でも、ユーザーが行うCMSの導入手順は同じです。
ただし、不特定多数がアクセス出来るインターネット上のサーバーに導入するケースでは、サーバー側に求められるサービスや、ユーザーが注意すべき点が大きく異なる点に注意が必要なので、これらの点も補足しています。
ネット検索で来られる方の多くは、現在レンタルしているサーバーで CMS の導入を考えている方が多いと考えられるため、その点を補足しながら説明します。CMSによるサイト運用を考えた場合、どのような点に着目してサーバーをレンタルすればよいか、判断の一助にもなると思います。
CMSを動かすには、最低限、サーバーレンタル業者から、以下のサービスが提供されている必要があります。またPHPやCGIなど、その CMS が要求する動作要件を満たしている必要があります。
中には特定のモジュールを必要とする物があります。それらの動作条件を満たしている必要があります。
CMSを自分で設置して動かすには、最低限、上記のサービスがサーバー管理者から提供されている必要があります。そして、CMS が要求する動作条件として PHP や MySQL のバージョンを満たしている必要があります。
これらはあくまで動作に必要とされる要件であり、サイトを運用するために必要な条件とは混同できないので注意が必要です。
バージョンが不明な場合はサーバー管理者に問い合せます。また、CMSが特定のPHPモジュールなどが指定されていた場合も、それらが利用可能か、不明な場合は サーバー管理者に別途問い合せる必要があります。
本稿はLAN内の開発環境を前提にしていますが、ホスティングサービスにおいても、CMS設置手順に違いがあるわけではありません。単にネットワークが、インターネットか、イントラネットか、の違いに過ぎないので、本稿で紹介する手順で CMS を導入する事が出来ますが、注意が必要です。
公共のネットワークで接続されたサーバーにおいて CMS によるサイト運用を考えた場合は求められる安全対策が全く異なるためです。検索エンジン等で本項を参照する方の多くは、これに該当すると思われるので、先にその点を補足します。
.CMS は Webサーバーで動作するプログラム言語で書かれており、多くはSQLデータベースと親和性の高いPHPで書かれています。 以下は Web と DataBase のサービスが1台のサーバー(PC)で走っている様子を示しています。
Internet(ユーザー)
↓↑… port80&443
Apache(Web Server)← PHP → MySQL(DB)
この ApacheとMySQLの位置関係はlocalhost の位置関係にあります。決まり事があってそうなっている訳ではありませんが、一般的にホスティングサービスにおいてはWebサーバとDBサーバが同一ホストであることが一般的です。
このように同一ホストの位置関係にある場合は、SQLデータベースへ直接接続できるのは、セキュリティの観点から localhost のみ、つまりサーバー自身のみになっています。データベースサーバーへの直接の通り道はふさがれています。
つまり、ネットワーク側から、直接、SQLデータベースへ接続するためのポートは開いておらず、ローカルホストで立ち上げているサーバー経由、例えば、Webサーバーとか、SSH などを経由してデータベースに接続して操作する、という位置関係にあります。
この位置関係を認識しておかないと、CMS によるサイト運用におけるセキュリティについて考えることが出来ません。追々説明しますが、CMSの場合は、WebサーバーがMySQL等のデータベースに接続するためのフロントエンドの役割を果たしている点は、記憶に留めておいて下さい。
ちなみに本稿が想定している構成は以下になります。
■物理的に隔離されたネットワーク
Apache(Web Server)← PHP → MySQL(DB)
↑↓… port80(LAN)
Intranet(ユーザー)
やってる事はホスティングサービスと全く同じでも、公共のネットワーク、すなわちインターネットではないので、盗聴からネットワークを守るための仕組みは必須ではありませんが、ホスティングサービスにおいてはそれが必須になります。
.ホスティングサービスの多くは、独自SSLのサービスは標準手提供していません。独自SSLは自分のドメインに対してSSLによる接続が可能なサービスです。SSL証明書の取得が必要となるため有料のサービスになります。
格安のホスティングサービスでは、共用SSL、または共有SSLといった名前でSSLサービスを提供しているところがあります。
これは、独自ドメインによる運用ではなく、事業者が取得した証明書を使うことになるので、運用は事業者から指定を受けたドメイン(ディレクトリ)に限られるため、自由度がありません。
例えば、入力フォームなどで、個人情報を求める場合に、通信経路を暗号化したい場合などが想定されています。しかし、ブラウザが使用する httpプロトコル(Web)をいくら暗号化しても、それを受け取る側がメールなど受信経路が暗号化されていなければ何の意味もありません。そういった無意味なサービスを提供している事業者は、実は世の中に沢山存在しています。いくら無料と言っても、客引きのために不完全なサービスを提供していたり、あるいは利用者側の使い方の問題などで、意味のない運用をしているサイト管理者は結構存在していると思われます。
CMSによるサイト運用は、通信経路がSSLで暗号化保護されていることが必須の条件になります。CMSの管理インターフェイスが、盗聴によって第三者にログインされれば、それはサイトの改竄、個人情報を扱うサイトであれば、データベースから全ての情報が盗まれることを意味するからです。
ちなみに今時の無料のブログサービスでも、SSLで通信経路は暗号化されているとおもいます。それを暗号化も出来ない状況で提供する有料のホスティングサービスが存在しています。
CMSを餌にコスト最優先で不完全なサービスは提供すべきでないと個人的に考えています。特にCMSによる企業サイトの運用を検討している方は、サーバーをレンタルする段階から検討の必要があることは忘れないで下さい。