רוב האנשים מדמיינים מתקפת DDoS כקיר של תעבורה — מיליוני חבילות שמפגיזות שרת עד שהוא קורס. המודל הזה נכון לקטגוריה אחת של מתקפות. אבל הוא מפספס קטגוריה אחרת, הולכת וגדלה, ומסוכנת הרבה יותר.
מתקפות DDoS בשכבת האפליקציה לא נראות כמו הצפות. הן נראות כמו משתמשים אמיתיים. הן פוגעות פחות פעמים בשנייה, הן משלימות לחיצות יד TCP, הן שולחות בקשות HTTP תקינות — ועדיין יכולות להפיל אתר. לעצור אותן דורש גישה שונה לחלוטין.
ההבדל בין הצפה למתקפת שכבת אפליקציה
מתקפת DDoS נפחית — הנקראת לעיתים מתקפת Layer 3 או Layer 4 — פועלת על ידי הצפת צינור הרשת שלך או היכולת של השרת לעבד חבילות. כדי לעצור הרבה רוחב פס, צריך הרבה רוחב פס. אם הספק שלך יכול לספוג 500 Gbps והתוקף יכול לשלוח רק 100 Gbps, אתה מנצח. החשבון פשוט.
מתקפות שכבת האפליקציה, או מתקפות Layer 7, פועלות אחרת. הן מכוונות למשאבי האפליקציה שלך, לא לצינור. התוקף שולח בקשות HTTP שנראות לגיטימיות — בקשות GET לדף, בקשות POST לטופס התחברות, שאילתות חיפוש — אך שולח אותן בנפח שהשרת לא מסוגל לעמוד בו. שאילתת מסד נתונים מורכבת אחת שמופעלת על ידי בקשת HTTP אחת יכולה לצרוך הרבה יותר CPU מאשר 1,000 חבילות פשוטות שנמחקות.
לכן שרת עם חיבור רשת של 10 Gbps יכול להיפול בגלל מתקפה שמשדרת כמה מגה-ביט בלבד בשנייה. המתקפה לא ממלאת את הצינור — היא מכלה את האפליקציה.
הסברנו כיצד מתקפות נפחיות פועלות ברמת הרשת במאמר כיצד נראות מתקפות DDoS נפחיות ברמת הרשת. פוסט זה מתמקד במה שקורה כשהתוקפים עולים שכבה אחת גבוה יותר.
כיצד נראות מתקפות שכבת אפליקציה בפועל
מתקפות HTTP Flood
הצורה הנפוצה ביותר. התוקפים שולחים נפח גבוה של בקשות HTTP GET או POST, לעיתים קרובות מכוונות לכתובות URL שמפעילות פעולות יקרות בצד השרת — דפי חיפוש, מסנני מוצרים, נקודות כניסה להתחברות, או דפים שפוגעים במסד הנתונים בעוצמה. דף החיפוש של חנות מקוונת עשוי להסתדר טוב עם 100 בקשות בשנייה ממשתמשים אמיתיים. אך שלח 10,000 בקשות בשנייה דרך רשת בוטים, ומסד הנתונים יקרוס.
מתקפות Slowloris ו-Slow POST
אלו עדינות במיוחד. במקום לשלוח פרצי תעבורה מהירים, התוקף פותח חיבורים רבים ושולח נתונים לאט מאוד — מהר בדיוק כדי לשמור את החיבור פעיל, מבלי להשלים אף פעם את הבקשה. כל חיבור תופס חוט עיבוד בשרת. עם מספיק חיבורים פתוחים, לשרת אין יותר חוטים לשרת מבקרים אמיתיים.
מתקפות Slowloris יכולות לפעול עם רוחב פס קטן יחסית. זה מה שהופך אותן ליעילות כל כך נגד שרתים שאינם מוגדרים כראוי.
מתקפות עקיפת Cache
התוקפים יודעים שדפים שמורים במטמון לא לוחצים על השרת — הם מוגשים מיידית מבלי לפגוע במסד הנתונים. לכן הם מכוונים במכוון לכתובות URL שעוקפות את המטמון: הוספת מחרוזות שאילתה אקראיות, פגיעה בנקודות API שאינן מאוחסנות במטמון, או מיקוד בדפים דינמיים שאינם ניתנים לאחסון במטמון כלל. כל בקשה מאלצת הרצה מלאה של PHP ושאילתת מסד נתונים.
ניצול פרטי כניסה גנובים ופגיעה בדף ההתחברות
הצפת נקודת ההתחברות משרתת שתי מטרות עבור התוקפים: היא יכולה לפעול כמתקפת DDoS על ידי מיצוי משאבי השרת, ואם הם בר מזל, הם גם יתקלו בשילוב תקין של שם משתמש וסיסמה מרשימת פרטי כניסה שדלפו. מתקפות אלו נפוצות יותר ויותר נגד אתרי WordPress, פלטפורמות מסחר אלקטרוני, וכל אתר עם אימות משתמשים.
למה פתרונות הגנה מ-DDoS באחסון רגילים לא תמיד תופסים Layer 7
רוב פתרונות ההגנה מ-DDoS באחסון הבסיסיים פועלים בשכבת הרשת. הם מצוינים בסינון נפחי תעבורה, חסימת טווחי IP זדוניים מוכרים, ועצירת מתקפות השתקפות. אך הם לא יכולים לבדוק לעומק בקשות HTTP — זה קורה מאוחר מדי בתהליך.
כדי לעצור מתקפת Layer 7, צריך להבין את הבקשה. האם הבקשה הזו לגיטימית? האם סוכן המשתמש תואם להתנהגות דפדפן צפויה? האם ה-IP הזה מבצע 2,000 ניסיונות כניסה בדקה? האם זו שאילתת חיפוש עם מבנה חשוד? שאלות אלו דורשות בדיקה בשכבת האפליקציה — וזה בדיוק מה ש-Web Application Firewall עושה.
WAF טוב יכול להגביל קצב לנקודות ספציפיות, לאתגר לקוחות חשודים עם בדיקת טביעת אצבע של הדפדפן או אתגרי JavaScript, לחסום בקשות התואמות לחתימות מתקפה מוכרות, ולהבדיל בין אדם שגולש לבין בוט שמפגיז טופס. להסבר מעמיק יותר על אופן הפעולה, ראה מהו Web Application Firewall והאם אתה באמת זקוק לו?.
במיטבה, הגנה מ-DDoS רב-שכבתית משלבת את שניהם: הגנות ברמת הרשת לטיפול בהצפות נפחיות ובדיקה ברמת האפליקציה לתפיסת המתקפות החכמות והאיטיות שחומקות מסינונים מסורתיים.
כיצד לחזק את האפליקציה שלך מפני מתקפות Layer 7
הגבלת קצב ברמת נקודת הקצה
לא כל נקודות הקצה שוות. דף הבית שלך יכול לעמוד בהרבה תעבורה. דף ההתחברות, איפוס הסיסמה ונקודת החיפוש — לא. החל הגבלות קצב ספציפיות לכתובות URL שצורכות הרבה משאבים. מגבלה של 20 ניסיונות כניסה לכתובת IP בדקה עוצרת את רוב ניסיונות ניצול הפרטים הגנובים ללא פגיעה במשתמשים אמיתיים.
שימוש אגרסיבי במטמון
אחסן במטמון כל מה שאפשר. אם תוקף פוגע בדף שמור במטמון, השרת כמעט ולא עושה עבודה. הוצא את העיבוד בצד השרת מחוץ לנתיב המתקפה בכל מקום שניתן. אפילו אחסון חלקי במטמון — אחסון תצוגות של דפי מוצר למשתמשים שאינם מחוברים, למשל — מפחית משמעותית את ההשפעה של HTTP flood.
הוספת דפי אתגר לבקשות חשודות
בדיקות תקינות דפדפן, CAPTCHA ואתגרי JavaScript יכולים לסנן תעבורת בוטים לפני שהיא מגיעה לאפליקציה. זה לא מושלם — רשתות בוטים מתוחכמות יכולות להריץ JavaScript — אבל זה מסלק אחוז גדול מכלי המתקפה האוטומטיים. ה-WAF או שכבת ההגנה מ-DDoS באחסון שלך צריכים לתמוך בכך באופן מובנה.
הגדרת מגבלות חיבור וזמני המתנה
הגדר את שרת האינטרנט שלך לסיים חיבורים איטיים. גם nginx וגם Apache תומכים בזמני המתנה שמסיימים בקשות שלא הושלמו לאחר פרק זמן מוגדר. זוהי ההגנה העיקרית מפני מתקפות Slowloris. הגדרה כמו client_header_timeout 10s; ב-nginx אומרת שכל חיבור שאינו שולח כותרות תוך 10 שניות מנותק — ומסיים את המתקפה לפני שהיא מכלה חוטי עיבוד.
מעקב אחר חריגות בזמן אמת
לא ניתן להגיב למתקפה שאינך רואה. מעקב אחר זמינות מודיע לך כשמשהו השתבש, אך מתקפות שכבת אפליקציה לעיתים קרובות ניתן לזהות לפני שהן גורמות להפסקות מלאות — תראה זמני תגובה עולים, קצב שגיאות גדל, או עומס מסד נתונים מאמיר. התראות בזמן אמת נותנות לך הזדמנות להגיב לפני שמשתמשים מבחינים בדבר.
מה ספק האחסון שלך צריך לעשות
סביבת הגנה מ-DDoS באחסון ראויה לא צריכה לחכות שתהיה תחת מתקפה לפני שהיא פועלת. התשתית סביב האתר שלך צריכה לסנן תעבורה זדונית ברציפות — לא רק כשמתקפה מגיעה לסף מסוים.
זה אומר שהמארח שלך צריך להפעיל WAF עם עדכוני כללים פעילים, להחיל הגבלות קצב בקצה הרשת לפני שהתעבורה מגיעה לשרת שלך, ולהחזיק בתהליך תגובה לאירועי Layer 7 פעילים. אם המארח הנוכחי שלך לא יכול לספר לך מה יקרה לאתר שלך כשהוא יתמודד עם HTTP flood של 100,000 בקשות בדקה, זו שאלה שכדאי לשאול. סקירת ה-WAF כאן מסבירה כיצד סינון שכבת האפליקציה עובד בפועל.
מתקפות שכבת האפליקציה לא הולכות להיעלם. אם בכלל, הן הופכות ממוקדות יותר — תוקפים חוקרים את מבנה האתרים ומעצבים בקשות שמיועדות להיות יקרות ככל האפשר. ההגנה היא שילוב של תשתית טובה, הגדרה חכמה, וסביבת אחסון שמתייחסת להגנה מ-DDoS באחסון ברמת האפליקציה כבסיס, לא כתוספת אופציונלית.
אם אתה סקרן כיצד אבטחה ברמת האחסון משתלבת באסטרטגיית הגנה רחבה יותר, כיצד עובדת אבטחת אתרים ברמת האחסון שווה קריאה בהמשך.