企業(yè)級(jí)Apache服務(wù)器安全防護(hù)要點(diǎn)剖析(2) |
發(fā)布時(shí)間: 2012/5/28 7:45:14 |
策略三:?jiǎn)⒂肁pache自帶安全模塊保護(hù) Apache的一個(gè)優(yōu)勢(shì)便是其靈活的模塊結(jié)構(gòu),其設(shè)計(jì)思想也是圍繞模塊(module)概念而展開(kāi)的。安全模塊是ApacheServer中的極其重要的組成部分。這些安全模塊負(fù)責(zé)提供Apacheserver的訪問(wèn)控制和認(rèn)證,授權(quán)等一系列至關(guān)重要的安全服務(wù)。 Apache下有如下幾類(lèi)與安全相關(guān)的模塊: mod_access模塊能夠根據(jù)訪問(wèn)者的IP地址(或域名,主機(jī)名等)來(lái)控制對(duì)Apache服務(wù)器的訪問(wèn),稱之為基于主機(jī)的訪問(wèn)控制。 mod_auth模塊用來(lái)控制用戶和組的認(rèn)證授權(quán)(Authentication)。用戶名和口令存于純文本文件中。 mod_auth_db和mod_auth_dbm模塊則分別將用戶信息(如名稱、組屬和口令等)存于Berkeley-DB及DBM型的小型數(shù)據(jù)庫(kù)中,便于管理及提高應(yīng)用效率。 mod_auth_digest模塊則采用MD5數(shù)字簽名的方式來(lái)進(jìn)行用戶的認(rèn)證,但它相應(yīng)的需要客戶端的支持。 mod_auth_anon模塊的功能和mod_auth的功能類(lèi)似,只是它允許匿名登錄,將用戶輸入的E-mail地址作為口令。 mod_ssl被Apache用于支持安全套接字層協(xié)議,提供Internet上安全交易服務(wù),如電子商務(wù)中的一項(xiàng)安全措施。通過(guò)對(duì)通信字節(jié)流加密來(lái)防止敏感信息的泄漏。但是,Apache這種支持是建立在對(duì)Apache的API擴(kuò)展來(lái)實(shí)現(xiàn)的,相當(dāng)于一個(gè)外部模塊,通過(guò)與第三方程序(如 openssl)的結(jié)合提供安全的網(wǎng)上交易支持。 為了能夠使用模塊功能,模塊通常以DSO(DynamicSharedObject)的方式構(gòu)建,用戶應(yīng)該在httpd.conf文件中使用 LoadModule指令,使得能夠在使用前獲得模塊的功能。下面是主配置文件中各個(gè)模塊的情況,開(kāi)啟安全模塊非常簡(jiǎn)單,即去掉在各安全模塊所在行前的 “#”符號(hào)即可,如下所示: LoadModuleauth_basic_modulemodules/mod_auth_basic.so LoadModuleauth_digest_modulemodules/mod_auth_digest.so LoadModuleauthn_file_modulemodules/mod_authn_file.so LoadModuleauthn_alias_modulemodules/mod_authn_alias.so 。。。。。。 只有將上述安全模塊進(jìn)行開(kāi)啟后,Apache才能實(shí)現(xiàn)相應(yīng)的訪問(wèn)控制和通信加密功能。 策略四:訪問(wèn)控制策略設(shè)置 在開(kāi)啟了相應(yīng)的安全模塊后,還需要對(duì)Apache的訪問(wèn)控制策略進(jìn)行設(shè)定。 1.認(rèn)證和授權(quán)指令 目前,有兩種常見(jiàn)的認(rèn)證類(lèi)型,基本認(rèn)證和摘要認(rèn)證: (1)基本認(rèn)證(Basic):使用最基本的用戶名和密碼方式進(jìn)行用戶認(rèn)證。 (2)摘要認(rèn)證(Digest):該認(rèn)證方式比基本認(rèn)證要安全得多,在認(rèn)證過(guò)程中額外使用了一個(gè)針對(duì)客戶端的挑戰(zhàn)(challenge)信息,可以有效地避免基本認(rèn)證方式可能遇到的“重放攻擊”。值得注意的是:目前并非所有的瀏覽器都支持摘要認(rèn)證方式。 所有的認(rèn)證配置指令既可以出現(xiàn)在主配置文件httpd.conf中的Directory容器中,也可以出現(xiàn)在單獨(dú)的.htaccess文件中,這個(gè)可以由用戶靈活地選擇使用。在認(rèn)證配置過(guò)程中,需要用到如下指令選項(xiàng): AuthName:用于定義受保護(hù)區(qū)域的名稱。 AuthType:用于指定使用的認(rèn)證方式,包括上面所述的Basic和Digest兩種方式。 AuthGroupFile:用于指定認(rèn)證組文件的位置。 AuthUserFile:用戶指定認(rèn)證口令文件的位置。 使用上述的認(rèn)證指令配置認(rèn)證后,需要為Apache服務(wù)器的訪問(wèn)對(duì)象,也就是指定的用戶和組進(jìn)行相應(yīng)的授權(quán),以便于他們對(duì)Apache服務(wù)器提供的目錄和文件進(jìn)行訪問(wèn)。為用戶和組進(jìn)行授權(quán)需要使用Require指令,主要可以使用以下三種方式進(jìn)行授權(quán): 授權(quán)給指定的一個(gè)或者多個(gè)用戶:使用Requireuser用戶名1用戶名2…。 授權(quán)給指定的一個(gè)或者多個(gè)組:使用Requiregroup用戶名1用戶名2…。 授權(quán)給指定口令文件中的所有用戶:使用Requirevalid-user。 2.管理認(rèn)證口令文件和認(rèn)證組文件 要實(shí)現(xiàn)用戶認(rèn)證功能,首先要建立保存用戶名和口令的文件。Apache自帶的htpasswd命令提供了建立和更新存儲(chǔ)用戶名、密碼的文本文件的功能。需要注意的是,這個(gè)文件必須放在不能被網(wǎng)絡(luò)訪問(wèn)的位置,以避免被下載和信息泄漏。建議將口令文件放在/etc/httpd/目錄或者其子目錄下。 下面的例子在/etc/httpd目錄下創(chuàng)建一個(gè)文件名為passwd_auth的口令文件,并將用戶rhel5添加入認(rèn)證口令文件。使用以下命令建立口令文件(過(guò)程中還會(huì)提示輸入該用戶的口令): #touchpasswd_auth #htpasswd-c/etc/httpd/passwd_authrhel5 Newpassword: Re-typenewpassword: Addingpasswordforuserrhel5 命令執(zhí)行的過(guò)程中系統(tǒng)會(huì)要求用戶為rhel5用戶輸入密碼。上述命令中的-c選項(xiàng)表示無(wú)論口令文件是否已經(jīng)存在,都會(huì)重新寫(xiě)入文件并刪去原有內(nèi)容。所以在添加第2個(gè)用戶到口令文件時(shí),就不需要使用-c選項(xiàng)了,如下命令所示 #htpasswd/etc/httpd/passwd_authtestuser 3.認(rèn)證和授權(quán)使用實(shí)例 (1)使用主配置文件配置用戶認(rèn)證及授權(quán) 在本例子中,用戶可以在Apache的主配置文件httpd.conf中加入以下語(yǔ)句建立對(duì)目錄/var/www/html/rhel5訪問(wèn)的用戶認(rèn)證和授權(quán)機(jī)制: <Directory"/var/www/html/rhel5"> AllowOverrideNone AuthTypeBasic AuthName"rhel5" AuthUserFile/etc/httpd/passwd_auth Requireuserrhel5testuser </Directory> 在上述例子中,使用了如下指令: AllowOverride:該選項(xiàng)定義了不使用.htaccess文件。 AuthTypeBasic:AuthType選項(xiàng)定義了對(duì)用戶實(shí)施認(rèn)證的類(lèi)型,最常用的是由mod_auth提供的Basic。 AuthName:定義了Web瀏覽器顯示輸入用戶/密碼對(duì)話框時(shí)的領(lǐng)域內(nèi)容。 AuthUserFile:定義了口令文件的路徑,即使用htpasswd建立的口令文件。 Requireuser:定義了允許哪些用戶訪問(wèn),各用戶之間用空格分開(kāi)。 需要注意的是:在AuthUserFile選項(xiàng)定義中,還需要使用如下語(yǔ)句事先建立認(rèn)證用戶patterson和testuser,該選項(xiàng)中的定義才能生效: #htpasswd-c/etc/httpd/passwd_authrhel5 #htpasswd/etc/httpd/passwd_authtestuser (2)使用.htaccess文件配置用戶認(rèn)證和授權(quán) 在本例子中,為了完成如上述例子同樣的功能,需要先在主配置文件中加入如下語(yǔ)句: <Directory“/var/www/html/rhel5”> AllowOverrideAuthConfig </Directory> 上述語(yǔ)句中的AllowOverride選項(xiàng)允許在.htaccess文件中使用認(rèn)證和授權(quán)指令。 然后,在.htaccess文件中添加如下語(yǔ)句即可: AuthTypeBasic AuthName"PleaseLogin:" AuthUserFile/etc/httpd/passwd_auth Requireuserrhel5testuser 同理,在AuthUserFile選項(xiàng)定義中,還需要使用如下語(yǔ)句事先建立認(rèn)證用戶patterson和testuser,該選項(xiàng)中的定義才能生效: #htpasswd-c/etc/httpd/passwd_authrhel5 #htpasswd/etc/httpd/passwd_authtestuser 本文出自:億恩科技【www.ruiliheng.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |