Я наткнулся на следующую запись в моем журнале access.log:
58.218.199.147 - - [05/Jun/2012:12:56:04 +1000] "GET http://proxyproxys.com/ HTTP/1.1" 200 183 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
Обычно, когда я вижу полную запись URL-адреса в моем access.log, я предполагаю, что это спам в журнале с людьми, пытающимися заставить меня получить доступ к их сайту. За этими записями обычно следует ответ 404.
За приведенной выше записью следует ответ 200 "успех"! При поиске может показаться, что это может произойти, когда кто-то пытается использовать ваш сервер в качестве прокси. Это беспокоило меня больше, особенно потому, что в рассматриваемом URL есть слово прокси.
Переходя на сайт proxyproxys.com (используя hidemyass.com для защиты моей личности), сайт возвращает что-то вроде «доверенного лица».
----------------------------------------
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.8
HTTP_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.53 Safari/536.5
HTTP_CONNECTION=close
REMOTE_PORT=56355
REMOTE_HOST=74.63.112.142
REMOTE_ADDR=74.63.112.142
----------------------------------------
CS_ProxyJudge Result=HIGH_ANONYMITY
----------------------------------------
Вопрос: 1) означает ли успех 200, что кто-то смог успешно использовать мой сервер как прокси? 2) есть ли другие средства подтверждения того, что мой сервер используется в качестве прокси-сервера 3) можете ли вы направить меня к документации, чтобы помочь «закрыть» мою брешь в безопасности, если она есть.
Спасибо.
Простой способ проверить это - настроить ваш браузер на использование вашего веб-сервера в качестве прокси. Подойдет любой домен, который указывает туда, или необработанный IP-адрес. Выберите порт 80, если он запрашивает порт.
Если вы все еще можете просматривать веб-страницы и видите, что ваши просмотры отображаются в журналах доступа, то да, вы используете открытый прокси.
Это случилось и со мной, нашел кое-что интересное в документы для apache
Мой сервер правильно настроен не на прокси, так почему Apache возвращает код состояния 200 (Успех)?
Этот код состояния указывает, что Apache успешно отправил ответ клиенту, но не обязательно, что ответ был получен с иностранного веб-сайта.
В разделе 5.1.2 RFC2616 указано, что Apache должен принимать запросы с абсолютными URL-адресами в запросе-URI, даже для запросов без прокси. Это означает, что даже когда проксирование отключено, Apache будет принимать запросы, похожие на запросы прокси. Но вместо того, чтобы получать контент с чужого сайта, Apache будет обслуживать контент в соответствующем месте вашего сайта. Поскольку имя хоста, вероятно, не соответствует имени вашего сайта, Apache будет искать контент на вашем хосте по умолчанию.
В приведенном выше примере, поскольку www.yahoo.com явно не является допустимым виртуальным хостом в вашей системе, Apache будет обслуживать содержимое домашней страницы с вашего (виртуального) хоста по умолчанию. Размер ответа (1456 в приведенном выше примере) можно сравнить с размером соответствующей страницы на вашем сайте по умолчанию, чтобы убедиться, что ответ был отправлен локально и проксирование не использовалось.
Поскольку это, кажется, поведение, требуемое стандартом, я предполагаю, что nginx делает нечто подобное. В моем случае, поскольку он возвращает мою домашнюю страницу, я думаю, что он «успешно завершился неудачей», следовательно, код 200.
Успешный ответ 200 на запрос просто означает, что ваш веб-сервер считает, что он предоставил действительный ответ на данный запрос. Запись в журнале запросов, которую вы видите, означает, что кто-то установил HTTP-соединение с вашим сервером и запросил (относительный) URL-адрес. http://proxyproxys.com/
.
Это могло произойти, если кто-то неправильно набрал URL: например, если я просматриваю http://www.google.com/
и вдруг захочется пойти в http://www.facebook.com
, я могу забыть очистить строку URL-адреса в моем браузере и в конечном итоге перейти к http://www.google.com/http://www.facebook.com
. Тогда Google увидит GET
запрос http://www.facebook.com
в своих журналах. Обычно вы обслуживаете 404
ошибка в этих случаях, но в вашей конфигурации могут быть причуды, которые означают, что 200
вместо этого возвращается по какой-либо причине. Проще всего было бы проверить это самостоятельно на своем собственном сервере. Перейдите к http://[your-domain]/http://proxyproxys.com
и посмотрите, что создается в журнале доступа.
Держу пари, сложно заставить типичный веб-сервер, такой как nginx, вести себя как обычный интернет-прокси, если только вы специально не настроите сценарий или другое приложение для такого поведения. В вашем вопросе нет ничего, что заставило бы меня поверить, что это именно то, что произошло, но стоит следить за подозрительными сценариями / процессами / изменениями конфигурации. Если у вас есть разумные основания подозревать, что ваш сервер был взломан, отключите его, сотрите его и восстановите из резервной копии.