2009-12-13 3 views
8

Я продолжаю получать две следующие ошибки с моего сервера, я предположил, что они просто боты, ищущие потенциальные цели, но кто-нибудь знает конкретно, почему я их получаю? Я использую плагин SslRequirement, чтобы убедиться, что все обращения к странице входа/регистрации перенаправлены на SSL, поэтому все эти странные запросы https для root должны быть перенаправлены на обычный http.Я продолжаю получать QUIT и CONNECT HTTP-методы, отправленные на мой сервер, что они означают?


ActionController :: UnknownHttpMethod произошел в # индекс приложения: бросить курить, приняты методы HTTP являются GET, HEAD, PUT, POST, удалять и опции

/USR/местные/Библиотека/рубин/драгоценные камни/1.9.1/драгоценные камни/actionpack-2.3.4/Библиотека/action_controller/request.rb: 35: в `REQUEST_METHOD»

  • PATH_INFO:/
  • REMOTE_ADDR: 99.19.208.249
  • REMOTE_PORT: 6376
  • REQUEST_METHOD: CONNECT
  • REQUEST_URI:/
  • SERVER_PORT: 443
  • SERVER_PROTOCOL: HTTP/1.0
  • SERVER_SOFTWARE: Apache

ActionController :: UnknownHttpMethod произошел в индексе приложения #: CONNE CT, принятые HTTP-методы: get, head, put, post, delete и options

/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-2.3.4/lib/action_controller/request .rb: 35: в `REQUEST_METHOD»

  • HTTPS: на
  • HTTP_X_FORWARDED_PROTO: Https
  • PATH_INFO:/
  • REMOTE_ADDR: 91.209.196.76
  • REMOTE_PORT: 50751
  • REQUEST_METHOD: бросить
  • REQUEST_URI:/
  • SERVER_PORT: 443
  • SERVER_PROTOCOL: HTTP/0,9

ответ

13

Команда CONNECT используется прокси-серверами HTTP, чтобы указать, что клиент хочет просто подключить сокет непосредственно к другому серверу; это обычно используется для туннелирования TLS через HTTP-прокси, но может использоваться для туннелирования практически любого протокола.

QUIT не является командой HTTP, но это SMTP command.Возможно, вы получаете эти команды от бота, который пытается найти открытые реле для отправки спама; он пытается выяснить, есть ли у вас открытое SMTP-реле или открытый HTTP-прокси, который позволяет использовать команду CONNECT, которая также может использоваться для туннелирования SMTP-трафика.

Итак, вероятно, вас просто ударит спам-ботнет, пытаясь найти открытые реле. Моим советом было бы как можно раньше отказаться от таких просьб и не беспокоиться о них.

+1

Как мы можем прекратить эти запросы от попадания в наши приложения. мое приложение находится на slice в slicehost. – Anand

+1

@lakshmanan Я бы порекомендовал задать отдельный вопрос о том, как остановить эти запросы от попадания вашего приложения, с подробной информацией о том, какая у вас настройка (любые обратные прокси, веб-серверы, серверы приложений и т. Д.). Вы не предоставляете достаточно подробностей в своем комментарии для меня, чтобы помочь вам, и я, возможно, не знаком с элементами вашей установки; новый вопрос даст вам лучшие ответы. Не стесняйтесь ссылаться на этот вопрос в контексте того, почему вы хотели бы отказаться от этих соединений. –

0
# Avoid annoying ActionController::UnknownHttpMethod exceptions like: 
# 
# ActionController::UnknownHttpMethod) "CONNECT, accepted HTTP methods are get, head, put, post, delete, and options" 
# 
# Install this file in app/metal and these requests will receive a 405 
# "Method Not Allowed" status and will be logged under `info'. 
class IgnoreUnknownHttpMethod 
    def self.call(env) 
    [ 
    if ActionController::Request::HTTP_METHODS.include?(env["REQUEST_METHOD"].downcase) 
     404 # Not Found 
    else 
     Rails.logger.info("Ignoring unknown HTTP method; #{env.inspect}") 

     405 # Method Not Allowed 
    end, {"Content-Type" => "text/plain"}, []] 
    end 
end 

Кредит https://gist.github.com/remvee/600569

0

Я просто заметил несколько попыток подключиться к серверам, как следовать, мы видим, что она заканчивается с QUIT ...

198.20.87.98 - - [22/Dec/2015:21:43:42 -0800] "GET/HTTP/1.1" 444 5666 "-" "-" 
198.20.87.98 - - [22/Dec/2015:21:43:42 -0800] "GET /robots.txt HTTP/1.1" 444 5666 "-" "-" 
198.20.87.98 - - [22/Dec/2015:21:43:42 -0800] "GET /sitemap.xml HTTP/1.1" 444 5666 "-" "-" 
198.20.87.98 - - [22/Dec/2015:21:43:58 -0800] "quit" 405 5461 "-" "-" 
  • Как боковое примечание, мой сервер возвращает 444, который не является юридическим кодом HTTP. Это означает NO RESPONSE, и я это делаю, потому что их «Agent String» пуст.

Глядя на IP-адрес, я нашел поисковик, который ищет вещи в Интернете. Не хакер пытается взломать сам по себе. (Кажется, это не зло, похоже.) Я полагаю, что некоторые из приложений, которые они проверяют, должны понимать QUIT. Как робот, имеет смысл, что вы захотите попробовать то, что в противном случае было бы похоже на странные команды, такие как CONNNECT и QUIT. Не существует реального предела для команд, которые приложение может поддерживать, даже если эти команды не являются официальными командами HTTP.

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

Если ваше приложение получает эти методы, вы можете сначала написать что-то в начале, чтобы получить метод и сравнить с GET и POST (и все, что вы поддерживаете, например DELETE и PUT), и если оно не соответствует ни одному из них, затем ответьте с кодом ошибки 405: «Метод не разрешен».

http://tools.ietf.org/html/rfc7231#section-6.5.5

Если вы не можете изменить свое приложение и вы не уверены, сможет ли он реагировать на CONNECT/QUIT попадание, то вы можете посмотреть в использовании настройки, такие как mod_security для Apache2.

0

согласно jturkel по https://gist.github.com/remvee/600569. В Rails 3.2 для действий, отличных от http, я добавил следующее в конце config/application.rb и решил проблему для выхода.

# silence ActionController::UnknownHttpMethod exceptions 
ActionDispatch::ExceptionWrapper.rescue_responses.merge!('ActionController::UnknownHttpMethod' => :method_not_allowed)