「セキュリティ」の版間の差分

提供:MoodleDocs
移動先:案内検索
 
(同じ利用者による、間の7版が非表示)
3行目: 3行目:
==すべての前に==
==すべての前に==
*この記事には、あなたのインストール済みMoodleに関する重要なセキュリティ対策が記載されています。
*この記事には、あなたのインストール済みMoodleに関する重要なセキュリティ対策が記載されています。
*セキュリティ問題は、直接 http://security.moodle.org に投稿してください - 他の場所でしたら開発者が見落とす可能性がありますし、( アタックを避けるため ) 問題が解決されるまで一般公衆にリリースされないからです。
*セキュリティ問題は、直接 http://security.moodle.org に投稿してください - 他の場所でしたら開発者が見落とす可能性がありますし、(アタックを避けるため) 問題が解決されるまで一般公衆にリリースされないからです。
*同じ理由で、セキュリティ上の弱点 ( exploits ) をbugtrackerやフォーラムに投稿しないでください。
*同じ理由で、セキュリティ上の弱点 (exploits) をbugtrackerやフォーラムに投稿しないでください。


==シンプルなセキュリティ対策==
==シンプルなセキュリティ対策==
15行目: 15行目:
*それぞれのリリースでMoodleを定期的にアップデートしてください。
*それぞれのリリースでMoodleを定期的にアップデートしてください。
:リリース後、公開されるセキュリティホール情報は、クラッカーの注意を引きます。古いバージョンほど、より脆弱性を含む場合があります。
:リリース後、公開されるセキュリティホール情報は、クラッカーの注意を引きます。古いバージョンほど、より脆弱性を含む場合があります。
*PHPのregister globals ( register_globals ) を無効にしてください。
*PHPのregister globals (register_globals) を無効にしてください。
:サードバーティ開発によるMoodle用スクリプトのXSS問題を防ぐ助けになります。
:サードバーティ開発によるMoodle用スクリプトのXSS問題を防ぐ助けになります。
*管理者および教師には強力なパスワードを使用してください。
*管理者および教師には強力なパスワードを使用してください。
:「推測が難しい」パスワードの使用は、アカウントの「brute force」クラッキングを防ぐ、基本的なセキュリティ対策です。
:「推測が難しい」パスワードの使用は、アカウントの「brute force」クラッキングを防ぐ、基本的なセキュリティ対策です。
*信頼できるユーザにのみ教師アカウントを与えてください。プロダクションサーバ ( 実際に運用するサーバ ) で、公開したサンドボックスにフリーの教師アカウントを作成しないでください。
*信頼できるユーザにのみ教師アカウントを与えてください。プロダクションサーバ (実際に運用するサーバ) で、公開したサンドボックスにフリーの教師アカウントを作成しないでください。
:教師アカウントは、非常に自由な権限があり、データを悪用したり盗むことが簡単にできてしまいます。
:教師アカウントは、非常に自由な権限があり、データを悪用したり盗むことが簡単にできてしまいます。
*あなたのシステムを可能な限り分離してください。
*あなたのシステムを可能な限り分離してください。
26行目: 26行目:
==定期的にアップデートを実行する==
==定期的にアップデートを実行する==
*システムを定期的にアップデートしてください。
*システムを定期的にアップデートしてください。
*Windows Update ( Microsoft Update )
*Windows Update (Microsoft Update)
*Linux: up2date、yum、apt-get
*Linux: up2date、yum、apt-get
:cronを使用してスクリプトによる自動アップデートをお考えください。
:cronを使用してスクリプトによる自動アップデートをお考えください。
44行目: 44行目:
*ファイアウォールは、防御を保障するものではありません。
*ファイアウォールは、防御を保障するものではありません。
*許可されたポート
*許可されたポート
:80、443 ( ssl )、9111 ( chat用 )  
:80、443 (ssl)、9111 (chat用)  
:Remote admin: ssh 22 または RDP ( Remote Desktop Protocol ) 3389
:Remote admin: ssh 22 または RDP ( Remote Desktop Protocol ) 3389


54行目: 54行目:
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html


