【摘要】許多學(xué)校都已經(jīng)構(gòu)建了自己的Moodle服務(wù)器,但是Moodle服務(wù)器的管理維護工作沒有跟得上,針對Moodle操作中管理員容易疏忽的環(huán)節(jié)和常犯的錯誤,總結(jié)出“三大紀律,八項注意”,從而指導(dǎo)Moodle管理員做好日常管理和維護工作。
【關(guān)鍵詞】Moodle;管理維護;服務(wù)器安全;服務(wù)器優(yōu)化
【中圖分類號】G40-057 【文獻標(biāo)識碼】A 【論文編號】1009—8097(2010)04—0143—07
一 問題的提出
隨著Moodle應(yīng)用的普及,很多學(xué)校都架構(gòu)起了自己的Moodle服務(wù)器,但是在服務(wù)器的日常管理與維護中出現(xiàn)很多問題。不少學(xué)校由于Moodle管理員不具備相關(guān)的知識技能,甚至沒有專門的Moodle服務(wù)器管理人員,使得他們的Moodle服務(wù)器常常因一些操作失誤或者使用不規(guī)范、存在安全漏洞、配置不當(dāng)?shù)鹊仍斐珊艽髶p失。
本文所有代碼、配置基于以下環(huán)境:CentOS5.2,Apache2.2.3,php5.2.6,Mysql5.0.22。
二 MOODLE管理的三大紀律
1 第一大紀律:密碼強化管理(強口令和更換機制)
作為服務(wù)器管理員,掌控賬號是最重要的職責(zé)之一,賬號管理的好壞直接決定著服務(wù)器運行安全的優(yōu)劣。作為Moodle管理員需要特別嚴格控制的賬號包括:操作系統(tǒng)賬號、數(shù)據(jù)庫賬號、Moodle系統(tǒng)賬號。
(1) 操作系統(tǒng)根管理員密碼。Linux操作系統(tǒng)本身的安全性比較高,漏洞比較少,黑客攻擊Linux操作系統(tǒng)時,最常用的方法是破解密碼,因此Linux系統(tǒng)密碼安全成為保障Linux服務(wù)器安全的重中之重。在日常的服務(wù)器管理中,管理員對此重視不夠,常常設(shè)置一些弱口令如“123456”、“111111”等,給操作系統(tǒng)安全留下了很大的隱患。Linux服務(wù)器默認支持的密碼位數(shù)最少為5位,當(dāng)前常用的一些暴力破解軟件很容易就能破解6位以內(nèi)的密碼,因此管理員在設(shè)置密碼時應(yīng)該慎重,在此我們推薦將密碼設(shè)置為8位,采用字母大小寫+數(shù)字+特殊字符的方式,如Qip5309!。僅僅設(shè)置一個固定不變的強口令還是不夠的,因為強口令也能很容易得被監(jiān)控類黑客軟件所攔截,所以還應(yīng)該定期進行密碼更改,具體更換周期可以根據(jù)服務(wù)器重啟頻率來定,如果頻率比較高則降低更換周期。
在此還要注意的一點是,管理員自己一定要牢記密碼,預(yù)防黑客的同時,不能把自己也關(guān)在操作系統(tǒng)的大門之外。在此推薦結(jié)合中文詩句的拼音或某種有規(guī)律的變換來設(shè)置密碼,如用“BrysjHhrhl!”代表“白日依山盡,黃河入河流”、“2d10cfdy1024?”代表“2的10次方等于1024?”等等。萬一不小心遺失密碼,也可以采用如下方式解決。
方法一:進入單用戶模式修改密碼。
進入單用戶模式的方式有三種:第一種,使用Linux系統(tǒng)啟動軟盤啟動,出現(xiàn)提示符后輸入:linux single。系統(tǒng)進入單用戶模式。第二種使用Linux系統(tǒng)的引導(dǎo)程序LILO,同樣在出現(xiàn)提示符時輸入:linux single。第三種方式是最常用的,即使用引導(dǎo)程序GRUB。啟動GRUB后用上下鍵將高亮光標(biāo)選擇操作系統(tǒng)選項(…ro root…所在行),然后鍵入e進行編輯。選擇kernel開頭的一行,再按e鍵,在末尾,按空格鍵后加入single,按回車鍵退出編輯模式?;氐紾RUB界面,鍵入b進入單用戶模式。
進入單用戶模式后,運行級別為1,即獨占模式。在提示符“#”后輸入passwd root后重設(shè)root密碼,重啟后密碼會更新。還有一種方式是通過修改/etc/shadow文件來刪除root密碼。在提示符“#”后輸入vi /etc/shadow將root后第一個“:”和第二個“:”之間的字符全部刪除,即可清除root密碼,然后輸入wq!強行保存退出,再鍵入reboot命令重啟后可以以空密碼登錄。
方法二:使用系統(tǒng)安裝盤。
如果方法一無法實現(xiàn),則只能采用Linux系統(tǒng)安裝盤啟動,出現(xiàn)boot提示符后輸入linux rescue,進入linux拯救模式,根據(jù)提示登入系統(tǒng),重設(shè)root密碼命令如下:
#chroot /mnt/sysimage(讓系統(tǒng)成為根環(huán)境)
#cd /mnt/sysimage
#passwd root
更改密碼后重啟后就可以以新密碼登錄。
(2) 數(shù)據(jù)庫賬號。一些管理員在編譯安裝mysql后忘記設(shè)置mysql根密碼,使得系統(tǒng)存在很大的安全隱患。設(shè)置Mysql數(shù)據(jù)庫根用戶密碼的方式是:在mysql安裝完成后,首先啟動mysql,然后在提示符后輸入命令mysqladmin –u root password‘密碼’。目前大多數(shù)管理員都采用phpmyadmin對mysql數(shù)據(jù)庫進行管理,在安裝phpmyadmin時,也應(yīng)該設(shè)置登錄驗證方式,將phpmyadmin根目錄下config.inc.php文件中的認證方式改為http,即$cfg['Servers'][$i]['auth_type']='http';這樣以后登錄phpmyadmin時就需要輸入賬號密碼。僅僅設(shè)置密碼還不夠,最好將phpmyadmin的保存文件夾改名,從而隱藏phpmyadmin的登錄路徑,減少被暴力破解的幾率。
(3) Moodle管理員賬號。Moodle管理員密碼的設(shè)置同樣應(yīng)該遵循上面的密碼設(shè)置規(guī)則,在1.9.7版本以后,Moodle加強了管理員密碼的安全性,默認設(shè)置將密碼增加到最少8位,必須由大小寫字母加數(shù)字和特殊字符組成,這樣的密碼強度,在目前的密碼破解軟件水平下已經(jīng)很難被破解。Moodle管理員不應(yīng)開設(shè)太多,一般開設(shè)兩到三個管理員賬號為佳,平時的一般操作盡量采用普通賬號,盡量減少超級管理員賬號的使用次數(shù),從而降低暴露機會。管理員賬號一定要專人專用,避免出現(xiàn)一個賬號多人使用的情況,這樣出現(xiàn)問題后無法確定問題的根源,加大了管理的難度。萬一把Moodle管理員的密碼忘記了,可以采取下面的辦法重設(shè)密碼:
方法一:利用phpmyadmin重設(shè)密碼。第一步,進入phpmyadmin;第二步,打開mdl_user數(shù)據(jù)庫;第三步,點擊編輯用戶名為admin的記錄,修改密碼。在此需要注意的是,Moodle密碼字段采用了MD5加密(32位),因此不能直接清空或輸入明文,而應(yīng)粘貼輸入相應(yīng)的MD5編碼。如123456的MD5編碼(32位)為:e10adc3949ba59abbe56e057f20f883e。
方法二:通過上傳代碼強制修改密碼,具體代碼如下所示:
require_once( 'config.php' );
require_once( 'lib/adminlib.php' );
$admin = get_admin();
$adminusername = $admin->username;
echo\"
當(dāng)前要修改的是 '$adminusername'
\";update_internal_user_password( $admin, 'moodle' );
echo\"密碼已成功修改為moodle,記得刪除此文件,現(xiàn)在可以用moodle做密碼登陸了!!\";
?>
將以上代碼另存為resetadmin.php,然后上傳到moodle根目錄下,在瀏覽器里輸入http://你的moodle地址/resetadmin.php看到修改密碼成功的提示后,就成功地將admin用戶密碼修改為moodle,在修改完成后記得刪除resetadmin.php文件。
2 第二大紀律:及時升級
Moodle是由分布在全球各地的程序員共同維護的開源軟件,在軟件的開發(fā)過程中難免會出現(xiàn)漏洞,作為Moodle管理員應(yīng)該時常關(guān)注Moodle的發(fā)展動態(tài),出現(xiàn)漏洞后,及時升級Moodle系統(tǒng),避免造成損失。另外,最好將你的Moodle站點注冊,Moodle的創(chuàng)始人馬丁及其團隊會在發(fā)現(xiàn)漏洞之前將漏洞信息以及應(yīng)對措施發(fā)到已注冊的網(wǎng)站管理員的郵箱,這樣可以及時修正漏洞,避免遭受攻擊。在升級時,首先要做好系統(tǒng)及數(shù)據(jù)的備份工作;第二要注意盡量避免跨版本升級,比如從1.5升級到1.9,直接用1.9的網(wǎng)站文件覆蓋1.5的文件會造成很多問題。正確的升級方法是,首先應(yīng)該將1.5升級到1.6,然后升級到1.7,再升到1.8,最后才是1.9,這樣逐級升級會避免因為數(shù)據(jù)庫的過大改動給平臺造成的不兼容后果。第三要將原來的配置文件、主題目錄、語言包等復(fù)制和恢復(fù)。
升級的方法是用新版本的文件覆蓋原來的文件,然后登錄平臺點擊通告完成升級。在升級過程中除了注意避免跨版本升級外,還應(yīng)注意不要覆蓋配置文件、語言包和主題文件,以及有過改動的程序文件。由于升級的過程是不可逆的,在升級之前一定要先做好備份。備份方法為:
#61548;備份程序文件,即Moodle的主程序,一般是整個文件夾備份。
#61548;備份Moodle數(shù)據(jù)文件,即Moodledata文件夾(注意其存放位置和自定義的名稱)。
#61548;備份數(shù)據(jù)庫文件,可以使用命令:mysqldump Moodle數(shù)據(jù)庫名 > moodledata-backup.sql,將數(shù)據(jù)庫轉(zhuǎn)存為單獨的SQL文件。也可以采用Phpmyadmin的導(dǎo)出功能。具體步驟為:登錄Phpmyadmin數(shù)據(jù)庫管理系統(tǒng),選擇Moodle的數(shù)據(jù)庫,然后選擇導(dǎo)出,選中所有數(shù)據(jù)表,然后選擇另存為文件中的zip壓縮,點擊執(zhí)行即可,具體設(shè)置如圖1所示。
3第三大紀律:訪問有效控制
(1) 角色管理策略
Moodle1.8之后的版本中默認有七種角色:管理員、課程創(chuàng)建者、教師、沒有編輯權(quán)限的教師、學(xué)生、認證用戶和訪客。首先要了解各個角色的權(quán)限和作用范圍。管理員具有站點全部權(quán)限,管理員還具有分配管理員的權(quán)限,在分配管理員角色時,應(yīng)該慎重,因為分配管理員的同時,復(fù)制了自己的權(quán)限。課程創(chuàng)建者,可以創(chuàng)建課程,可以分配課程內(nèi)的以上七種角色,也可以對課程進行編輯加工和進行上課,課程創(chuàng)建者的角色可以在用戶策略里設(shè)置,在創(chuàng)建課程時的默認角色,一般設(shè)為教師,即課程創(chuàng)建者默認為教師角色。教師角色和課程創(chuàng)建者擁有的權(quán)限基本一致。沒有編輯權(quán)限的教師只能利用課程進行授課和批改作業(yè),不能編輯課程活動。學(xué)生的權(quán)限比較低,只能參加學(xué)習(xí)活動,參與討論,瀏覽課程內(nèi)容。訪客是課程內(nèi)權(quán)限最低的角色,只有瀏覽的權(quán)限。認證用戶是以上七種角色除了訪客外所有角色在登錄平臺后的統(tǒng)稱,認證用戶角色跟其他角色沒有沖突,設(shè)置認證用戶角色的目的是為了讓所有登錄用戶能夠參與網(wǎng)站層面的一些活動,比如討論區(qū),問卷調(diào)查等。其次在分配角色時,還應(yīng)注意全局角色、課程類別角色、課程角色的區(qū)別,全局角色對平臺上所有的課程起作用;課程類別角色則對該類別或欄目內(nèi)的課程起作用;課程角色只對本課程起作用。例如課程管理員只能管理本課程內(nèi)部的事務(wù),全局管理員則可以管理包括課程管理員權(quán)限內(nèi)事務(wù)的所有事務(wù)。全局角色在整個站點內(nèi)起作用,因此分配全局角色時要慎重考慮。最后,Moodle支持自定義角色,管理員可以根據(jù)需要修改當(dāng)前角色權(quán)限或者添加新的角色,比如添加一個家長的角色,可以在學(xué)生角色的基礎(chǔ)上選中允許查看實時日志、課程日志、查看成績報表等項目。另外需要注意學(xué)生、訪客和認證用戶角色無法刪除,即站點必須包括這三種角色。
(2) 文件夾讀寫權(quán)限策略
Linux具有強大的文件權(quán)限控制能力,很多管理員在安裝Moodle時沒有注意到文件權(quán)限的重要性,在這種情況下如果黑客能夠猜解到文件夾的路徑,就能隨意訪問Moodle的數(shù)據(jù)文件,甚至可以提升權(quán)限從而控制整臺服務(wù)器。但是,設(shè)置不當(dāng)或太苛刻,Moodle系統(tǒng)也無法正常運行。因此,必須設(shè)置恰當(dāng)?shù)奈募?夾)的讀寫權(quán)限。
Linux下的文件權(quán)限,如圖2所示,左側(cè)第一列為文件夾的權(quán)限,d表示是文件夾,如果是-表示是普通文件。d之后分為三組,每組有三個字符,從左到右分別為,文件所有者權(quán)限(u)、文件所在組權(quán)限(g)和其他所有用戶的權(quán)限(o)。r表示文件可讀(r=4),w表示可寫(w=2),x表示可執(zhí)行(x=1)。Moodle數(shù)據(jù)文件存放目錄的正確權(quán)限應(yīng)該為rwxr-xr-x,即755(具體換算方式可參考相關(guān)文檔),所屬用戶和組都為apache。更改權(quán)限的命令為chown –R apache:apache moodledata(更改所屬用戶和組為apache)和chmod 755 moodledata(將文件夾權(quán)限更改為文件所有者具有全部權(quán)限,所屬組用戶和其他所有用戶具有可讀可執(zhí)行權(quán)限)。
密碼強化管理、版本及時升級、訪問有效控制策略是Moodle管理員所必須遵守的基本“紀律”,是保障Moodle運行安全的基礎(chǔ),Moodle管理員在日常工作中應(yīng)該遵守好,運用好這三大紀律,會讓你的日常管理事半功倍。
三 八項注意
以下八項注意是我們在日常管理工作中總結(jié)而來,恰當(dāng)?shù)倪\用可以提高管理員的工作效率,讓管理員從繁重的日常維護工作中解放出來,專注于創(chuàng)造性的工作。
1 第一項注意:服務(wù)器優(yōu)化
在保證服務(wù)器安全的前提下,服務(wù)器性能決定了一切,如果在使用Moodle時,總是出現(xiàn)打不開網(wǎng)頁或網(wǎng)速較“卡”的狀況,會嚴重影響使用效果。在此,從服務(wù)器硬件和軟件兩個方面對服務(wù)器性能進行優(yōu)化設(shè)置。
(1) 硬件
在硬件方面制約Moodle訪問性能的主要因素為內(nèi)存和網(wǎng)絡(luò)環(huán)境,而網(wǎng)絡(luò)環(huán)境在排除木馬或病毒攻擊的正常情況下,大多數(shù)學(xué)校都基本上一致(校園網(wǎng)寬帶)。因此引起訪問性能差別的主要為內(nèi)存,Moodle官方描述內(nèi)存每1G可支持50個人的并發(fā)訪問。操作系統(tǒng)本身的運行還需要一定的內(nèi)存保障,推薦為操作系統(tǒng)預(yù)留1G的內(nèi)存。如果用戶同時訪問的人數(shù)為100人,那么服務(wù)器內(nèi)存最少應(yīng)該3G,所以我們發(fā)現(xiàn)服務(wù)器內(nèi)存為4G時就較流暢(2008年之前服務(wù)器普遍小于4G,一般為1G或2G),當(dāng)然內(nèi)存越高,服務(wù)器并發(fā)訪問和數(shù)據(jù)處理的性能就越好。除了內(nèi)存和網(wǎng)絡(luò)環(huán)境外,其它硬件如CPU等對性能的影響也比較大,但是在目前普遍雙核、四核CPU或更高配置的服務(wù)器水平下,基本都能滿足需求,在此不再特別強調(diào)。
(2) 軟件
Moodle服務(wù)器軟件環(huán)境是基于LAMP(Linux+Apache+PHP+Mysql)的,雖然LAMP黃金組合運行效率高,但是它的設(shè)置比較復(fù)雜,需要根據(jù)服務(wù)器的實際情況進行配置,如果設(shè)置稍有不當(dāng),就會造成服務(wù)器運行瓶頸。一般情況下管理員在安裝完LAMP的環(huán)境后,還會安裝一些如Zendoptimizer和eaccelerator的加速軟件,此外管理員還需注意如下設(shè)置來優(yōu)化整個系統(tǒng):
#61548;Apache
在編譯安裝完Apache后,許多管理員忘記取消包含extra目錄下一些配置文件命令的注釋,通常我們需要取消包含的文件包括:
#Include conf/extra/httpd-mpm.conf
#Include conf/extra/httpd-info.conf
#Include conf/extra/httpd-default.conf
取消注釋的方法是去掉前面的#號,忘記取消注釋的結(jié)果是Apache以默認的設(shè)置運行,不能發(fā)掘出Apache的最大潛力。
另外我們還需要對Apache服務(wù)器進行優(yōu)化設(shè)置讓其支持更大的并發(fā)訪問量。主要修改httpd-default.conf文件,httpd-default.conf文件的主要參數(shù)有:Timeout,Apache接收請求或發(fā)送請求內(nèi)容之前的最長等待時間,超過該時間時,放棄該請求,并釋放連接。默認為300,推薦設(shè)置為30到60,對于訪問量大的可以設(shè)置為30或15,設(shè)置一個較小值的好處是能夠用有限的CPU時間為更多的用戶服務(wù)。Keepalive是設(shè)置Apache是否允許在一個連接中有多個請求,一般情況下應(yīng)該設(shè)置為on,因為通常Moodle的一個頁面會有多個請求。MaxKeepAliveRequests,在一個連接中的最大請求數(shù),推薦設(shè)置一個較高數(shù)值,如設(shè)置為2048,默認為100。
#61548;PHP
因為安裝Accelerator和Zendoptimizer對PHP進行了優(yōu)化,所以PHP的設(shè)置一般不需要特別優(yōu)化。php.ini的幾個重要參數(shù)設(shè)置如下:max_execution_time,程序最長運行時間,一般設(shè)置為從30秒改為300秒甚至更大。max_input_time,每個程序處理請求數(shù)據(jù)的最長時間,可以設(shè)置與max_execution_time時間相等或更長。之所以把這兩個參數(shù)設(shè)置為較大的值,是因為Moodle經(jīng)常需要進行備份和恢復(fù)工作,而一些課程往往比較大,特別是從電信外網(wǎng)對教育內(nèi)網(wǎng)訪問時,需要耗費比較多的時間,所以設(shè)置較大的值以避免操作超時。memory_limit,程序允許占用內(nèi)存數(shù)量(每個PHP頁面吃掉的最大內(nèi)存),一般2G內(nèi)存可設(shè)置為128M。另外,在平時的管理工作中,管理員要注意upload_max_filesize與post_max_size的區(qū)別,前者是程序允許上傳的文件大小限制,后者是通過post方式上傳文件的大小限制,默認值都只有2M。在當(dāng)前的多媒體環(huán)境下,往往需要上傳較大文件,如視頻、音頻,因此應(yīng)該將這兩個值設(shè)得大一點,如128M,在Moodle中常常使用post方式上傳文件,因此推薦這兩個參數(shù)設(shè)置相同數(shù)值。這兩個值的設(shè)置還應(yīng)注意不要超過memory_limit的值。
為了提高PHP的安全還應(yīng)該在php.ini中禁止一些危險函數(shù)的運行,即為disable_functions設(shè)置參數(shù),如設(shè)置為disable_functions=phpinfo,passthru,exec,system,chroot, scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server。另外還要注意保證register_globals 的值為off,從而提高運行安全系數(shù),其余的設(shè)置保持默認即可。
#61548;Mysql
Mysql本身提供了四種服務(wù)器設(shè)置方案,分別為small、medium、large、huge。以當(dāng)前的Moodle服務(wù)器狀況來看,學(xué)校層面的應(yīng)用設(shè)置為large便能滿足需求。具體操作可在安裝完mysql后,將share/mysql下的my-large.cnf復(fù)制到/etc下并改名為my.cnf。操作命令為:
cp/usr/local/mysql/share/mysql/my-large.cnf/etc/my.cnf。
上面的優(yōu)化方案只能是“因地制宜”,在具體的服務(wù)器環(huán)境中,受到訪問人數(shù)、網(wǎng)絡(luò)環(huán)境等多種因素影響,還需要根據(jù)實際情況進行試驗比較,確定最適合的優(yōu)化方案。我們在區(qū)域培訓(xùn)與考核中,上述LAMP配置輕松應(yīng)對了700人同時網(wǎng)上考試的并發(fā)考驗。
2 第二項注意:故障排除
Moodle管理員在遇到故障時,應(yīng)該怎樣應(yīng)對呢?首先應(yīng)該分析出錯原因,思考是在什么操作之后造成的故障;其次,嘗試恢復(fù)剛才的操作,如果故障依舊則繼續(xù)排錯;第三,打開調(diào)試模式,打開調(diào)試模式的方式有三種:方法一:以管理員身份登錄網(wǎng)站,選擇“服務(wù)器/調(diào)試”,在設(shè)置頁面中選中“顯示錯誤信息”,并根據(jù)需要設(shè)置顯示什么樣的調(diào)試信息,如“顯示所有信息”。點擊保存更改后再打開出現(xiàn)故障的頁面即可顯示詳細的故障信息。方法二:通過鏈接直接進入調(diào)試設(shè)置頁面。如果首頁無法顯示,或者管理鏈接無法顯示,此時可以直接通過鏈接地址進入調(diào)試設(shè)置頁面,調(diào)試設(shè)置頁面地址為:http://你的Moodle網(wǎng)站地址/admin/ settings.php ?section=debugging。此時設(shè)置同方法一。方法三:如果上面兩種方式已經(jīng)都無法實現(xiàn),此時可以直接修改Moodle的設(shè)置文件config.php,在文檔中添加以下代碼:$CFG->debug = 2047; $CFG->debugdisplay = 1;或者$CFG->debug = 6043; $CFG->debugdisplay = 1;即可打開調(diào)試模式。第四,瀏覽出錯頁面,復(fù)制出錯信息保存在一個文檔中,并對出錯信息進行分析,找出原因修復(fù)出錯文件,如果不知道如何修復(fù)錯誤,也可以到相關(guān)網(wǎng)站搜索解決方法。第五,故障修復(fù)后,關(guān)掉調(diào)試模式。第六,記錄故障現(xiàn)象和解決方法,方便以后同類問題的解決。
3 第三項注意:網(wǎng)站安全
Moodle本身集成了豐富的安全相關(guān)設(shè)置,給管理員提供了許多安全選擇。Moodle安全相關(guān)的設(shè)置包括網(wǎng)站策略,HTTP安全,模塊安全,通告和防病毒等。
(1) 網(wǎng)站策略
網(wǎng)站策略是與安全相關(guān)的一些常見設(shè)置,主要包含是否強制用戶登錄后才可查看內(nèi)容,對文件大小進行限制,編輯帖子時間限制,密碼規(guī)則等。管理員在日常管理中比較容易出問題的是上傳文件限制以及密碼規(guī)則設(shè)置。
#61548;上傳文件限制
Moodle對上傳文件的大小進行了多重的嚴格限制,首先,管理員可以在“網(wǎng)站管理”->“安全相關(guān)”->“網(wǎng)站策略”->“上傳文件大小的最大值”里進行設(shè)置,可限制整個站點內(nèi)上傳文件的最大尺寸。這個設(shè)置的最大值主要受到php.ini中upload_max_filesize和post_max_filesize以及Apache配置文件httpd.conf中LimitRequestBody的影響。其次,課程創(chuàng)建者或教師可以在課程設(shè)置里設(shè)置最大上傳文件大小。最后,教師還可以在添加活動時對上傳文件大小進行限制,如在添加討論區(qū)活動時,限制允許上傳的附件大小。Moodle的上傳文件大小設(shè)置非常人性化,可以讓使用者靈活選擇文件大小限制。
Moodle不足的一點是沒有對上傳文件類型進行限制,用戶可以方便地上傳一些敏感類型文件,如exe等可執(zhí)行文件,php文件等,很容易被黑客利用。在此推薦對Moodle的源代碼進行修改,添加文件后綴檢查功能。Moodle里用到上傳功能的模塊有:作業(yè)上傳、鏈接到文件里的上傳、添加圖片的上傳和論壇里的附件上傳。分別對應(yīng)的文件為:mod/assignment/upload.php、files/index.php和mod/forum/ post.php??梢栽谶@三個文件里的參數(shù)定義之后添加如下代碼:
$allowedExtensions= array(\"txt\",\"csv\",\"htm\",\"html\",\"xml\",
\"css\",\"doc\",\"docx\",\"xls\",\"xlsx\",\"rtf\",\"ppt\",\"pptx\",\"pdf\",\"swf\",\"flv\",\"avi\",
\"wmv\",\"mov\",\"jpg\",\"jpeg\",\"gif\",\"png\",”zip”,”rar”);
foreach ($_FILES as $file) {
if ($file['tmp_name'] > '') {
if (!in_array(end(explode(\".\",strtolower($file['name']))),$allowedExtensions))
{
die($file['name'].' 是不允許的上傳文件類型!'.''.'<< 返回');
}}}
雖然這段代碼不能從根本上解決上傳木馬、后門之類的問題,但至少能夠讓不懷好意者知道我們已經(jīng)做了應(yīng)對措施。再加上后面的防病毒策略,對上傳文件進行殺毒,這樣就基本上能夠防止用戶“不小心”上傳一堆有害程序或病毒。
#61548;用戶密碼規(guī)則
Moodle另一個非常有用的設(shè)置就是內(nèi)置了用戶密碼規(guī)則設(shè)置功能,管理員可以設(shè)置密碼長度,包含數(shù)字、大小寫字母、特殊字符的數(shù)量等,可以根據(jù)實際需要進行自由設(shè)置。在1.9.7中Moodle默認密碼長度為8,必須包含至少一個數(shù)字,一個大寫字母,一個小寫字母,一個特殊字符。很顯然這樣的密碼設(shè)置安全性是非常高的。
(2) 模塊安全
Moodle的模塊安全這一個功能,是為了防止某些懷有不良意圖的人員在申請課程后,利用強大的模塊功能,如上傳文件,來提升權(quán)限,或做一些具有破壞性的操作,管理員可以根據(jù)實際情況設(shè)置,如設(shè)置網(wǎng)站在剛剛創(chuàng)建時只能使用論壇功能。
(3) 失敗信息通告
失敗信息通告是設(shè)置登錄Moodle平臺失敗時,該如何處理這些失敗信息,一般設(shè)置為顯示登錄失敗信息給管理員,發(fā)送郵件的最少失敗數(shù)為默認的10即可,這項功能是防止有人猜解賬號登錄,如果失敗次數(shù)較多,可以考慮為惡意攻擊,平臺可實時發(fā)送郵件給管理員,方便管理員及時了解情況,并及時進行處理。
(4) 防病毒
防病毒功能主要是指讓Moodle平臺對用戶的上傳文件進行殺毒,防止因為上傳文件導(dǎo)致服務(wù)器中毒。目前Moodle只支持Clam AV這款開源軟件,在服務(wù)器上安裝完Clam AV后,在Moodle的防病毒設(shè)置頁面填寫安裝路徑和病毒隔離目錄,選中對上傳的文件使用Clam AV殺毒。
4 第四項注意:用戶身份驗證機制
Moodle支持多達15種的身份驗證機制,那么管理員應(yīng)該如何選擇驗證方式呢?最常用的驗證方式有“E-mail驗證”、“手工添加用戶”和“使用外部數(shù)據(jù)庫”。手工驗證是針對管理員的單個用戶添加或批量用戶添加,中小學(xué)的師生用戶適合手工添加。而對于面向社會開放的Moodle網(wǎng)站,最常用的驗證方式為基于E-mail的驗證,在這種情況下需要用戶保證郵箱的真實可用,否則無法完成注冊。
基于E-mail的驗證。這種驗證方式的打開方式是以管理員身份登錄Moodle平臺點擊用戶/身份驗證/管理授權(quán),單擊E-mail驗證后面的灰色眼睛,將其點亮即可打開基于E-mail的驗證,然后在此頁面的下部的通用設(shè)置中,選擇基于E-mail的自己注冊即可開啟基于E-mail的驗證。用戶注冊后會收到一封注冊確認函,用戶點擊確認函中鏈接后即可通過E-mail驗證,完成注冊。
各學(xué)校在選擇使用Moodle系統(tǒng)時大多已經(jīng)運行了其它系統(tǒng),例如單位的辦公信息網(wǎng),校園網(wǎng)等等。在安裝Moodle后,如果還需要另外注冊用戶,會給使用者造成一些麻煩,“使用外部數(shù)據(jù)庫”功能則解決了這一問題,開啟后其他系統(tǒng)的用戶不必再次注冊,進行統(tǒng)一認證,省去了管理員很多不必要的麻煩,同時也減少了用戶管理賬號的困難。
外部數(shù)據(jù)庫設(shè)置方法是:首先以管理員身份登錄平臺,選擇用戶/身份驗證/管理授權(quán),激活使用外部數(shù)據(jù)庫驗證方式;其次,點擊設(shè)置,對其進行參數(shù)設(shè)置。需要設(shè)置的主要參數(shù)為:主機,即外部數(shù)據(jù)庫的地址;數(shù)據(jù)庫類型,Moodle目前支持幾乎所有的主流數(shù)據(jù)庫,可以根據(jù)外部數(shù)據(jù)庫類型進行相應(yīng)選擇;數(shù)據(jù)庫名稱;數(shù)據(jù)庫所有者用戶名和密碼;數(shù)據(jù)庫中存儲用戶賬號信息的數(shù)據(jù)表名稱;跟Moodle平臺中的用戶名(username)對應(yīng)的字段名,如user;密碼字段是數(shù)據(jù)表中存儲密碼的字段,對應(yīng)于Moodle中的password;密碼格式也需要根據(jù)自己情況進行選擇,目前比較流行的密碼格式是MD5加密,很少有系統(tǒng)使用純文本方式;為了避免現(xiàn)亂碼或識別問題,最好還要選擇外部數(shù)據(jù)庫的編碼方式,對于簡體中文用戶,一般使用utf-8方式;如果需要更改密碼功能還可以設(shè)置更改密碼的地址。另外還可以設(shè)置數(shù)據(jù)映射,將Moodle的user表中的所有字段都跟外部數(shù)據(jù)庫中的字段進行對應(yīng),從而豐富用戶資料,數(shù)據(jù)映射可根據(jù)需要自行填寫。設(shè)置頁面如圖4所示。
當(dāng)然,基于E-mail的驗證和外部數(shù)據(jù)庫兩種驗證方式也可以結(jié)合使用,從而滿足不同的需求。
5 第五項注意:用戶的批量注冊
在采用手工添加用戶賬號時,管理員還可以批量上傳用戶信息。具體操作方法是,以管理員身份登錄Moodle平臺在用戶/帳戶/上傳用戶中選擇賬號文檔進行上傳。文檔格式應(yīng)該按照Moodle數(shù)據(jù)庫中的user表的字段進行設(shè)置,帳戶文檔至少應(yīng)該包括如下五個字段:username、password、firstname、lastname、email。帳戶文檔可以采用記事本和Excel進行編輯,在此推薦使用Excel,因為很多單位本身就采用Excel來存儲用戶信息。Firstname和lastname用來存儲用戶的姓和名,這一點跟中國的習(xí)慣不大相符,在學(xué)校里可以將這兩個字段分別設(shè)置為班級名稱和真實姓名。Email也可批量產(chǎn)生,事后讓用戶修改成真實郵件地址,便于以后的溝通,還可以用于找回密碼和自動接收管理員或教師的信息。編輯完成后,保存為csv(逗號分隔)格式,然后用editplus另存為uft-8編碼格式。全部完成后即可順利地批量上傳用戶了。在此需要注意的是,Moodle的數(shù)據(jù)庫在安裝時,我們選擇的是utf-8單字節(jié)模式,編輯好的csv格式文檔默認為ansi編碼方式,直接上傳會使中文亂碼,因此需要轉(zhuǎn)換為uft-8單字節(jié)模式,轉(zhuǎn)換工具最好使用editplus等文本編輯器。如果用windows自帶的記事本雖然亦可將文檔轉(zhuǎn)換為utf-8模式,但中文版的記事本默認是雙字節(jié)的,仍然不能正確導(dǎo)入。
6 第六項注意:課程申請與批準
要允許注冊用戶申請開課,首先以管理員身份登錄Moodle平臺,然后在課程下的課程申請里,選中可以申請課程,并設(shè)置課程默認的類別和申請課程時要通知的管理員,設(shè)置通知的好處是管理員能夠及時知道有人課程申請,以便于管理員及時審核通過。審核課程是在課程下的待批申請里,審核后還可以對課程的分類進行修改。Moodle本身沒有很好地提供申請課程的鏈接(只有打開所有課程的鏈接才會在底部有“課程申請”按鈕),所以需要管理員以添加html模塊的方式將鏈接地址添加到平臺中,申請課程的地址為:http://你的Moodle地址/course/request.php??梢跃庉媓tml板塊,在代碼編輯模式下輸入申請課程,從而公布申請課程地址。
7 第七項注意:插件管理
Moodle是模塊化的課程管理系統(tǒng),全球有成千上萬的程序員在給Moodle開發(fā)新功能,新模塊新插件的應(yīng)用會給你的網(wǎng)站增色不少。例如:feedback(反饋單)插件對于教育教學(xué)非常有用,但在Moodle2.0之前尚未成為標(biāo)準活動,需要管理員下載和安裝。下面主要從插件安裝和故障處理兩個方面來闡述插件管理,插件的設(shè)置以及功能的開關(guān),都在網(wǎng)站管理/插件下,操作比較簡單,在此不再贅述。
插件的安裝。插件分版塊、活動和過濾器。插件的安裝大多采用將插件程序直接拷貝到相應(yīng)的插件文件夾下,然后以管理員身份登錄平臺,點擊通告,完成安裝。版塊對應(yīng)于blocks文件夾,活動對應(yīng)于mod文件夾,過濾器對應(yīng)于filter文件夾。
8 第八項注意:外觀調(diào)整
Moodle也具有一定的外觀調(diào)整功能,管理員可以選擇主題風(fēng)格,首頁顯示模式,課程分類等等。比較遺憾的是Moodle不支持在線編輯主題。管理員要更改主題只有登錄服務(wù)器,將主題文件下載到本地機器進行修改,然后再上傳到服務(wù)器。
擁有一個個性化的主題風(fēng)格可以提升站點的形象,除了選擇下載別人的主題外,我們還可以自己設(shè)計主題,在此簡單介紹一下主題風(fēng)格設(shè)計流程。
首先利用設(shè)計軟件設(shè)計風(fēng)格草圖,如利用photoshop設(shè)計主頁風(fēng)格。
其次,將風(fēng)格圖進行切片,導(dǎo)出為html格式。
第三,將Moodle自帶的標(biāo)準主題standard復(fù)制到本地。
第四,結(jié)合導(dǎo)出的html圖片和standard的頁面文件,修改CSS和各個頁面,將standard的頁面改為你設(shè)計的樣式。
最后上傳到Moodle的theme目錄下,在外觀/主題風(fēng)格/主題選擇器里選擇應(yīng)用剛才制作的主題,即可完成主題的制作。
具體的制作過程需要管理員具備html、css、javascript知識,管理員可參考相關(guān)書籍進行學(xué)習(xí)。
四 結(jié)語
限于篇幅,只是對一些問題進行了初步的探討,而且也盡量只講簡單的過程和方法,不重述詳細做法和冗長的結(jié)果,具體的深入研究還需要Moodle管理員在日常工作中多積累、勤思考。
參考文獻
[1] Martin Dougiamas.Moodle forums[EB/OL].
[2] 曹江華.RedHat Enterprise Linux 5.0服務(wù)器構(gòu)建與故障排除[M].北京:電子工業(yè)出版社,2008:136-147.
[3] 黎加厚.Moodle課程設(shè)計[M].上海:上海教育出版社,2007: 199-237.