डिस्ट्रिब्यूटेड डेनियल ऑफ सर्विस या "DDoS" हमले अपमानजनक डिजिटल संचार रणनीति के माध्यम से सर्वर के संसाधनों को जब्त कर लेते हैं। इस प्रकार के हमले कंप्यूटर दुनिया के संगठित छापे हैं। कई परेशान करने वाली चींटी जैसी क्रियाएं एक भयानक खतरा बनाने के लिए गठबंधन करती हैं जो एक अनुभवी सर्वर को अपने ट्रैक में रोकने के लिए पर्याप्त है। सबसे बुरी बात, ऐसे गुरिल्ला वेब युद्ध को अनससPECTING सर्वरों के खिलाफ छेड़ने के कई साधन हैं। सौभाग्य से, सर्वरों को वापस लड़ने के लिए कॉन्फिगर किया जा सकता है।
Nginx, यूनिक्स मशीनों के लिए एक अत्यधिक लोकप्रिय सर्वर सिस्टम, DDoS हमलों की प्रभावशीलता को काफी हद तक सीमित करने के लिए पर्याप्त अंतर्निहित कार्यक्षमता के साथ आता है।
यहां Nginx-संचालित सर्वर पर ऐसे खतरों को संभालने के लिए कुछ प्रभावी विकल्प दिए गए हैं:
अपनी कॉन्फिगरेशन फाइल का बैकअप लें
कोई भी सेटिंग बदलने से पहले, सुनिश्चित करें कि आप अपने सर्वर की कॉन्फिगरेशन का एक त्वरित बैकअप बना लें। निम्न कमांड इसके लिए काम करती है:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original
एक बार हो जाने पर, आप आगे बढ़ने के लिए तैयार हैं।
ट्रैफिक की जांच
अपने सर्वर के ट्रैफिक पर नज़र रखना सुरक्षा को अनुकूलित करना और लाइन में अतिरिक्त रणनीति लागू करना आसान बनाता है। Nginx में इसके लिए विशेष रूप से बनाया गया एक मॉड्यूल है।
स्टेटस पेज सेट करें
Nginx आमतौर पर "stub status" (http_stub_status_module) नामक एक मॉड्यूल के साथ आता है जो इस तरह की कार्यक्षमता को आपके सर्वर एनवायरनमेंट में काफी आसानी से एकीकृत करने की अनुमति देता है। पहले, निम्न कमांड का उपयोग करके इसकी जांच करें:
nginx -V
या तेजी से खोजने के लिए उपरोक्त को grep में पाइप करें:
nginx -V 2>&1 | grep -o with-http_stub_status_module
यदि आपका आउटपुट उपरोक्त आउटपुट जैसा दिखता है, तो आप जाने के लिए तैयार हैं; अन्यथा, आपको मॉड्यूल शामिल करके अपने Nginx इंस्टॉलेशन को पुनः इंस्टॉल या रीकंपाइल करना होगा।
एक स्टेटस पेज सेट करना सरल है जिसे आप जांच सकते हैं, लेकिन आपको इसे केवल न्यूनतम (आपकी मशीन) तक सीमित रखने की भी आवश्यकता होगी ताकि इसे सुरक्षित रखा जा सके। अपने सर्वर की मुख्य कॉन्फिग फाइल को "/etc/nginx/nginx.conf" पर खोलकर शुरू करें।
इसे खोलें और "http directive" में निम्न कोड जोड़कर मॉड्यूल को सक्रिय करें, "localhost", "/status_page" और "127.0.0.1" के बजाय अपनी जानकारी प्रतिस्थापित करें:
server {
listen 80;
listen [::]:80;
server_name localhost;
##
# Status Page Settings
##
location /status_page {
stub_status on;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
नोट: इस फाइल को संशोधित करने के लिए आपको sudo विशेषाधिकारों की आवश्यकता होगी।
अब अपनी कॉन्फिगरेशन टेस्ट करें:
sudo nginx -t
यदि सब ठीक है, तो अपने सर्वर को रीलोड सिग्नल भेजें:
sudo systemctl reload nginx
अपने स्टेटस पेज तक पहुंचने के लिए, अपने server_name स्थान के बाद वेब ब्राउज़र में या curl जैसे कमांड-लाइन टूल का उपयोग करके "/status_page" पर जाएं। (यह मददगार है यदि आपके ब्राउज़र का कैश ऑटोमैटिकली अपडेट नहीं होता है।) हमारे उदाहरणों में पेज तक पहुंचने के लिए निम्न curl कमांड है:
curl localhost/status_page
एक्सेस लॉग्स जांचें
यदि आप ऊपर कॉन्फिगर किए गए स्टेटस पेज की जांच करते समय असामान्य ट्रैफिक देखते हैं, तो सर्वर के एक्सेस लॉग की जांच करना एक अच्छा विचार हो सकता है। यह "/var/log/nginx/access.log" पर पाया जा सकता है। लॉग उपयोग किए गए HTTP मेथड्स, एक्सेस प्रयासों की तारीख/समय, यूजर एजेंट्स और एक्सेस किए गए पेजों को सूचीबद्ध करता है।
कनेक्शन सीमित करना
DDoS हमलों को रोकने के लिए कोशिश करने लायक कई उपयोगी रणनीतियों में से, सबसे सरल और सबसे प्रभावी में से एक इनकमिंग ट्रैफिक दरों को सीमित करना है।
आदर्श रूप से, आपको एक्सेस को इतना रोकना चाहिए कि दुर्भावनापूर्ण बॉट्स अमानवीय दरों पर आपके सर्वर को ओवरपावर न कर सकें जबकि मानव क्लाइंट्स के लिए उचित दरों को बनाए रखा जाए। Nginx में, इसे limit_req_zone और limit_req डायरेक्टिव के साथ पूरा किया जा सकता है। निम्न कोड किसी भी स्थान के लिए उपयोग करने के लिए मेमोरी और दर बाधाओं को सेट करता है जिसे आपका सर्वर दिखाने के लिए कॉन्फिगर किया गया है:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
"Zone" उस स्थान का नाम और आकार (इस मामले में मेगाबाइट्स में) निर्दिष्ट करता है जहां यूजर अनुरोध मेमोरी में संग्रहीत होते हैं। "Rate" हर सेकंड Nginx द्वारा स्वीकार किए जाने वाले अनुरोधों की कुल संख्या स्थापित करता है (इस उदाहरण में 10)। इस कोड को एक नियम के रूप में सोचें और जो कोड अनुसरण करता है वह उस नियम का उपयोग है:
limit_req zone=speedbump burst=20;
उपरोक्त कोड वास्तव में केवल हमारे सीमित नियम को लागू करने से थोड़ा अधिक करता है; यह बीस अनुरोधों तक की एक छोटी कतार भी जोड़ता है ताकि वैध कनेक्शन को धीरे से संभाला जा सके जो सामान्य से थोड़ा तेजी से दिखाई देते हैं, नियम और कतार दोनों को पार करने पर क्लाइंट के लिए 503 त्रुटि होती है। यहां दोनों डायरेक्टिव nginx.conf में कैसे दिखते हैं:
IP एड्रेस ब्लैकलिस्ट करना
यदि आप उस IP एड्रेस को प्राप्त कर सकते हैं जो आपके सर्वर पर DDoS कर रहा है, तो आप बस इसे ब्लैकलिस्ट कर सकते हैं और इस IP एड्रेस से आने वाले किसी भी कनेक्शन को ड्रॉप कर सकते हैं।
अपने सर्वर डायरेक्टिव में निम्न कोड जोड़ें:
location / {
deny 123.123.123.0/28;
# ...
}
कुछ फाइलों के अनुरोधों को ब्लॉक करना
यदि DDoS हमला आपके सर्वर पर कुछ फाइलों को टारगेट कर रहा है - उदाहरण के लिए, वर्डप्रेस पर xmlrpc.php फाइल (यह अधिकांश वर्डप्रेस सर्वरों पर भारी टारगेट की जाने वाली फाइल है) - आप इसके सभी अनुरोधों को ब्लॉक कर सकते हैं। अपने सर्वर डायरेक्टिव में यह कोड जोड़ें:
location /xmlrpc.php {
deny all;
}
उपरोक्त प्रक्रिया का पालन करें, और आप अधिकांश DDoS हमलों को सीमित करने में सक्षम होंगे। Nginx डॉक्यूमेंटेशन में अतिरिक्त सुरक्षा विकल्पों की जांच करना सुनिश्चित करें जिन्हें आप लागू कर सकते हैं।