安全相關的指令

在Apache配置文件中,有一些安全相關的指令可以使用。

使用以下指令可以幫助你減小拒絕服務的威脅:

LimitRequestbody: 數字參數,控製HTTP請求的大小。

LimitRequestFields: 數字參數,控製請求頭的數目。

KeepAlive: 設置連接的生存期。

KeepAliveTimeout: 限製等待請求的時間。

使用以下指令可以幫助你叫囂緩衝區溢出的危險:

LimitRequestFieldSize: 限製每個請求頭的大小。

LimitRequestLine: 限製每個請求行的大小。

CGI(ommon Gateway Interface,通用網關接口)的安全威脅

CGI的安全性非常重要,攻擊者可以利用CGI的缺陷獲得係統信息、執行係統命令、占用係統資源。如果一個CGI程序使用靜態分配的內存,就可能為緩衝區溢出攻擊提供機會。為了減少這種風險,程序員應該在CGI代碼中使用動態分配內存。除了CGI編寫人員應該注意外,係統管理員可以采取對CGI進行封裝(例如:suEXEC或者CGI Wrap)的辦法加強CGI的安全性。通過這種方式可以使CGI程序以某個獨立的用戶權限運行,即使發生緩衝區溢出,也隻影響那個用戶的目錄/文件。

perl是一種功能非常強大的腳本語言。主要用於文本的處理,程序員還可以通過perl腳本使用係統調用。如果程序編寫的不好,就會為攻擊者闖入服務器大開方便之門。因此,使用perl腳本一定要小心,以免出現此類漏洞。在perl腳本中,處理請求數據之前,最好能夠調用專門的檢查例程對輸入的合法性進行檢查。除此之外,還要確保Apache不是以root的權限運行的,Perl腳本被限製在某個特定的目錄下運行。

SSI(Server-Side Includes)的安全

使用SSI,程序員可以建立一些常用的例程,在需要時把這些例程包含進他們的代碼中。SSI還允許有條件地執行外部程序,攻擊者可能利用這個條件讓服務器執行他們的惡意程序。在access.conf文件中使用IncludesNoEXEC指令,可以關閉執行SSI文件的功能。不過這條指令會造成服務器不執行CGI腳本或者程序。

其它安全工具

使用TCP Wrappers和Tripwire可以為你的係統提供額外的保護。你可以使用TCP Wrappers來控製Telnet或者FTP的訪問權限。Tripwire是一個數據完整性檢測工具,可以幫助係統管理員監視係統是否被改動過,你可以在Tripwire的配置文件中編製特定的策略,監視Web服務器的配置文件、數據和CGI文件是否被修改。

總結

Apache是一個優秀的歪脖服務器,雖然Apache的開發者非常注重其安全性,但是由於Apache非常龐大,難免會存在安全隱患。Apache的安裝維護中需要注意以下問題:

檢查文件和目錄的權限是否恰當。

httpd.conf、srm.conf和access.conf的設置是否適當

使服務器日誌文件能夠記錄盡可能詳細的信息。

對某些需要特別保護的目錄使用密碼保護(.htaccess)。

對CGI腳本或者程序進行封裝。

如果CGI使用Perl編寫,要詳細檢查其安全性

檢查SSI指令

使用TCP Wrappers和Tripwire。