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