לא כל התקפות DDoS נראות אותו דבר. חלקן מנסות להציף את הרשת שלכם בכמות עצומה של תעבורה גולמית. אחרות מנצלות בשקט את טבלת החיבורים של השרת שלכם עד שהיא נגמרת. ויש כאלה שפשוט מחקות מבקרים אמיתיים עד שהאפליקציה שלכם קורסת תחת העומס. אם פעם תהיתם למה הגנה מ-DDoS באחסון צריכה יותר מטריק אחד בשרוול, זו הסיבה.
בואו נפרק את שלושת סוגי ההתקפות הנפוצים ביותר ונראה איך הגדרה טובה של הגנה מ-DDoS באחסון מתמודדת עם כל אחת מהן.
הצפות UDP: כוח גס בשכבת הרשת
הצפת UDP היא הכלי הכי בוטה בעולם ה-DDoS. תוקפים שולחים כמויות עצומות של חבילות User Datagram Protocol לפורטים אקראיים בשרת היעד. מכיוון ש-UDP הוא פרוטוקול ללא חיבור, אין לחיצת יד שמעכבת את התוקף, הוא פשוט יורה חבילות במהירות המקסימלית שהבוטנט שלו מאפשר.
כל חבילה מכריחה את השרת לבדוק אם משהו מאזין באותו פורט. כשאין, השרת צריך לייצר תגובת ICMP של "יעד לא נגיש". תכפילו את זה במיליוני חבילות בשנייה, ותקבלו שרת (או הרשת שמעליו) רווי לחלוטין עוד לפני שמבקר לגיטימי אחד מצליח לעבור.
איך ההגנה מטפלת בזה
הצפות UDP הן וולומטריות, כלומר הפתרון חייב לקרות עוד לפני שהתעבורה מגיעה בכלל לשרת שלכם. כאן נכנס לתמונה ניקוי תעבורה ברמת הרשת:
- התעבורה מנותחת בקצה הרשת, לרוב על פני מספר מרכזי נתונים.
- דפוסי חבילות זדוניות מזוהים ונחסמים עוד לפני שהם מגיעים ל-VPS שלכם.
- הגבלת קצב קובעת כמה חבילות UDP בשנייה מקור בודד יכול לשלוח.
זו בדיוק הסיבה שלהסתמך רק על האפליקציה שלכם או על כלל חומת אש בודד לא מספיק. אתם צריכים הגנה שפועלת ברמת התשתית. הרחבנו על המנגנון הזה במאמר איך נראות בפועל התקפות DDoS וולומטריות ברמת הרשת.
הצפות SYN: ניצול לחיצת היד של TCP
הצפות SYN מכוונות למשהו יסודי יותר: לחיצת היד המשולשת שפותחת כל חיבור TCP. בדרך כלל, לקוח שולח חבילת SYN, השרת עונה עם SYN-ACK, והלקוח מסיים עם ACK. פשוט למדי.
תוקף מדלג בכוונה על השלב השלישי. הוא שולח שטף של חבילות SYN, לרוב עם כתובות IP מזויפות, ואף פעם לא משלים את לחיצת היד. כל חיבור "חצי פתוח" יושב בתור החיבורים של השרת, וצורך זיכרון ומשאבי מערכת. אם עושים את זה מספיק פעמים, השרת נגמר לו המקום לחיבורים אמיתיים. זו דוגמה קלאסית להתקפת מיצוי משאבים, אם כי טכנית היא פועלת בשכבת התעבורה.
איך ההגנה מטפלת בזה
חומת אש מוגדרת היטב מטפלת בהצפות SYN בכמה טכניקות ספציפיות:
- SYN cookies: במקום לשמור מיד את מצב החיבור, השרת מקודד אותו במספר הרצף של ה-SYN-ACK ומקצה משאבים רק כשה-ACK מאשר שהחיבור אמיתי.
- הגבלת קצב חיבורים: הגבלת מספר החיבורים החדשים שכתובת IP בודדת יכולה לפתוח בשנייה.
- קיצור זמני המתנה בתור: ניקוי מהיר יותר של חיבורים חצי פתוחים כדי שלא יצטברו.
רוב מערכות ההפעלה תומכות ב-SYN cookies מטבען, אבל צריך לכייל אותן נכון. ב-VPS מנוהל, סוג כזה של הגדרה ברמת הליבה מטופל עבורכם כחלק מתהליך ההקשחה השוטף של השרת. אם אתם רוצים פירוט טכני מעמיק יותר, המאמר שלנו איך הגנה מ-DDoS ברמת האחסון עוצרת התקפות לפני שהן מגיעות לשרת שלכם מכסה את זה בפירוט רב יותר.
הצפות HTTP: תקיפה של האפליקציה עצמה
הצפות HTTP הן המורכבות מבין השלוש, כי הן נראות כמו תעבורה רגילה. אין חבילה פגומה, אין לחיצת יד מזויפת, רק כמות עצומה של בקשות GET או POST שנראות לגיטימיות ופוגעות באתר שלכם בבת אחת.
תוקפים לרוב משתמשים בבוטנטים של מכשירים אמיתיים שנפרצו, מה שאומר שהבקשות מגיעות מאלפי כתובות IP שונות עם user agents שנראים תקינים. עמוד חיפוש, טופס התחברות, או נקודת קצה של ניהול ב-WordPress יכולים להיות מותקפים עד שמסד הנתונים ותהליכי ה-PHP שלכם תקועים על 100%, גם אם שום דבר בתעבורה לא נראה זדוני על פני השטח.
איך ההגנה מטפלת בזה
מכיוון שהצפות HTTP מחקות התנהגות אמיתית, לעצור אותן דורש יותר עדינות מסתם חסימת חבילות:
- ניתוח התנהגותי: בדיקת דפוסי בקשות, תזמון וכותרות כדי לזהות בוטים שלא מתנהגים כמו דפדפנים אמיתיים.
- הגבלת קצב לפי IP ולפי סשן: הגבלת מספר הבקשות שמבקר בודד יכול לשלוח לנקודות קצה רגישות בחלון זמן קצר.
- בדיקות אתגר-תגובה: אתגרי JavaScript או CAPTCHA שמסננים בוטים פשוטים בלי להפריע למשתמשים אמיתיים.
- כללי WAF: סינון בקשות שתואמות חתימות התקפה ידועות או מכוונות לנקודות קצה פגיעות כמו עמודי התחברות וטפסי חיפוש.
חומת אש לאפליקציות web טובה עובדת כל הזמן כאן, ובודקת בקשות עוד לפני שהן מגיעות לקוד האפליקציה שלכם. זה גם המקום שבו גישה רב-שכבתית הכי חשובה, כי אין כלל בודד שתופס הכל. הרחבנו על הרעיון הזה במאמר למה הגנה רב-שכבתית על אתרים עדיפה על כל כלי בודד.
למה שכבת הגנה אחת לא מספיקה
הנקודה היא כזאת: חומת אש שמכוילת בול נגד הצפות SYN לא עושה כלום נגד הצפת HTTP. ו-WAF שמצוין בתפיסת בקשות HTTP זדוניות לא יכול לעצור התקפת UDP וולומטרית שמציפה את רוחב הפס שלכם מלכתחילה.
לכן הגנה אמיתית מ-DDoS באחסון פועלת בשכבות:
- ניקוי תעבורה ברמת הרשת תופס הצפות וולומטריות לפני שהן מגיעות לשרת שלכם.
- כיול ליבה וחומת אש מטפל בהתקפות מבוססות חיבור כמו הצפות SYN.
- סינון מודע לאפליקציה (WAF יחד עם הגבלת קצב) תופס הצפות HTTP שנראות כמו תעבורה רגילה.
בתשתית שלנו אנחנו משלבים הפחתת DDoS ברמת הרשת עם כללי חומת אש ברמת השרת שאתם יכולים לבדוק ישירות מלשונית האבטחה של השרת שלכם, כך שכלום לא נשאר קופסה שחורה. שילוב זה עם חומת אש מוגדרת כראוי, ואתם מכסים בבת אחת את שכבת הרשת, שכבת התעבורה ושכבת האפליקציה.
מה אתם יכולים לעשות עכשיו
אם אתם בודקים את ההגדרה שלכם, שאלו כמה שאלות כנות:
- האם הספק שלכם מסנן תעבורה לפני שהיא מגיעה לשרת שלכם, או רק אחרי?
- האם SYN cookies והגבלות חיבורים באמת מוגדרים, או רק זמינים תיאורטית?
- האם ה-WAF שלכם מתעדכן באופן קבוע נגד דפוסי הצפת HTTP חדשים?
אם אתם לא בטוחים, אי-הוודאות הזאת היא בעצמה התשובה. הגנה טובה מ-DDoS באחסון לא אמורה להיות משהו שאתם צריכים לקחת על אמונה, היא אמורה להיות משהו שאתם יכולים לראות ולוודא.
לסיכום
הצפות UDP מציפות את רוחב הפס שלכם. הצפות SYN ממצות את טבלת החיבורים שלכם. הצפות HTTP מציפות את לוגיקת האפליקציה שלכם. כל אחת מהן דורשת סוג הגנה שונה, וזו בדיוק הסיבה שהגנה רצינית מ-DDoS באחסון משלבת יחד ניקוי ברמת הרשת, כיול ליבה וסינון מודע לאפליקציה, במקום להסתמך על פתרון קסם אחד.