Назад | Перейти на главную страницу

Интерпретация 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 применил метод GET HTTP к /index.php (то есть http://mysite.org/index.php) получение кода статуса 404 с использованием Opera в качестве клиента / браузера. Чего я не понимаю, так это таких записей:

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 и получил код состояния HTTP 200 (?). Для меня это не имеет смысла ... единственная интерпретация, о которой я могу думать, - это то, что мой сервер 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: //a.b (!). Так что мой сервер на самом деле не работает как прокси, поскольку он не пересылает запросы ... Но я думаю, что было бы лучше, если бы я мог каким-то образом настроить его для возврата код состояния 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 / мар / 2011: 14: 40: 40 +0200] «ПОЛУЧИТЬ 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 / Мар / 2011: 14: 58: 47 +0200] "telnet 64.12.244.203 80" 400 505 "-" "-"

Ваш сервер - это открытый прокси, что является проблемой безопасности. Спамеры могут отправлять почту через ваш сервер. Другие могут посмотреть дочерний pr0n с вашего сервера. Исправьте это как можно скорее.

+ Изменить

ProxyRequests Off

в конфигурации прокси, чтобы исправить это.

Не думаю, что ваш апач - это открытый прокси.

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"

Может быть кто-то, кто отправляет HTTP-запрос на ваш сервер apache, используя www.siasatema.com в качестве имени хоста в запросе. В этом случае сервер apache будет служить страницей по умолчанию (первый виртуальный хост). Вы можете настроить 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 "-" "-"

Это неудачные запросы, которые apache отклонил.

Я считаю, что все очень просто: кто-то приходит к вашему серверу с правильным IP-адресом, но не с тем именем, которое вы ожидаете, и получает первую страницу. Это может быть создано, например, с помощью следующего:

Пользователь широкополосного доступа добавляет в свой файл хостов (/ etc / hosts или / windows / system32 / drivers / etc / hosts) запись

aa.bb.cc.dd rubbishrubbishrubbish.com

где aa.bb.cc.dd - ваш IP-адрес, а после этого использует любой браузер для доступа http://rubbishrubbishrubbish.com

В файле журнала вы увидите доступ и «ПОЛУЧИТЬ» для / для rubbishrubbishrubbish.com. Типичные установки apache не заинтересованы в части имени хоста URL-адреса, а только в остальной части, таким образом возвращая вашу домашнюю страницу.

Также обратите внимание, что к вашему серверу, конечно, можно получить доступ, используя его IP-адрес или полное доменное имя, или возможные псевдонимы, которые (если это не указано явно) не обязательно должны быть известны серверу apache. Мой домашний веб-сервер может быть доступен с несколькими именами через ipv4 и ipv6, но сам мой сервер не знает ни одного из этих доменных имен.

Остается вопрос: почему? Думаю, ответ таков: проверить, действуете ли вы как прокси. А ты нет. Сообщается, что Python-urllib / 2.4 также является BOT (но не всегда).