==Moodleセキュリティアラート ( 警報 )==
==Moodleセキュリティアラート (警報)==
*あなたのサイトをMoodle.orgに登録してください。
*あなたのサイトをMoodle.orgに登録してください。
:登録したユーザにはメールアラート ( 警報 ) が送信されます。
:登録したユーザにはメールアラート (警報) が送信されます。
*セキュリティアラートはオンラインでも投稿されます。
*セキュリティアラートはオンラインでも投稿されます。
*ウェブ - http://security.moodle.org/  
*ウェブ - http://security.moodle.org/  
73行目: 73行目:


==もっとも安全な/こだわり過ぎのファイルパーミッション==
==もっとも安全な/こだわり過ぎのファイルパーミッション==
あなたがMoodleをシールドサーバで稼動させて ( 例 マシンにユーザログインを許可しない )、rootがMoodleコードおよびMoodleの設定 ( config.php ) を管理していると仮定すれば、これはもっとも厳重なパーミッションだと考えられます:
あなたがMoodleをシールドサーバで稼動させて (例 マシンにユーザログインを許可しない)、rootがMoodleコードおよびMoodleの設定 (config.php) を管理していると仮定すれば、これはもっとも厳重なパーミッションだと考えられます:


1. moodledataディレクトリおよびディレクトリ内のすべてのコンテンツ ( およびサブディレクトリ、セッションを含む ):
1. moodledataディレクトリおよびディレクトリ内のすべてのコンテンツ (およびサブディレクトリ、セッションを含む):
  オーナー: apache user ( apache、httpd、www-data、その他なんでも )
  オーナー: apache user (apache、httpd、www-data、その他なんでも)
  グループ: apache group ( apache、httpd、www-data、その他なんでも )
  グループ: apache group (apache、httpd、www-data、その他なんでも)
  パーミッション: ディレクトリに700、ファイルに600
  パーミッション: ディレクトリに700、ファイルに600


2. moodleディレクトリ、ディレクトリ内の全てのコンテンツおよびサブディレクトリ ( config.phpを含む ):
2. moodleディレクトリ、ディレクトリ内の全てのコンテンツおよびサブディレクトリ (config.phpを含む):
  オーナー: root
  オーナー: root
  グループ: root
  グループ: root
90行目: 90行目:
  パーミッション: ディレクトリに750ファイルに640
  パーミッション: ディレクトリに750ファイルに640


これらのパーミッションは、こだわり過ぎのファイルパーミッションであると思ってください。より少ない厳密なパーミッションでmoodledataおよびmoodelディレクトリ ( およびサブディレクトリ ) を十分に安全にすることができます。
これらのパーミッションは、こだわり過ぎのファイルパーミッションであると思ってください。より少ない厳密なパーミッションでmoodledataおよびmoodelディレクトリ (およびサブディレクトリ) を十分に安全にすることができます。


==ログインしないとユーザプロフィールの写真が表示されないようにするには==
==ログインしないとユーザプロファイルの写真が表示されないようにするには==
現状では、ユーザプロフィールにアップロードした写真へは、ログインせずにアクセスすることが可能です。
現状では、ユーザプロファイルにアップロードした写真へは、ログインせずにアクセスすることが可能です。


*Moodleを改造しない場合
*Moodleを修正しない場合
:#自分の写真を公開されたくない場合、個人的な写真をアップロードしないように使用許諾等に記載する。
:#「自分の写真を公開されたくない場合、個人的な写真をアップロードしない」旨を使用許諾等に記載する。
:#config.phpに <b>$CFG->disableuserimages = true;</b> を追加して、ユーザが個人的な写真をアップロードできないようにする。
:#または、config.phpに <b>$CFG->disableuserimages = true;</b> を追加して、ユーザが個人的な写真をアップロードできないようにする。


*Moodleを改造する場合
*Moodleを修正する場合
:*/users/pix.phpを下記のように改造することで、ログインなしのユーザ写真アクセスを禁止する。
:<b>/user/pix.php</b>を下記のように改造することで、ログインなしのユーザ写真アクセスを禁止する※1。
:※1: ユーザがHTMLフォーマットのメールを受信する設定にしている場合、フォーラム投稿内容のメール通知でプロファイル写真が表示されないという'''デメリット'''があります。


