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

提供:MoodleDocs
移動先:案内検索
 
(同じ利用者による、間の28版が非表示)
1行目: 1行目:
'''慎重に翻訳中です。''' [[利用者:Mitsuhiro Yoshida|Mitsuhiro Yoshida]] 2006年7月11日 (火) 19:05 (WST)
すべてのウェブアプリケーションソフトウェアは、非常に複雑で、どのアップリケーションにも時々発見されるセキュリティの問題があります。通常、これらの問題は、プログラマが予期することのできない入力の組み合わせに関係しています。Moodleプロジェクトでは、セキュリティを重要な部分であると認識し、随時セキュリティホールに対応する等、継続した改善作業を行っています。
すべてのウェブアプリケーションソフトウェアは、非常に複雑で、どのアップリケーションにも時々発見されるセキュリティの問題があります。通常、これらの問題は、プログラマが予期することのできない入力の組み合わせに関係しています。Moodleプロジェクトでは、セキュリティを重要な部分であると認識し、随時セキュリティホールに対応する等、継続した改善作業を行っています。


==Before all==
==すべての前に==
*In this article, you will find important security measures for your Moodle installation.
*この記事には、あなたのインストール済みMoodleに関する重要なセキュリティ対策が記載されています。
*You should report security problems directly at http://security.moodle.org - because developers might overlook it elsewhere, and they must not be released to general public until they are solved (to prevent attacks).
*セキュリティ問題は、直接 http://security.moodle.org に投稿してください - 他の場所でしたら開発者が見落とす可能性がありますし、(アタックを避けるため) 問題が解決されるまで一般公衆にリリースされないからです。
*You should not post actual exploits in the bugtracker or forums, for exactly the same reasons.
*同じ理由で、セキュリティ上の弱点 (exploits) をbugtrackerやフォーラムに投稿しないでください。


==Simple security measures==
==シンプルなセキュリティ対策==
*The best security strategy is a good backup! But you don't have a good backup unless you are able to restore it. Test your restoration procedures!
*最良のセキュリティ対策は、データのバックアップを適切に取ることです! しかし、バックアップデータをリストアできないようでしたら、適切なバックアップと呼ぶことができません。リストア処理をテストしてください!
*Load only software or services you will use
*あなたが使用するソフトウェアまたはサービスのみをロードするようにしてください。
*Perform regular updates
*定期的にMoodleのアップデートを行ってください。
*Model your security after the layers of clothing you wear on a cold winter day
*あなたが寒い冬の日に着る服の層にならって、セキュリティ対策を行ってください。


==Basic recommendations==
==基本的な推奨==
*Update Moodle regularly on each release
*それぞれのリリースでMoodleを定期的にアップデートしてください。
:Published security holes draw crackers attention after release. The older the version, the more vulnerabilities it is likely to contain.
:リリース後、公開されるセキュリティホール情報は、クラッカーの注意を引きます。古いバージョンほど、より脆弱性を含む場合があります。
*Disable register globals
*PHPのregister globals (register_globals) を無効にしてください。
:This will help prevent against possible XSS problems in third-party scripts.
:サードバーティ開発によるMoodle用スクリプトのXSS問題を防ぐ助けになります。
*Use strong passwords for admin and teachers
*管理者および教師には強力なパスワードを使用してください。
:Choosing "difficult" passwords is a basic security practice to protect against "brute force" cracking of accounts.
:「推測が難しい」パスワードの使用は、アカウントの「brute force」クラッキングを防ぐ、基本的なセキュリティ対策です。
*Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.
*信頼できるユーザにのみ教師アカウントを与えてください。プロダクションサーバ (実際に運用するサーバ) で、公開したサンドボックスにフリーの教師アカウントを作成しないでください。
:Teacher accounts have much freer permissions and it is easier to create situations where data can be abused or stolen.
:教師アカウントは、非常に自由な権限があり、データを悪用したり盗むことが簡単にできてしまいます。
*Separate your systems as much as possible
*あなたのシステムを可能な限り分離してください。
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.
:もう1つの基本的なセキュリティテクニックは、異なるシステムで異なるパスワードを使用し、異なるサービスには異なるマシンを使用すること等です。このことは、1つのアカウントまたは1つのサーバが奪取されても、被害が広範囲に及ぶことを防ぎます。


==Run regular updates==
==定期的にアップデートを実行する==
*Use auto update systems
*システムを定期的にアップデートしてください。
*Windows Update  
*Windows Update (Microsoft Update)
*Linux: up2date, yum, apt-get
*Linux: up2date、yum、apt-get
:Consider automating updates with a script scheduled via cron
:cronを使用してスクリプトによる自動アップデートをお考えください。
*Mac OSX update system
*Mac OSXシステムアップデート
*Stay current with php, apache, and moodle
*php、apache、Moodleは、可能な限り常に最新のバージョンを使用してください。


