- 論壇徽章:
- 0
|
盡管Apache服務(wù)器應(yīng)用最為廣泛,設(shè)計(jì)上非常安全的程序。但是同其它應(yīng)用程序一樣,Apache也存在安全缺陷。畢竟它是完全源代碼,Apache服務(wù)器的安全缺陷主要是使用HTTP協(xié)議進(jìn)行的拒絕服務(wù)攻擊(denial of service)、緩沖區(qū)溢出攻擊以及被攻擊者獲得root權(quán)限三缺陷和最新的惡意的攻擊者進(jìn)行“拒絕服務(wù)”(DoS)攻擊。合理的網(wǎng)絡(luò)配置能夠保護(hù)Apache服務(wù)器免遭多種攻擊。我們來介紹一下主要的安全缺陷。
主要安全缺陷
(1)使用HTTP協(xié)議進(jìn)行的拒絕服務(wù)攻擊(denial of service)的安全缺陷
這種方法攻擊者會(huì)通過某些手段使服務(wù)器拒絕對(duì)HTTP應(yīng)答。這樣會(huì)使Apache對(duì)系統(tǒng)資源(CPU時(shí)間和內(nèi)存)需求的劇增,最終造成Apache系統(tǒng)變慢甚至完全癱瘓。
(2)緩沖區(qū)溢出的安全缺陷
該方法攻擊者利用程序編寫的一些缺陷,使程序偏離正常的流程。程序使用靜態(tài)分配的內(nèi)存保存請(qǐng)求數(shù)據(jù),攻擊者就可以發(fā)送一個(gè)超長(zhǎng)請(qǐng)求使緩沖區(qū)溢出。
(3)被攻擊者獲得root權(quán)限的安全缺陷
該安全缺陷主要是因?yàn)锳pache服務(wù)器一般以root權(quán)限運(yùn)行(父進(jìn)程),攻擊者會(huì)通過它獲得root權(quán)限,進(jìn)而控制整個(gè)Apache系統(tǒng)。
(4)惡意的攻擊者進(jìn)行“拒絕服務(wù)”(DoS)攻擊的安全缺陷
這個(gè)最新在6月17日發(fā)現(xiàn)的漏洞,它主要是存在于Apache的chunk encoding中,這是一個(gè)HTTP協(xié)議定義的用于接受web用戶所提交數(shù)據(jù)的功能。 所有說使用最高和最新安全版本對(duì)于加強(qiáng)Apache Web服務(wù)器的安全是至關(guān)重要的。
正確維護(hù)和配置Apache服務(wù)器
雖然Apache服務(wù)器的開發(fā)者非常注重安全性,由于Apache服務(wù)器其龐大的項(xiàng)目, 難免會(huì)存在安全隱患。正確維護(hù)和配置Apache WEB服務(wù)器就很重要了。我們應(yīng)注意的一些問題:
(1)Apache服務(wù)器配置文件
Apache Web服務(wù)器主要有三個(gè)配置文件,位于/usr/local/apache/conf目錄下。 這三個(gè)文件是:
httpd.conf----->主配置文件
srm.conf------>填加資源文件
access.conf--->設(shè)置文件的訪問權(quán)限
(2)Apache服務(wù)器的目錄安全認(rèn)證
在Apache Server中是允許使用 .htaccess做目錄安全保護(hù)的,欲讀取這保護(hù)的目錄需要先鍵入正確用戶帳號(hào)與密碼。這樣可做為專門管理網(wǎng)頁存放的目錄或做為會(huì)員區(qū)等。在保護(hù)的目錄放置一個(gè)檔案,檔名為.htaccss。
AuthName "會(huì)員專區(qū)"
AuthType "Basic"
AuthUserFile "/var/tmp/xxx.pw" ----->把password放在網(wǎng)站外 require valid-user 到apache/bin目錄,建password檔 % ./htpasswd -c /var/tmp/xxx.pw username1 ----->第一次建檔要用參數(shù)"-c" % /htpasswd /var/tmp/xxx.pw username2 這樣就可以保護(hù)目錄內(nèi)的內(nèi)容,進(jìn)入要用合法的用戶。
注:采用了Apache內(nèi)附的模組。
也可以采用在httpd.conf中加入:
options indexes followsymlinks
allowoverride authconfig
order allow,deny
allow from all
(3)Apache服務(wù)器訪問控制
我們就要看三個(gè)配置文件中的第三個(gè)文件了,即access.conf文件,它包含一些指令控制允許什么用戶訪問Apache目錄。應(yīng)該把deny from all設(shè)為初始化指令,再使用allow from指令打開訪問權(quán)限。
order deny,allow
deny from all
allow from safechina.net
設(shè)置允許來自某個(gè)域、IP地址或者IP段的訪問。
(4)Apache服務(wù)器的密碼保護(hù)問題
我們?cè)偈褂?htaccess文件把某個(gè)目錄的訪問權(quán)限賦予某個(gè)用戶。系統(tǒng)管理員需要在httpd.conf或者rm.conf文件中使用 AccessFileName指令打開目錄的訪問控制。如:
AuthName PrivateFiles
AuthType Basic
AuthUserFile /path/to/httpd/users
require Phoenix
# htpasswd -c /path/to/httpd/users Phoenix
設(shè)置Apache服務(wù)器的WEB和文件服務(wù)器
我們?cè)贏pache服務(wù)器上存放WEB服務(wù)器的文件,供用戶訪問,并設(shè)置/home/ftp/pub目錄為文件存放區(qū)域,用http://download.your.com/pub/來訪問。在防火墻上設(shè)置apache反向代理技術(shù),由防火墻代理訪問!
(1)Apache服務(wù)器的設(shè)置
Apache服務(wù)器采用默認(rèn)配置。主目錄為/home/httpd/html,主機(jī)域名為Phoenix.your.com, 且別名到www.your.com中, 并且設(shè)置srm.conf加一行別名定義如下:
Alias /pub /home/ftp/pub/
更改默認(rèn)應(yīng)用程序類型定義如下:
DefaultType application/octet-stream
最后在/etc/httpd/conf/access.conf中增加一項(xiàng)定義
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
注:Options Indexes允許在找不到index.html文件的情況下允許列出目錄/文件列表。AllowOverride AuthConfig允許做基本的用戶名和口令驗(yàn)證。這樣的話,需要在/home/ftp/pub目錄下放入.htaccess,內(nèi)容如下:
[root@ pub]# more .htaccess
AuthName Branch Office Public Software Download Area
AuthType Basic
AuthUserFile /etc/.usrpasswd
require valid-user
用# htpasswd -c /etc/.usrpasswd user1 分別創(chuàng)建不同的允許訪問/pub下文件服務(wù)的外部用戶名和口令。
(2)在防火墻上配置反向代理技術(shù).
在/etc/httpd/conf/httpd.conf 中加入 NameVirtualHost xxx.xxx.xxx.xxx # xxx.xxx.xxx.xxx ----->是防火墻外部在互聯(lián)網(wǎng)上永久IP地址:
servername 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服務(wù)器的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服務(wù)器的IP地址。
設(shè)置防火墻上的DNS,讓download.your.com和www.your.com 都指向防火墻的外部網(wǎng)地址xxx.xxx.xxx.xxx。
用http://www.your.com訪問主頁,用http://download.your.com/pub/訪問公共文件的下載區(qū)。
注:還需要在apache服務(wù)器主機(jī)上建立目錄/var/log/httpd/download/,否則會(huì)出錯(cuò)。另外,也可以設(shè)置防火墻主機(jī)上的/home/httpd/html/index.html的屬性為750來阻止訪問,這是防外部用戶能訪問到防火墻上的Apache服務(wù)器的http://www.your.com中。
總結(jié):Apache Server是一個(gè)非常優(yōu)秀,非常棒的服務(wù)器,只要你正確配置和維護(hù)好Apache服務(wù)器,你就會(huì)感受到Apache Server 所帶來的好處,同樣希望你能夠通過閱讀本文達(dá)到理論和實(shí)踐雙豐收的目的。
驗(yàn)證你的Apache來源途徑
不要以為在Google上能夠搜索到合適的Apache版本。如果你需要下載最新版本的Apache,那么你最好通過一個(gè)權(quán)威的鏡像站點(diǎn)來下載。然而,即使這樣也可能有問題,事實(shí)上,曾經(jīng)就有黑客入侵過apache.org官方網(wǎng)站。所以,采用類似PGP的工具來驗(yàn)證Apache的數(shù)字簽名就顯得尤為重要。
保持更新Apache的補(bǔ)丁程序
如果你安裝了Apache,你就必須及時(shí)更新安全補(bǔ)丁。如果沒有及時(shí)的更新,那你的系統(tǒng)很容易受到網(wǎng)絡(luò)上那些高危病毒的攻擊。幸好,有幾個(gè)簡(jiǎn)便方法可以更新Apache的補(bǔ)丁。參考我們關(guān)于保持更新Apache補(bǔ)丁的文章了解更多關(guān)于Apache服務(wù)器公告列表、Linux包管理系統(tǒng)和RedHat操作系統(tǒng)更新服務(wù)的信息。
避免使用.htaccess文件(分布式配置文件)
很多情況下需要幾個(gè)管理員和內(nèi)容管理者共同管理Apache服務(wù)器。一個(gè)常用的共享管理辦法就是使用.htaccess文件,這樣可以很靈活地對(duì)管理員以外的用戶提供不同的配置控制權(quán)限。然而,這些文件也使得在集中安全管理之外還有相當(dāng)多的安全控制權(quán)限——這些文件允許安全專業(yè)人士以外的其他用戶改變服務(wù)器的訪問控制許可配置。那些對(duì)粒度訪問控制根本不熟悉的用戶修改的配置可能在無意中會(huì)危害到你的系統(tǒng)安全。所以,除非必須使用,否則我們應(yīng)該盡可能地避免使用這種訪問控制系統(tǒng)。
監(jiān)視系統(tǒng)日志
Apache為管理員提供了很全面的日志管理工具來對(duì)服務(wù)器的活動(dòng)進(jìn)行事后分析。Apache提供了多種不同的記錄日志,但是對(duì)安全專業(yè)人士最重要的是訪問日志。這個(gè)靈活的工具還具有了相當(dāng)多的自定義功能,你可以按照你的需要很方便地記錄盡可能多或者少的日志,以保證有效的分析。至少,你應(yīng)該記錄那些失敗的認(rèn)證企圖和系統(tǒng)產(chǎn)生的錯(cuò)誤。使用像AWStats一樣的免費(fèi)工具可以很輕松地完成分析任務(wù)。但是必須明確的一點(diǎn)是:監(jiān)視日志只是一種事后分析手段。你可以利用它回顧和判斷對(duì)服務(wù)器的攻擊(和攻擊企圖),但是希望及時(shí)查看日志來對(duì)緊急情況做出快速反應(yīng)是不可能的。如果需要進(jìn)行預(yù)判反應(yīng),你應(yīng)該考慮使用入侵預(yù)防系統(tǒng)如信息安全雜志評(píng)選的2003年度最新興技術(shù)獎(jiǎng)得主:Lucid Security公司的ipAngel系統(tǒng)。
管理文件系統(tǒng)
我們已經(jīng)討論了使用(或不使用).htaccess文件對(duì)管理文件訪問權(quán)限的重要性。禁止通過文件系統(tǒng)許可對(duì)Apache服務(wù)器進(jìn)行非授權(quán)修改也是很重要的。特別值得一提的是,你應(yīng)該保證只有根用戶才能修改存儲(chǔ)在“/usr/local/apache ”目錄的文件(或者你選擇的任何Apache服務(wù)器的根目錄)。確保只有根用戶才能修改日志文件也很關(guān)鍵,這樣可以防止用戶掩蓋他們的操作。
Apache 服務(wù)器日常配置
1、如何設(shè) 置請(qǐng)求等待時(shí)間
在httpd.conf里面設(shè)置:
TimeOut n
其中n為整數(shù),單位是秒。
設(shè)置這個(gè)TimeOut適用于三種情況:
2、如何接收一個(gè)get請(qǐng)求的總時(shí)間
接收一個(gè)post和put請(qǐng)求的TCP包之間的時(shí)間
TCP包傳輸中的響應(yīng)(ack)時(shí)間間隔
3、如何使得apache監(jiān)聽在特定的端口
修改httpd.conf里面關(guān)于Listen的選項(xiàng),例如:
Listen 8000
是使apache監(jiān)聽在8000端口
而如果要同時(shí)指定監(jiān)聽端口和監(jiān)聽地址,可以使用:
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
這樣就使得apache同時(shí)監(jiān)聽在192.170.2.1的80端口和192.170.2.5的8000端口。
當(dāng)然也可以在httpd.conf里面設(shè)置:
Port 80
這樣來實(shí)現(xiàn)類似的效果。
4、如何設(shè)置apache的最大空閑進(jìn)程數(shù)
修改httpd.conf,在里面設(shè)置:
MaxSpareServers n
其中n是一個(gè)整數(shù)。這樣當(dāng)空閑進(jìn)程超過n的時(shí)候,apache主進(jìn)程會(huì)殺掉多余的空閑進(jìn)程而保持空閑進(jìn)程在n,節(jié)省了系統(tǒng)資源。如果在一個(gè)apache非常繁忙的站點(diǎn)調(diào)節(jié)這個(gè)參數(shù)才是必要的,但是在任何時(shí)候把這個(gè)參數(shù)調(diào)到很大都不是一個(gè)好主意。
同時(shí)也可以設(shè)置:
MinSpareServers n
來限制最少空閑進(jìn)程數(shù)目來加快反應(yīng)速度。
5、apache如何設(shè)置啟動(dòng)時(shí)的子服務(wù)進(jìn)程個(gè)數(shù)
在httpd.conf里面設(shè)置:
StartServers 5
這樣啟動(dòng)apache后就有5個(gè)空閑子進(jìn)程等待接受請(qǐng)求。
也可以參考MinSpareServers和MaxSpareServers設(shè)置。
6、如何在apache中設(shè)置每個(gè)連接的最大請(qǐng)求數(shù)
在httpd.conf里面設(shè)置:
MaxKeepAliveRequests 100
這樣就能保證在一個(gè)連接中,如果同時(shí)請(qǐng)求數(shù)達(dá)到100就不再響應(yīng)這個(gè)連接的新請(qǐng)求,保證了系統(tǒng)資源不會(huì)被某個(gè)連接大量占用。但是在實(shí)際配置中要求盡量把這個(gè)數(shù)值調(diào)高來獲得較高的系統(tǒng)性能。
7、如何在apache中設(shè)置session的持續(xù)時(shí)間
在apache1.2以上的版本中,可以在httpd.conf里面設(shè)置:
KeepAlive on
KeepAliveTimeout 15
這樣就能限制每個(gè)session的保持時(shí)間是15秒。session的使用可以使得很多請(qǐng)求都可以通過同一個(gè)tcp連接來發(fā)送,節(jié)約了網(wǎng)絡(luò)資源和系統(tǒng)資源。
8、如何使得apache對(duì)客戶端進(jìn)行域名驗(yàn)證
可以在httpd.conf里面設(shè)置:
HostnameLookups on off double
如果是使用on,那么只有進(jìn)行一次反查,如果用double,那么進(jìn)行反查之后還要進(jìn)行一次正向解析,只有兩次的結(jié)果互相符合才行,而off就是不進(jìn)行域名驗(yàn)證。
如果為了安全,建議使用double;為了加快訪問速度,建議使用off。
9、如何使得apache只監(jiān)聽在特定的ip
修改httpd.conf,在里面使用
BindAddress 192.168.0.1
這樣就能使得apache只監(jiān)聽外界對(duì)192.168.0.1的http請(qǐng)求。如果使用:
BindAddress *
就表明apache監(jiān)聽所有網(wǎng)絡(luò)接口上的http請(qǐng)求。
當(dāng)然用防火墻也可以實(shí)現(xiàn)。
10、apache中如何限制http請(qǐng)求的消息主體的大小
在httpd.conf里面設(shè)置:
LimitRequestBody n
n是整數(shù),單位是byte。cgi腳本一般把表單里面內(nèi)容作為消息的主體提交給服務(wù)器處理,所以現(xiàn)在消息主體的大小在使用cgi的時(shí)候很有用。比如使用cgi來上傳文件,如果有設(shè)置:
LimitRequestBody 102400
那么上傳文件超過100k的時(shí)候就會(huì)報(bào)錯(cuò)。
11、如何修改apache的文檔根目錄
修改httpd.conf里面的DocumentRoot選項(xiàng)到指定的目錄,比如:
DocumentRoot /www/htdocs
這樣http://localhost/index.html就是對(duì)應(yīng)/www/htdocs/index.html
12、如何修改apache的最大連接數(shù)
在httpd.conf中設(shè)置:
MaxClients n
n是整數(shù),表示最大連接數(shù),取值范圍在1和256之間,如果要讓apache支持更多的連接數(shù),那么需要修改源碼中的httpd.h文件,把定義的HARD_SERVER_LIMIT值改大然后再編譯。
13、如何使每個(gè)用戶有獨(dú)立的cgi-bin目錄
有兩種可選擇的方法:
(1)在Apache配置文件里面關(guān)于public_html的設(shè)置后面加入下面的屬性:
ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2
(2)在Apache配置文件里面關(guān)于public_html的設(shè)置里面加入下面的屬性:
<CENTER><ccid_nobr>
<table width="400" border="1" cellspacing="0" cellpadding="2"
bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center">
<tr>
<td bgcolor="e6e6e6" class="code" style="font-size:9pt">
<pre><ccid_code>
Options ExecCGI
SetHandler cgi-script
14、如何調(diào)整Apache的最大進(jìn)程數(shù)
Apache允許為請(qǐng)求開的最大進(jìn)程數(shù)是256,MaxClients的限制是256.如果用戶多了,用戶就只能看到Waiting for reply....然后等到下一個(gè)可用進(jìn)程的出現(xiàn)。這個(gè)最大數(shù),是Apache的程序決定的--它的NT版可以有1024,但Unix版只有256,你可以在src/include/httpd.h中看到:
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#else
#define HARD_SERVER_LIMIT 256
#endif
#endif
你可以把它調(diào)到1024,然后再編譯你的系統(tǒng)。
15、如何屏蔽來自某個(gè)Internet地址的用戶訪問Apache服務(wù)器
可以使用deny和allow來限制訪問,比如要禁止202.202.202.xx網(wǎng)絡(luò)的用戶訪問:
order deny,allow
deny from 202.202.202.0/24 |
|