<?PHP // $Id: pix.php,v 1.15 2006/09/23 09:38:39 skodak Exp $
----
      // This function fetches user pictures from the data directory
::<b>//</b>    $nomoodlecookie = true;    <- 「//」でコメントアウトまたは削除
      // Syntax:   pix.php/userid/f1.jpg or pix.php/userid/f2.jpg
::<br />require_once('../config.php');
      //    OR:   ?file=userid/f1.jpg or ?file=userid/f2.jpg
::require_once($CFG->libdir.'/filelib.php');
<br />
::<br /><b>require_login(); </b>   <- 追加
<b>//</b>    $nomoodlecookie = true;    // Because it interferes with caching
----
<br />
    require_once('../config.php');
    require_once($CFG->libdir.'/filelib.php');
<br />
    // disable moodle specific debug messages
    disable_debugging();
<br />
    $relativepath = get_file_argument('pix.php');
<br />
    $args = explode('/', trim($relativepath, '/'));
<br />
    if (count($args) == 2) {
        $userid  = (integer)$args[0];
        $image    = $args[1];
        $pathname = $CFG->dataroot.'/users/'.$userid.'/'.$image;
    } else {
        $image    = 'f1.png';
        $pathname = $CFG->dirroot.'/pix/u/f1.png';
    }
<br />
    if (file_exists($pathname) and !is_dir($pathname)) {
        send_file($pathname, $image);
    } else {
        header('HTTP/1.0 404 not found');
        error(get_string('filenotfound', 'error')); //this is not displayed on IIS??
    }
?>


==関連情報==
==関連情報==
[[セキュリティFAQ]]
*Using Moodleのフォーラムディスカッション [http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]
*Using Moodleのフォーラムディスカッション [http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]



2009年10月4日 (日) 17:37時点における最新版

すべてのウェブアプリケーションソフトウェアは、非常に複雑で、どのアップリケーションにも時々発見されるセキュリティの問題があります。通常、これらの問題は、プログラマが予期することのできない入力の組み合わせに関係しています。Moodleプロジェクトでは、セキュリティを重要な部分であると認識し、随時セキュリティホールに対応する等、継続した改善作業を行っています。

すべての前に

  • この記事には、あなたのインストール済みMoodleに関する重要なセキュリティ対策が記載されています。
  • セキュリティ問題は、直接 http://security.moodle.org に投稿してください - 他の場所でしたら開発者が見落とす可能性がありますし、(アタックを避けるため) 問題が解決されるまで一般公衆にリリースされないからです。
  • 同じ理由で、セキュリティ上の弱点 (exploits) をbugtrackerやフォーラムに投稿しないでください。

シンプルなセキュリティ対策

  • 最良のセキュリティ対策は、データのバックアップを適切に取ることです! しかし、バックアップデータをリストアできないようでしたら、適切なバックアップと呼ぶことができません。リストア処理をテストしてください!
  • あなたが使用するソフトウェアまたはサービスのみをロードするようにしてください。
  • 定期的にMoodleのアップデートを行ってください。
  • あなたが寒い冬の日に着る服の層にならって、セキュリティ対策を行ってください。

基本的な推奨

  • それぞれのリリースでMoodleを定期的にアップデートしてください。
リリース後、公開されるセキュリティホール情報は、クラッカーの注意を引きます。古いバージョンほど、より脆弱性を含む場合があります。
  • PHPのregister globals (register_globals) を無効にしてください。
サードバーティ開発によるMoodle用スクリプトのXSS問題を防ぐ助けになります。
  • 管理者および教師には強力なパスワードを使用してください。
「推測が難しい」パスワードの使用は、アカウントの「brute force」クラッキングを防ぐ、基本的なセキュリティ対策です。
  • 信頼できるユーザにのみ教師アカウントを与えてください。プロダクションサーバ (実際に運用するサーバ) で、公開したサンドボックスにフリーの教師アカウントを作成しないでください。
教師アカウントは、非常に自由な権限があり、データを悪用したり盗むことが簡単にできてしまいます。
  • あなたのシステムを可能な限り分離してください。
