DDoS (डिस्ट्रीब्यूटेड डेनियल ऑफ सर्विस अटैक्स) को आम तौर पर सर्वर स्तर पर अवरुद्ध किया जाता है?
क्या इसे PHP स्तर पर ब्लॉक करने का कोई तरीका है, या कम से कम इसे कम करना है?
यदि नहीं, तो DDoS हमलों को रोकने का सबसे तेज़ और सबसे सामान्य तरीका क्या है?
DDoS (डिस्ट्रीब्यूटेड डेनियल ऑफ सर्विस अटैक्स) को आम तौर पर सर्वर स्तर पर अवरुद्ध किया जाता है?
क्या इसे PHP स्तर पर ब्लॉक करने का कोई तरीका है, या कम से कम इसे कम करना है?
यदि नहीं, तो DDoS हमलों को रोकने का सबसे तेज़ और सबसे सामान्य तरीका क्या है?
जवाबों:
डीडीओएस हमलों का एक परिवार है, जिसमें डेटासेटर में प्रमुख प्रणालियां शामिल हैं:
इससे पहले कि आप अपने डीडीओएस रक्षा का निर्माण शुरू करें, विचार करें कि सबसे खराब मामला मूल्य-पर-जोखिम क्या है। एक छोटे समुदाय के लिए एक गैर-महत्वपूर्ण, मुफ्त-उपयोग सेवा के लिए, जोखिम में कुल मूल्य मूंगफली हो सकता है। एक स्थापित बहु-अरब डॉलर के व्यापार के लिए भुगतान-के लिए, सार्वजनिक-सामना, मिशन-महत्वपूर्ण प्रणाली के लिए, मूल्य कंपनी के लायक हो सकता है। इस बाद के मामले में, आपको StackExchange का उपयोग नहीं करना चाहिए :) वैसे भी, DDOS से बचाव करने के लिए, आपको एक रक्षा-गहराई की आवश्यकता है।
अपने सभी सिस्टम और सॉफ़्टवेयर पैकेज को नवीनतम सुरक्षा पैच के साथ अपडेट रखें - और मेरा मतलब है कि सभी:
सुनिश्चित करें कि आपके पास एक अच्छा फ़ायरवॉल या सुरक्षा उपकरण स्थापित है और एक योग्य सुरक्षा विशेषज्ञ द्वारा नियमित रूप से समीक्षा की जाती है । फ़ायरवॉल पर मजबूत नियम कई सरल हमलों के खिलाफ एक अच्छा बचाव है। प्रत्येक खुली सेवा के लिए उपलब्ध बैंडविड्थ को प्रबंधित करने में सक्षम होना भी उपयोगी है।
जगह में अच्छे नेटवर्क निगरानी उपकरण रखें - इससे आपको समझने में मदद मिल सकती है:
हमला वैध वेब साइट सेवाओं का भारी उपयोग हो सकता है (जैसे 'कानूनी' यूआरआई पर सवाल उठाना या डेटा डालना / अपडेट करना / हटाना) घुटनों। वैकल्पिक रूप से, कुछ सेवाएं चलाने के लिए इतनी महंगी हो सकती हैं कि केवल कुछ अनुरोधों के कारण ही DOS हो सकता है - वास्तव में महंगी रिपोर्ट के बारे में सोचें। तो आपको अच्छे अनुप्रयोग स्तर की निगरानी की आवश्यकता है जो चल रहा है:
अपने आवेदन में संवेदनशील बाधाओं और सीमाओं । उदाहरण के लिए, आप कर सकते हैं:
अंतिम, लेकिन कम से कम, एक डॉस रिस्पांस प्लान दस्तावेज़ न लिखें और सभी संबंधित पक्षों द्वारा इसकी आंतरिक समीक्षा करें: व्यवसाय, प्रबंधन, एसडब्ल्यू देव टीम, आईटी टीम और एक सुरक्षा विशेषज्ञ। दस्तावेज़ को लिखने की प्रक्रिया आपको और आपकी टीम को मुद्दों के माध्यम से सोचने और आपको तैयार होने में मदद करेगी यदि आपके दिन के 3 बजे सबसे खराब होना चाहिए। दस्तावेज़ को अन्य बातों के साथ कवर करना चाहिए:
तो, एक तरफ प्रस्तावना, यहाँ कुछ विशिष्ट उत्तर दिए गए हैं:
डीडीओएस आमतौर पर सर्वर स्तर पर अवरुद्ध होता है, है ना?
वास्तव में नहीं - सबसे खराब डीडीओएस हमले कम-स्तर (आईपी पैकेट स्तर पर) हैं और डीडीओएस हमलों को संभालने के लिए विकसित किए गए रूटिंग नियमों, फायरवॉल और सुरक्षा उपकरणों द्वारा नियंत्रित किए जाते हैं।
क्या इसे PHP स्तर पर ब्लॉक करने का कोई तरीका है, या कम से कम इसे कम करना है?
कुछ डीडीओएस हमलों का उद्देश्य स्वयं आवेदन करना है, जो वैध यूआरआई और HTTP अनुरोध भेज रहे हैं। जब अनुरोधों की दर बढ़ जाती है, तो आपका सर्वर संघर्ष करना शुरू कर देता है और आपके पास SLA आउटेज होगा। इस मामले में, ऐसी चीजें हैं जो आप पीएचपी स्तर पर कर सकते हैं:
आवेदन स्तर की निगरानी: प्रत्येक सेवा / पृष्ठ लॉग अनुरोधों को इस तरह सुनिश्चित करें कि आप देख सकें कि क्या हो रहा है (ताकि आप हमले को कम करने के लिए कार्रवाई कर सकें)। कुछ विचार:
एक लॉग प्रारूप है जिसे आप आसानी से एक लॉग टूल (या एक्सेल या समान) में लोड कर सकते हैं, और कमांड-लाइन टूल (grep, sed, awk) के साथ पार्स कर सकते हैं। याद रखें कि डीडीओएस लॉग की लाखों लाइनें उत्पन्न करेगा। आपको संभवतः अपने लॉग को स्लाइस करने की आवश्यकता होगी (विशेष रूप से यूआरआई, समय, आईपी और उपयोगकर्ता के संबंध में) क्या चल रहा है, और इसके लिए डेटा उत्पन्न करने की आवश्यकता है:
प्रत्येक अनुरोध के आईपी पते को लॉग इन करें। यह डीएनएस को उल्टा नहीं करता - विडंबना यह है कि ऐसा करने की लागत हमलावरों के लिए डीडीओएस को आसान बनाती है
संवेदनशील दर सीमाएं: आप किसी निश्चित समय अवधि में किसी दिए गए आईपी या उपयोगकर्ता के कितने अनुरोधों पर सीमाएं लागू कर सकते हैं। क्या एक वैध ग्राहक प्रति सेकंड 10 से अधिक अनुरोध कर सकता है? क्या गुमनाम उपयोगकर्ता महंगी रिपोर्ट का उपयोग कर सकते हैं?
अनाम पहुँच के लिए CAPTCHA: यह सत्यापित करने के लिए सभी अनाम अनुरोधों के लिए CAPTCHA लागू करें कि उपयोगकर्ता एक व्यक्ति है, डीडीसी बॉट नहीं।
DDOS हमलों को रोकने का सबसे तेज़ और सबसे सामान्य तरीका क्या है?
सबसे तेज़ शायद ब्लैकमेल में देना है, हालांकि यह वांछनीय नहीं हो सकता है।
अन्यथा, पहली बात यह है कि आप अपने होस्टिंग और / या सीडीएन प्रदाता से संपर्क करें और उनके साथ काम करें (यदि उन्होंने आपसे संपर्क नहीं किया है तो पहले ही पूछ लें कि आखिर क्या चल रहा है ...)। जब डीडीओएस होता है, तो यह संभावित रूप से होस्टिंग प्रदाता के अन्य ग्राहकों को प्रभावित करेगा, और प्रदाता अपने संसाधनों को सुरक्षित रखने के लिए आपकी साइट को बंद करने के लिए काफी दबाव में हो सकता है। प्रदाता के साथ अपने लॉग (किसी भी और सभी जानकारी) को साझा करने के लिए तैयार रहें; ये लॉग, उनके नेटवर्क मॉनिटर के साथ मिलकर हमले को अवरुद्ध / कम करने के लिए पर्याप्त जानकारी प्रदान कर सकते हैं।
यदि आप डीडीओएस की अपेक्षा कर रहे हैं, तो अपने होस्टिंग प्रदाता को सुरक्षा के स्तर पर योग्य बनाना एक बहुत अच्छा विचार है। उनके पास इसे कम करने के लिए डीडीओएस अनुभव और उपकरण होने चाहिए - उनके उपकरणों, प्रक्रियाओं और वृद्धि प्रक्रियाओं को समझना। यह भी पूछें कि होस्टिंग प्रदाता को उनके अपस्ट्रीम प्रदाताओं से क्या समर्थन है । इन सेवाओं का मतलब अधिक अप-फ्रंट या मासिक लागत हो सकता है, लेकिन इसे बीमा पॉलिसी के रूप में मानें।
हमले के दौरान, आपको अपने लॉग को हथियाने और उन्हें मेरा करने की आवश्यकता होगी - हमले के पैटर्न को आज़माएं और काम करें। आपको अनाम पहुंच को बंद करने और हमले के तहत सेवाओं को थ्रॉटलिंग करने पर विचार करना चाहिए (यानी सेवा के लिए एप्लिकेशन की दर सीमा कम करें)।
यदि भाग्यशाली और आपके पास एक छोटा, निश्चित ग्राहक-आधार है, तो आप अपने वैध ग्राहकों के आईपी पते निर्धारित करने में सक्षम हो सकते हैं। यदि यह मामला है, तो आप थोड़ी देर के लिए श्वेत सूची दृष्टिकोण पर स्विच कर सकते हैं। सुनिश्चित करें कि आपके सभी ग्राहक जानते हैं कि यह चल रहा है इसलिए वे कॉल कर सकते हैं यदि उन्हें नए आईपी से एक्सेस करने की आवश्यकता है :)
डग मैकक्लीन में कुछ बेहतरीन सलाह दी गई हैं: https://stackoverflow.com/a/1029613/1395668
सवाल के PHP भाग के अनुसार;
हालाँकि मैं इसके लिए PHP पर निर्भर नहीं हूं, इसे लागू किया जा सकता है, लेकिन इन सभी व्यवसायों या अधिक पर विचार करने की आवश्यकता है;
सरल छद्म;
<?php
// Assuming session is already started
$uri = md5($_SERVER['REQUEST_URI']);
$exp = 3; // 3 seconds
$hash = $uri .'|'. time();
if (!isset($_SESSION['ddos'])) {
$_SESSION['ddos'] = $hash;
}
list($_uri, $_exp) = explode('|', $_SESSION['ddos']);
if ($_uri == $uri && time() - $_exp < $exp) {
header('HTTP/1.1 503 Service Unavailable');
// die('Easy!');
die;
}
// Save last request
$_SESSION['ddos'] = $hash;
?>
अनुरोध श्रृंखला में php स्तर बहुत देर हो चुकी है।
अपने अपाचे सर्वर को एक ओपन सोर्स उपकरण के पीछे रखना आपके लिए एक अच्छा विकल्प हो सकता है।
http://tengine.taobao.org/ में डीडीओएस रोकथाम के उद्देश्य से कुछ प्रलेखन और स्रोत कोड हैं। यह नगनेक्स का विस्तार है, इसलिए आप इसे आसानी से अपने अपाचे उदाहरण के लिए रिवर्स प्रॉक्सी के रूप में सेट कर सकते हैं।
देखें: http://blog.zhuzhaoyuan.com/2012/01/a-mechanism-to-help-write-web-application-firewalls-for-nginx/ कैसे टक्कर से लड़ने के लिए DoS के हमले हैं।
पूरी तरह से भी भूल गए, http://www.cloudflare.com एक शीर्ष मुफ्त वेब अनुप्रयोग फ़ायरवॉल है, उनके पास मुफ्त और भुगतान की योजना है और डीडीओएस से आपके गधे को बचाएंगे। हम इसे अपने उच्च यातायात साइटों के लिए बस इसके कैशिंग क्षमताओं के लिए उपयोग करते हैं। । यह विस्मयकारी है!
आप इसे PHP स्तर में नहीं कर सकते। डीडीओएस एक तरह का हमला है जो आपके वेबसर्वर को बहुत अधिक अनुरोध भेजता है। आपका वेबसर्वर आपके PHP स्क्रिप्ट को कॉल करने से पहले अनुरोध को अस्वीकार कर देगा।
यदि आप अपाचे का उपयोग कर रहे हैं, तो यहां अपाचे से कुछ सुझाव दिए गए हैं: http://httpd.apache.org/docs/trunk/misc/security_tips.html
DDoS को सबसे महंगे, उद्देश्य से निर्मित नेटवर्क उपकरणों द्वारा नियंत्रित किया जाता है। होस्ट आमतौर पर DDoS सुरक्षा करने में अच्छे नहीं होते हैं क्योंकि वे अपेक्षाकृत कम प्रदर्शन, राज्य थकावट, सीमित बैंडविड्थ, आदि के अधीन होते हैं। iptables, Apache mods और इसी तरह की सेवाओं का उपयोग कुछ स्थितियों में मदद कर सकता है यदि आपके पास DDoS शमन हार्डवेयर तक कोई पहुंच नहीं है। या DDoS शमन सेवा, लेकिन यह आदर्श से बहुत दूर है और फिर भी आपको हमले का खतरा है।
कैसे PHP ओर इस तरह के बारे में कुछ:
//if user does not change IP, then ban the IP when more than 10 requests per second are detected in 1 second
$limitps = 10;
if (!isset($_SESSION['first_request'])){
$_SESSION['requests'] = 0;
$_SESSION['first_request'] = $_SERVER['REQUEST_TIME'];
}
$_SESSION['requests']++;
if ($_SESSION['requests']>=10 && strtotime($_SERVER['REQUEST_TIME'])-strtotime($_SESSION['first_request'])<=1){
//write the IP to a banned_ips.log file and configure your server to retrieve the banned ips from there - now you will be handling this IP outside of PHP
$_SESSION['banip']==1;
}elseif(strtotime($_SERVER['REQUEST_TIME'])-strtotime($_SESSION['first_request']) > 2){
$_SESSION['requests'] = 0;
$_SESSION['first_request'] = $_SERVER['REQUEST_TIME'];
}
if ($_SESSION['banip']==1) {
header('HTTP/1.1 503 Service Unavailable');
die;
}
ऐसे प्लगइन्स हैं जिनका उपयोग आप dache / dos के लिए अपाचे में कर सकते हैं। यहाँ से शुरू करें http://www.debianadmin.com/how-to-protect-apache-against-dosddos-or-brute-force-attacks.html
यदि आप LEMP पर हैं, तो आप यहां देख सकते हैं। http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
ये अच्छे सस्ती शुरुआती बिंदु हैं।
करो नहीं का उपयोग पीएचपी आधारित संरक्षण, यह भयानक है और शायद ही सब पर असर पड़ेगा! अपने वेबसर्वर को दर-सीमा अनुरोधों के लिए कॉन्फ़िगर करें, उदाहरण के लिए Nginx में limit_req मॉड्यूल ( http://nginx.org/en/docs/http/ngx_http_limit_req_modn.html ) का उपयोग कर
हालांकि, मैं लेयर -4 का मुकाबला करने के लिए CloudFlare का उपयोग करने की सलाह दूंगा - हालांकि लेयर -7 आधारित हमले नहीं जब तक आप भुगतान करने के लिए तैयार नहीं होते।
DDOS आमतौर पर एक सर्वर स्तर पर अवरुद्ध होता है, कृपया अपने सर्वर स्तर में DDOS सुरक्षा सक्षम करें। कृपया डीडीओएस सुरक्षा के लिए नीचे दिए गए नोट्स देखें।
Apache HTTP सर्वर कॉन्फ़िगरेशन सेटिंग्स जो DDOS समस्याओं को रोकने में मदद कर सकती हैं:
RequestReadTimeout निर्देश क्लाइंट को अनुरोध भेजने के लिए लगने वाले समय को सीमित करने की अनुमति देता है।
अनुरोधकर्ताओं को अनुरोध प्राप्त करने के लिए 10 सेकंड की अनुमति दें और अनुरोध निकाय प्राप्त करने के लिए 30 सेकंड का समय दें:
RequestReadTimeout header=10 body=30
अनुरोध निकाय प्राप्त करने के लिए कम से कम 10 सेकंड की अनुमति दें। यदि क्लाइंट डेटा भेजता है, तो प्राप्त की गई प्रत्येक 1000 बाइट्स के लिए समय सीमा 1 सेकंड बढ़ाएं, टाइमआउट के लिए कोई ऊपरी सीमा नहीं है (सीमा के अलावा अप्रत्यक्ष रूप से लिमिटिट्रिसेस्टबॉडी द्वारा)
RequestReadTimeout body=10,MinRate=1000
RequestReadTimeout header=10-30,MinRate=500
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
KeepAliveTimeout निर्देश को उन साइटों पर भी कम किया जा सकता है जो DoS के हमलों के अधीन हैं। कुछ साइट्स कीपलाइव को पूरी तरह से KeepAlive के माध्यम से बंद कर देती हैं, जो निश्चित रूप से प्रदर्शन पर अन्य कमियां हैं। अन्य मॉड्यूल द्वारा प्रदान किए गए विभिन्न टाइमआउट से संबंधित निर्देशों के मूल्यों की जांच की जानी चाहिए।
निर्देश LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine और LimitXMLRequestBody क्लाइंट इनपुट द्वारा ट्रिगर संसाधन खपत को सीमित करने के लिए सावधानीपूर्वक कॉन्फ़िगर किया जाना चाहिए। MaxRequestWorkers को निर्देश दें कि सर्वर को संसाधनों से बाहर भागे बिना एक साथ अधिकतम कनेक्शन को संभालने की अनुमति दें।
एंटी डीडीओएस कदम: