成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

企業級Apache服務器安全防護要點剖析

安全 網站安全
Apache一直是世界上使用率排名前三的Web服務器軟件,企業使用其構建Web應用,從很大程度上都需要對其安全性進行綜合考慮,以保證能夠應對拒絕服務攻擊、流量竊聽、數據泄漏等網絡威脅,從而保證企業門戶網站的安全。

Apache一直是世界上使用率排名前三的Web服務器軟件。企業使用其構建Web應用,從很大程度上都需要對其安全性進行綜合考慮,以保證能夠應對拒絕服務攻擊、流量竊聽、數據泄漏等網絡威脅,從而保證企業門戶網站的安全。

除了使用業界流行的防火墻、IDS/IPS(入侵檢測系統/入侵防御系統)、WAF(Web應用防火墻)、UTM(統一威脅管理)等外部安全設備對Apache服務進行安全防護外,作為一種優秀的開源服務器軟件,Apache本身就具有很多優秀的特性可以為服務器管理員提供安全配置,以防范各種網絡攻擊。因此,充分、高效地挖掘Apache服務器的自身安全能力也是企業安全工作者一個必備的技能。基于此,本文將從4個方面詳細剖析Apache服務器的安全防護要點。

策略一:服務器端安全設置

1.限制root用戶運行Apache服務器

一般情況下,在Linux下啟動Apache服務器的進程httpd需要root權限。由于root權限太大,存在許多潛在的安全威脅。一些管理員為了安全起見,認為httpd服務器不可能沒有安全漏洞,因而更愿意使用普通用戶的權限來啟動服務器。http.conf主配置文件里面有如下兩個配置是Apache的安全保證,Apache在啟動后,就將其本身設置為這兩個選項設置的用戶和組權限進行運行,降低了服務器的危險性。

Userapache

Groupapache

需要特別指出的是:以上兩個配置在主配置文件里面是默認選項,當采用root用戶身份運行httpd進程后,系統將自動將該進程的用戶組和權限改為apache,這樣,httpd進程的權限就被限制在apache用戶和組范圍內,因而保證了安全。

2.向客戶端隱藏Apache服務器的相關信息

Apache服務器的版本號可作為黑客入侵的重要信息被利用,通常他們在獲得版本號后,通過網上搜索針對該版本服務器的漏洞,從而使用相應的技術和工具有針對性的入侵,這也是滲透測試的一個關鍵步驟。因此,為了避免一些不必要的麻煩和安全隱患,可以通過主配置文件httpd.conf下的如下兩個選項進行:

(1)ServerTokens:該選項用于控制服務器是否響應來自客戶端的請求,向客戶端輸出服務器系統類型或者相應的內置模塊等重要信息。RedHatEnterpriseLinux5操作系統在主配置文件中提供全局默認控制閾值為OS,即ServerTokensOS。它們將向客戶端公開操作系統信息和相關敏感信息,所以保證安全情況下需要在該選項后使用“ProductOnly”,即ServerTokensProductOnly。

(2)ServerSignature:該選項控制由系統生成的頁面(錯誤信息等)。默認情況下為off,即ServerSignatureoff,該情況下不輸出任何頁面信息。另一情況為on,即ServerSignatureon,該情況下輸出一行關于版本號等相關信息。安全情況下應該將其狀態設為off。

圖1和圖2為安全設定這兩個選項前后正常情況下和錯誤情況下的輸出頁面(通過Rhel5中的MozillaFirefox瀏覽器訪問Rhel5中的Apache服務器)的詳細對比。可以清楚看到,安全設定選項后,可以充分地向客戶端用戶隱藏Linux操作系統信息和Apache服務器版本信息。

圖1錯誤情況下未設定安全選項前示意

圖2操作情況下使用安全設定后的對比

3.設置虛擬目錄和目錄權限

要從主目錄以外的其他目錄中進行發布,就必須創建虛擬目錄。虛擬目錄是一個位于Apache的主目錄外的目錄,它不包含在Apache的主目錄中,但在訪問Web站點的用戶看來,它與主目錄中的子目錄是一樣的。每個虛擬目錄都有一個別名,用戶Web瀏覽器中可以通過此別名來訪問虛擬目錄,如http://服務器IP地址/別名/文件名,就可以訪問虛擬目錄下面的任何文件了。

