Variti బాట్లు మరియు DDoS దాడుల నుండి రక్షణను అభివృద్ధి చేస్తుంది మరియు ఒత్తిడి మరియు లోడ్ పరీక్షలను కూడా నిర్వహిస్తుంది. HighLoad++ 2018 కాన్ఫరెన్స్లో మేము వివిధ రకాల దాడుల నుండి వనరులను ఎలా భద్రపరచాలో మాట్లాడాము. సంక్షిప్తంగా: సిస్టమ్ యొక్క భాగాలను వేరు చేయండి, క్లౌడ్ సేవలు మరియు CDNలను ఉపయోగించండి మరియు క్రమం తప్పకుండా నవీకరించండి. కానీ మీరు ఇప్పటికీ ప్రత్యేక కంపెనీలు లేకుండా రక్షణను నిర్వహించలేరు :)
వచనాన్ని చదవడానికి ముందు, మీరు చిన్న సారాంశాలను చదవవచ్చు
మరియు మీరు వీడియోను చదవడం ఇష్టం లేకుంటే లేదా చూడాలనుకుంటే, మా రిపోర్ట్ రికార్డింగ్ స్పాయిలర్ క్రింద ఉంది.
నివేదిక యొక్క వీడియో రికార్డింగ్
చాలా కంపెనీలకు ఇప్పటికే లోడ్ టెస్టింగ్ ఎలా చేయాలో తెలుసు, కానీ అన్నీ స్ట్రెస్ టెస్టింగ్ చేయవు. మా కస్టమర్లలో కొందరు తమ సైట్ అభేద్యమైనదని భావిస్తారు ఎందుకంటే వారు హైలోడ్ సిస్టమ్ను కలిగి ఉన్నారు మరియు ఇది దాడుల నుండి బాగా రక్షిస్తుంది. ఇది పూర్తిగా నిజం కాదని మేము చూపిస్తాము.
వాస్తవానికి, పరీక్షలను నిర్వహించే ముందు, మేము కస్టమర్ నుండి అనుమతిని పొందుతాము, సంతకం చేసి, స్టాంప్ చేసాము మరియు మా సహాయంతో DDoS దాడి ఎవరిపైనా నిర్వహించబడదు. కస్టమర్ ఎంచుకున్న సమయంలో టెస్టింగ్ నిర్వహించబడుతుంది, అతని వనరుకి ట్రాఫిక్ తక్కువగా ఉన్నప్పుడు మరియు యాక్సెస్ సమస్యలు క్లయింట్లను ప్రభావితం చేయవు. అదనంగా, పరీక్ష ప్రక్రియలో ఎల్లప్పుడూ ఏదో తప్పు జరిగే అవకాశం ఉన్నందున, మేము కస్టమర్తో నిరంతరం సంప్రదింపులు జరుపుతాము. ఇది సాధించిన ఫలితాలను నివేదించడానికి మాత్రమే కాకుండా, పరీక్ష సమయంలో ఏదైనా మార్చడానికి కూడా మిమ్మల్ని అనుమతిస్తుంది. పరీక్ష పూర్తయిన తర్వాత, మేము ఎల్లప్పుడూ ఒక నివేదికను రూపొందిస్తాము, దీనిలో మేము గుర్తించిన లోపాలను ఎత్తి చూపుతాము మరియు సైట్ యొక్క బలహీనతలను తొలగించడానికి సిఫార్సులను అందిస్తాము.
మేము ఎలా పని చేస్తున్నాము
పరీక్షిస్తున్నప్పుడు, మేము బోట్నెట్ను అనుకరిస్తాము. మేము మా నెట్వర్క్లలో లేని క్లయింట్లతో పని చేస్తాము కాబట్టి, పరిమితులు లేదా రక్షణను ప్రేరేపించడం వలన పరీక్ష మొదటి నిమిషంలో ముగియకుండా చూసుకోవడానికి, మేము లోడ్ను ఒక IP నుండి కాకుండా మా స్వంత సబ్నెట్ నుండి సరఫరా చేస్తాము. అదనంగా, గణనీయమైన లోడ్ను సృష్టించడానికి, మా స్వంత శక్తివంతమైన పరీక్ష సర్వర్ని కలిగి ఉన్నాము.
పోస్ట్యులేట్ చేస్తుంది
చాలా ఎక్కువ అంటే మంచిది కాదు
తక్కువ లోడ్ మేము వైఫల్యానికి వనరును తీసుకురాగలము, మంచిది. మీరు సెకనుకు ఒక అభ్యర్థనపై లేదా నిమిషానికి ఒక అభ్యర్థనపై కూడా సైట్ పని చేయడాన్ని ఆపివేయగలిగితే, అది గొప్ప విషయం. ఎందుకంటే నీచత్వం యొక్క చట్టం ప్రకారం, వినియోగదారులు లేదా దాడి చేసేవారు అనుకోకుండా ఈ నిర్దిష్ట దుర్బలత్వంలో పడతారు.
పూర్తి వైఫల్యం కంటే పాక్షిక వైఫల్యం ఉత్తమం
మేము ఎల్లప్పుడూ వ్యవస్థలను భిన్నమైనదిగా చేయమని సలహా ఇస్తున్నాము. అంతేకాకుండా, వాటిని భౌతిక స్థాయిలో వేరు చేయడం విలువైనది, మరియు కేవలం కంటైనర్ ద్వారా కాదు. భౌతిక విభజన విషయంలో, సైట్లో ఏదైనా విఫలమైనప్పటికీ, అది పూర్తిగా పని చేయడం ఆపివేయబడని అధిక సంభావ్యత ఉంది మరియు వినియోగదారులు కనీసం కార్యాచరణలో కొంత భాగాన్ని యాక్సెస్ చేయడాన్ని కొనసాగిస్తారు.
మంచి వాస్తుశిల్పం స్థిరత్వానికి ఆధారం
వనరు యొక్క తప్పు సహనం మరియు దాడులు మరియు లోడ్లను తట్టుకునే దాని సామర్థ్యాన్ని డిజైన్ దశలో, వాస్తవానికి, నోట్ప్యాడ్లో మొదటి ఫ్లోచార్ట్లను గీయడం దశలో నిర్దేశించాలి. ఎందుకంటే ప్రాణాంతకమైన లోపాలు ఏర్పడితే, భవిష్యత్తులో వాటిని సరిదిద్దడం సాధ్యమవుతుంది, కానీ ఇది చాలా కష్టం.
కోడ్ మంచిగా ఉండటమే కాకుండా, కాన్ఫిగరేషన్ కూడా ఉండాలి
చాలా మంది ప్రజలు మంచి అభివృద్ధి బృందం తప్పు-తట్టుకునే సేవకు హామీ అని అనుకుంటారు. మంచి డెవలప్మెంట్ టీమ్ నిజంగా అవసరం, అయితే మంచి కార్యకలాపాలు, మంచి DevOps కూడా ఉండాలి. అంటే, మనకు Linux మరియు నెట్వర్క్ను సరిగ్గా కాన్ఫిగర్ చేసే, nginxలో కాన్ఫిగర్లను సరిగ్గా వ్రాసే, పరిమితులను సెట్ చేసే నిపుణులు కావాలి. లేకపోతే, వనరు పరీక్షలో మాత్రమే బాగా పని చేస్తుంది మరియు ఏదో ఒక సమయంలో ప్రతిదీ ఉత్పత్తిలో విచ్ఛిన్నమవుతుంది.
లోడ్ మరియు ఒత్తిడి పరీక్ష మధ్య తేడాలు
సిస్టమ్ పనితీరు యొక్క పరిమితులను గుర్తించడానికి లోడ్ పరీక్ష మిమ్మల్ని అనుమతిస్తుంది. ఒత్తిడి పరీక్ష అనేది సిస్టమ్లోని బలహీనతలను కనుగొనే లక్ష్యంతో ఉంటుంది మరియు ఈ వ్యవస్థను విచ్ఛిన్నం చేయడానికి మరియు కొన్ని భాగాల వైఫల్య ప్రక్రియలో అది ఎలా ప్రవర్తిస్తుందో చూడటానికి ఉపయోగించబడుతుంది. ఈ సందర్భంలో, ఒత్తిడి పరీక్ష ప్రారంభమయ్యే ముందు లోడ్ యొక్క స్వభావం సాధారణంగా కస్టమర్కు తెలియదు.
L7 దాడుల విశిష్ట లక్షణాలు
మేము సాధారణంగా లోడ్ రకాలను L7 మరియు L3&4 స్థాయిలలో లోడ్లుగా విభజిస్తాము. L7 అనువర్తన స్థాయిలో ఒక లోడ్, చాలా తరచుగా దీని అర్థం HTTP మాత్రమే, కానీ మేము TCP ప్రోటోకాల్ స్థాయిలో ఏదైనా లోడ్ అని అర్థం.
L7 దాడులు కొన్ని ప్రత్యేక లక్షణాలను కలిగి ఉంటాయి. మొదట, వారు నేరుగా అప్లికేషన్కి వస్తారు, అంటే, అవి నెట్వర్క్ మార్గాల ద్వారా ప్రతిబింబించే అవకాశం లేదు. ఇటువంటి దాడులు లాజిక్ను ఉపయోగిస్తాయి మరియు దీని కారణంగా, అవి CPU, మెమరీ, డిస్క్, డేటాబేస్ మరియు ఇతర వనరులను చాలా సమర్థవంతంగా మరియు తక్కువ ట్రాఫిక్తో వినియోగిస్తాయి.
HTTP వరద
ఏదైనా దాడి విషయంలో, లోడ్ నిర్వహించడం కంటే సృష్టించడం సులభం, మరియు L7 విషయంలో ఇది కూడా నిజం. చట్టబద్ధమైన ట్రాఫిక్ నుండి దాడి ట్రాఫిక్ను వేరు చేయడం ఎల్లప్పుడూ సులభం కాదు మరియు చాలా తరచుగా ఇది ఫ్రీక్వెన్సీ ద్వారా చేయవచ్చు, కానీ ప్రతిదీ సరిగ్గా ప్లాన్ చేసినట్లయితే, దాడి ఎక్కడ మరియు చట్టబద్ధమైన అభ్యర్థనలు ఎక్కడ ఉన్నాయో లాగ్ల నుండి అర్థం చేసుకోవడం అసాధ్యం.
మొదటి ఉదాహరణగా, HTTP వరద దాడిని పరిగణించండి. అటువంటి దాడులు సాధారణంగా చాలా శక్తివంతమైనవని గ్రాఫ్ చూపిస్తుంది; దిగువ ఉదాహరణలో, అభ్యర్థనల గరిష్ట సంఖ్య నిమిషానికి 600 వేలకు మించిపోయింది.
HTTP వరద అనేది లోడ్ని సృష్టించడానికి సులభమైన మార్గం. సాధారణంగా, ఇది ApacheBench వంటి లోడ్ టెస్టింగ్ సాధనాన్ని తీసుకుంటుంది మరియు అభ్యర్థన మరియు లక్ష్యాన్ని సెట్ చేస్తుంది. అటువంటి సరళమైన విధానంతో, సర్వర్ కాషింగ్లోకి ప్రవేశించే అధిక సంభావ్యత ఉంది, కానీ దానిని దాటవేయడం సులభం. ఉదాహరణకు, అభ్యర్థనకు యాదృచ్ఛిక తీగలను జోడించడం వలన, సర్వర్ నిరంతరం తాజా పేజీని అందించడానికి బలవంతం చేస్తుంది.
అలాగే, లోడ్ సృష్టించే ప్రక్రియలో వినియోగదారు ఏజెంట్ గురించి మర్చిపోవద్దు. జనాదరణ పొందిన పరీక్ష సాధనాల యొక్క అనేక వినియోగదారు-ఏజెంట్లు సిస్టమ్ నిర్వాహకులచే ఫిల్టర్ చేయబడతాయి మరియు ఈ సందర్భంలో లోడ్ బ్యాకెండ్కు చేరుకోకపోవచ్చు. మీరు అభ్యర్థనలో బ్రౌజర్ నుండి ఎక్కువ లేదా తక్కువ చెల్లుబాటు అయ్యే హెడర్ను చొప్పించడం ద్వారా ఫలితాన్ని గణనీయంగా మెరుగుపరచవచ్చు.
HTTP వరద దాడులు ఎంత సులభమో, వాటికి వాటి లోపాలు కూడా ఉన్నాయి. మొదట, లోడ్ సృష్టించడానికి పెద్ద మొత్తంలో శక్తి అవసరం. రెండవది, అటువంటి దాడులను గుర్తించడం చాలా సులభం, ప్రత్యేకించి అవి ఒక చిరునామా నుండి వచ్చినట్లయితే. ఫలితంగా, అభ్యర్థనలు వెంటనే సిస్టమ్ నిర్వాహకుల ద్వారా లేదా ప్రొవైడర్ స్థాయిలో కూడా ఫిల్టర్ చేయబడటం ప్రారంభమవుతుంది.
ఏమి వెతకాలి
సామర్థ్యాన్ని కోల్పోకుండా సెకనుకు అభ్యర్థనల సంఖ్యను తగ్గించడానికి, మీరు కొద్దిగా ఊహను చూపించి సైట్ను అన్వేషించాలి. అందువలన, మీరు ఛానెల్ లేదా సర్వర్ను మాత్రమే కాకుండా, అప్లికేషన్ యొక్క వ్యక్తిగత భాగాలను కూడా లోడ్ చేయవచ్చు, ఉదాహరణకు, డేటాబేస్లు లేదా ఫైల్ సిస్టమ్లు. మీరు సైట్లో పెద్ద గణనలను చేసే స్థలాల కోసం కూడా చూడవచ్చు: కాలిక్యులేటర్లు, ఉత్పత్తి ఎంపిక పేజీలు మొదలైనవి. చివరగా, సైట్ అనేక వందల వేల పంక్తుల పేజీని రూపొందించే ఒక రకమైన PHP స్క్రిప్ట్ను కలిగి ఉండటం తరచుగా జరుగుతుంది. అటువంటి స్క్రిప్ట్ సర్వర్ను కూడా గణనీయంగా లోడ్ చేస్తుంది మరియు దాడికి లక్ష్యంగా మారుతుంది.
ఎక్కడ వెతకాలి
మేము పరీక్షకు ముందు వనరును స్కాన్ చేసినప్పుడు, మేము మొదట సైట్లోనే చూస్తాము. మేము అన్ని రకాల ఇన్పుట్ ఫీల్డ్లు, భారీ ఫైల్ల కోసం వెతుకుతున్నాము - సాధారణంగా, వనరు కోసం సమస్యలను సృష్టించగల మరియు దాని ఆపరేషన్ను నెమ్మదించే ప్రతిదీ. Google Chrome మరియు Firefoxలోని సామాన్యమైన అభివృద్ధి సాధనాలు ఇక్కడ పేజీ ప్రతిస్పందన సమయాలను చూపుతాయి.
మేము సబ్డొమైన్లను కూడా స్కాన్ చేస్తాము. ఉదాహరణకు, ఒక నిర్దిష్ట ఆన్లైన్ స్టోర్, abc.com ఉంది మరియు దీనికి admin.abc.com సబ్డొమైన్ ఉంది. చాలా మటుకు, ఇది అధికారంతో కూడిన నిర్వాహక పానెల్, కానీ మీరు దానిపై లోడ్ చేస్తే, అది ప్రధాన వనరు కోసం సమస్యలను సృష్టించవచ్చు.
సైట్లో api.abc.com సబ్డొమైన్ ఉండవచ్చు. చాలా మటుకు, ఇది మొబైల్ అప్లికేషన్ల కోసం ఒక వనరు. యాప్ స్టోర్ లేదా Google Playలో అప్లికేషన్ కనుగొనవచ్చు, ప్రత్యేక యాక్సెస్ పాయింట్ను ఇన్స్టాల్ చేయండి, APIని విడదీయండి మరియు పరీక్ష ఖాతాలను నమోదు చేయండి. సమస్య ఏమిటంటే, అధికారం ద్వారా రక్షించబడిన ఏదైనా సేవా దాడుల తిరస్కరణ నుండి రోగనిరోధకమని ప్రజలు తరచుగా భావిస్తారు. ఆథరైజేషన్ అనేది ఉత్తమ CAPTCHA అని అనుకోవచ్చు, కానీ అది కాదు. 10-20 పరీక్ష ఖాతాలను తయారు చేయడం చాలా సులభం, కానీ వాటిని సృష్టించడం ద్వారా, మేము సంక్లిష్టమైన మరియు అస్పష్టమైన కార్యాచరణకు ప్రాప్యతను పొందుతాము.
సహజంగానే, మేము robots.txt మరియు WebArchive, ViewDNSలో చరిత్రను పరిశీలిస్తాము మరియు వనరు యొక్క పాత సంస్కరణల కోసం చూస్తాము. కొన్నిసార్లు డెవలపర్లు mail2.yandex.net అని చెప్పవచ్చు, కానీ పాత వెర్షన్, mail.yandex.net, అలాగే ఉంది. ఈ mail.yandex.netకి ఇకపై మద్దతు లేదు, డెవలప్మెంట్ వనరులు దీనికి కేటాయించబడవు, కానీ ఇది డేటాబేస్ను వినియోగించడాన్ని కొనసాగిస్తుంది. దీని ప్రకారం, పాత సంస్కరణను ఉపయోగించి, మీరు బ్యాకెండ్ యొక్క వనరులను మరియు లేఅవుట్ వెనుక ఉన్న ప్రతిదాన్ని సమర్థవంతంగా ఉపయోగించవచ్చు. వాస్తవానికి, ఇది ఎల్లప్పుడూ జరగదు, కానీ మేము దీనిని చాలా తరచుగా ఎదుర్కొంటాము.
సహజంగానే, మేము అన్ని అభ్యర్థన పారామితులను మరియు కుకీ నిర్మాణాన్ని విశ్లేషిస్తాము. మీరు కుకీ లోపల JSON శ్రేణిలో కొంత విలువను డంప్ చేయవచ్చు, అనేక గూడులను సృష్టించవచ్చు మరియు వనరును అసమంజసంగా ఎక్కువ కాలం పని చేయవచ్చు.
శోధన లోడ్
సైట్ను పరిశోధిస్తున్నప్పుడు గుర్తుకు వచ్చే మొదటి విషయం ఏమిటంటే, డేటాబేస్ను లోడ్ చేయడం, దాదాపు ప్రతి ఒక్కరికీ శోధన ఉంటుంది మరియు దాదాపు ప్రతి ఒక్కరికీ, దురదృష్టవశాత్తు, ఇది పేలవంగా రక్షించబడింది. కొన్ని కారణాల వల్ల, డెవలపర్లు శోధించడంపై తగినంత శ్రద్ధ చూపడం లేదు. కానీ ఇక్కడ ఒక సిఫార్సు ఉంది - మీరు ఒకే రకమైన అభ్యర్థనలను చేయకూడదు, ఎందుకంటే మీరు HTTP వరదల మాదిరిగానే కాషింగ్ను ఎదుర్కోవచ్చు.
డేటాబేస్కు యాదృచ్ఛిక ప్రశ్నలను చేయడం కూడా ఎల్లప్పుడూ ప్రభావవంతంగా ఉండదు. శోధనకు సంబంధించిన కీలకపదాల జాబితాను రూపొందించడం చాలా మంచిది. మేము ఆన్లైన్ స్టోర్ యొక్క ఉదాహరణకి తిరిగి వస్తే: సైట్ కారు టైర్లను విక్రయిస్తుందని మరియు టైర్ల వ్యాసార్థం, కారు రకం మరియు ఇతర పారామితులను సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది అని అనుకుందాం. తదనుగుణంగా, సంబంధిత పదాల కలయికలు డేటాబేస్ చాలా క్లిష్టమైన పరిస్థితుల్లో పని చేయడానికి బలవంతం చేస్తాయి.
అదనంగా, ఇది పేజీని ఉపయోగించడం విలువైనది: శోధన ఫలితాల యొక్క చివరి పేజీని మొదటిదాని కంటే తిరిగి ఇవ్వడం చాలా కష్టం. అంటే, పేజినేషన్ సహాయంతో మీరు లోడ్ను కొద్దిగా వైవిధ్యపరచవచ్చు.
దిగువ ఉదాహరణ శోధన లోడ్ను చూపుతుంది. సెకనుకు పది అభ్యర్థనల వేగంతో పరీక్ష యొక్క మొదటి సెకను నుండి, సైట్ డౌన్ అయ్యిందని మరియు ప్రతిస్పందించలేదని చూడవచ్చు.
శోధన లేకపోతే?
శోధన లేనట్లయితే, సైట్ ఇతర హాని కలిగించే ఇన్పుట్ ఫీల్డ్లను కలిగి లేదని దీని అర్థం కాదు. ఈ ఫీల్డ్ అధికారం కావచ్చు. ఈ రోజుల్లో, డెవలపర్లు రెయిన్బో టేబుల్ దాడి నుండి లాగిన్ డేటాబేస్ను రక్షించడానికి సంక్లిష్టమైన హ్యాష్లను తయారు చేయాలనుకుంటున్నారు. ఇది మంచిది, కానీ అలాంటి హాష్లు చాలా CPU వనరులను వినియోగిస్తాయి. తప్పుడు అధికారాల యొక్క పెద్ద ప్రవాహం ప్రాసెసర్ వైఫల్యానికి దారితీస్తుంది మరియు ఫలితంగా, సైట్ పని చేయడం ఆగిపోతుంది.
వ్యాఖ్యలు మరియు ఫీడ్బ్యాక్ కోసం అన్ని రకాల ఫారమ్ల సైట్లో ఉండటం అక్కడ చాలా పెద్ద పాఠాలను పంపడానికి లేదా భారీ వరదను సృష్టించడానికి ఒక కారణం. కొన్నిసార్లు సైట్లు gzip ఫార్మాట్తో సహా జోడించిన ఫైల్లను అంగీకరిస్తాయి. ఈ సందర్భంలో, మేము 1TB ఫైల్ని తీసుకుంటాము, దానిని gzip ఉపయోగించి అనేక బైట్లు లేదా కిలోబైట్లకు కుదించి సైట్కు పంపుతాము. అప్పుడు అది అన్జిప్ చేయబడుతుంది మరియు చాలా ఆసక్తికరమైన ప్రభావం పొందబడుతుంది.
విశ్రాంతి API
నేను రెస్ట్ API వంటి ప్రసిద్ధ సేవలపై కొంచెం శ్రద్ధ వహించాలనుకుంటున్నాను. రెస్ట్ APIని భద్రపరచడం సాధారణ వెబ్సైట్ కంటే చాలా కష్టం. పాస్వర్డ్ బ్రూట్ ఫోర్స్ మరియు ఇతర చట్టవిరుద్ధమైన కార్యకలాపాల నుండి రక్షణ కల్పించే పనికిమాలిన పద్ధతులు కూడా రెస్ట్ APIకి పని చేయవు.
రెస్ట్ APIని విచ్ఛిన్నం చేయడం చాలా సులభం ఎందుకంటే ఇది డేటాబేస్ను నేరుగా యాక్సెస్ చేస్తుంది. అదే సమయంలో, అటువంటి సేవ యొక్క వైఫల్యం వ్యాపారానికి చాలా తీవ్రమైన పరిణామాలను కలిగిస్తుంది. వాస్తవం ఏమిటంటే, రెస్ట్ API సాధారణంగా ప్రధాన వెబ్సైట్ కోసం మాత్రమే కాకుండా, మొబైల్ అప్లికేషన్ మరియు కొన్ని అంతర్గత వ్యాపార వనరుల కోసం కూడా ఉపయోగించబడుతుంది. మరియు ఇవన్నీ పడిపోయినట్లయితే, సాధారణ వెబ్సైట్ వైఫల్యం విషయంలో కంటే ప్రభావం చాలా బలంగా ఉంటుంది.
భారీ కంటెంట్ లోడ్ అవుతోంది
సంక్లిష్ట కార్యాచరణ లేని కొన్ని సాధారణ సింగిల్-పేజీ అప్లికేషన్, ల్యాండింగ్ పేజీ లేదా బిజినెస్ కార్డ్ వెబ్సైట్ని పరీక్షించడానికి మేము ఆఫర్ చేస్తే, మేము భారీ కంటెంట్ కోసం చూస్తాము. ఉదాహరణకు, సర్వర్ పంపే పెద్ద చిత్రాలు, బైనరీ ఫైల్స్, పిడిఎఫ్ డాక్యుమెంటేషన్ - మేము ఇవన్నీ డౌన్లోడ్ చేయడానికి ప్రయత్నిస్తాము. ఇటువంటి పరీక్షలు ఫైల్ సిస్టమ్ను బాగా లోడ్ చేస్తాయి మరియు ఛానెల్లను అడ్డుకుంటాయి మరియు అందువల్ల ప్రభావవంతంగా ఉంటాయి. అంటే, మీరు సర్వర్ను డౌన్లోడ్ చేయకపోయినా, తక్కువ వేగంతో పెద్ద ఫైల్ను డౌన్లోడ్ చేసినప్పటికీ, మీరు లక్ష్య సర్వర్ యొక్క ఛానెల్ను మూసివేస్తారు మరియు ఆపై సేవ యొక్క తిరస్కరణ జరుగుతుంది.
అటువంటి పరీక్ష యొక్క ఉదాహరణ 30 RPS వేగంతో సైట్ ప్రతిస్పందించడం ఆపివేసిందని లేదా 500వ సర్వర్ లోపాలను సృష్టించిందని చూపిస్తుంది.
సర్వర్లను సెటప్ చేయడం గురించి మర్చిపోవద్దు. ఒక వ్యక్తి వర్చువల్ మెషీన్ను కొనుగోలు చేసి, అక్కడ అపాచీని ఇన్స్టాల్ చేసి, డిఫాల్ట్గా ప్రతిదీ కాన్ఫిగర్ చేసి, PHP అప్లికేషన్ను ఇన్స్టాల్ చేసి, దిగువన మీరు ఫలితాన్ని చూడవచ్చు.
ఇక్కడ లోడ్ రూట్కి వెళ్లి 10 RPS మాత్రమే. మేము 5 నిమిషాలు వేచి ఉన్నాము మరియు సర్వర్ క్రాష్ అయింది. అతను ఎందుకు పడిపోయాడు అనేది పూర్తిగా తెలియదు, కానీ అతనికి చాలా జ్ఞాపకశక్తి ఉందని మరియు అందుకే స్పందించడం మానేశాడని ఒక ఊహ ఉంది.
వేవ్ ఆధారిత
గత ఏడాది లేదా రెండు సంవత్సరాలలో, అలల దాడులు బాగా ప్రాచుర్యం పొందాయి. అనేక సంస్థలు DDoS రక్షణ కోసం నిర్దిష్ట హార్డ్వేర్ ముక్కలను కొనుగోలు చేయడం దీనికి కారణం, దాడిని ఫిల్టర్ చేయడం ప్రారంభించడానికి గణాంకాలను సేకరించడానికి కొంత సమయం అవసరం. అంటే, వారు మొదటి 30-40 సెకన్లలో దాడిని ఫిల్టర్ చేయరు, ఎందుకంటే వారు డేటాను కూడబెట్టుకొని నేర్చుకుంటారు. దీని ప్రకారం, ఈ 30-40 సెకన్లలో మీరు సైట్లో చాలా లాంచ్ చేయవచ్చు, అన్ని అభ్యర్థనలు క్లియర్ అయ్యే వరకు వనరు చాలా కాలం పాటు ఉంటుంది.
దిగువ దాడి విషయంలో, 10 నిమిషాల విరామం ఉంది, ఆ తర్వాత దాడిలో కొత్త, సవరించిన భాగం వచ్చింది.
అంటే, రక్షణ నేర్చుకుంది, ఫిల్టర్ చేయడం ప్రారంభించింది, కానీ దాడిలో కొత్త, పూర్తిగా భిన్నమైన భాగం వచ్చింది మరియు రక్షణ మళ్లీ నేర్చుకోవడం ప్రారంభించింది. వాస్తవానికి, వడపోత పని చేయడం ఆగిపోతుంది, రక్షణ అసమర్థంగా మారుతుంది మరియు సైట్ అందుబాటులో లేదు.
వేవ్ దాడులు గరిష్ట స్థాయిలో చాలా ఎక్కువ విలువలతో వర్గీకరించబడతాయి, ఇది L7 విషయంలో సెకనుకు లక్ష లేదా ఒక మిలియన్ అభ్యర్థనలను చేరుకోగలదు. మేము L3 & 4 గురించి మాట్లాడినట్లయితే, మీరు ప్యాకెట్లలో లెక్కించినట్లయితే, అప్పుడు వందల గిగాబిట్ల ట్రాఫిక్ లేదా, తదనుగుణంగా, వందల mpps ఉండవచ్చు.
అటువంటి దాడులతో సమస్య సమకాలీకరణ. దాడులు బోట్నెట్ నుండి వస్తాయి మరియు చాలా పెద్ద వన్-టైమ్ స్పైక్ను సృష్టించడానికి అధిక స్థాయి సమకాలీకరణ అవసరం. మరియు ఈ సమన్వయం ఎల్లప్పుడూ పని చేయదు: కొన్నిసార్లు అవుట్పుట్ ఒక రకమైన పారాబొలిక్ పీక్, ఇది దయనీయంగా కనిపిస్తుంది.
HTTP మాత్రమే కాదు
L7 వద్ద HTTPతో పాటు, మేము ఇతర ప్రోటోకాల్లను ఉపయోగించుకోవాలనుకుంటున్నాము. నియమం ప్రకారం, ఒక సాధారణ వెబ్సైట్, ప్రత్యేకించి సాధారణ హోస్టింగ్, మెయిల్ ప్రోటోకాల్లను కలిగి ఉంటుంది మరియు MySQLని కలిగి ఉంటుంది. మెయిల్ ప్రోటోకాల్లు డేటాబేస్ల కంటే తక్కువ లోడ్కు లోబడి ఉంటాయి, అయితే అవి చాలా సమర్థవంతంగా లోడ్ చేయబడతాయి మరియు సర్వర్లో ఓవర్లోడ్ చేయబడిన CPUతో ముగుస్తాయి.
2016 SSH దుర్బలత్వంతో మేము చాలా వాస్తవికంగా విజయం సాధించాము. ఇప్పుడు ఈ దుర్బలత్వం దాదాపు ప్రతి ఒక్కరికీ పరిష్కరించబడింది, అయితే SSHకి లోడ్ సమర్పించబడదని దీని అర్థం కాదు. చెయ్యవచ్చు. అధికారాల యొక్క భారీ లోడ్ ఉంది, SSH సర్వర్లోని దాదాపు మొత్తం CPUని తింటుంది, ఆపై వెబ్సైట్ సెకనుకు ఒకటి లేదా రెండు అభ్యర్థనల నుండి కూలిపోతుంది. దీని ప్రకారం, లాగ్ల ఆధారంగా ఈ ఒకటి లేదా రెండు అభ్యర్థనలు చట్టబద్ధమైన లోడ్ నుండి వేరు చేయబడవు.
మేము సర్వర్లలో తెరిచే అనేక కనెక్షన్లు కూడా సంబంధితంగా ఉంటాయి. ఇంతకుముందు, Apache దీనికి దోషిగా ఉంది, ఇప్పుడు nginx వాస్తవానికి దీనికి దోషిగా ఉంది, ఎందుకంటే ఇది తరచుగా డిఫాల్ట్గా కాన్ఫిగర్ చేయబడుతుంది. nginx తెరిచి ఉంచగల కనెక్షన్ల సంఖ్య పరిమితం చేయబడింది, కాబట్టి మేము ఈ కనెక్షన్ల సంఖ్యను తెరుస్తాము, nginx ఇకపై కొత్త కనెక్షన్ని అంగీకరించదు మరియు ఫలితంగా సైట్ పని చేయదు.
మా టెస్ట్ క్లస్టర్లో SSL హ్యాండ్షేక్పై దాడి చేయడానికి తగినంత CPU ఉంది. సూత్రప్రాయంగా, అభ్యాసం చూపినట్లుగా, బోట్నెట్లు కొన్నిసార్లు దీన్ని కూడా చేయాలనుకుంటున్నాయి. ఒక వైపు, మీరు SSL లేకుండా చేయలేరని స్పష్టంగా తెలుస్తుంది, ఎందుకంటే Google ఫలితాలు, ర్యాంకింగ్, భద్రత. మరోవైపు, SSL దురదృష్టవశాత్తూ CPU సమస్యను కలిగి ఉంది.
L3&4
మేము L3&4 స్థాయిలలో దాడి గురించి మాట్లాడినప్పుడు, మేము సాధారణంగా లింక్ స్థాయిలో దాడి గురించి మాట్లాడుతాము. ఇది SYN-ఫ్లడ్ అటాక్ అయితే తప్ప, అటువంటి లోడ్ దాదాపు ఎల్లప్పుడూ చట్టబద్ధమైన దాని నుండి వేరుగా ఉంటుంది. భద్రతా సాధనాల కోసం SYN-ఫ్లడ్ అటాక్ల సమస్య వాటి పెద్ద వాల్యూమ్. గరిష్ట L3&4 విలువ 1,5-2 Tbit/s. Oracle మరియు Googleతో సహా పెద్ద కంపెనీలకు కూడా ఈ రకమైన ట్రాఫిక్ని ప్రాసెస్ చేయడం చాలా కష్టం.
SYN మరియు SYN-ACK అనేవి కనెక్షన్ని స్థాపించేటప్పుడు ఉపయోగించే ప్యాకెట్లు. అందువల్ల, SYN-ఫ్లడ్ని చట్టబద్ధమైన లోడ్ నుండి వేరు చేయడం కష్టం: ఇది కనెక్షన్ని స్థాపించడానికి వచ్చిన SYN లేదా వరదలో భాగమా అనేది స్పష్టంగా లేదు.
UDP-వరద
సాధారణంగా, దాడి చేసేవారికి మా వద్ద ఉన్న సామర్థ్యాలు లేవు, కాబట్టి దాడులను నిర్వహించడానికి యాంప్లిఫికేషన్ను ఉపయోగించవచ్చు. అంటే, దాడి చేసే వ్యక్తి ఇంటర్నెట్ను స్కాన్ చేస్తాడు మరియు హాని కలిగించే లేదా తప్పుగా కాన్ఫిగర్ చేయబడిన సర్వర్లను కనుగొంటాడు, ఉదాహరణకు, ఒక SYN ప్యాకెట్కు ప్రతిస్పందనగా, మూడు SYN-ACKలతో ప్రతిస్పందించవచ్చు. లక్ష్య సర్వర్ చిరునామా నుండి మూలాధార చిరునామాను మోసగించడం ద్వారా, ఒకే ప్యాకెట్తో మూడు రెట్లు శక్తిని పెంచడం మరియు బాధితునికి ట్రాఫిక్ను దారి మళ్లించడం సాధ్యమవుతుంది.
యాంప్లిఫికేషన్ల సమస్య ఏమిటంటే వాటిని గుర్తించడం కష్టం. ఇటీవలి ఉదాహరణలలో హాని కలిగించే మెమ్క్యాచ్డ్ యొక్క సంచలనాత్మక కేసు ఉన్నాయి. అదనంగా, ఇప్పుడు చాలా IoT పరికరాలు, IP కెమెరాలు ఉన్నాయి, అవి కూడా ఎక్కువగా డిఫాల్ట్గా కాన్ఫిగర్ చేయబడ్డాయి మరియు డిఫాల్ట్గా అవి తప్పుగా కాన్ఫిగర్ చేయబడ్డాయి, అందుకే దాడి చేసేవారు తరచుగా అలాంటి పరికరాల ద్వారా దాడులు చేస్తారు.
కష్టమైన SYN-వరద
SYN-ఫ్లడ్ అనేది డెవలపర్ దృక్కోణం నుండి బహుశా అత్యంత ఆసక్తికరమైన దాడి. సమస్య ఏమిటంటే, సిస్టమ్ అడ్మినిస్ట్రేటర్లు తరచుగా రక్షణ కోసం IP బ్లాకింగ్ను ఉపయోగిస్తారు. అంతేకాకుండా, IP నిరోధించడం అనేది స్క్రిప్ట్లను ఉపయోగించి పనిచేసే సిస్టమ్ నిర్వాహకులను మాత్రమే కాకుండా, దురదృష్టవశాత్తు, చాలా డబ్బుతో కొనుగోలు చేయబడిన కొన్ని భద్రతా వ్యవస్థలను కూడా ప్రభావితం చేస్తుంది.
ఈ పద్ధతి విపత్తుగా మారవచ్చు, ఎందుకంటే దాడి చేసేవారు IP చిరునామాలను భర్తీ చేస్తే, కంపెనీ తన స్వంత సబ్నెట్ను బ్లాక్ చేస్తుంది. ఫైర్వాల్ దాని స్వంత క్లస్టర్ను బ్లాక్ చేసినప్పుడు, అవుట్పుట్ బాహ్య పరస్పర చర్యలను విఫలమవుతుంది మరియు వనరు విఫలమవుతుంది.
అంతేకాకుండా, మీ స్వంత నెట్వర్క్ను బ్లాక్ చేయడం కష్టం కాదు. క్లయింట్ కార్యాలయం Wi-Fi నెట్వర్క్ని కలిగి ఉంటే లేదా వివిధ పర్యవేక్షణ వ్యవస్థలను ఉపయోగించి వనరుల పనితీరును కొలిచినట్లయితే, మేము ఈ పర్యవేక్షణ సిస్టమ్ లేదా క్లయింట్ యొక్క కార్యాలయ Wi-Fi యొక్క IP చిరునామాను తీసుకుంటాము మరియు దానిని మూలంగా ఉపయోగిస్తాము. ముగింపులో, వనరు అందుబాటులో ఉన్నట్లు అనిపిస్తుంది, కానీ లక్ష్య IP చిరునామాలు బ్లాక్ చేయబడ్డాయి. అందువల్ల, కంపెనీ కొత్త ఉత్పత్తిని ప్రదర్శించే హైలోడ్ కాన్ఫరెన్స్ యొక్క Wi-Fi నెట్వర్క్ బ్లాక్ చేయబడవచ్చు మరియు ఇది నిర్దిష్ట వ్యాపార మరియు ఆర్థిక వ్యయాలను కలిగి ఉంటుంది.
టెస్టింగ్ సమయంలో, అనుమతించబడిన IP చిరునామాలకు మాత్రమే ట్రాఫిక్ను పంపడానికి ఒప్పందాలు ఉన్నందున, మేము ఏదైనా బాహ్య వనరులతో మెమ్క్యాచ్ చేయడం ద్వారా యాంప్లిఫికేషన్ను ఉపయోగించలేము. దీని ప్రకారం, మేము SYN మరియు SYN-ACK ద్వారా యాంప్లిఫికేషన్ని ఉపయోగిస్తాము, రెండు లేదా మూడు SYN-ACKలతో ఒక SYNని పంపడానికి సిస్టమ్ ప్రతిస్పందించినప్పుడు మరియు అవుట్పుట్ వద్ద దాడి రెండు లేదా మూడు రెట్లు గుణించబడుతుంది.
సాధన
L7 పనిభారం కోసం మేము ఉపయోగించే ప్రధాన సాధనాల్లో ఒకటి Yandex-tank. ప్రత్యేకించి, ఒక ఫాంటమ్ను తుపాకీగా ఉపయోగిస్తారు, అంతేకాకుండా కాట్రిడ్జ్లను రూపొందించడానికి మరియు ఫలితాలను విశ్లేషించడానికి అనేక స్క్రిప్ట్లు ఉన్నాయి.
నెట్వర్క్ ట్రాఫిక్ను విశ్లేషించడానికి Tcpdump ఉపయోగించబడుతుంది మరియు సర్వర్ను విశ్లేషించడానికి Nmap ఉపయోగించబడుతుంది. L3&4 స్థాయిలో లోడ్ను సృష్టించడానికి, OpenSSL మరియు DPDK లైబ్రరీతో మా స్వంత మాయాజాలం ఉపయోగించబడతాయి. DPDK అనేది ఇంటెల్ నుండి వచ్చిన లైబ్రరీ, ఇది Linux స్టాక్ను దాటవేసి నెట్వర్క్ ఇంటర్ఫేస్తో పని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, తద్వారా సామర్థ్యాన్ని పెంచుతుంది. సహజంగానే, మేము DPDKని L3&4 స్థాయిలో మాత్రమే కాకుండా, L7 స్థాయిలో కూడా ఉపయోగిస్తాము, ఎందుకంటే ఇది ఒక మెషీన్ నుండి సెకనుకు అనేక మిలియన్ అభ్యర్థనల పరిధిలో చాలా ఎక్కువ లోడ్ ప్రవాహాన్ని సృష్టించడానికి అనుమతిస్తుంది.
మేము నిర్దిష్ట పరీక్షల కోసం వ్రాసే నిర్దిష్ట ట్రాఫిక్ జనరేటర్లు మరియు ప్రత్యేక సాధనాలను కూడా ఉపయోగిస్తాము. మేము SSH కింద ఉన్న దుర్బలత్వాన్ని గుర్తుకు తెచ్చుకుంటే, పైన పేర్కొన్న సెట్ని ఉపయోగించుకోలేరు. మేము మెయిల్ ప్రోటోకాల్పై దాడి చేస్తే, మేము మెయిల్ యుటిలిటీలను తీసుకుంటాము లేదా వాటిపై స్క్రిప్ట్లను వ్రాస్తాము.
కనుగొన్న
ముగింపుగా నేను చెప్పాలనుకుంటున్నాను:
- క్లాసిక్ లోడ్ పరీక్షతో పాటు, ఒత్తిడి పరీక్షను నిర్వహించడం అవసరం. భాగస్వామి యొక్క సబ్కాంట్రాక్టర్ లోడ్ టెస్టింగ్ మాత్రమే చేసిన నిజమైన ఉదాహరణ మాకు ఉంది. వనరు సాధారణ భారాన్ని తట్టుకోగలదని ఇది చూపించింది. కానీ అప్పుడు అసాధారణ లోడ్ కనిపించింది, సైట్ సందర్శకులు వనరును కొద్దిగా భిన్నంగా ఉపయోగించడం ప్రారంభించారు మరియు ఫలితంగా సబ్కాంట్రాక్టర్ పడుకున్నాడు. అందువల్ల, మీరు ఇప్పటికే DDoS దాడుల నుండి రక్షించబడినప్పటికీ దుర్బలత్వాలను వెతకడం విలువైనదే.
- సిస్టమ్ యొక్క కొన్ని భాగాలను ఇతరుల నుండి వేరుచేయడం అవసరం. మీకు శోధన ఉంటే, మీరు దానిని ప్రత్యేక యంత్రాలకు తరలించాలి, అంటే డాకర్కి కూడా కాదు. ఎందుకంటే శోధన లేదా అధికారం విఫలమైతే, కనీసం ఏదైనా పని చేస్తూనే ఉంటుంది. ఆన్లైన్ స్టోర్ విషయంలో, వినియోగదారులు కేటలాగ్లో ఉత్పత్తులను కనుగొనడం, అగ్రిగేటర్ నుండి వెళ్లడం, వారు ఇప్పటికే అధికారం కలిగి ఉంటే కొనుగోలు చేయడం లేదా OAuth2 ద్వారా అధికారం ఇవ్వడం కొనసాగిస్తారు.
- అన్ని రకాల క్లౌడ్ సేవలను నిర్లక్ష్యం చేయవద్దు.
- నెట్వర్క్ ఆలస్యాన్ని ఆప్టిమైజ్ చేయడానికి మాత్రమే కాకుండా, ఛానెల్ ఎగ్జాషన్పై దాడుల నుండి మరియు స్టాటిక్ ట్రాఫిక్లో వరదల నుండి రక్షణ సాధనంగా కూడా CDNని ఉపయోగించండి.
- ప్రత్యేక రక్షణ సేవలను ఉపయోగించడం అవసరం. మీరు ఛానెల్ స్థాయిలో L3&4 దాడుల నుండి మిమ్మల్ని మీరు రక్షించుకోలేరు, ఎందుకంటే మీకు తగినంత ఛానెల్ లేదు. మీరు L7 దాడులతో పోరాడే అవకాశం కూడా లేదు, ఎందుకంటే అవి చాలా పెద్దవిగా ఉంటాయి. అదనంగా, చిన్న దాడుల కోసం శోధన ఇప్పటికీ ప్రత్యేక సేవలు, ప్రత్యేక అల్గారిథమ్ల యొక్క ప్రత్యేక హక్కు.
- క్రమం తప్పకుండా నవీకరించండి. ఇది కెర్నల్కు మాత్రమే కాకుండా, SSH డెమోన్కు కూడా వర్తిస్తుంది, ప్రత్యేకించి మీరు వాటిని బయటికి తెరిచి ఉంచినట్లయితే. సూత్రప్రాయంగా, ప్రతిదీ నవీకరించబడాలి, ఎందుకంటే మీరు మీ స్వంతంగా కొన్ని దుర్బలత్వాలను ట్రాక్ చేయగల అవకాశం లేదు.
మూలం: www.habr.com