您的位置:網(wǎng)站首頁 > 電器維修資料網(wǎng) > 正文 >
為Apache Web服務(wù)器安全保駕護(hù)航
★★★★★【文章導(dǎo)讀】:為Apache Web服務(wù)器安全保駕護(hù)航具體內(nèi)容是:怎樣在Linux、APAChe和PHP服務(wù)器端的安全性、生產(chǎn)力和易用性三者之間求得平衡。 好的解決辦法取決于項(xiàng)目的具體需求,下面是為LAMP服務(wù)器保駕護(hù)航的一些 佳實(shí)踐,涵蓋服務(wù)器配置到PHP設(shè)置微調(diào)的諸多方面。為Web服務(wù)…
來源: 日期:2013-11-23 22:18:09 人氣:標(biāo)簽:
怎樣在 Linux、APAChe和PHP服務(wù)器端的安全性、生產(chǎn)力和易用性三者之間求得平衡。 好的解決辦法取決于項(xiàng)目的具體需求,下面是為LAMP服務(wù)器保駕護(hù)航的一些 佳實(shí)踐,涵蓋服務(wù)器配置到PHP設(shè)置微調(diào)的諸多方面。
為Web服務(wù)器保駕護(hù)航的任務(wù)應(yīng)從加固Linux操作系統(tǒng)入手。加固Linux這個話題本身就可以寫整整一篇文章,但是某些概念在提供Web內(nèi)容方面顯得特別重要:
◆Linux內(nèi)核加固。內(nèi)核是 經(jīng)常被攻擊者盯上的目標(biāo)。要提升用戶的權(quán)限,對內(nèi)核獲得訪問權(quán)是 容易的方法。視操作系統(tǒng)而定,Apache在默認(rèn)情況下以有限用戶nobody(在CentOS等基于紅帽的發(fā)行版上)或www-data用戶(在基于的bian的發(fā)行版上,包括Ubuntu)來運(yùn)行。每個攻擊者企圖突破有限用戶的身份,利用內(nèi)核存在的某個漏洞來獲得訪問root的權(quán)限。用grsecurity給內(nèi)核打上補(bǔ)丁可以確保,你處于被保護(hù)狀態(tài),甚至可以防范零日漏洞。此外,KsplICe可以確保你及時打上了所有的內(nèi)核更新版, 大限度地減小安全風(fēng)險。
◆強(qiáng)制性訪問控制(MAC)。在正常的Web服務(wù)器部署環(huán)境下,普通用戶不需要訪問編譯器(gCC)、系統(tǒng)配置文件或者像find這樣的實(shí)用工具。基于紅帽的發(fā)行版可以使用名為SELinux的MAC策略軟件;Ubuntu管理員可以使用類似的AppArmor。盡管這些MAC工具的功能特性各不一樣,但它們都能幫你限制攻擊者的破壞行動。說到不利因素,配置不當(dāng)?shù)腗AC工具會削弱Web服務(wù)器的功能。這就是為什么所有MAC工具都有非執(zhí)行模式,那樣你就可以跟蹤誤報,并且針對你的特定環(huán)境來重新配置工具。不過,要是你覺得MAC工具太過復(fù)雜,只要將一些可執(zhí)行文件的權(quán)限改成700,只允許root可以使用它們。
◆防火墻。你必須限制入站流量和出站流量,那樣才能防止惡意連接進(jìn)出服務(wù)器。對于各種類型的服務(wù)器來說,保護(hù)入站流量的安全是一種常見做法。然而對于Web服務(wù)器來說,限制出站連接以便限制惡意腳本在本地執(zhí)行所帶來的影響,這一點(diǎn)特別重要。為此, 可靠的辦法就是將默認(rèn)iptables鏈的策略設(shè)置成DROP。此外,你明確允許所需的入站連接和出站連接。不過在限制出站流量時一定要小心,因?yàn)樵S多Web腳本需要外部資源(RSS和外部應(yīng)用編程接口)。如果你覺得iptables防火墻工具用起來不習(xí)慣,可以使用腳本來幫助生成和維護(hù)必要的規(guī)則,比如Shorewall和Firestarter。
Apache 佳安全實(shí)踐
一旦你確保了Linux操作系統(tǒng)的安全,就可以開始處理Apache Web服務(wù)器的安全問題了。下列指示專門針對Apache,但可能也適用于其他Web服務(wù)器,比如LiteSpeed和nginx。它們之間的差異常常就體現(xiàn)在模塊名稱或者配置指令上。
要加固Apache,就要完成這些步驟:
◆安裝mod_security,這個Apache模塊起到了應(yīng)用防火墻的作用。它可以過濾Web請求的所有部分,并終結(jié)惡意代碼。它在Web服務(wù)器進(jìn)行任何實(shí)際處理之前發(fā)揮作用,因而與Web應(yīng)用程序無關(guān)。Mod_security適用于過濾從SQL注入到XSS攻擊的任何惡意流量。它也是保護(hù)易受攻擊的Web應(yīng)用程序的 快速、 容易的方法。該軟件有眾多隨時可以使用的規(guī)則,但你也很容易自行編寫規(guī)則。比如設(shè)想一下:你有一個過時的Joomla版本,擔(dān)心會遭到SQL注入攻擊。這個簡單規(guī)則可以過濾含有jos_ (Joomla表的默認(rèn)前綴): SecFiLTEr "jos_"的任何POST和GET內(nèi)容。計(jì)算機(jī)
◆安裝mod_evasive,這是另一個重要的Apache模塊,可以保護(hù)Web應(yīng)用程序遠(yuǎn)離拒絕服務(wù)(DOS)請求。它的效果受制于這個現(xiàn)實(shí):它是在應(yīng)用程序?qū)用婀ぷ鞯模@意味著Apache無論如何都接受連接,因而耗用帶寬和系統(tǒng)資源。不過,如果是源自少量遠(yuǎn)程主機(jī)的比較弱的DOS攻擊,該模塊能有所幫助。一旦mod_evasive裝入,你需要這樣來配置它:
DOSPageCount 2 DOSSiteCount 30 DOSBLOCkingPeriod 120 這指示服務(wù)器阻止(默認(rèn)情況下返回HTTP error 403 Forbid的n)兩次訪問同一頁面,或者在一秒內(nèi)(默認(rèn)的時間間隔)共有30次請求的任何主機(jī)。入侵者會在外面被阻擋120秒。
◆過濾訪客的IP地址。這可能被認(rèn)為是很極端的措施,但結(jié)果很好。首先,考慮安裝mod_httpbl,這是用Apache實(shí)現(xiàn)的Project Honeypot。一旦該模塊安裝并被啟用,它可以阻止有惡意活動"前科"的IP地址。另一個辦法是使用mod_geoip,它可以用來允許只有來自某些國家的訪客才可以訪問接受留言、注冊和登錄信息等輸入內(nèi)容的頁面。它甚至可以阻止和允許來自某些國家的服務(wù)器端訪客。
其他推薦的Apache選項(xiàng)包括將Timeout(超時)選項(xiàng)設(shè)置得低些,比如15秒。這縮短了Web服務(wù)器等待某些事件的時間,從而限制了DOS攻擊的影響。值得進(jìn)一步閱讀的是官方的Apache說明文檔及安全提示。
PHP安全
PHP是開源領(lǐng)域 流行的服務(wù)器端語言。PHP是服務(wù)器端,這意味著你需要通過某些指令,比如memory_limit、execution_timeout和dISAble_functions,對它訪問服務(wù)器資源設(shè)置明確的規(guī)則和限制。然而,PHP配置指令可以在各個地方來定義和重新定義,這里作了解釋。你在全局范圍執(zhí)行這些規(guī)則時,確保已清楚它們的范圍。
如果你安裝了 新版本的PHP,又使用默認(rèn)設(shè)置,你的環(huán)境已經(jīng)符合還算可以的安全標(biāo)準(zhǔn)。危險的選項(xiàng)在默認(rèn)情況下已被禁用,比如register_globals和allow_url_inclu的。不過,光這還不夠。要考慮調(diào)整的 重要的選項(xiàng)之一是disable_functions;顧名思義,它的作用就是禁用PHP函數(shù)。下面這個示例演示了如何防止危險的外殼代碼執(zhí)行: disable_functions=exec,passthru,shell_exec,system,proc_open,popen 之前為PHP引入額外的安全機(jī)制方面有過許多嘗試,無論從開發(fā)小組里面還是從外面來進(jìn)行嘗試。一個不成功的嘗試就是PHP的安全模式(Safe Mo的 ),其主要想法是根據(jù)文件的所有者來限制文件的訪問權(quán)。結(jié)果證明,這項(xiàng)功能設(shè)計(jì)不正確,自PHP 5.3以后就被廢棄了。不過,一個名為Suhosin的外部安全項(xiàng)目證明了其價值。它與PHP一起捆綁在基于的bian的流行發(fā)行版中。
Suhosin有兩種安裝方法。一種是在PHP實(shí)際編譯之前給原始的PHP源代碼打上補(bǔ)丁。建議采用這種方法,因?yàn)樗沟肧uhosin成為PHP的一個必要組成部分,讓Suhosin可以通過其引擎保護(hù)功能來保護(hù)PHP核心。第二種方法比較容易,就是把它作為普通的PHP擴(kuò)展來添加。Suhosin的豐富功能適用于許多安全方面,比如會議安全數(shù)據(jù)加密、請求有效載荷限制,甚至還有SQL注入預(yù)防這項(xiàng)試驗(yàn)性功能。
默認(rèn)情況下,PHP作為Apache模塊在Apache用戶下運(yùn)行,這確保了性能 佳、 符合應(yīng)用程序的需求。然而,如果網(wǎng)站有不止一個虛擬主機(jī)(vhost),它可能會帶來嚴(yán)重的安全問題,如果虛擬主機(jī)屬于不同的用戶,那就更危險了。在這種情況下,來自一個虛擬主機(jī)的腳本也許能讀取、寫入和執(zhí)行來自其他虛擬主機(jī)的腳本,這危及了安全,更不用說危及隱私了。
為了緩解這個問題,你可以使用另一個Apache模塊:mod_suphp,該模塊允許PHP腳本在預(yù)先定義的用戶下運(yùn)行。這種模塊對于共享的主機(jī)托管服務(wù)器來說必不可少。如果使用mod_suphp,來自某個虛擬主機(jī)的腳本甚至無法讀取來自其他虛擬主機(jī)的文件,更不用說寫入了。禁止讀取外來虛擬主機(jī)的文件對于配置文件來說極其重要,這就是為什么這類文件必須要有600個文件的許可權(quán)。要是不這么設(shè)置,你的數(shù)據(jù)庫詳細(xì)資料很容易被發(fā)現(xiàn),而這是你 不想遇到的麻煩。
在mod_suphp的配置文件(默認(rèn)情況下是/etc/suphp.conf)中,你可以使用allow_file_group_writeable、 allow_file_others_writeable、allow_directory_group_writeable和allow_directory_others_writeable等選項(xiàng),執(zhí)行全局安全文件的許可策略。在正常情況下,它們都應(yīng)該被定義為false。執(zhí)行不遵守這些限制的腳本會得出HTTP Error 500 Internal server error(HTTP錯誤:500,服務(wù)器內(nèi)部錯誤)。
一般建議
為Web服務(wù)器保駕護(hù)航時,還要考慮下列措施:
◆把同一臺服務(wù)器上的不同Web應(yīng)用程序分隔到不同的虛擬主機(jī)上,讓它們在不同的用戶下運(yùn)行。
◆傳輸密碼或信用卡信息等敏感信息時,安裝SSL。你可以用免費(fèi)、自己生成的非商業(yè)證書來保護(hù)管理面板。
◆不要單單依賴一種方法來限制管理員訪問。數(shù)量眾多的互聯(lián)網(wǎng)漏洞避開了管理員登錄要求。只要限制遠(yuǎn)程IP地址對管理員區(qū)域的訪問,并且更改默認(rèn)的管理員URL或端口,就可以限制這類威脅。
◆定期對服務(wù)器執(zhí)行安全審查工作。
◆訂閱關(guān)于你已部署的Web服務(wù)和應(yīng)用程序的安全新聞組。
所以上述信息充當(dāng)了確保Web服務(wù)器安全的路線圖。做好這項(xiàng)工作需要投入大量的時間和精力。如果你沒有準(zhǔn)備好投入這樣的時間, 好還是使用共享的主機(jī)托管服務(wù)器或完全托管的服務(wù)器。
總結(jié)
上面的這些重點(diǎn)就是很詳細(xì)的給我們講解了關(guān)于Web服務(wù)器的維護(hù)并非易事,但是還是需要大家注意的這上面的一些問題的。
【看看這篇文章在百度的收錄情況】
相關(guān)文章
- 上一篇: 輕松找回Windows XP超級管理員的密碼
- 下一篇: 為多核處理器提升電源效率