2009-12-13 23 views
8

Sigo recibiendo los dos errores siguientes de mi servidor, asumí que solo eran robots buscando posibles objetivos, pero ¿alguien sabe específicamente por qué los estoy obteniendo? Estoy usando el complemento SslRequirement para asegurarme de que todas las visitas a la página de inicio de sesión/registro se redireccionen a SSL, por lo que todas estas peticiones de https raras al directorio raíz deberían ser redireccionadas a http.Sigo recibiendo métodos QUIT y CONNECT HTTP enviados a mi servidor, ¿qué significan?


Un ActionController :: UnknownHttpMethod ocurrió en la aplicación índice #: dejar de fumar, los métodos aceptados son HTTP GET, HEAD, puesto, después, eliminar y opciones

/usr/local/lib/ruby ​​/ gemas/1.9.1/gemas/actionpack-2.3.4/lib/action_controller/request.rb: 35: en `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

A ActionController :: UnknownHttpMétodo se produjo en el índice de la aplicación: CONNE CT, los métodos HTTP aceptados son get, head, put, post, delete y options

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

  • HTTPS: en
  • HTTP_X_FORWARDED_PROTO: https
  • PATH_INFO:/
  • REMOTE_ADDR: 91.209.196.76
  • REMOTE_PORT: 50751
  • REQUEST_METHOD: dejar de fumar
  • REQUEST_URI:/
  • SERVER_PORT: 443
  • SERVER_PROTOCOL: HTTP/0,9

Respuesta

13

El comando CONNECT es utilizado por los servidores proxy HTTP para indicar que el cliente solo desea conectar un socket directamente a otro servidor; esto se usa generalmente para tunelizar TLS sobre un proxy HTTP, pero podría usarse para tunelizar casi cualquier protocolo.

QUIT no es un comando HTTP, pero es un SMTP command.Es posible que reciba estos comandos de un bot que está tratando de encontrar retransmisiones abiertas para enviar spam; está tratando de averiguar si tiene un retransmisor SMTP abierto, o un proxy HTTP abierto que permite el comando CONNECT que también podría usarse para tunelizar el tráfico SMTP.

Por lo tanto, es probable que solo esté siendo golpeado por una red de bots de spam que intenta encontrar retransmisiones abiertas. Mi consejo sería dejar esas solicitudes lo antes posible y no preocuparse por ellas.

+1

¿Cómo podemos evitar que esas solicitudes lleguen a nuestras aplicaciones? mi aplicación está en un sector en slicehost. – Anand

+1

@lakshmanan Te recomendaría hacer una pregunta por separado sobre cómo evitar que estas solicitudes lleguen a tu aplicación, con detalles sobre qué tipo de configuración tienes (cualquier proxy inverso, servidores web, servidores de aplicaciones, etc.). Usted no proporciona suficientes detalles en su comentario para que lo ayude, y es posible que no esté familiarizado con los elementos de su configuración; una nueva pregunta te dará mejores respuestas. No dudes en vincular esta pregunta con el contexto del motivo por el que te gustaría soltar estas conexiones. –

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 

crédito https://gist.github.com/remvee/600569

0

simplemente me di cuenta de unos cuantos intento de conectar con mis servidores de la siguiente manera, vemos que termina con un 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 "-" "-" 
  • Como nota al margen, mi servidor devuelve 444 que no es un código HTTP legal. Significa NO RESPONDE y lo hago porque su "Cadena de agente" está vacía.

En cuanto a la dirección IP, me encontré con un motor de búsqueda que busca cosas en el Internet. No es un hacker tratando de entrar per se. (Parece que no hay maldad). Supongo que algunas de las aplicaciones que están comprobando deben comprender el QUIT. Entonces, como robot, tiene sentido que quieras probar lo que de otra manera parecería comandos extraños como CONNNECT y QUIT. No existe un límite real para los comandos que una aplicación puede admitir, incluso si esos comandos no son comandos HTTP oficiales.

Si su aplicación no comprende estos métodos, entonces no pasará nada, por lo que no debe preocuparse demasiado por ellos.

Si su aplicación recibe esos métodos, entonces puede escribir algo al principio para obtener el método y compararlo con GET y POST (y cualquier otra cosa que apoye, como DELETE y PUT) y si no coincide con ninguno de estos, luego responda con un código de error 405: "Método no permitido".

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

Si no puede cambiar su aplicación y no está seguro de si podría reaccionar a un CONNECT/QUIT éxito, entonces usted podría ver en el uso de una configuración como mod_security para Apache 2.

0

según jturkel en https://gist.github.com/remvee/600569. En Rails 3.2 para acciones sin http, agregué lo siguiente al final de config/application.rb y resolví el problema para salir.

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