==Use mailing lists to stay updated==
==最新情報を取得するため、メーリングリストを使用する==
*CERT - http://www.us-cert.gov/cas/signup.html
*CERT - http://www.us-cert.gov/cas/signup.html
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list
*PHP - http://www.php.net/mailing-lists.php - Announcements listにサインアップ
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements
*MySQL - http://lists.mysql.com - MySQL Announcementsにサインアップ


==Firewalls==
==ファイアウォール==
*Security experts recommend a dual firewall
*セキュリティ専門家は、デュアルファイアーウォールを推奨しています。
:Differing hardware/software combinations
:ハードウェア/ソフトウェアのコンビネーション
*Disabling unused services is often as effective as a firewall
*利用しないサービスを無効にすることは、ファイアーウォールと同じく効果的です。
:Use netstat -a to review open network ports
:netstat -a コマンドを使用して、開いているネットワークポートを調査してください。
*Not a guarantee of protection
*ファイアウォールは、防御を保障するものではありません。
*Allow ports
*許可されたポート
:80, 443(ssl), and 9111 (for chat),
:80、443 (ssl)、9111 (chat用)  
:Remote admin: ssh 22, or rpd 3389
:Remote admin: ssh 22 または RDP ( Remote Desktop Protocol ) 3389


==Be prepared for the worst==
==最悪の事態に備える==
*Have backups ready
*常にバックアップを取ってください。
*Practice recovery procedures ahead of time
*リカバリの手順を前もって練習してください。
*Use a rootkit detector on a regular basis
*rootkit探知プログラムを定期的に使用してください。
**Linux/MacOSX - http://www.chkrootkit.org/  
**Linux/MacOSX - http://www.chkrootkit.org/  
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html


==Moodle security alerts==
==Moodleセキュリティアラート (警報)==
*Register your site with Moodle.org
*あなたのサイトをMoodle.orgに登録してください。
:Registered users receive email alerts
:登録したユーザにはメールアラート (警報) が送信されます。
*Security alerts also posted online
*セキュリティアラートはオンラインでも投稿されます。
*Web - http://security.moodle.org/  
*ウェブ - http://security.moodle.org/  
*RSS feed - http://security.moodle.org/rss/file.php/1/1/forum/1/rss.xml
*RSSフィード - http://security.moodle.org/rss/file.php/1/1/forum/1/rss.xml
 
==そのほかの考慮すべき事項==
下記のすべては、あなたが考慮しても良い、セキュリティ全般に対して影響を与える事項です:
*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


==Miscellaneous considerations==
2. moodleディレクトリ、ディレクトリ内の全てのコンテンツおよびサブディレクトリ (config.phpを含む):
These are all things you might consider that impact your overall security:
オーナー: root
*Turn off opentogoogle, esp for K12 sites
グループ: root
*Use SSL, httpslogins=yes
パーミッション: ディレクトリに755ファイルに644
*Disable guest access
*Place enrollment keys on all courses
*Use good passwords
*Use the secure forms setting
*Set the mysql root user password
*Turn off mysql network access


==Most secure/paranoid file permissions==
あなたがローカルログインを許可している場合、2.は次のようにしてください:
Assuming you are running this on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:
オーナー: root
グループ: apache group
パーミッション: ディレクトリに750ファイルに640


1. moodledata directory and all of its contents (and subdirs, includes sessions):
これらのパーミッションは、こだわり過ぎのファイルパーミッションであると思ってください。より少ない厳密なパーミッションでmoodledataおよびmoodelディレクトリ (およびサブディレクトリ) を十分に安全にすることができます。
owner: apache user (apache, httpd, www-data, whatever)
group: apache group (apache, httpd, www-data, whatever)
perms: 700 on directories, 600 on files


2. moodle directory and all of its contents and subdirs (including config.php):
==ログインしないとユーザプロファイルの写真が表示されないようにするには==
owner: root
現状では、ユーザプロファイルにアップロードした写真へは、ログインせずにアクセスすることが可能です。
group: root
perms: 755 on directories, 644 on files.


If you allow local logins, then 2. should be:
*Moodleを修正しない場合
owner: root
:#「自分の写真を公開されたくない場合、個人的な写真をアップロードしない」旨を使用許諾等に記載する。
group: apache group
:#または、config.phpに <b>$CFG->disableuserimages = true;</b> を追加して、ユーザが個人的な写真をアップロードできないようにする。
perms: 750 on directories, 640 on files


Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).
*Moodleを修正する場合
:<b>/user/pix.php</b>を下記のように改造することで、ログインなしのユーザ写真アクセスを禁止する※1。
:※1: ユーザがHTMLフォーマットのメールを受信する設定にしている場合、フォーラム投稿内容のメール通知でプロファイル写真が表示されないという'''デメリット'''があります。
 
----
::<b>//</b>    $nomoodlecookie = true;    <- 「//」でコメントアウトまたは削除
::<br />require_once('../config.php');
::require_once($CFG->libdir.'/filelib.php');
::<br /><b>require_login(); </b>    <- 追加
----


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


[[Category:Administrator]]
[[en:Security]]

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