摘? 要: 從Linux平臺安全、Apache安全、MySQL數(shù)據(jù)庫安全及PHP開發(fā)技術(shù)等幾個方面探討了如何架設(shè)一個安全高效的WEB網(wǎng)站技術(shù),并給出了一個可行的安全模型。
關(guān)鍵詞: LAMP; 網(wǎng)絡(luò)安全; WEB網(wǎng)站
?
1998年,Michael Kunze為德國計算機雜志c't寫作一篇關(guān)于Free 軟件如何成為商業(yè)軟件替代品的文章,創(chuàng)建了LAMP這個名詞,是由Linux 操作系統(tǒng)、Apache網(wǎng)絡(luò)服務(wù)器、MySQL 數(shù)據(jù)庫和PHP(Perl或Python)腳本語言組合而成的,隨之LAMP技術(shù)成為WEB服務(wù)器的事實標準。
美國互聯(lián)網(wǎng)市場調(diào)研機構(gòu)NetCraft 2006年統(tǒng)計數(shù)據(jù)表明,互聯(lián)網(wǎng)發(fā)展在全球繼續(xù)呈現(xiàn)快速增長趨勢。在過去三年中,全球網(wǎng)站數(shù)量已經(jīng)翻了一倍。 統(tǒng)計還顯示,WEB服務(wù)器市場中,基于Linux的Apache依然是網(wǎng)站的第一選擇。目前,Linux及Apache在網(wǎng)站操作系統(tǒng)及WEB服務(wù)器軟件市場的份額為62.7%,大型社區(qū)平臺因安全性和交互性考慮,采用Windows軟件平臺的越來越少,正在逐步轉(zhuǎn)向LAMP平臺。
然而,在Internet/Intranet的大量應(yīng)用中,網(wǎng)絡(luò)本身的安全面臨著重大的挑戰(zhàn),隨之而來的信息安全問題也日益突出。在網(wǎng)絡(luò)安全問題泛濫的今天,其安全性問題同樣面臨著考驗。
根據(jù)網(wǎng)絡(luò)安全的木桶理論,網(wǎng)絡(luò)的安全性取決于各個網(wǎng)絡(luò)組件的安全,因此本文從Linux安全、Apache安全、MySQL數(shù)據(jù)庫安全、PHP開發(fā)技術(shù)、防火墻及入侵檢測技術(shù)等幾個方面探討了如何架設(shè)一個安全高效的WEB網(wǎng)站。
1 WEB平臺的安全模型
1.1 層次模型設(shè)計
圖1給出了WEB平臺的安全模型。
?
WEB安全是一個綜合系統(tǒng)問題,筆者將其劃分為幾個層次,根據(jù)網(wǎng)絡(luò)安全的木桶理論,只有將模型中的各項安全盡可能考慮周全并切實實施安全規(guī)程,才能保證整個系統(tǒng)的安全性。由于篇幅有限,本文沒有討論網(wǎng)絡(luò)框架的安全性問題。
1.2 Linux平臺安全
操作系統(tǒng)作為安全的最底層至關(guān)重要,沒有操作系統(tǒng)平臺的安全就沒有任何安全可言,有些技術(shù)人員往往只對平臺進行了簡單的安全設(shè)置,而完全依賴于防火墻的做法是造成站點安全的最大隱患。因此,Linux平臺安全應(yīng)考慮到安裝系統(tǒng)、增強Linux安全配置因素。
1.2.1 安裝系統(tǒng)
在進行系統(tǒng)安裝時,如果沒有進行規(guī)劃,將會造成安全漏洞。目錄劃分不正確會造成訪問的安全隱患以及管理維護的復(fù)雜,甚至系統(tǒng)崩潰;無用的軟件包安裝也會導(dǎo)致出現(xiàn)安全漏洞。因此Linux平臺安全應(yīng)首先從規(guī)劃安裝開始。
(1)安裝系統(tǒng)時應(yīng)考慮磁盤分區(qū)的安全性
根目錄(/)、用戶目錄(/home)、臨時目錄(/tmp)和/var目錄應(yīng)分開到不同的磁盤分區(qū),避免訪問的安全隱患,也便于系統(tǒng)維護; 以上各目錄所在分區(qū)的磁盤空間大小應(yīng)充分考慮,避免因某些原因造成分區(qū)空間用完而導(dǎo)致系統(tǒng)崩潰;對于/tmp和/var目錄所在分區(qū),大多數(shù)情況下不需要有suid屬性的程序,所以應(yīng)為這些分區(qū)添加nosuid屬性。
(2)軟件包與服務(wù)安裝
對于主機,不應(yīng)安裝過多的軟件包。這樣可以降低因軟件包而導(dǎo)致出現(xiàn)安全漏洞的可能性。在選擇主機啟動服務(wù)時不應(yīng)選擇非必需的服務(wù)。
1.2.2 增強Linux安全配置
系統(tǒng)安裝完成后,應(yīng)增強Linux的安全配置,將漏洞和訪問的安全隱患消滅在萌芽中。
(1)升級: 每一次升級都可以看作是對軟件缺陷的彌補,可以有效地填補漏洞并增強軟件的功能。Linux系統(tǒng)安全上的升級包括:
·內(nèi)核升級。
·GNU libc共享庫升級。
(2)啟動和登錄安全性:為防止非授權(quán)用戶獲得權(quán)限和本地用戶非法登錄管理終端,必須對系統(tǒng)啟動和登錄進行設(shè)置,以保證系統(tǒng)不被非法訪問,具體設(shè)置如下:
·設(shè)置BIOS密碼且修改引導(dǎo)次序禁止從軟盤啟動系統(tǒng)。
·設(shè)置用戶口令,限制口令長度及復(fù)雜性。
·禁止所有默認的被操作系統(tǒng)本身啟動的并且不必要的賬號。
·更改口令文件屬性,從而防止非授權(quán)用戶獲得權(quán)限。
·修改“/etc/lilo.conf”增加參數(shù)restricted和password,使系統(tǒng)在啟動lilo時就要求密碼驗證。
·修改/etc/inittab文件,禁止Ctrl+Alt+Delete重新啟動機器命令。
·編輯/etc/pam.d/su文件,限制su命令。
·編輯/etc/rc.d/rc.local將泄漏系統(tǒng)信息的行注釋掉,然后清空/etc/issue、/etc/issue.net文件內(nèi)容。
(3)限制網(wǎng)絡(luò)訪問:通過限制網(wǎng)絡(luò)訪問可以有效避免來自網(wǎng)絡(luò)的攻擊和非法訪問。
·Inetd設(shè)置 。確認/etc/inetd.conf的所有者是root,編輯/etc/inetd.conf禁止以下服務(wù): telnet shell login exec talk ntalk imap pop-2? finger auth?;蚴褂?etc/hosts.deny和/etc/hosts.allow來增加訪問限制。
·登錄終端設(shè)置。編輯/etc/securetty,使root僅可在tty1終端登錄。
· 改變/etc/inetd.conf文件,避免顯示系統(tǒng)和版本信息。
·設(shè)置文件的訪問權(quán)限來實現(xiàn)遠程訪問控制。
·合理設(shè)置POP-3和Sendmail等電子郵件服務(wù),安裝支持加密傳送密碼的POP-3服務(wù)器。
·小心配置FTP服務(wù)。通過對/etc/ftpusers文件的配置,禁止root、bin、daemon、adm等特殊用戶對FTP服務(wù)器進行遠程訪問。除非特別需要,一般應(yīng)禁止匿名FTP服務(wù)。
(4)防止攻擊:黑客的攻擊無處不在,通過對平臺的安全設(shè)置可以有效減少和防止攻擊。
·阻止ping攻擊:在/etc/rc.d/rc.local文件中增加如下一行:---- echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all,阻止ping。
·IP欺騙攻擊:在host.conf文件中增加 order bind,hosts; multi off; nospoof on三行內(nèi)容來防止IP欺騙攻擊。
·DoS類型攻擊:修改/etc/security/limits.conf,對系統(tǒng)所有的用戶設(shè)置資源限制防止DoS類型攻擊。
(5)備份:在完成Linux系統(tǒng)的安裝以后應(yīng)該對整個系統(tǒng)進行備份,以后可以根據(jù)這個備份來驗證系統(tǒng)的完整性,這樣就可以發(fā)現(xiàn)系統(tǒng)文件是否被非法篡改過。如果發(fā)生系統(tǒng)文件已經(jīng)被破壞的情況,也可以使用系統(tǒng)備份來恢復(fù)到正常的狀態(tài)。
1.3 Apache安全
Apache作為站點搭建軟件其安全設(shè)置關(guān)系到整個站點的安全性能。其密碼被竊、非法訪問、CGI腳本等安全問題都會導(dǎo)致站點出現(xiàn)安全漏洞和隱患,因此安裝完Apache后需通過如下措施來增強其安全性。
(1)利用.htaccess文件實現(xiàn)的密碼保護
·建立.htpasswd文件。
·用.htaccess文件實現(xiàn)保護(require valid-user)。
·增加新的許可用戶。
·建立允許訪問的組。設(shè)置方法是建立一個名為
·htgroup的文本文件。
·在.htaccess文件中加入deny from all禁止讀取安全相關(guān)文件。?????????
(2)關(guān)注CGI腳本
CGI腳本是可執(zhí)行程序,一般存放在WEB服務(wù)器的CGI-BIN目錄下面,在配置WEB服務(wù)器時,要保證CGI可執(zhí)行腳本只存放于CGI-BIN目錄中,這樣可以保證腳本的安全,且不會影響到其他目錄的安全。
(3)升級Apache軟件通過升級Apache
增強軟件功能并彌補軟件缺陷,消除安全隱患。
1.4 MySQL數(shù)據(jù)庫安全
站點數(shù)據(jù)庫具有容易受到黑客攻擊、非法訪問、數(shù)據(jù)丟失等安全問題,因此對MySQL數(shù)據(jù)庫設(shè)置相應(yīng)的安全防范措施以保證其安全、可靠、不間斷運行是安全模型的重要內(nèi)容之一。具體設(shè)置如下:
(1)安裝MySQL數(shù)據(jù)庫后,初始化并設(shè)置root/usr/local/
mysql/;mysql/usr/local/mysql/var;mysql/usr/local/mysql/三個MySQL數(shù)據(jù)庫目錄權(quán)限為只讀,以防止非法訪問。
(2)修改MySQL的root密碼,以防止管理員密碼被竊取。
(3)刪除所有用戶名為空的用戶,增加系統(tǒng)安全性。
(4)備份數(shù)據(jù)庫,防止數(shù)據(jù)丟失。最好能實現(xiàn)雙機熱備份。
(5)盡可能使用SSL與數(shù)據(jù)庫連接以增強數(shù)據(jù)庫訪問的安全性,防止信息泄漏。
(6)升級MySQL軟件,增強軟件功能并彌補軟件缺陷,消除安全隱患。
1.5 PHP編程安全
程序設(shè)計中往往由于程序員的疏忽致使應(yīng)用程序存在安全漏洞或隱患,因此對編程中存在的幾個問題提出如下解決方案:
(1)欺騙SQL語句:有些程序員習慣用邏輯與來提取和驗證數(shù)據(jù)庫中用戶名和密碼,這樣只要在用戶框和密碼框輸入“1‘or1=’1”就可通過驗證了,從而給攻擊者提供了非常簡單的登錄數(shù)據(jù)庫的手段,改進的方法是不要用邏輯與,將用戶的提取及驗證與密碼的提取、驗證分開用兩個SELECT語句完成。這樣雖然麻煩卻消除了SQL語句被欺騙的安全問題。
(2)PHP手冊里有幾個例子存在安全問題,實際使用時不要照搬。要真正明白語句的用法并在程序編寫完成后進行嚴格的安全測試。
(3)不要以環(huán)境變量、Cookie變量、session變量等作為
關(guān)系生死的判斷條件。因為這些變量太容易被偽造。
(4)利用PHP可以與SSH連接的特性以及執(zhí)行遠程命令的能力,加強安全性。
①安裝ssh2.so。
?、趯ibssh和 PHPr鏈接起來。有一個PECL模塊可以完成這個功能??梢允褂肞EAR安裝它(pear install-f ssh2)。
?、鄞_保這個新的SSH2.SO模塊被PHP加載。編輯php.ini文件(對于CLI實用程序:/etc/php5/cli/php.ini,對于Apache實用程序:/etc/php5/apache2/php.ini;增加一行:extension=ssh2.so)。
(5)升級PHP軟件,增強軟件功能并彌補軟件缺陷,消除安全隱患。
1.6 防火墻及入侵檢測技術(shù)
1.6.1 防火墻
作為系統(tǒng)的第一道防線,其主要作用是監(jiān)控可信任網(wǎng)絡(luò)和不可信任網(wǎng)絡(luò)之間的訪問通道,可在內(nèi)部與外部網(wǎng)絡(luò)之間形成一道防護屏障,攔截來自外部的非法訪問并阻止內(nèi)部信息的外泄,但它無法阻攔來自網(wǎng)絡(luò)內(nèi)部的非法操作。它根據(jù)事先設(shè)定的規(guī)則來確定是否攔截信息流的進出,但無法動態(tài)識別或自適應(yīng)地調(diào)整規(guī)則,因而其智能化程度很有限。防火墻技術(shù)主要有3種:數(shù)據(jù)包過濾器(packet filter)、代理(proxy)和狀態(tài)分析(stateful inspection)?,F(xiàn)代防火墻產(chǎn)品通?;旌鲜褂眠@幾種技術(shù)。
用Linux+iptables做防火墻具有很高的靈活性和穩(wěn)定性,但安裝和設(shè)定起來比較麻煩,容易出錯。設(shè)置防火墻關(guān)鍵是設(shè)置一個好的安全規(guī)則并嚴格實施,如何配置和使用已經(jīng)有很多文章論述過,讀者可以自行查閱。
1.6.2 入侵檢測(IDS—Instrusion Detection System)
綜合采用了統(tǒng)計技術(shù)、規(guī)則方法、網(wǎng)絡(luò)通信技術(shù)、人工智能、密碼學、推理等技術(shù)和方法,其作用是監(jiān)控網(wǎng)絡(luò)和計算機系統(tǒng)是否出現(xiàn)被入侵或濫用的征兆。經(jīng)過不斷發(fā)展和完善,作為監(jiān)控和識別攻擊的標準解決方案,IDS系統(tǒng)已經(jīng)成為安全防御系統(tǒng)的重要組成部分。以下是幾款Linux平臺下的工具軟件,綜合應(yīng)用它們以建立自己的IDS系統(tǒng)。
(1)Psad是端口掃描攻擊檢測程序的簡稱,它作為一個新工具,可以與iptables和Snort等緊密合作,展示所有試圖進入網(wǎng)絡(luò)的惡意企圖。這是首選的Linux入侵檢測系統(tǒng)。它使用了許多Snort工具,可以與fwsnort和iptables的日志結(jié)合使用,這意味著可以深入到應(yīng)用層并執(zhí)行一些內(nèi)容分析。它可以像Nmap一樣執(zhí)行數(shù)據(jù)包頭部的分析,向用戶發(fā)出警告,甚至可以對其進行配置以便自動阻止可疑的IP地址。
(2)Snort是一款輕量級且易于使用的工具,可以獨立運行,也可以與psad和iptables一起使用。從Linux的發(fā)行版本的程序庫中可以找到并安裝它,這比起過去的源代碼安裝是一個很大的進步。至于保持其規(guī)則的更新問題,也是同樣的簡單,因為作為Snort的規(guī)則更新程序和管理程序,oinkmaster也在Linux發(fā)行版本的程序庫中。
(3)系統(tǒng)日志。網(wǎng)絡(luò)管理人員要始終提高警惕,隨時注意各種可疑狀況,并且按時檢查各種系統(tǒng)日志文件,包括一般信息日志、網(wǎng)絡(luò)連接日志、文件傳輸日志以及用戶登錄日志等。在檢查這些日志時,要注意是否有不合常理的時間記載。
2 結(jié)束語
任何一種單一的安全措施其防范能力都是有限的,一個安全的系統(tǒng)必須采取多層次、多種安全措施、多管齊下才能更好地保證系統(tǒng)安全。本文根據(jù)網(wǎng)絡(luò)安全的木桶理論提出了一種安全模型,并對其中涉及的技術(shù)進行了闡述,由于篇幅和水平,本文只能是拋磚引玉。假如一個站點采取了以上模型并實施了各種安全措施,則入侵者要想侵入你的系統(tǒng)而又不被發(fā)現(xiàn)幾乎是不可能的。
參考文獻
[1] ?Understanding symantec’s anti-virus strategy for internet?Gateways. http://www.symantec.com/avcenter/reference/wpnavieg.pdf.
[2] ?ELLISON R J. Survivability: protecting your critical systems.IEEE Internet Computing ,December 1999.
[3] ?中華人民共和國計算機信息系統(tǒng)安全保護條例.http://www.fosu.edu.cn/laws/law19.htm.
[4] ?MATHIAS H, DAVID G. SNMP versions 1&2 simple?network management protocol theory and practice. International Thomson Computer Press,1995.
[5] ?STEVENS R W.TCP/IP Illustrated, Volume 1: The?Protocols, Addison Wesley, 1994.