====== セキュリティ ====== DokuWiki は Web アプリケーションであり、多くの場合インターネットから到達可能な公開サーバ上で利用されています。これは、例えばデスクトップシステム上のローカルアプリケーションに比べると、悪意のある人々から攻撃されるリスクがより大きいということを意味します。 DokuWiki はセキュリティを念頭に置いて開発されています。私たちはユーザビリティとセキュリティのバランスを取ろうと試みていますが、満足のいく妥協点が見つけられない場合はセキュリティを優先しています。 このページでは、あなたの DokuWiki が安全であることを確認するためにはどのような面に気を配らなければならないのかについて、概要を説明します。 ===== 報告と通知 ===== DokuWiki にセキュリティの問題を発見した場合は、私たちにお知らせください。推奨される通知方法は以下の通りです。 * [[:ja:bugs|バグレポート]]を投稿する * [[:ja:mailinglist|メーリングリスト]]にメールを投稿する * [[andi@splitbrain.org]] 個人宛てにメールを送る 非常に重大な、パッチが提供される前にバグを公開することで世界中の DokuWiki を危険にさらしてしまう可能性があるようなバグを除き、最初の 2 つの方法が推奨されます。 これまでのすべてのセキュリティの問題は、[[http://bugs.splitbrain.org/index.php?tasks=all&project=1&type=1&cat=5&status=all&perpage=20|バグトラッキングシステム]]で見ることができます。 発見されたセキュリティの問題の重大性によって、将来のリリースの中で修正されるか (非常に小さな問題の場合)、もしくはバグ修正版リリースが作成されることになります。後者の場合、ユーザーには[[:ja:update_check|アップデートの確認]]機構を通して通知されます。 古いバージョンの DokuWiki に対してはセキュリティ問題の修正が一切リリースされないため、**常に**最も新しいバージョンの DokuWiki を利用するべきです。 ===== Web アクセスのセキュリティ ===== DokuWiki は、設定データとページデータをファイルに保管します。これらのファイルは、絶対に Web から直接アクセスできてはいけません。DokuWiki の配布用 tar ボールには、通常 Apache Web サーバに対して特定のディレクトリへのアクセス拒否を指示するための ''.htaccess'' ファイル一式が含まれています。 **もし Apache Web サーバを使用していない場合、もしくは Apache が ''.htaccess'' ファイルを利用しない設定となっている場合は、DokuWiki の安全を自分の手で確保する必要があります。** 以下に示すディレクトリは、Web からアクセスできては**いけません**。 * ''data'' * ''conf'' * ''bin'' * ''inc'' (アクセスできても危険ではありませんが) アクセス権限を調整する必要があるかどうかを確認するには、''%%http://yourserver.example.com/dokuwiki/data/pages/wiki/dokuwiki.txt%%'' にアクセスしてみてください。この方法でファイルにアクセスできてしまうようではいけません。 もしディレクトリの安全が適切に確保されていない場合は、安全にする方法について、以下に示すサブセクションをお読みください。 ==== Apache でのディレクトリへのアクセス拒否 ==== 最もシンプルな方法は、Apache の設定で ''.htaccess'' のサポートを有効化することです。[[http://httpd.apache.org/docs/2.2/howto/htaccess.html|Apache の .htaccess チュートリアル]]を参照してください。 ==== IIS でのディレクトリへのアクセス拒否 ==== IIS の設定により、上述のディレクトリへのアクセスを拒否することができます。 - 設定用のツールを起動します: スタート -> 設定 -> コントロール パネル -> 管理ツール -> インターネット インフォメーション サービス - 保護したいディレクトリまで進みます: ローカル コンピュータ -> Web サイト -> 規定の Web サイト -> //ディレクトリへのパス// - フォルダを右クリックしてプロパティを選択 -> ディレクトリ セキュリティ -> IP アドレスとドメイン名の制限 -> 編集 - 「規定では、すべてのコンピュータからの接続を: 拒否する」を選択します ==== ドキュメントルート外へのディレクトリの移動 ==== 上述のディレクトリへのアクセスを避けるための最も安全な方法は、これらのディレクトリを、Web サーバのいわゆる「ドキュメントルート」の外側に移動してしまうことです。 === data ディレクトリ === - ''data'' ディレクトリをドキュメントルートの外側に移動してください。 - 新しい ''data'' ディレクトリの場所を指し示すため、[[:ja:config:savedir|設定項目: savedir]] を編集してください。 例えば、''data'' ディレクトリが ''/home/yourname/data'' に移動された場合は、以下の行を ''conf/local.php'' ファイルに追加してください。 $conf['savedir'] = '/home/yourname/data/'; === conf ディレクトリ === - ''conf'' ディレクトリ (およびその内容) をドキュメントルートの外側に移動してください。 - ''preload.php'' という名前のファイルを ''inc'' ディレクトリ内に作成し、新しい ''conf'' ディレクトリの位置を定義する ''DOKU_CONF'' という定数を設定してください。 例えば、''conf'' ディレクトリが ''/home/yourname/conf'' に移動された場合は、以下の ''inc/preload.php'' ファイルを作成してください。 === bin ディレクトリ === ''bin'' ディレクトリには、[[:ja:cli|コマンドラインツール]]が含まれています。もしサーバのシェルにアクセスできない場合は、単純にこのディレクトリとその内容を削除することができます。アクセスできる場合は、このディレクトリをドキュメントルートの外に移動してください。追加の設定は不要です。 === inc ディレクトリ === ''inc'' ディレクトリをドキュメントルートの外に移動するための簡単な方法は、現在のところありません。しかし、このディレクトリには注意を払うべき情報が一切含まれていないため、なんとしてでも移動しようと努力する価値はありません。 ===== DokuWiki の設定 ===== DokuWiki には、インストールされた DokuWiki の様々なセキュリティ面に影響を与えるいくつかの設定項目があります。それぞれの設定項目が何を行うためのもので、推奨される設定がどのようなものであるかを知るには、以下のページを参照してください。 * [[:ja:config:allowdebug]] -- システム情報の漏洩を防ぐためデバッグ出力を無効化する :!: * [[:ja:config:fmode]]、[[:ja:config:dmode]] -- DokuWiki が作成するファイルのパーミッションを設定する ([[:ja:permissions|パーミッション]]の設定に関する情報も参照してください) * [[:ja:config:fetchsize]] -- 外部データのキャッシュ動作を設定する * [[:ja:config:fullpath]] -- ページのフルパスを表示する * すべての[[:ja:auth|認証の設定]] * [[:ja:config:usewordblock]] -- ブラックリストを用いてスパム投稿を防ぐ * [[:ja:config:mailguard]] -- ロボットによるメールアドレスの収集を避ける * [[:ja:config:iexssprotect]] -- Internet Explorer が持つ XSS の問題から保護する * [[:ja:config:htmlok]] -- HTML コードの埋め込みを許可する * [[:ja:config:phpok]] -- PHP コードの埋め込みを許可する * [[:ja:config:hidepages]] -- 特定のページを索引や検索結果から隠す * [[:ja:config:safemodehack]] -- セーフモードの制限に対処する ===== プラグインのセキュリティ ===== DokuWiki には、[[:ja:plugins|コミュニティから提供された多数のプラグイン]]があります。プラグインは、新しいコードを追加することによって DokuWiki に新しい機能を追加します。これは、実質的にコードからあなたのサーバに対して任意にアクセスできるということを意味します。さらにプラグインは DokuWiki とは別に、もっぱらその場限りの方法で配布されています。それらは DokuWiki コアのコードベースが受けているような一定の注目や検査の影響下にはありません。従って、プラグインをインストールする前にはセキュリティへの警戒が必要となります。 以下に、インストールするプラグインを選ぶ際に役立ついくつかのヒントを示します。 * インストールする//前に//、可能であればプラグインのソースコードを自身で検査してください。 * 疑わしい場合は、[[:ja:mailinglist|メーリングリスト]]で質問してください。 * プラグインは、外部から直接アクセス可能な ''lib'' ディレクトリの下にインストールされます。プラグインに何が含まれているかを精査し、必要に応じて .htaccess ファイルでアクセスを遮断してください。 * プラグインは、DokuWiki プロジェクトとは直接関係のない開発者によって作成されています。彼らは経験不足であったり、悪意を持っていたり、危険にさらされたサーバ上でプラグインのソースコードをホストしている可能性があります。あなたが誰を信頼するかについて注意してください! * セキュリティ警告の言及に備えてプラグインのページを確認し、新しいリリースが利用可能になった場合はプラグインをアップグレードしてください。 ===== 追加の読み物 ===== 以下に、セキュリティに関する内部および外部のページをもう少し挙げておきます。 * [[:ja:acl|アクセス制御の設定]] * [[:ja:tips:httpslogin|HTTPS でのログインを強制する]] * [[:ja:install:php|DokuWiki 向けの PHP 設定]] * [[:ja:tips:clean_acl|削除されたページ向けの ACL ルールを削除する]] * {{http://www.apachesecurity.net/download/apachesecurity-ch03.pdf|Apache セキュリティ - 第 3 章: PHP}}