使用Alias選項可以創建虛擬目錄。在主配置文件中,Apache默認已經創建了兩個虛擬目錄。這兩條語句分別建立了“/icons/”和“/manual”兩個虛擬目錄,它們對應的物理路徑分別是“/var/www/icons/”和“/var/www/manual”。在主配置文件中,用戶可以看到如下配置語句:

Alias/icons/"/var/www/icons/"

Alias/manual"/var/www/manual"

在實際使用過程中,用戶可以自己創建虛擬目錄。比如,創建名為/user的虛擬目錄,它所對應的路徑為上面幾個例子中常用的/var/www/html/rhel5:

Alias/test"/var/www/html/rhel5"

如果需要對其進行權限設置,可以加入如下語句:

<Directory“/var/www/html/rhel5”>

AllowOverrideNone

OptionsIndexes

Orderallow,deny

Allowfromall

</Directory>

設置該虛擬目錄和目錄權限后,可以使用客戶端瀏覽器進行測試驗證,采用別名對該目錄中的文件進行訪問,瀏覽結果如圖3所示。

 

圖3使用虛擬目錄的測試結果

策略二:限制Apache服務的運行環境

Apache服務器需要綁定到80端口上來監聽請求,而root是唯一有這種權限的用戶,隨著攻擊手段和強度的增加,服務器受到相當大的威脅,一旦緩沖區溢出漏洞被利用,就可以控制整個系統。為了進一步提高系統安全性,Linux內核引入chroot機制,chroot是內核中的一個系統調用,軟件可以通過調用函數庫的chroot函數,來更改某個進程所能見到的根目錄。

chroot機制是將某軟件運行限制在指定目錄中,保證該軟件只能對該目錄及其子目錄的文件有所動作,從而保證整個服務器的安全。在這種情況下,即使出現黑客或者不法用戶通過該軟件破壞或侵入系統,Linux系統所受的損壞也僅限于該設定的根目錄,而不會影響到系統的其他部分。

將軟件chroot化的一個問題是該軟件運行時需要的所有程序、配置文件和庫文件都必須事先安裝到chroot目錄中,通常稱這個目錄為chroot“監牢”。如果在“監牢”中運行httpd,那么用戶根本看不到Linux文件系統中那個真正的目錄,從而保證了Linux系統的安全。

在使用該技術的時候,一般情況下需要事先創建目錄,并將守護進程的可執行文件httpd復制到其中。同時,由于httpd需要幾個庫文件,所以需要把httpd程序依賴的幾個lib文件同時也拷貝到同一個目錄下,因此手工完成這一工作是非常麻煩的。幸運的是,用戶可以通過使用開源的jail軟件包來幫助簡化chroot“監牢”建立的過程,具體步驟如下所示:

Jail官方網站是http://www.jmcresearch.com/projects/。首先將其下載,然后執行如下命令進行源代碼包的編譯和安裝:

#tarxzvfjail_1.9a.tar.gz

#cdjail/src

#make

jail軟件包提供了幾個Perl腳本作為其核心命令,包括mkjailenv、addjailuser和addjailsw,他們位于解壓后的目錄jail/bin中。這幾個命令的基本用途如下所示:

mkjailenv:用于創建chroot“監牢”目錄,并且從真實文件系統中拷貝基本的軟件環境。

addjailsw:用于從真實文件系統中拷貝二進制可執行文件及其相關的其它文件(包括庫文件、輔助性文件和設備文件)到該“監牢”中。

addjailuser:創建新的chroot“監牢”用戶。

采用jail創建監牢的步驟如下所示;

(1)首先需要停止目前運行的httpd服務,然后建立chroot目錄,命令如下所示。該命令將chroot目錄建立在路徑/root/chroot/httpd下:

#servicehttpdstop

#mkjailenv/root/chroot/httpd

kjailenv

AcomponentofJail(version1.9forlinux)

http://www.gsyc.inf.uc3m.es/~assman/jail/

