近期Apache又發生了漏洞危機,可藉由Dos攻擊阻斷服務,輕鬆地讓Apache停止服務,若是採用Apache架站的朋友得特別留意囉!或是你承租的虛擬主機是使用Apache的話,也記得自己補強一下,或是通知虛擬主機廠商要求改善。
線上檢測
檢測網址:http://apache-range-exploit.com/首先我們可以透過以上網址進行檢測,將自己的網址填入Find的右側欄位,之後點選下方的Submit按鈕開始檢測。

若是有風險Vulnerable的欄位則會顯示
紅色的YES,若是沒有的話也可以再透過以下的php程式自行檢測一下。
php檢測
[code]function check_for_exploit($host,$port=80,$timeout=10){
$range = '0-1';
for($i=0;$i<20;$i++){
$range .= ",5-$i";
}$error_code = null;
$error = null;$socket = fsockopen($host,$port,$error_code,$error,$timeout);
$packet = "HEAD / HTTP/1.1\r\nHost: $host\r\nRange:bytes=$range\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
fwrite($socket,$packet);
$result = fread($socket,2048);
//check to see if "Partial" is in the response
if(strstr($result,"Partial") !== false){
return true;
}
return false;
}[/code]
簡易處理方法
- 利用mod_rewrite模組修復,在網站的.htaccess檔案內加入
[code]RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$^$)
RewriteRule .* - [F][/code] - 利用setenvif_module模組修復,在網站的.htaccess檔案內加入
[code]SetEnvIf Range (,.*?){5,} bad-range=1
RequestHeader unset Range env=bad-range
# optional logging, uncomment and set path to log matches
# CustomLog /var/log/range-CVE-2011-3192.log common env=bad-range[/code] - 利用headers_module模組修復,在網站的.htaccess檔案內加入
[code]RequestHeader unset Range[/code]
前兩種方式是比較推薦的解決方式,也可以加入
httpd.conf的全域設定,若是apache不能升級到最新版本,就用以上的方式暫時防禦一下囉!