もう1つの基本的なセキュリティテクニックは、異なるシステムで異なるパスワードを使用し、異なるサービスには異なるマシンを使用すること等です。このことは、1つのアカウントまたは1つのサーバが奪取されても、被害が広範囲に及ぶことを防ぎます。

定期的にアップデートを実行する

  • システムを定期的にアップデートしてください。
  • Windows Update (Microsoft Update)
  • Linux: up2date、yum、apt-get
cronを使用してスクリプトによる自動アップデートをお考えください。
  • Mac OSXシステムアップデート
  • php、apache、Moodleは、可能な限り常に最新のバージョンを使用してください。

最新情報を取得するため、メーリングリストを使用する

ファイアウォール

  • セキュリティ専門家は、デュアルファイアーウォールを推奨しています。
ハードウェア/ソフトウェアのコンビネーション
  • 利用しないサービスを無効にすることは、ファイアーウォールと同じく効果的です。
netstat -a コマンドを使用して、開いているネットワークポートを調査してください。
  • ファイアウォールは、防御を保障するものではありません。
  • 許可されたポート
80、443 (ssl)、9111 (chat用)
Remote admin: ssh 22 または RDP ( Remote Desktop Protocol ) 3389

最悪の事態に備える

Moodleセキュリティアラート (警報)

  • あなたのサイトをMoodle.orgに登録してください。
登録したユーザにはメールアラート (警報) が送信されます。

そのほかの考慮すべき事項

下記のすべては、あなたが考慮しても良い、セキュリティ全般に対して影響を与える事項です:

  • opentogoogleを無効にする、特にK12サイト。
  • SSLを使用する、httpslogins=yes。
  • ゲストアクセスを無効にする。
  • すべてのコースに登録キーを設定する。
  • 強固なパスワードを使用する。
  • セキュアフォーム設定を使用する。
  • MySQLのrootユーザにパスワードを設定する。
  • MySQLのネットワークアクセスを無効にする。

もっとも安全な/こだわり過ぎのファイルパーミッション

あなたがMoodleをシールドサーバで稼動させて (例 マシンにユーザログインを許可しない)、rootがMoodleコードおよびMoodleの設定 (config.php) を管理していると仮定すれば、これはもっとも厳重なパーミッションだと考えられます:

1. moodledataディレクトリおよびディレクトリ内のすべてのコンテンツ (およびサブディレクトリ、セッションを含む):

オーナー: apache user (apache、httpd、www-data、その他なんでも)
グループ: apache group (apache、httpd、www-data、その他なんでも)
パーミッション: ディレクトリに700、ファイルに600

2. moodleディレクトリ、ディレクトリ内の全てのコンテンツおよびサブディレクトリ (config.phpを含む):

オーナー: root
グループ: root
パーミッション: ディレクトリに755ファイルに644

あなたがローカルログインを許可している場合、2.は次のようにしてください:

オーナー: root
グループ: apache group
パーミッション: ディレクトリに750ファイルに640

これらのパーミッションは、こだわり過ぎのファイルパーミッションであると思ってください。より少ない厳密なパーミッションでmoodledataおよびmoodelディレクトリ (およびサブディレクトリ) を十分に安全にすることができます。

ログインしないとユーザプロファイルの写真が表示されないようにするには

現状では、ユーザプロファイルにアップロードした写真へは、ログインせずにアクセスすることが可能です。

  • Moodleを修正しない場合
  1. 「自分の写真を公開されたくない場合、個人的な写真をアップロードしない」旨を使用許諾等に記載する。
  2. または、config.phpに $CFG->disableuserimages = true; を追加して、ユーザが個人的な写真をアップロードできないようにする。
  • Moodleを修正する場合
/user/pix.phpを下記のように改造することで、ログインなしのユーザ写真アクセスを禁止する※1。
※1: ユーザがHTMLフォーマットのメールを受信する設定にしている場合、フォーラム投稿内容のメール通知でプロファイル写真が表示されないというデメリットがあります。

// $nomoodlecookie = true; <- 「//」でコメントアウトまたは削除

require_once('../config.php');
require_once($CFG->libdir.'/filelib.php');

require_login(); <- 追加

関連情報

セキュリティFAQ