Movable Type CMSプラットフォーム Movable Type
ドキュメントサイト

Blogブログ

Movable Type を安全に利用するためにできること

あなたの Movable Type のバージョンはいくつですか?

先日、いくつかの不具合修正とセキュリティ対策を行った Movable Type 6.0.6 (5.2.11 / 5.18(MTA)) をリリースしました。Movable Type をはじめとするインターネットを利用するソフトウェアは、必然的にセキュリティ問題とは無縁ではいられませんが、ソフトウェア以外の部分でも安全性を向上することができます。

では、どのような方法があるのでしょうか?

最新の Movable Type を利用する

最新のバージョンでは、新機能の追加や不具合修正だけではなく、セキュリティ対策も施されています。これは、弊社内で発見したものをはじめ、利用者の方からのレポートにより発見されたものも含まれています。常に最新バージョンにアップデートをし続けることは、手間が掛かりますが、是非アップデートをよろしくお願いします。Movable Type 5.x 以前のバージョンをご利用の場合は、「Movable Type 6 へのアップグレード」をご参照のうえ、アップグレードをご検討ください。

管理画面に BASIC 認証をかける

簡単に実施できる対策としては、BASIC 認証の利用があげられます。認証用の ID とパスワードは、Movable Type のユーザー名 、パスワードとは別の情報を用いた方が良いでしょう。BASIC 認証を利用する場合は、後述の SSL 通信も併せて有効にした方が良いです。

管理画面を SSL 通信にする

Movable Type へのログイン情報や、操作内容を保護するには、管理画面へのアクセスを SSL 通信にする事が必要です。SSL通信を有効にする方法は、ご利用のウェブサーバーのドキュメントをご参照ください。ご利用のサーバーによっては、以下の対策も必要かもしれません。

CGI スクリプト名を変更する

BASIC 認証や、SSL 通信を利用できないサーバーをお使いの場合でも、CGI スクリプト名を予測しにくい名前に変更することで、第三者からの不正アクセスを防ぐことが期待できます。

Movable Type の CGI スクリプト名は、[mt.cgi] や [mt-upgrade.cgi] など、どの環境でも同じ名前になりますが、それぞれのスクリプト名を環境変数で変更する事ができます。なかでも、[AdminScript] と [UpgradeScript] を変更する事が重要です。この2つの CGI スクリプトは、アプリケーション側の CGI スクリプトなので、第三者によるアクセスを許可する必要がないためです。

変更出来る CGI スクリプトと環境変数

AdminScript
管理プログラムの CGI スクリプトの名前を設定します
UpgradeScript
アップグレードスクリプトを設定します
CommentScript
Movable Typeで利用するコメントスクリプトを設定します
ActivityFeedScript
ログフィードを取得するための CGI スクリプトの名前を設定します
DataAPIScript
Data API のアクセス用スクリプトを設定します
CommunityScript
コミュニティソリューションで使用する CGI スクリプトの名前を設定します
CheckScript
システム情報を確認するためのスクリプトを設定します
TrackbackScript
トラックバックスクリプトを設定します
AtomScript
Atom API スクリプトを設定します
SearchScript
検索スクリプトを設定します
XMLRPCScript
XML-RPC スクリプトを設定します

使わないCGIスクリプトの権限を変える

Movable Type には、前述のように様々な CGI スクリプトが提供されています。利用状況によっては、利用していない CGI スクリプトもあると思います。そういった CGI スクリプトは、実行権限を与えないようにする事で安全性を高めることができます。

また、古いバージョンからの上書きアップグレードをしている場合は、現在配布していない機能の CGI スクリプトが残っている場合があります。利用していない機能であれば、それらの実行権限を無くしても問題ありません。

Movable Type が提供する機能と CGI スクリプト

Movable Type のコメント機能を利用していない
mt-comments.cgi の実行権限を無くす
トラックバック機能を利用していない
mt-tb.cgi の実行権限を無くす
Movable Type Data API 機能を利用していない
mt-data-api.cgi の実行権限を無くす
ログフィード機能を利用していない
mt-feed.cgi の実行権限を無くす
公開サイト側で Movable Type の検索機能を利用していない
mt-search.cgi, mt-ftsearch.cgi の実行権限を無くす
XMLRPC 機能を利用していない
mt-xmlrpc.cgi の実行権限を無くす
Atom API 機能を利用していない
mt-atom.cgi の実行権限を無くす

上書きアップグレードで残っている可能性がある CGI スクリプト

  • mt-add-notify.cgi
  • mt-view.cgi

インストール後は利用しない CGI スクリプト

  • mt-wizard.cgi
  • mt-upgrade.cgi

    ※ ただし、Movable Type や プラグインのアップグレード時に必要になります

パスワードの強度をあげる

単純な文字列や、短いパスワードを利用していると、ユーザーの乗っ取りが起きやすくなります。Movable Type 5.13 で導入された [パスワードの検証ルール] を使う事で、Movable Type のユーザーパスワードの強度を高くさせることができます。詳しくは、ドキュメントをご参照ください。

ロックアウトを設定する

Movable Type 5.13 で導入された [認証ロックアウト機能] を適切に設定することで、総当たり攻撃への対策ができます。

初期状態では、ユーザーが、30 分以内に、6 回以上パスワードを間違えた場合、或いは、同一 IP アドレス 10 回以上サインインに失敗した場合に、30 分間サインインを拒否します。詳しくは、ドキュメントをご参照ください。

Data API の設定

Movable Type 6.0 でリリースされた Data API を使うと、Movable Typeに投稿された記事(公開されている記事)の情報を簡単に取得することができます。特定の項目を取得不可にするには、DisableResourceField 環境変数で行えます。

サイト全体で Data API を利用しない場合は、前述のように実行権限を無くすか、スクリプト名を変更する事で対応ができます。ブログやウェブサイト単位で Data API を無効にする機能については、次期バージョン以降での実装を検討しています。

ブログ単位で Data API 実行制限を施す「Movable Type用DataAPI Disablerプラグイン v1.0」というプラグインがエムロジック株式会社様よりリリースされています。


如何でしたでしょうか? いくつかを除いては、すぐ始められるものばかりです。
当然ですが、Movable Type のログや、各種サーバーのログ(アクセスログやエラーログなど)をチェックすることも重要です。

Movable Type クラウド版では、上記対策でも触れている、管理画面の SSL 化や BASIC 認証を簡単に設定する事ができます。また、常に最新の Movable Type が提供されますので、アップデートの煩わしさがありません。

また、運用中のサイト(Movable Type で管理されていないサイトも可)をクラウド版へデータ移行するサービスもあります。

Movable Type クラウド版も是非お試しください。

  • このエントリーをはてなブックマークに追加