JuanM.Casillas<assman@gsyc.inf.uc3m.es>

Makingchrootedenvironmentinto/root/chroot/httpd

Doingpreinstall()

Doingspecial_devices()

Doinggen_template_password()

Doingpostinstall()

Done.

(2)為“監牢”添加httpd程序,命令如下:

#./addjailsw/root/chroot/httpd/-P/usr/sbin/httpd

addjailsw

AcomponentofJail(version1.9forlinux)

http://www.gsyc.inf.uc3m.es/~assman/jail/

JuanM.Casillas<assman@gsyc.inf.uc3m.es>

Guessing/usr/sbin/httpdargs(0)

Warning:can'tcreate/proc/mountsfromthe/procfilesystem

Done.

在上述過程中,用戶不需要在意那些警告信息,因為jail會調用ldd檢查httpd用到的庫文件。而幾乎所有基于共享庫的二進制可執行文件都需要上述的幾個庫文件。

(3)然后,將httpd的相關文件拷貝到“監牢”的相關目錄中,命令如下所示:

#mkdir-p/root/chroot/httpd/etc

#cp–a/etc/httpd/root/chroot/httpd/etc/

。。。。。。

添加后的目錄結構如下所示:

#ll

總計56

drwxr-xr-x2rootroot409603-2313:44dev

drwxr-xr-x3rootroot409603-2313:46etc

drwxr-xr-x2rootroot409603-2313:46lib

drwxr-xr-x2rootroot409603-2313:46selinux

drwsrwxrwx2rootroot409603-2313:46tmp

drwxr-xr-x4rootroot409603-2313:46usr

drwxr-xr-x3rootroot409603-2313:46var

(4)重新啟動httpd,并使用ps命令檢查httpd進程,發現該進程已經運行在監牢中,如下所示:

#ps-aux|grephttpd

Warning:badsyntax,perhapsabogus'-'?See/usr/share/doc/procps-3.2.7/FAQ

root35460.60.338281712pts/2S13:570:00/usr/sbin/nss_pcacheoff/etc/httpd/alias

root355014.23.64938817788?Rsl13:570:00/root/chroot/httpd/httpd

apache35590.21.4493886888?S13:570:00/root/chroot/httpd/httpd

apache35600.21.4493886888?S13:570:00/root/chroot/httpd/httpd

apache35610.21.4493886888?S13:570:00/root/chroot/httpd/httpd

apache35620.21.4493886888?S13:570:00/root/chroot/httpd/httpd

apache35630.21.4493886888?S13:570:00/root/chroot/httpd/httpd

apache35640.21.4493886888?S13:570:00/root/chroot/httpd/httpd

apache35650.21.4493886888?S13:570:00/root/chroot/httpd/httpd

apache35660.21.4493886888?S13:570:00/root/chroot/httpd/httpd

root35680.00.14124668pts/2R+13:570:00grephttpd#p#


 策略三:啟用Apache自帶安全模塊保護

Apache的一個優勢便是其靈活的模塊結構,其設計思想也是圍繞模塊(module)概念而展開的。安全模塊是ApacheServer中的極其重要的組成部分。這些安全模塊負責提供Apacheserver的訪問控制和認證,授權等一系列至關重要的安全服務。

Apache下有如下幾類與安全相關的模塊:

mod_access模塊能夠根據訪問者的IP地址(或域名,主機名等)來控制對Apache服務器的訪問,稱之為基于主機的訪問控制。

mod_auth模塊用來控制用戶和組的認證授權(Authentication)。用戶名和口令存于純文本文件中。

mod_auth_db和mod_auth_dbm模塊則分別將用戶信息(如名稱、組屬和口令等)存于Berkeley-DB及DBM型的小型數據庫中,便于管理及提高應用效率。

mod_auth_digest模塊則采用MD5數字簽名的方式來進行用戶的認證,但它相應的需要客戶端的支持。

mod_auth_anon模塊的功能和mod_auth的功能類似,只是它允許匿名登錄,將用戶輸入的E-mail地址作為口令。

