Apache access.log 解讀
在 apache (access.log) 的日誌文件中,我找到如下日誌條目:
10.20.30.40 - - [18/Mar/2011:02:12:44 +0200] "GET /index.php HTTP/1.1" 404 505 "-" "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.7.62 Version/11.01"
含義很明確:IP為10.20.30.40的客戶端在/index.php(即http://mysite.org/index.php)上應用GET HTTP方法,使用Opera作為客戶端/瀏覽器接收狀態碼404 . 我不明白的是以下條目:
174.34.231.19 - - [18/Mar/2011:02:24:56 +0200] "GET http://www.siasatema.com HTTP/1.1" 200 469 "-" "Python-urllib/2.4"
所以在這裡我看到有人(IP 為 174.34.231.19 的客戶端)訪問了http://www.siasatema.com並獲得了 200 HTTP 狀態碼(?)。這對我來說沒有意義……我能想到的唯一解釋是我的 apache 伺服器就像代理一樣!以下是一些沒有將我的網站作為目標的其他請求…
187.35.50.61 - - [18/Mar/2011:01:28:20 +0200] "POST http://72.26.198.222:80/log/normal/ HTTP/1.0" 404 491 "-" "Octoshape-sua/1010120" 87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "CONNECT 64.12.244.203:80 HTTP/1.0" 405 556 "-" "-" 87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "open 64.12.244.203 80" 400 506 "-" "-" 87.117.203.177 - - [18/Mar/2011:01:30:04 +0200] "telnet 64.12.244.203 80" 400 506 "-" "-" 87.117.203.177 - - [18/Mar/2011:01:30:09 +0200] "64.12.244.203 80" 400 301 "-" "-"
我相信所有這些都與某種對伺服器的攻擊或濫用有關。有人可以解釋一下發生了什麼以及如何應對這種情況嗎?
更新1:
我禁用
mod_proxy
以確保我沒有開放代理:# a2dismod proxy
我從哪裡得到消息:
Module proxy already disabled
proxy.conf
我確保 .下沒有文件$APACHE/mods-enabled
。最後,我在瀏覽器(Mozzila)上將我的 IP 設置為代理並嘗試訪問http://google.com
. 我沒有被重定向到 google.com,而是出現了我的網頁。嘗試訪問http://ab (!) 時也會發生同樣的情況。所以我的伺服器並不能真正作為代理工作,因為它不轉發請求……但我認為如果我能以某種方式將它配置為返回狀態程式碼 403會更好。這是我的apache配置文件:
<VirtualHost *:80> ServerName mysite.org ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
更新 2:
使用塊,我限制使用除 GET 和 POST 之外的其他方法…
<Limit POST PUT CONNECT HEAD OPTIONS DELETE PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Order deny,allow Deny from all </Limit> <LimitExcept GET> Order deny,allow Deny from all </LimitExcept>
現在禁止 GET 以外的方法 (403)。我現在唯一的問題是是否有一些技巧可以引導那些如何嘗試將我的伺服器用作代理…
好的,我可以使用以下 python 程式碼獲取確切的日誌消息
import urllib proxies = {'http':'http://myapacheserevr'} file_handle = urllib.urlopen('http://www.siasatema.com',proxies=proxies)
這給了我日誌條目
192.168.0.28 - -
$$ 18/Mar/2011:14:40:40 +0200 $$“GET http://www.siasatema.com HTTP/1.0” 200 453 “-” “Python-urllib/1.17” 順便說一句,我從中得到的只是我預設網頁的內容,
所以,是的,有些東西正在通過您的網路伺服器進行代理,這可能是黑客在尋找開放的、配置錯誤的代理來連接和濫用另一個站點。停止它設置: -
ProxyRequests Off
順便說一句,我可以通過這樣做來複製另一個
$ nc ubuntuvm 80 telnet 64.12.244.203 80
給出:- 192.168.0.28 - -
$$ 18/Mar/2011:14:58:47 +0200 $$“遠端登錄 64.12.244.203 80”400 505“-”“-”