第九卷 Apache服務器的保護

綜述

本文將討論UNIX平台下,Apache WEB服務器安裝和配置的安全問題。我們假定閱讀本文的係統管理員已經針對自己站點的情況選擇了相關的模塊,並且能夠進行配置、創建和排除故障。本文的主要目的是幫助你簡曆一個安全的Apache web服務器。

在眾多的Web服務器產品中,Apache是應用最為廣泛的一個產品,同時也是一個設計上非常安全的程序。但是,同其它應用程序一樣,Apache也存在安全缺陷。本文主要針對三個安全缺陷進行討論,包括:使用HTTP協議進行的拒絕服務攻擊(denial of service)、3緩衝區溢出攻擊以及被攻擊者獲得root權限。注意:合理的配置能夠保護Apache免遭多種攻擊,但是在網絡層上的拒絕服務攻擊則不是調整Apache的配置所能夠防止的。本文所涉及的是使用HTTP(應用層)協議進行的拒絕服務攻擊。

Apache的主要缺陷

HTTP拒絕服務

攻擊者通過某些手段使服務器拒絕對HTTP應答。這會使Apache對係統資源(CPU時間和內存)需求的劇增,最終造成係統變慢甚至完全癱瘓。

緩衝區溢出

攻擊者利用程序編寫的一些缺陷,使程序偏離正常的流程。程序使用靜態分配的內存保存請求數據,攻擊者就可以發送一個超長請求使緩衝區溢出。比如一些Perl編寫的處理用戶請求的網關腳本。一旦緩衝區溢出,攻擊者可以執行其惡意指令或者使係統宕機。

被攻擊者獲得root權限

Apache一般以root權限運行(父進程),攻擊者通過它獲得root權限,進而控製整個係統。

獲得最新的Apache

使用最安全版本對於加強Apache Web服務器的安全是至關重要的。

你可以從Apache的官方網站http://www.apache.org獲得Apache的最新版本。

配置文件的保護

Apache Web服務器有三個主要的配置文件,它們一般位於/usr/local/apache/conf目錄。這三個文件是:httpd.con、srm.conf和access.conf。這些文件是整個Apache的控製中心,因此需要對三個配置文件有所了解。httpd.conf文件是主配置文件;srm.conf允許你填加資源文件;access.conf設置文件的訪問權限。

服務器訪問控製

access.conf文件包含一些指令控製允許什麼用戶訪問Apache目錄。應該把deny from all作為初始化指令,然後使用allow from指令打開訪問權限。你可以允許來自某個域、IP地址或者IP段的訪問。例如:

order deny,allow

deny from all

allow from sans.org

密碼保護

使用.htaccess文件,可以把某個目錄的訪問權限賦予某個用戶。係統管理員需要在httpd.conf或者srm.conf文件中使用AccessFileName指令打開目錄的訪問控製。以下是一個.htaccess示例文件:

AuthName PrivateFiles

AuthType Basic

AuthUserFile /path/to/httpd/users

require foo <---一個有效的用戶名

然後,使用如下命令填加一個用戶:

# htpasswd -c /path/to/httpd/users foo

Apache日誌文件

係統管理員可以使用日誌格式指令來控製日誌文件的信息。使用LogFormat "%a %l"指令,可以把發出HTTP請求瀏覽器的IP地址和主機名記錄到日誌文件。出於安全的考慮,你至少應該那些驗證失敗的WEB用戶,在http.conf文件中加入LogFormat "%401u"指令可以實現這個目的。這個指令還有其它的許多參數,用戶可以參考Apache的文檔。另外,Apache的錯誤日誌文件對於係統管理員來說也是非常重要的,錯誤日誌文件中包括服務器的啟動、停止以及CGI執行失敗等信息。