mod_ssl被Apache用于支持安全套接字層協議,提供Internet上安全交易服務,如電子商務中的一項安全措施。通過對通信字節流加密來防止敏感信息的泄漏。但是,Apache這種支持是建立在對Apache的API擴展來實現的,相當于一個外部模塊,通過與第三方程序(如openssl)的結合提供安全的網上交易支持。

為了能夠使用模塊功能,模塊通常以DSO(DynamicSharedObject)的方式構建,用戶應該在httpd.conf文件中使用LoadModule指令,使得能夠在使用前獲得模塊的功能。下面是主配置文件中各個模塊的情況,開啟安全模塊非常簡單,即去掉在各安全模塊所在行前的“#”符號即可,如下所示:

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

。。。。。。

只有將上述安全模塊進行開啟后,Apache才能實現相應的訪問控制和通信加密功能。

策略四:訪問控制策略設置

在開啟了相應的安全模塊后,還需要對Apache的訪問控制策略進行設定。

1.認證和授權指令

目前,有兩種常見的認證類型,基本認證和摘要認證:

(1)基本認證(Basic):使用最基本的用戶名和密碼方式進行用戶認證。

(2)摘要認證(Digest):該認證方式比基本認證要安全得多,在認證過程中額外使用了一個針對客戶端的挑戰(challenge)信息,可以有效地避免基本認證方式可能遇到的“重放攻擊”。值得注意的是:目前并非所有的瀏覽器都支持摘要認證方式。

所有的認證配置指令既可以出現在主配置文件httpd.conf中的Directory容器中,也可以出現在單獨的.htaccess文件中,這個可以由用戶靈活地選擇使用。在認證配置過程中,需要用到如下指令選項:

AuthName:用于定義受保護區域的名稱。

AuthType:用于指定使用的認證方式,包括上面所述的Basic和Digest兩種方式。

AuthGroupFile:用于指定認證組文件的位置。

AuthUserFile:用戶指定認證口令文件的位置。

使用上述的認證指令配置認證后,需要為Apache服務器的訪問對象,也就是指定的用戶和組進行相應的授權,以便于他們對Apache服務器提供的目錄和文件進行訪問。為用戶和組進行授權需要使用Require指令,主要可以使用以下三種方式進行授權:

授權給指定的一個或者多個用戶:使用Requireuser用戶名1用戶名2…。

授權給指定的一個或者多個組:使用Requiregroup用戶名1用戶名2…。

授權給指定口令文件中的所有用戶:使用Requirevalid-user。

2.管理認證口令文件和認證組文件

要實現用戶認證功能,首先要建立保存用戶名和口令的文件。Apache自帶的htpasswd命令提供了建立和更新存儲用戶名、密碼的文本文件的功能。需要注意的是,這個文件必須放在不能被網絡訪問的位置,以避免被下載和信息泄漏。建議將口令文件放在/etc/httpd/目錄或者其子目錄下。

下面的例子在/etc/httpd目錄下創建一個文件名為passwd_auth的口令文件,并將用戶rhel5添加入認證口令文件。使用以下命令建立口令文件(過程中還會提示輸入該用戶的口令):

#touchpasswd_auth

#htpasswd-c/etc/httpd/passwd_authrhel5

Newpassword:

Re-typenewpassword:

Addingpasswordforuserrhel5

命令執行的過程中系統會要求用戶為rhel5用戶輸入密碼。上述命令中的-c選項表示無論口令文件是否已經存在,都會重新寫入文件并刪去原有內容。所以在添加第2個用戶到口令文件時,就不需要使用-c選項了,如下命令所示

#htpasswd/etc/httpd/passwd_authtestuser

3.認證和授權使用實例

(1)使用主配置文件配置用戶認證及授權

在本例子中,用戶可以在Apache的主配置文件httpd.conf中加入以下語句建立對目錄/var/www/html/rhel5訪問的用戶認證和授權機制:

<Directory"/var/www/html/rhel5">

AllowOverrideNone

AuthTypeBasic

AuthName"rhel5"

AuthUserFile/etc/httpd/passwd_auth

Requireuserrhel5testuser

</Directory>

在上述例子中,使用了如下指令:

