2009-12-13 27 views
8

मैं अपने सर्वर से दो निम्न त्रुटियों को प्राप्त करता रहता हूं, मुझे लगता है कि वे संभावित लक्ष्यों की तलाश में बस बॉट थे, लेकिन क्या कोई विशेष रूप से जानता है कि मुझे ये क्यों मिल रहा है? मैं यह सुनिश्चित करने के लिए एसएसएलआरक्वेंसी प्लगइन का उपयोग कर रहा हूं कि लॉगिन/साइनअप पेज पर सभी हिट एसएसएल पर रीडायरेक्ट की गई हैं, इसलिए इन सभी अजीब https अनुरोधों को रूट करने के लिए नियमित रूप से नियमित http पर रीडायरेक्ट किया जाना चाहिए।मैं अपने सर्वर पर भेजे गए QUIT और कनेक्ट HTTP विधियों को प्राप्त करता रहता हूं, उनका क्या अर्थ है?


एक ActionController :: UnknownHttpMethod आवेदन # सूचकांक में आई: , छोड़ने को स्वीकार कर लिया HTTP विधियों, मिल सिर, डाल, पोस्ट, को नष्ट कर रहे हैं, और विकल्पों

/usr/स्थानीय/lib/गहरे लाल रंग का/रत्न/1.9.1/रत्न/actionpack-2.3.4/lib/action_controller/request.rb: 35:/

  • REMOTE_ADDR: 99.19.208.249
  • `request_method '

    • PATH_INFO में 63,210
    • REMOTE_PORT: 6376
    • REQUEST_METHOD: कनेक्ट
    • REQUEST_URI:/
    • SERVER_PORT: 443
    • SERVER_PROTOCOL: एचटीटीपी/1.0
    • SERVER_SOFTWARE: अपाचे

    एक ActionController :: अज्ञात HttpMethod अनुप्रयोग # सूचकांक में हुआ: CONNE सीटी, स्वीकृत HTTP विधियां प्राप्त होती हैं, सिर, डाल, पोस्ट, डिलीट, और विकल्प

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

  • HTTP_X_FORWARDED_PROTO पर: `request_method '

    • hTTPS में https
    • PATH_INFO:/
    • REMOTE_ADDR: 91.209.196.76
    • REMOTE_PORT: 50,751
    • 0,123,
    • REQUEST_METHOD: छोड़ने
    • REQUEST_URI:/
    • SERVER_PORT: 443
    • SERVER_PROTOCOL: एचटीटीपी/0,9
  • उत्तर

    13

    CONNECT कमांड HTTP प्रॉक्सी सर्वर द्वारा उपयोग किया जाता है यह इंगित करने के लिए कि क्लाइंट सीधे सॉकेट को किसी अन्य सर्वर से कनेक्ट करना चाहता है; यह आमतौर पर एक HTTP प्रॉक्सी पर टीएलएस सुरंग के लिए प्रयोग किया जाता है, लेकिन लगभग किसी भी प्रोटोकॉल सुरंग के लिए इस्तेमाल किया जा सकता है।

    QUIT एक HTTP कमांड नहीं है, लेकिन यह SMTP command है।यह संभव है कि आप इन आदेशों को एक बॉट से प्राप्त कर रहे हैं जो स्पैम भेजने के लिए खुले रिले खोजने की कोशिश कर रहा है; यह पता लगाने की कोशिश कर रहा है कि क्या आपके पास एक खुला एसएमटीपी रिले है, या एक खुली HTTP प्रॉक्सी है जो CONNECT कमांड को अनुमति देती है जिसका उपयोग एसएमटीपी यातायात को सुरंग करने के लिए भी किया जा सकता है।

    तो, संभवतः आप केवल स्पैम बोनेट द्वारा खुले रिले खोजने की कोशिश कर रहे हैं। मेरी सलाह जल्द से जल्द ऐसे अनुरोधों को छोड़ना होगा, और उनके बारे में चिंता न करें।

    +1

    हमें उन अनुरोधों को हमारे ऐप्स को मारने से कैसे रोकना चाहिए। मेरा ऐप स्लाइसहोस्ट में एक टुकड़ा पर है। – Anand

    +1

    @ लक्ष्मण मैं आपके अनुरोध को रोकने के तरीके के बारे में एक अलग प्रश्न पूछने की सलाह दूंगा, जिसमें आपके पास किस तरह के सेटअप (किसी भी रिवर्स प्रॉक्सी, वेब सर्वर, ऐप सर्वर इत्यादि) के विवरण हैं। आप मेरी मदद करने के लिए मेरी टिप्पणी में पर्याप्त जानकारी प्रदान नहीं करते हैं, और मैं आपके सेटअप के तत्वों से परिचित नहीं हो सकता; एक नया सवाल आपको बेहतर जवाब देगा। इस सवाल से लिंक करने के लिए स्वतंत्र महसूस करें कि आप इन कनेक्शन को क्यों छोड़ना चाहते हैं। –

    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 कोड नहीं है। इसका मतलब कोई जवाब नहीं है और मैं ऐसा इसलिए करता हूं क्योंकि उनके "एजेंट स्ट्रिंग" खाली है।

    आईपी पते को देखते हुए, मैं एक खोज इंजन है कि इंटरनेट पर बातें के लिए खोज करता पाया। एक हैकर प्रति सेकंड तोड़ने की कोशिश नहीं कर रहा है। (वहां इरादा बुरा नहीं है, ऐसा लगता है।) मुझे लगता है कि जिन अनुप्रयोगों की वे जांच कर रहे हैं उन्हें QUIT को समझना चाहिए। तो एक रोबोट के रूप में, यह समझ में आता है कि आप कोशिश करना चाहते हैं कि अन्यथा अजीब कमांड जैसे CONNNECT और QUIT जैसा दिखता है। किसी आदेश का समर्थन करने वाले आदेशों की कोई वास्तविक सीमा नहीं है, भले ही वे आदेश आधिकारिक HTTP आदेश नहीं हैं।

    यदि आपका आवेदन इन विधियों को समझ में नहीं आता है, तो कुछ भी नहीं होगा इसलिए आपको इनके बारे में बहुत परेशान नहीं होना चाहिए।

    यदि आपका आवेदन उन विधियों को प्राप्त करता है, तो आप विधि प्राप्त करने और जीईटी और पोस्ट (और जो कुछ भी आप समर्थन करते हैं, जैसे डेले और पुट) की तुलना करने के लिए शुरुआत में थोड़ा सा लिखना चाहते हैं और यदि यह किसी से मेल नहीं खाता है इनमें से, 405 त्रुटि कोड के साथ उत्तर दें: "विधि अनुमत नहीं है"।

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

    आप अपने आवेदन को नहीं बदल सकते हैं और आप यकीन नहीं है कि यह एक कनेक्ट/QUIT हिट करने के लिए प्रतिक्रिया कर सकता है नहीं कर रहे हैं, तो आप इस तरह के Apache2 के लिए mod_security के रूप में एक सेटअप का उपयोग करने पर विचार कर सकता है।

    0

    https://gist.github.com/remvee/600569 पर jturkel के अनुसार। गैर http कार्यों के लिए रेल 3.2 में मैंने कॉन्फ़िगर/application.rb के अंत में निम्नलिखित जोड़ा और छोड़ने के लिए समस्या हल की।

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