apache 我不断收到QUIT和CONNECT HTTP方法发送到我的服务器,它们是什么意思?

w8ntj3qf  于 2023-08-07  发布在  Apache
关注(0)|答案(5)|浏览(125)

我一直从我的服务器得到以下两个错误,我以为他们只是寻找潜在目标的机器人,但有人知道为什么我得到这些?我正在使用SslRequirement插件来确保登录/注册页面的所有点击都被重定向到SSL,所以所有这些奇怪的https请求都应该被重定向到常规http。
应用程序#index中出现ActionController::UnknownHttpMethod:退出,接受的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:in `request_method'

  • PATH_INFO:/
  • REMOTE_ADDR:99.19.208.249
  • 远程端口:6376
  • 请求方法:连接
  • REQUEST_URI:/
  • 服务器端口:443
  • SERVER_PROTOCOL:简体中文
  • 服务器_软件:Apache

应用程序#index中出现ActionController::UnknownHttpMethod:CONNECT中,接受的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:in `request_method'

  • HTTPS:打开
  • HTTP_X_FORWARDED_PROTO:https
  • PATH_INFO:/
  • REMOTE_ADDR:91.209.196.76
  • 远程端口:50751
  • 请求方法:退出
  • REQUEST_URI:/
  • 服务器端口:443
  • SERVER_PROTOCOL:HTTP/0.9
nnsrf1az

nnsrf1az1#

HTTP代理服务器使用CONNECT命令来指示客户端只想将套接字直接连接到另一个服务器;这通常用于在HTTP代理上隧道传输TLS,但是可以用于隧道传输几乎任何协议。
QUIT不是HTTP命令,但它是SMTP命令。有可能你是从一个试图寻找发送垃圾邮件的开放中继的机器人那里得到这些命令的;它试图找出你是否有一个开放的SMTP中继,或一个开放的HTTP代理,允许连接命令,也可以用来隧道SMTP流量。
所以,很可能你只是被一个试图找到开放中继的垃圾邮件僵尸网络击中。我的建议是尽早放弃这样的请求,不要担心。

6ojccjat

6ojccjat2#

联系方式:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.9
QUIT通常意味着“关闭连接”。

9vw9lbht

9vw9lbht3#

# 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

3yhwsihp

3yhwsihp4#

我只是注意到一些尝试连接到我的服务器如下,我们看到它以退出结束.

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代码。这意味着没有响应,我这样做是因为他们的**“代理字符串”**是空的。

看着IP地址,我发现了一个搜索引擎,在互联网上搜索 * 的东西 。而不是黑客试图闯入。 (有意图不是邪恶的,它似乎。)* 我想,他们正在检查的一些应用程序必须理解退出。因此,作为一个机器人,你想尝试一些看起来很奇怪的命令是有道理的,比如CONNECT和QUIT。应用程序可以支持的命令没有真实的限制,即使这些命令不是官方的HTTP命令。
如果您的应用程序不理解这些方法,那么什么也不会发生,所以您不应该太在意这些。
如果你的应用程序接收到这些方法,那么你可能想在开始时写一些东西来获取方法并与GET和POST(以及你支持的任何其他方法,如DELETE和PUT)进行比较,如果它不匹配这些方法,那么用405错误代码回复:“不允许使用方法”。
https://www.rfc-editor.org/rfc/rfc7231#section-6.5.5
如果你不能改变你的应用程序,并且你不确定它是否能对CONNECT / QUIT命中做出React,那么你可以考虑使用一个设置,比如Apache 2的mod_security。

ctrmrzij

ctrmrzij5#

根据jturkel在https://gist.github.com/remvee/600569。在Rails3.2的非http操作中,我在config/application.rb的末尾添加了以下内容,解决了quit的问题。

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

字符串

相关问题