AllowOverride:該選項定義了不使用.htaccess文件。

AuthTypeBasic:AuthType選項定義了對用戶實施認證的類型,最常用的是由mod_auth提供的Basic。

AuthName:定義了Web瀏覽器顯示輸入用戶/密碼對話框時的領域內容。

AuthUserFile:定義了口令文件的路徑,即使用htpasswd建立的口令文件。

Requireuser:定義了允許哪些用戶訪問,各用戶之間用空格分開。

需要注意的是:在AuthUserFile選項定義中,還需要使用如下語句事先建立認證用戶patterson和testuser,該選項中的定義才能生效:

#htpasswd-c/etc/httpd/passwd_authrhel5

#htpasswd/etc/httpd/passwd_authtestuser

(2)使用.htaccess文件配置用戶認證和授權

在本例子中,為了完成如上述例子同樣的功能,需要先在主配置文件中加入如下語句:

<Directory“/var/www/html/rhel5”>

AllowOverrideAuthConfig

</Directory>

上述語句中的AllowOverride選項允許在.htaccess文件中使用認證和授權指令。

然后,在.htaccess文件中添加如下語句即可:

AuthTypeBasic

AuthName"PleaseLogin:"

AuthUserFile/etc/httpd/passwd_auth

Requireuserrhel5testuser

同理,在AuthUserFile選項定義中,還需要使用如下語句事先建立認證用戶patterson和testuser,該選項中的定義才能生效:

#htpasswd-c/etc/httpd/passwd_authrhel5

#htpasswd/etc/httpd/passwd_authtestuser

【編輯推薦】

  1. Apache Tomcat不安全目錄權限漏洞
  2. Bugzilla Data/Mining目錄權限不安全漏洞
  3. UnixWare/Open UNIX /dev/X目錄權限不正確漏洞
  4. IRIX mv程序設置不安全目錄權限漏洞
責任編輯:于爽 來源: TechTarget中國
相關推薦

2012-02-20 09:18:28

2018-12-04 09:44:50

2012-05-29 10:21:56

2012-05-21 10:36:23

2012-12-17 15:07:54

Apache服務器安全Apache服務器

2012-12-10 10:59:29

2010-03-02 17:29:21

2009-12-11 15:28:02

PHP安全防護

2012-04-05 10:00:15

2010-08-04 09:39:09

2010-12-21 18:18:52

2009-11-23 14:08:37

2012-10-09 14:45:32

2010-08-23 17:43:43

DHCP服務器

2019-10-21 09:02:23

郵件安全網絡釣魚電子郵件

2012-10-09 09:44:09

2018-12-05 15:24:31

2021-01-25 10:11:24

服務器安全防護

2011-09-09 09:35:28

2021-11-11 15:21:43

云計算安全技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品亚洲永久免费精品 | 青草久久免费视频 | 五月槐花香 | 中文字幕精品一区二区三区在线 | 黑人巨大精品欧美一区二区免费 | 亚洲精品乱码久久久久v最新版 | 精品视频免费 | 99婷婷 | 81精品国产乱码久久久久久 | 国产免费一级一级 | 久久九九99| 99riav3国产精品视频 | 99视频免费播放 | 国产精品久久久久久久久免费樱桃 | 国产 欧美 日韩 一区 | 好姑娘影视在线观看高清 | 欧美片网站免费 | 日韩精品免费在线观看 | 国产一二区视频 | 亚洲中午字幕 | 国内精品伊人久久久久网站 | 91社区视频| 色噜噜色综合 | 国产精品成人久久久久 | 欧美一区2区三区4区公司二百 | 久久久久久黄 | 美女爽到呻吟久久久久 | 亚洲国产成人精品女人久久久 | 黑人成人网 | 中文字幕日韩在线 | 亚洲国产成人久久久 | 亚洲精品v| 国产精品区二区三区日本 | 国产日韩欧美二区 | 影音av| 91视频在线| 亚洲激情在线观看 | 久久人人爽人人爽人人片av免费 | 国产一区在线免费观看视频 | 永久免费av | 精品国产欧美日韩不卡在线观看 |