Apache Web 服務(wù)器這樣配置才最安全
A:作為最流行的Web服務(wù)器,Apache Server提供了較好的安全特性,使其能夠應對可能的安全威脅和信息泄漏。
1、 采用選擇性訪(fǎng)問(wèn)控制和強制性訪(fǎng)問(wèn)控制的安全策略
從Apache 或Web的角度來(lái)講,選擇性訪(fǎng)問(wèn)控制DAC(Discretionary Access Control)仍是基于用戶(hù)名和密碼的,強制性訪(fǎng)問(wèn)控制MAC(Mandatory Access Control)則是依據發(fā)出請求的客戶(hù)端的IP地址或所在的域號來(lái)進(jìn)行界定的。對于DAC方式,如輸入錯誤,那么用戶(hù)還有機會(huì )更正,從新輸入正確的的密碼;如果用戶(hù)通過(guò)不了MAC關(guān)卡,那么用戶(hù)將被禁止做進(jìn)一步的操作,除非服務(wù)器作出安全策略調整,否則用戶(hù)的任何努力都將無(wú)濟于事。
2、Apache 的安全模塊
Apache 的一個(gè)優(yōu)勢便是其靈活的模塊結構,其設計思想也是圍繞模塊(Modules)概念而展開(kāi)的。安全模塊是Apache Server中的極其重要的組成部分。這些安全模塊負責提供Apache Server的訪(fǎng)問(wèn)控制和認證、授權等一系列至關(guān)重要的安全服務(wù)。
mod_access模塊能夠根據訪(fǎng)問(wèn)者的IP地址(或域名,主機名等)來(lái)控制對Apache服務(wù)器的訪(fǎng)問(wèn),稱(chēng)之為基于主機的訪(fǎng)問(wèn)控制。
mod_auth模塊用來(lái)控制用戶(hù)和組的認證授權(Authentication)。用戶(hù)名和口令存于純文本文件中。mod_auth_db和 mod_auth_dbm模塊則分別將用戶(hù)信息(如名稱(chēng)、組屬和口令等)存于Berkeley-DB及DBM型的小型數據庫中,便于管理及提高應用效率。
mod_auth_digest模塊則采用MD5數字簽名的方式來(lái)進(jìn)行用戶(hù)的認證,但它相應的需要客戶(hù)端的支持。
mod_auth_anon模塊的功能和mod_auth的功能類(lèi)似,只是它允許匿名登錄,將用戶(hù)輸入的E-mail地址作為口令。
SSL(Secure Socket Lager),被Apache所支持的安全套接字層協(xié)議,提供Internet上安全交易服務(wù),如電子商務(wù)中的一項安全措施。通過(guò)對通訊字節流的加密來(lái)防止敏感信息的泄漏。但是,Apache的這種支持是建立在對Apache的API擴展來(lái)實(shí)現的,相當于一個(gè)外部模塊,通過(guò)與第三方程序的結合提供安全的網(wǎng)上交易支持。
Apache具有靈活的設置,所有Apache的安全特性都要經(jīng)過(guò)周密的設計與規劃,進(jìn)行認真地配置才能夠實(shí)現。Apache服務(wù)器的安全配置包括很多層面,有運行環(huán)境、認證與授權設置等。Apache的安裝配置和運行示例如下:
1、以Nobody用戶(hù)運行
一般情況下,Apache是由Root 來(lái)安裝和運行的。如果Apache Server進(jìn)程具有Root用戶(hù)特權,那么它將給系統的安全構成很大的威脅,應確保Apache Server進(jìn)程以最可能低的權限用戶(hù)來(lái)運行。通過(guò)修改httpd.conf文件中的下列選項,以Nobody用戶(hù)運行Apache 達到相對安全的目的。
User nobody
Group# -1
2、ServerRoot目錄的權限
為了確保所有的配置是適當的和安全的,需要嚴格控制Apache 主目錄的訪(fǎng)問(wèn)權限,使非超級用戶(hù)不能修改該目錄中的內容。Apache 的主目錄對應于Apache Server配置文件httpd.conf的Server Root控制項中,應為:
Server Root /usr/local/apache
3、SSI的配置
在配置文件access.conf 或httpd.conf中的確Options指令處加入Includes NO EXEC選項,用以禁用Apache Server 中的執行功能。避免用戶(hù)直接執行Apache 服務(wù)器中的執行程序,而造成服務(wù)器系統的公開(kāi)化。
〈Directory /home/*/public_html〉
Options Includes Noexec
〈/Directory〉
4、阻止用戶(hù)修改系統設置
在Apache 服務(wù)器的配置文件中進(jìn)行以下的設置,阻止用戶(hù)建立、修改 .htaccess文件,防止用戶(hù)超越能定義的系統安全特性。
〈Directory /〉
AllowOveride None
Options None
Allow from all
〈/Directory〉
然后再分別對特定的目錄進(jìn)行適當的配置。
5、改變Apache 服務(wù)器的確省訪(fǎng)問(wèn)特性
Apache 的默認設置只能保障一定程度的安全,如果服務(wù)器能夠通過(guò)正常的映射規則找到文件,那么客戶(hù)端便會(huì )獲取該文件,如http://local host/~ root/ 將允許用戶(hù)訪(fǎng)問(wèn)整個(gè)文件系統。在服務(wù)器文件中加入如下內容:
〈Directory /〉
order deny,ellow
Deny from all
〈/Directory〉
將禁止對文件系統的缺省訪(fǎng)問(wèn)。
6、CGI腳本的安全考慮
CGI腳本是一系列可以通過(guò)Web服務(wù)器來(lái)運行的程序。為了保證系統的安全性,應確保CGI的作者是可信的。對CGI而言,最好將其限制在一個(gè)特定的目錄下,如cgi-bin之下,便于管理;另外應該保證CGI目錄下的文件是不可寫(xiě)的,避免一些欺騙性的程序駐留或混跡其中;如果能夠給用戶(hù)提供一個(gè)安全性良好的CGI程序的模塊作為參考,也許會(huì )減少許多不必要的麻煩和安全隱患;除去CGI目錄下的所有非業(yè)務(wù)應用的腳本,以防異常的信息泄漏。
以上這些常用的舉措可以給Apache Server 一個(gè)基本的安全運行環(huán)境,顯然在具體實(shí)施上還要做進(jìn)一步的細化分解,制定出符合實(shí)際應用的安全配置方案。
Apache Server默認情況下的安全配置是拒絕一切訪(fǎng)問(wèn)。假定Apache Server內容存放在/usr/local/apache/share 目錄下,下面的指令將實(shí)現這種設置:
〈Directory /usr/local/apache/share〉
Deny from all
Allow Override None
〈/Directory〉
則禁止在任一目錄下改變認證和訪(fǎng)問(wèn)控制方法。
同樣,可以用特有的命令Deny、Allow指定某些用戶(hù)可以訪(fǎng)問(wèn),哪些用戶(hù)不能訪(fǎng)問(wèn),提供一定的靈活性。當Deny、Allow一起用時(shí),用命令Order決定Deny和Allow合用的順序,如下所示:
1、 拒絕某類(lèi)地址的用戶(hù)對服務(wù)器的訪(fǎng)問(wèn)權(Deny)
如:Deny from all
Deny from test.cnn.com
Deny from 204.168.190.13
Deny from 10.10.10.0/255.255.0.0
2、 允許某類(lèi)地址的用戶(hù)對服務(wù)器的訪(fǎng)問(wèn)權(Allow)
如:Allow from all
Allow from test.cnn.com
Allow from 204.168.190.13
Allow from 10.10.10.0/255.255.0.0
Deny和Allow指令后可以輸入多個(gè)變量。
3、簡(jiǎn)單配置實(shí)例:
Order Allow, Deny
Allow from all
Deny from www.test.com
指想讓所有的人訪(fǎng)問(wèn)Apache服務(wù)器,但不希望來(lái)自www.test.com的任何訪(fǎng)問(wèn)。
Order Deny, Allow
Deny from all
Allow from test.cnn.com
指不想讓所有人訪(fǎng)問(wèn),但希望給test.cnn.com網(wǎng)站的來(lái)訪(fǎng)。
概括的講,用戶(hù)認證就是驗證用戶(hù)的身份的真實(shí)性,如用戶(hù)賬號是否在數據庫中,及用戶(hù)賬號所對應的密碼是否正確;用戶(hù)授權表示檢驗有效用戶(hù)是否被許可訪(fǎng)問(wèn)特定的資源。在Apache中,幾乎所有的安全模塊實(shí)際上兼顧這兩個(gè)方面。從安全的角度來(lái)看,用戶(hù)的認證和授權相當于選擇性訪(fǎng)問(wèn)控制。
建立用戶(hù)的認證授權需要三個(gè)步驟:
1、建立用戶(hù)庫
用戶(hù)名和口令列表需要存在于文件(mod_auth模塊)或數據庫(mod_auth_dbm模塊)中?;诎踩脑?,該文件不能存放在文擋的根目錄下。如,存放在/usr /local/etc/httpd下的users文件,其格式與UNIX口令文件格式相似,但口令是以加密的形式存放的。應用程序htpasswd可以用來(lái)添加或更改程序:
htpasswd –c /usr/local/etc/httpd/users martin
-c表明添加新用戶(hù),martin為新添加的用戶(hù)名,在程序執行過(guò)程中,兩次輸入口令回答。用戶(hù)名和口令添加到users文件中。產(chǎn)生的用戶(hù)文件有如下的形式:
martin:WrU808BHQai36
jane:iABCQFQs40E8M
art:FadHN3W753sSU
第一域是用戶(hù)名,第二個(gè)域是用戶(hù)密碼。
2、配置服務(wù)器的保護域
為了使Apache服務(wù)器能夠利用用戶(hù)文件中的用戶(hù)名和口令信息,需要設置保護域(Realm)。一個(gè)域實(shí)際上是站點(diǎn)的一部分(如一個(gè)目錄、文檔等)或整個(gè)站點(diǎn)只供部分用戶(hù)訪(fǎng)問(wèn)。在相關(guān)目錄下的.htaccess文件或httpd.conf ( acces.conf ) 中的〈Directory〉段中,由AuthName來(lái)指定被保護層的域。在.htaccess文件中對用戶(hù)文件有效用戶(hù)的授權訪(fǎng)問(wèn)及指定域保護有如下指定:
AuthName “restricted stuff”
Authtype Basic
AuthUserFile /usr/local/etc/httpd/users
Require valid-user
其中,AuthName指出了保護域的域名(Realm Name)。valid-user參數意味著(zhù)user文件中的所有用戶(hù)都是可用的。一旦用戶(hù)輸入了一個(gè)有效的用戶(hù)/口令時(shí),同一個(gè)域內的其他資源都可以利用同樣的用戶(hù)/口令來(lái)進(jìn)行訪(fǎng)問(wèn),同樣可以使兩個(gè)不同的區域共用同樣的用戶(hù)/口令。
3、告訴服務(wù)器哪些用戶(hù)擁有資源的訪(fǎng)問(wèn)權限
如果想將一資源的訪(fǎng)問(wèn)權限授予一組客戶(hù),可以將他們的名字都列在Require之后。最好的辦法是利用組(group)文件。組的操作和標準的UNIX的組的概念類(lèi)似,任一個(gè)用戶(hù)可以屬于一個(gè)和數個(gè)組。這樣就可以在配置文件中利用Require對組賦予某些權限。如:
Require group staff
Require group staff admin
Require user adminuser
指定了一個(gè)組、幾個(gè)組或一個(gè)用戶(hù)的訪(fǎng)問(wèn)權限。
需要指出的是,當需要建立大批用戶(hù)賬號時(shí),那么Apache服務(wù)器利用用戶(hù)文件數據庫將會(huì )極大地降低效率。這種情況下,最好采用數據庫格式的賬號文件,譬如 DBM數據庫格式的文件。還可以根據需要利用db格式(mod_auth_db)的數據文件,或者直接利用數據庫,如:mSQL(mod_auth_msql)或DBI兼容的數據庫(mod_auth_dbi)。
DBM 文件是一種簡(jiǎn)單而標準的用于加快讀取效率的保存信息的方法。文件中存放的每一個(gè)記錄由兩個(gè)部分組成部分:鍵和值。由于DBM的格式,使得與鍵相關(guān)的信息非常有效。在Web用戶(hù)認證中,這里的鍵將是用戶(hù)名,而與該鍵相關(guān)的值將是該用戶(hù)經(jīng)過(guò)加密的口令信息。從DBM文件中查找用戶(hù)名和口令,要比從一個(gè)純文本文件中查找有效得多。對于有很多用戶(hù)的站點(diǎn),這種方法將大大提高用戶(hù)認證的效率。
1、在Apache服務(wù)器中增加DBM模塊
在默認的條件下,Apache不使用DBM文件來(lái)完成用戶(hù)認證,因此編譯時(shí)一定要加入可選的DBM認證模塊。重新配置Apache服務(wù)器文件,去掉其中的注釋行
#Module dbm_auth_module mod_auth_dbm.o前的“#”,并重新編譯。但是,在編譯之前,需要指出Apache DBM函數的位置。
2、創(chuàng )建DBM用戶(hù)文件(假設文件名為users)
Apache提供了一個(gè)“dbmmanage”的程序,用于創(chuàng )建和管理DBM文件。其中:
Dbmmanage /usr/local/etc/httpd/usersdbm 創(chuàng )建DBM文件
Dbmmanage /usr/local/etc/httpd/users adduser martin hamster 新增用戶(hù)
Dbmmanage /usr/local/etc/httpd/usersdbm delete martin 刪除用戶(hù)
Dbmmanage /usr/local/etc/httpd/usersdbm view 顯示DBM中所有用戶(hù)
有了DBM數據庫文件,還要替換目錄訪(fǎng)問(wèn)控制,即將Apache配置文件(access.conf)中的AuthUserFile部分替換成:AuthUserFile /usr/local/etc/usersdbm 告訴Apache現在的用戶(hù)文件是DBM的格式。
本文來(lái)自“十萬(wàn)個(gè)為什么”電腦學(xué)習網(wǎng) http://www.why100000.com
聯(lián)系客服