《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于LAMP的WEB安全模型

基于LAMP的WEB安全模型

2009-07-03
作者:張艷萍, 高忠新

  摘? 要: 從Linux平臺(tái)安全、Apache安全、MySQL數(shù)據(jù)庫(kù)安全及PHP開(kāi)發(fā)技術(shù)等幾個(gè)方面探討了如何架設(shè)一個(gè)安全高效的WEB網(wǎng)站技術(shù),并給出了一個(gè)可行的安全模型。
  關(guān)鍵詞: LAMP; 網(wǎng)絡(luò)安全; WEB網(wǎng)站

?

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

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。