DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


ja:security

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ja:security [2010-01-05 18:02] – fully updated kazmiyaja:security [2014-09-30 03:12] (現在) – [IIS でのディレクトリへのアクセス拒否] sawachan
行 18: 行 18:
 非常に重大な、パッチが提供される前にバグを公開することで世界中の DokuWiki を危険にさらしてしまう可能性があるようなバグを除き、最初の 2 つの方法が推奨されます。 非常に重大な、パッチが提供される前にバグを公開することで世界中の DokuWiki を危険にさらしてしまう可能性があるようなバグを除き、最初の 2 つの方法が推奨されます。
  
-これまでのすべてのセキュリティの問題は、[[http://bugs.splitbrain.org/index.php?tasks=all&project=1&type=1&cat=5&status=all&perpage=20|バグトラッキングシステム]]で見ることができます。+これまでのすべてのセキュリティの問題は、[[http://bugs.dokuwiki.org/index.php?tasks=all&project=1&type=1&cat=5&status=all&perpage=20|バグトラッキングシステム]]で見ることができます。
  
 発見されたセキュリティの問題の重大性によって、将来のリリースの中で修正されるか (非常に小さな問題の場合)、もしくはバグ修正版リリースが作成されることになります。後者の場合、ユーザーには[[:ja:update_check|アップデートの確認]]機構を通して通知されます。 発見されたセキュリティの問題の重大性によって、将来のリリースの中で修正されるか (非常に小さな問題の場合)、もしくはバグ修正版リリースが作成されることになります。後者の場合、ユーザーには[[:ja:update_check|アップデートの確認]]機構を通して通知されます。
行 37: 行 37:
   * ''inc'' (アクセスできても危険ではありませんが)   * ''inc'' (アクセスできても危険ではありませんが)
  
-アクセス権限を調整する必要があるかどうかを確認するには、''%%http://yourserver.example.com/dokuwiki/data/pages/wiki/dokuwiki.txt%%'' にアクセスしてみてください。この方法でファイルにアクセスできてしまうようではいけません。+アクセス権限を調整する必要があるかどうかを確認するには、''%%http://yourserver.example.com/data/pages/wiki/dokuwiki.txt%%'' にアクセスしてみてください。この方法でファイルにアクセスできてしまうようではいけません。
  
 もしディレクトリの安全が適切に確保されていない場合は、安全にする方法について、以下に示すサブセクションをお読みください。 もしディレクトリの安全が適切に確保されていない場合は、安全にする方法について、以下に示すサブセクションをお読みください。
行 43: 行 43:
 ==== Apache でのディレクトリへのアクセス拒否 ==== ==== Apache でのディレクトリへのアクセス拒否 ====
  
-最もシンプルな方法は、Apache の設定で ''.htaccess'' のサポートを有効することです。[[http://httpd.apache.org/docs/2.2/howto/htaccess.html|Apache の .htaccess チュートリアル]]を参照してください。+一番単純な方法は、Apache の設定で ''.htaccess'' 機能を有効することです。 
 +[[http://httpd.apache.org/docs/2.2/ja/howto/htaccess.html|Apache チュートリアル: .htaccess ファイル]]を参照してさい。
  
 +DokuWiki には正しく設定された .htaccess ファイルが付属しています。
 +置かれているディレクトリへの全アクセスをブロックする .htaccess ファイルの内容は以下のとおりです:
 +
 +<code>
 +order allow,deny
 +deny from all
 +</code>
 +
 +**備考**:Ubuntu で apache2 を使用した場合、.htaccess が機能しない!
 +
 +一般的になのか Ubuntu 特有なのか判らないですが、Apache2 は Apache1.x とは若干異なる設定になっているようです。
 +
 +///etc/apache2/sites-available// 内の //default// ファイルを変更する必要があります。
 +(http の代わりに https を使う場合は、//default-ssl// ファイル)
 +
 +ファイルには以下があるはずです:
 +
 +<code>
 +NameVirtualHost *
 +<VirtualHost *>
 +        ServerAdmin admin@site.com
 +
 +        DocumentRoot /var/www/
 +        <Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </Directory>
 +        <Directory /var/www/>
 +                Options Indexes FollowSymLinks MultiViews
 +                AllowOverride none
 +                Order allow,deny
 +                allow from all
 +        </Directory>
 +</code>
 +<nowiki><Directory /var/www/></nowiki> 内の AllowOverride のデフォルトは **none** ですが、**all** にして下さい。
 +
 +apache の設定を更新するために ///etc/init.d/apache2 reload// すると、.htaccess ファイルは有効になるはずです。
 +
 +(See http://ubuntuforums.org/showthread.php?t=47669 の全スレッドを参照して下さい)
 +
 +[全体を変更する代わりに、例えば ''/var/www/path-to-dokuwiki'' のような、DokuWiki をインストールした特定のディレクトリに対してこの変更をすることもできます。]
 +
 +
 +----
 +
 +他の方法は、''VirtualHost'' 設定内で ''LocationMatch'' ディレクティブを使用します。
 +''.htaccess'' ファイルよりは少しだけ効率的です。
 +''Directory'' ディレクティブの直下に追加します:
 +<code>
 +<LocationMatch "/(data|conf|bin|inc)/">
 +    Order allow,deny
 +    Deny from all
 +    Satisfy All
 +</LocationMatch>
 +</code>
 +
 +//しかし、[[http://httpd.apache.org/docs/2.0/ja/sections.html#file-and-web]] の「いつ何を使うか」章を見て下さい。
 +''Location'' ディレクティブは仮想パス (データベースから生成されるウェブページなど) にのみ使用し、ファイルシステム上のオブジェクトへのアクセスを制限するためには決して使用ないように、とあります。
 +私の意見では、.htaccess が利用できないか不十分な場合、ディレクトリ毎の制限をHost の設定ファイル内に直接置くのが最も安全な方法です。
 +これ[[http://ada.adrianlang.de/dokuwiki-php-execution#solutions_in_the_configuration]]は手堅い方法ですし、「標準」とすべきです。//
 +
 +----
 +
 +例えば、他に wiki インストールがあるとか data|conf|bin|inc ディレクトリを含む別の "root" がある場合、例えば、他に wiki インストールがある等、上の方法では問題が起きる可能性があります。
 +自分の wiki インストールフォルダーのみに LocationMatch 条件を拡張することで、この問題は回避できます。
 +<code>
 +        <Directory /var/www/dokuwiki>
 +            order deny,allow
 +            allow from all
 +        </Directory>
 +
 +        <LocationMatch "^/dokuwiki/(data|conf|bin|inc)/">
 +            order allow,deny
 +            deny from all
 +            satisfy all
 +        </LocationMatch>
 +</code>
 ==== IIS でのディレクトリへのアクセス拒否 ==== ==== IIS でのディレクトリへのアクセス拒否 ====
  
-IIS の設定により、上述のディレクトリへのアクセスを拒否することができます。+上記のディレクトリへのアクセスは、IIS の設定で無効できます。 
 + 
 +IIS8+ (Servers 2012 and 2012R2) 場合: 
 + 
 +  - "IIS Request Filtering" を選択します。 
 +  - "URL" タブを選びます。 
 +  - "Allow URL" をクリックします。 
 +  - ポップアップボックスに "/data/media/" を入力し、"OK" をクリックします。 
 +  - "Deny Sequence..." をクリックします。 
 +  - ポップアップボックスに "/data/" を入力し、"OK" をクリックします。 
 +  - /conf/ /bin/ /inc/ ディレクトリに対して、"Deny Sequence..." 指示を繰り返します。 
 + 
 +{{http://s30.postimg.org/osgziov3l/IIS8_filters.jpg}} 
 + 
 +IIS7 の場合: 
 + 
 +  - "IIS Request Filtering" を選択します。 
 +  - "URL" タブを選びます。 
 +  - "Deny Sequence" をクリックします。 
 +  - ポップアップボックスに "/data/" を入力します。 
 + 
 +"/data/media" に対して同じ操作をし、"Always Allow" を選びます(そうしないと、画像・その他が表示されません)。 
 +IIS 7.5 の場合、引用符を追加しないで下さい。 
 +URL 内の /data/media を読むでしょう。 
 + 
 + 
 +注:デフォルトでは、Management Console snap-in for Internet Information Services 7 には "IIS Request Filtering" セクションへのアクセス権がありません。 
 +[[http://www.microsoft.com/web/downloads/platform.aspx|Web Platform Installer]] 使用して "IIS Administration pack 1.0" をインストールすると有効になります。 
 + 
 +注2:"/data" ではなく "/data/" と入力することを確認して下さい。 
 +そうでないと、"data" で始まるページにアクセスできなくなります。 
 + 
 +**IIS 7+ の代替方法**  
 + 
 +(共用ホストのように)IIS の設定オプションにアクセスできない場合、以下の方法使用可能です。 
 + 
 +代替方法1: 
 + 
 +DokuWiki ルートディレクトリに次のファイルを配置できます: 
 + 
 +<file xml web.config> 
 + 
 +<?xml version="1.0" encoding="UTF-8"?> 
 +<configuration> 
 +    <system.webServer> 
 +        <security> 
 +            <requestFiltering> 
 +                <filteringRules> 
 +                </filteringRules> 
 +                <alwaysAllowedUrls> 
 +                    <add url="/data/media/" /> 
 +                </alwaysAllowedUrls> 
 +                <denyUrlSequences> 
 +                    <add sequence="/data/" /> 
 +                    <add sequence="/conf/" /> 
 +                    <add sequence="/bin/" /> 
 +                    <add sequence="/inc/" /> 
 +                </denyUrlSequences> 
 +            </requestFiltering> 
 +        </security> 
 +    </system.webServer> 
 +</configuration> 
 + 
 +</file> 
 + 
 +代替方法2: 
 + 
 +保護を必要とするディレクトリに次の web.config ファイルを配置できます。 
 + 
 +  * ''data'' 
 +  * ''conf'' 
 +  * ''bin'' 
 +  * ''inc'' (アクセスしても危険はありませんが) 
 + 
 +<file xml web.config> 
 + 
 +<?xml version="1.0" encoding="UTF-8"?> 
 +<configuration> 
 +    <system.webServer> 
 +        <handlers accessPolicy="None" /> 
 +    </system.webServer> 
 +</configuration> 
 + 
 + 
 +</file> 
 + 
 +IIS 6.5 以前の場合:
  
   - 設定用のツールを起動します: スタート -> 設定 -> コントロール パネル -> 管理ツール -> インターネット インフォメーション サービス   - 設定用のツールを起動します: スタート -> 設定 -> コントロール パネル -> 管理ツール -> インターネット インフォメーション サービス
   - 保護したいディレクトリまで進みます: ローカル コンピュータ -> Web サイト -> 規定の Web サイト -> //ディレクトリへのパス//   - 保護したいディレクトリまで進みます: ローカル コンピュータ -> Web サイト -> 規定の Web サイト -> //ディレクトリへのパス//
   - フォルダを右クリックしてプロパティを選択 -> ディレクトリ セキュリティ -> IP アドレスとドメイン名の制限 -> 編集   - フォルダを右クリックしてプロパティを選択 -> ディレクトリ セキュリティ -> IP アドレスとドメイン名の制限 -> 編集
-  - 「規定では、すべてのコンピュータからの接続を: 拒否する」を選択します+  - 「規定では、すべてのコンピュータからの接続を: 拒否する」を選択します。 
 +  - /data/ /conf/ /bin/ /inc/ ディレクトリに対して、これを繰り返します。 
 +==== data ディレクトリを変更する ==== 
 + 
 +最も重要なことは ''data'' ディレクトリを安全にすることです。上述のような方法でディレクトリへのアクセス拒否を設定できない場合には、少なくとも data ディレクトリの場所を推測できないように変更すべきです。 
 + 
 +具体的には data ディレクトリの名前を複雑なもの(例:英数字からなるランダムな文字列)に代え、その場所を ''conf/local.php'' ファイルの [[ja:config:savedir|設定項目: savedir]] オプションに設定します。
  
 ==== ドキュメントルート外へのディレクトリの移動 ==== ==== ドキュメントルート外へのディレクトリの移動 ====
行 107: 行 277:
 ===== プラグインのセキュリティ ===== ===== プラグインのセキュリティ =====
  
-DokuWiki には、[[:ja:plugins|コミュニティから提供された多数のプラグイン]]があります。プラグインは、新しいコードを追加することによって DokuWiki に新しい機能を追加します。これは、実質的にコードからあなたのサーバに対して任意にアクセスできるということを意味します。さらにプラグインは DokuWiki とは別に、もっぱらその場限りの方法で配布されています。それらは DokuWiki コアのコードベースが受けているような一定の注目や検査の影響下にはありません。従って、プラグインをインストールする前にはセキュリティへの警戒が必要となります。+DokuWiki には、[[:ja:plugins|コミュニティから提供された多数のプラグイン]]があります。プラグインは、新しいコードを追加することによって DokuWiki に新しい機能を追加します。これは、実質的にコードからあなたのサーバに対して任意にアクセスできるということを意味します。さらにプラグインは DokuWiki とは別に、もっぱらその場限りの方法で配布されています。それらは DokuWiki コアのコードベースが受けているような一定の注目や検査の影響下にはありません。従って、プラグインをインストールする前にはセキュリティへの警戒が必要す。
  
 以下に、インストールするプラグインを選ぶ際に役立ついくつかのヒントを示します。 以下に、インストールするプラグインを選ぶ際に役立ついくつかのヒントを示します。
行 116: 行 286:
   * プラグインは、DokuWiki プロジェクトとは直接関係のない開発者によって作成されています。彼らは経験不足であったり、悪意を持っていたり、危険にさらされたサーバ上でプラグインのソースコードをホストしている可能性があります。あなたが誰を信頼するかについて注意してください!   * プラグインは、DokuWiki プロジェクトとは直接関係のない開発者によって作成されています。彼らは経験不足であったり、悪意を持っていたり、危険にさらされたサーバ上でプラグインのソースコードをホストしている可能性があります。あなたが誰を信頼するかについて注意してください!
   * セキュリティ警告の言及に備えてプラグインのページを確認し、新しいリリースが利用可能になった場合はプラグインをアップグレードしてください。   * セキュリティ警告の言及に備えてプラグインのページを確認し、新しいリリースが利用可能になった場合はプラグインをアップグレードしてください。
 +
 +プラグインの[[ja:devel:security#セキュリティ問題に関する報告は・・|セキュリティ問題に関する報告は・・]] もご覧ください。
 +
 +===== アクセス制御について =====
 +
 +[[:ja:acl|アクセス制御リスト (ACL)]] を設定することによって、DokuWiki のページまたは名前空間に対してユーザがどのようなアクセス権をもつかをコントロールできます。例えば、ユーザが属するグループあるいはユーザごとに、ページの閲覧や編集を許可したり、制限することができます。
  
 ===== 追加の読み物 ===== ===== 追加の読み物 =====
行 121: 行 297:
 以下に、セキュリティに関する内部および外部のページをもう少し挙げておきます。 以下に、セキュリティに関する内部および外部のページをもう少し挙げておきます。
  
-  * [[:ja:acl|アクセス制御の設定]] 
   * [[:ja:tips:httpslogin|HTTPS でのログインを強制する]]   * [[:ja:tips:httpslogin|HTTPS でのログインを強制する]]
   * [[:ja:install:php|DokuWiki 向けの PHP 設定]]   * [[:ja:install:php|DokuWiki 向けの PHP 設定]]
ja/security.1262710927.txt.gz · 最終更新: 2010-01-05 18:02 by kazmiya

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki