CMSのセキュリティ対策(静的配信型CMSの利点)

Webサイトは、24時間 365日インターネット上で公開することになるため、CMSのセキュリティ対策は重要です。 MicroEngine CMSは静的配信方式を採用しているため、セキュリティに強いCMSと言えます。その仕組や対策内容についてご紹介します。

静的配信

MicroEngine CMSは、コンテンツをHTMLファイルとして出力する静的配信方式を採用しています。 静的配信方式では、管理画面でページを保存すると公開用のHTMLファイルが生成されます。 公開しているWebページが閲覧されたときには、静的サイトと同様に作成済みのHTMLファイルを返すだけなので、Webサーバー内ではプログラムは実行されません。 静的配信は応答時間が短いということやサーバー負荷が低いということもありますが、セキュリティ面でも有利になります。

静的配信CMSと動的配信CMSの仕組みの違いについては下記の図をご覧ください。

静的配信CMSの仕組み
動的配信CMSの仕組み

外部からの攻撃に強い

他の多くのCMSで採用されている動的配信方式では、Webページがアクセスされるたびにプログラムが実行されます。 動的配信方式では、CMSの本体プログラムやプラグインに不備があると公開しているページに外部から直接攻撃される恐れがあります。MicroEngine CMSが採用している静的配信方式ではその心配がないことが大きな利点です。

CMSと公開サーバーを別けることができる

イントラネット内やアクセス制限を設定した非公開のWebサーバー上にMicroEngine CMSをインストールして利用することができます。 MicroEngine CMSで書き出したHTMLは静的サイトのHTMLと同様ですので、別の公開用のWebサーバーに転送して公開することができます。 このような方式でも運用することができるため、go.jpドメインの省庁サイトやテレビ局などでも利用実績があります。
※HTMLなどのコンテンツを自動転送するためには、別途ツールを用意する必要があります。

認証画面の保護

CMSと公開サーバーを別けられない場合でも、より安全に運用するために認証画面を保護する方法があります。

認証画面をWebサーバーの設定で保護する

MicroEngine CMSの認証画面・管理画面やすべてのプログラムファイルは、/me/admin ディレクトリ配下にまとめられています。 Webサーバーの機能で管理画面にアクセスできるIPアドレスを制限したり、ベーシック認証を設定して二重に保護することが可能です。
※このような想定がされていない他のCMSでは、管理画面と公開ページ用のプログラムが混在していて対策が難しい場合もあります。

静的配信方式のため、公開ページではプログラムは実行されません。管理画面をWebサーバーで保護することで、外部からプログラムファイルに直接アクセスされることを防ぐことができます。

認証画面URLの変更

管理画面は /me/admin というパスになりますが、このパスを変更することができます。 インストール時に変更する場合は簡単です。アーカイブファイル内の me ディレクトリを別の任意の名前にリネームするだけです。インストール時に実行されるインストーラーによって変更後のパスが自動的に設定されます。

インストール後に管理画面のパスを変更したい場合は、me ディレクトリを移動した上で、設定ファイルの cms_path を移動後のパスに変更します。 画像などを管理画面でアップロードした場合に、デフォルトでは、/me/upload ディレクトリに保存されます。これについても 設定ファイルの upload_path 項目で変更することができます。

ログイン試行回数を制限する

設定回数以上ログイン認証に失敗するとアカウントをロックアウトして、一定期間はログイン試行を無効にする機能があります。 これはブルートフォース攻撃を防ぐために有効です。

アカウント管理

ユーザーの権限を適切に制限して安全に運用することができます。

ロール設定

MicroEngine CMSにログインできるユーザーには、「システム管理者」「デザイナー」「編集者」のロール(役割)を設定することができます。 ユーザーを追加するには、「システム管理者」のロールが必要ですし、テンプレートを書き換えるには「デザイナー」ロールが必要になります。 適切なロールを設定することで、操作できる管理画面の機能を制限することができます。

アクセス権設定

ユーザーごとに、編集できるページ・テンプレート・ファイルをディレクトリ・ファイル単位で指定することができます。 たとえば、お知らせページのみ管理できるユーザーを作成するというご利用方法も可能です。

ログ監査

システム管理者ロールのユーザーは、ログ閲覧機能でログイン情報やページ更新情報など全てのユーザーの操作内容を確認することができます。

更新ページ確認

システム管理者ロールのユーザーは、更新ページ一覧画面の「すべてのタブ」で最新の更新ページを確認することができます。

アプリケーション構成・構築方法

データベースサーバー不要

MySQLやPostgreSQLのようなデータベースサーバーを使わないため、データベースサーバーの保護が不要です。 データベース・サーバーを必要とするCMSの場合は、構築方法によってはデータベースサーバーがグローバルIPを保持している場合があります。その場合には適切な設定をしないとWebサーバーと同様に外部から攻撃の対象となってしまいます。 MicroEngine CMSはファイルタイプのデータベースを採用していて、データベースサーバーを使用していないため、こういったことを考慮する必要がありません。

設定ファイルをより安全な場所に保管する

設定ファイルはデフォルトではドキュメントルート内に配置されていて、Webサーバーの設定(.htaccess)によりWebサーバーを経由してアクセスできない仕組みになっています。 これらの設定ファイルをドキュメントルート外の任意の場所に移動して、Webサーバーの設定に依存せずに外部からのアクセスを防ぐことも可能です。

PHPやSQLの記述不要

PHPやSQLを記述せずに、HTMLのコメントを利用したMEタグだけでサイトを構築します。プログラミング言語の記述が不要なため、その記述ミスによるトラブルを防ぐことができます。