2009-12-13 14 views
8

Tôi tiếp tục nhận được hai lỗi sau đây từ máy chủ của mình, tôi cho rằng họ chỉ là những bot tìm kiếm các mục tiêu tiềm năng, nhưng có ai biết cụ thể tại sao tôi nhận được những lỗi này không? Tôi đang sử dụng plugin SslRequirement để đảm bảo tất cả các lần truy cập vào trang đăng nhập/đăng ký được chuyển hướng đến SSL, vì vậy tất cả các yêu cầu https lạ này sẽ chỉ được chuyển hướng đến http thông thường.Tôi tiếp tục nhận được QUIT và CONNECT phương thức HTTP được gửi đến máy chủ của tôi, chúng có ý nghĩa gì?


Một ActionController :: UnknownHttpMethod xảy ra trong ứng dụng # index: bỏ, chấp nhận phương thức HTTP là có được, người đứng đầu, đặt, đăng, xóa, và các tùy chọn

/usr/local/lib/ruby ​​/ đá quý/1.9.1/đá quý/actionpack-2.3.4/lib/action_controller/request.rb: 35: trong `REQUEST_METHOD'

  • PATH_INFO:/
  • REMOTE_ADDR: 99.19.208.249
  • .210
  • REMOTE_PORT: 6376
  • REQUEST_METHOD: CONNECT
  • REQUEST_URI:/
  • SERVER_PORT: 443
  • SERVER_PROTOCOL: HTTP/1.0
  • chủ server_software: Apache

Một ActionController :: UnknownHttpMethod đã xảy ra trong ứng dụng # index: CONNE CT, các phương thức HTTP được chấp nhận nhận, đầu, đặt, đăng, xóa và tùy chọn

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

  • HTTPS: trên
  • HTTP_X_FORWARDED_PROTO: https
  • PATH_INFO:/
  • REMOTE_ADDR: 91.209.196.76
  • REMOTE_PORT: 50.751
  • 0.123.
  • REQUEST_METHOD: quit
  • REQUEST_URI:/
  • SERVER_PORT: 443
  • SERVER_PROTOCOL: HTTP/0,9

Trả lời

13

Lệnh CONNECT được sử dụng bởi máy chủ proxy HTTP để cho biết rằng khách hàng muốn chỉ kết nối ổ cắm trực tiếp với máy chủ khác; điều này thường được sử dụng để tạo đường hầm TLS qua proxy HTTP, nhưng có thể được sử dụng để tạo đường hầm hầu như bất kỳ giao thức nào.

QUIT không phải là lệnh HTTP, nhưng nó là một SMTP command.Có thể bạn đang nhận được các lệnh này từ một bot đang cố gắng tìm các rơle mở để gửi thư rác; nó đang cố gắng tìm ra nếu bạn có một relay SMTP mở, hoặc một proxy HTTP mở cho phép lệnh CONNECT cũng có thể được sử dụng để truyền lưu lượng SMTP.

Vì vậy, có khả năng bạn đang bị một botnet spam tấn công tìm các rơle mở. Lời khuyên của tôi là từ bỏ những yêu cầu đó càng sớm càng tốt, và đừng lo lắng về chúng.

+1

Làm cách nào để chúng tôi dừng các yêu cầu đó khỏi ứng dụng của chúng tôi. ứng dụng của tôi là một lát trong slicehost. – Anand

+1

@ lakshmanan Tôi khuyên bạn nên hỏi một câu hỏi riêng về cách dừng các yêu cầu này khỏi ứng dụng của bạn, với chi tiết về loại thiết lập bạn có (bất kỳ proxy ngược, máy chủ web, máy chủ ứng dụng, v.v ...). Bạn không cung cấp đủ chi tiết trong nhận xét của mình để tôi giúp bạn và tôi có thể không quen thuộc với các yếu tố thiết lập của bạn; một câu hỏi mới sẽ giúp bạn có được câu trả lời tốt hơn. Vui lòng liên kết với câu hỏi này để biết ngữ cảnh tại sao bạn muốn bỏ các kết nối này. –

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 

Credit https://gist.github.com/remvee/600569

0

Tôi chỉ nhận thấy một vài nỗ lực để kết nối với máy chủ của tôi như sau, chúng tôi thấy rằng nó kết thúc bằng một 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 "-" "-" 
  • Là một lưu ý phụ, máy chủ của tôi trả về 444 mà không phải là mã HTTP hợp pháp. Nó có nghĩa là KHÔNG CÓ RESPONSE và tôi làm điều đó bởi vì "Chuỗi tác nhân" của bạn trống.

Nhìn vào địa chỉ IP, tôi tìm thấy một công cụ tìm kiếm tìm kiếm điều trên internet. Không phải là một hacker cố gắng đột nhập. (Có ý định không phải là ác, có vẻ như.) Tôi cho rằng một số ứng dụng mà họ đang kiểm tra phải hiểu QUIT. Vì vậy, với tư cách là rô bốt, bạn nên thử những gì sẽ trông giống như các lệnh lạ như CONNNECT và QUIT. Không có giới hạn thực sự đối với các lệnh mà một ứng dụng có thể hỗ trợ, ngay cả khi các lệnh đó không phải là các lệnh HTTP chính thức.

Nếu ứng dụng của bạn không hiểu những phương pháp này, thì không có gì sẽ xảy ra, do đó bạn không nên bận tâm quá nhiều về những phương pháp này.

Nếu ứng dụng của bạn nhận được các phương pháp đó, bạn có thể muốn viết một chút gì đó khi bắt đầu để lấy phương thức và so sánh với GET và POST (và bất kỳ thứ gì bạn hỗ trợ, như DELETE và PUT) và nếu nó không khớp trong số này, sau đó trả lời bằng mã lỗi 405: "Phương thức không được phép".

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

Nếu bạn không thể thay đổi ứng dụng của bạn và bạn không chắc chắn liệu nó có thể phản ứng với một CONNECT/QUIT hit, sau đó bạn có thể nhìn vào cách sử dụng một thiết lập như mod_security cho Apache2.

0

theo jturkel tại https://gist.github.com/remvee/600569. Trong Rails 3.2 cho các hành động không phải http tôi đã thêm phần sau vào cuối config/application.rb và giải quyết vấn đề cho việc thoát.

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