मैं अपने सर्वर पर सभी साइटों से एक उपयोगकर्ता एजेंट को कैसे ब्लॉक कर सकता हूं?


9

मैंने इसे मूल रूप से webmasters.stackexchange.com पर पोस्ट किया था, लेकिन मुझे बताया गया था कि मुझे यहां बेहतर स्वागत मिलेगा।


पिछले कुछ दिनों से, मैं इस बात से पीड़ित हूँ कि प्रतीत होता है कि (संभवतः अनजाने में) डीडीओएस हमला हुआ है। मुझे "मोज़िला / 4.0 (संगत; आईसीएस)" के रूप में पहचान करने वाले एक एजेंट से इतने सारे अनुरोध मिल रहे हैं कि अपाचे सभी उपलब्ध मेमोरी के माध्यम से खाता है।

नतीजतन, मैं इस उपयोगकर्ता एजेंट के साथ सभी अनुरोधों को रोकना चाहता हूं, इसलिए मैंने httpd.conf में ऐसा करने की कोशिश की:

SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user

लेकिन जब मैं अपाचे को पुनरारंभ करता हूं तो यह denyयहां उपयोग करने के बारे में शिकायत करता है। इसे एक locationया directoryब्लॉक में लपेटने के बिना , जिसका मतलब होगा कि मुझे प्रत्येक साइट के लिए एक नया ब्लॉक जोड़ना होगा, क्या कोई ऐसा तरीका है जिससे मैं पूरे सर्वर तक पहुंच से इनकार कर सकता हूं?


अद्यतन: त्रुटि मुझे मिलती है

  • /Etc/apache2/httpd.conf की
    पंक्ति 4 पर वेब सर्वर Apache2 सिंटैक्स त्रुटि को पुनरारंभ करना : यहाँ अनुमति न दें [विफल]

जवाबों:


7

अब एक पुराने प्रश्न की तरह लग रहा है, लेकिन मैं ऐसा ही करना चाहता था और ऊपर तंत्रिका से इसका जवाब मिला। यह बिल्कुल सही नहीं है जैसा कि - मुझे लगता है कि यह होना चाहिए <Location "/">, और SetEnvIfएक नियमित अभिव्यक्ति की आवश्यकता है ताकि कोष्ठक को उद्धृत करने की आवश्यकता हो।

इसने मेरे लिए सभी vhosts में अभिगम नियंत्रण लागू करने के लिए काम किया:

SetEnvIfNoCase User-Agent "^Mozilla/4.0 \(compatible; Synapse\)" bad_ua
<Location "/">
    Deny from env=bad_ua
</Location>

बस शामिल है कि vhost परिभाषाओं से पहले।


(Apache 2.4 में समतुल्य के लिए) जब तक आप <Location>इसमें कोई अन्य प्राधिकरण प्रतिबंध नहीं लगाते हैं <Directory>, तब तक इसका उपयोग करने में सावधानी बरतें AuthMerging And। के बारे में सुरक्षा चेतावनी देखें Requireअपाचे डॉक्स में: httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
सेड्रिक नाइट

4

mod_rewrite को डॉक्स के अनुसार सर्वर स्तर पर कॉन्फ़िगर किया जा सकता है:

RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.0 \(compatible; ICS\)" [nocase]
RewriteRule ^.*$ - [forbidden,last]

में regex से बचने के लिए मत भूलना RewriteCond


1
सावधानी: कॉपी किए जाने पर डैश वास्तविक डैश नहीं है। मैंने संपादन की कोशिश की, लेकिन SF यह शिकायत करेगा कि मेरा संपादन बहुत छोटा है। वैसे भी धन्यवाद, एक इलाज काम करता है!
थिबुत बर्रे

@ ThibautBarrère तुम सच में करने की आवश्यकता है, आप कर सकते हैं एक अदृश्य जोड़कर छोटे संपादित सीमा बाईपास <!-- -->को संपादित करें
hanshenrik

1

बशर्ते SetEnv लाइनों पर वाक्यविन्यास सही है, आपको इसे इस तरह से फेंकने में सक्षम होना चाहिए:

<Location *>
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
</Location>

यह अनुमति देना चाहिए कि सभी आभासी मेजबानों को संचालित करने के लिए - सिर्फ 2.2.24 पर परीक्षण किया गया, एक आकर्षण की तरह काम किया।


यह बेहतर है कि इसमें कोई त्रुटि नहीं है, लेकिन मेरे उपयोगकर्ता एजेंट को खराब करने के दौरान मुझे इनकार नहीं किया जाता है। किसी भी विचार क्यों हो सकता है?
टॉम राइट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.