סקירה כללית #
מאמר זה מסביר כיצד להעביר iRule F5 BIG-IP המשמש להגבלת גדלי העלאה של HTTP אל RELIANOID באמצעות המשולב WAF (חומת אש של אפליקציות אינטרנט) מופעל על ידי ModSecurity ו-OWASP CRS.
ה-iRule המקורי בודק:
- שיטת HTTP (
POST) Content-Lengthכותרת
וחוסם העלאות גדולות מ 200 MB עם HTTP 413 Payload Too Large תגובה.
F5 iRule מקורי #
כאשר HTTP_REQUEST { אם { [HTTP::method] eq "POST" } { קבע content_length [HTTP::header "Content-Length"] אם { $content_length ne "" ו-$content_length > 200000000 } { # דחה בקשות מעל 200 MB HTTP::respond 413 content "גודל ההעלאה חורג מהמגבלה." event disable } } }
RELIANOID גישת ההגירה #
In RELIANOID, ניתן ליישם פונקציונליות זו באמצעות:
- מודול WAF / IPDS
- כללי ModSecurity
- אינטגרציה של OWASP CRS
גישה זו מספקת:
- אכיפת אבטחה מרכזית
- רישום ונראות טובים יותר
- תחזוקה קלה יותר
- בדיקת בקשת HTTP מקורית
פריסה באמצעות ערכת כללים ידנית #
RELIANOID דוגמה לתצורת WAF #
מתחת לשביל /usr/local/relianoid/config/ipds/waf/sets/ צור קובץ conf עם התוכן:
## התחל קונפיגורציה של SecRuleEngine ב-SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:1" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:2" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:3" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:4" ## סוף קונפיגורציה של SecRule REQUEST_METHOD "POST" \ "id:910001,\phase:1,\t:none,\chain,\deny,\status:413,\msg:'גודל ההעלאה חורג מהמגבלה.',\log" SecRule REQUEST_HEADERS:Content-Length "@gt 200000000"
איך הכלל עובד #
הכלל מבצע את הלוגיקה הבאה:
REQUEST_METHOD "POST"בודק רק בקשות POST
REQUEST_HEADERS:Content-Lengthקורא את גודל ההעלאה
@gt 200000000בדיקה אם הגודל עולה על 200 מגה-בייט
deny,status:413דוחה את הבקשה
msg:'Upload size exceeds limit.'יוצר הודעת יומן ביקורת
מיפוי התנהגות שווה ערך מ-F5 iRule ל- RELIANOID WAF #
HTTP::method: REQUEST_METHOD
HTTP::header "Content-Length": REQUEST_HEADERS:Content-Length
HTTP::respond 413: deny,status:413
event disable: Immediate WAF deny
פריסה דרך WebUI #
ניתן לפרוס תצורה זו גם ישירות דרך RELIANOID ממשק משתמש אינטרנטי.
נתיב תצורת WebUI #
נווט אל IPDS > WAF > כללים
לאחר מכן צור ערכת כללים של WAF עם כלל עם 2 תנאים כפי שמוצג להלן.

בדיקת מערכות #
בדיקה עם CURL #
בקשה לדוגמה:
curl -k -X POST -H "אורך תוכן: 250000000" https://LB_VIP/upload -v
תוצאה צפויה #
התגובה צריכה להחזיר:
עומס HTTP/1.1 413 גדול מדי
ויש לחסום את הבקשה לפני שהיא מגיעה לשרת האחורי.
אימות רישום #
בדוק יומני WAF עבור:
גודל ההעלאה חורג מהמגבלה.
הערות חשובות #
תלות באורך התוכן #
כלל זה תלוי בשליחת קוד תקף של הלקוח Content-Length כותרת. אם העלאות משתמשות בקידוד העברה מפוצל או בהעלאות סטרימינג, ייתכן שיידרשו הגנות נוספות.
הגבל כתובות URL ספציפיות בלבד #
ניתן לשרשר את הכלל באמצעות אימות URI.
דוגמא:
כלל זיהוי בקשת_URI "@beginsWith /upload"
פתרון בעיות #
כלל לא מופעל #
אמת:
- WAF מופעל בחווה
- הכלל מצורף כראוי
- שיטת הבקשה היא POST
- כותרת אורך התוכן קיימת
העלאות עדיין מגיעות לקצה האחורי #
סיבות אפשריות:
- WAF לא יושם על החווה הנכונה
- בעיית תחביר הכלל
- העלאה משתמשת בקידוד מפוצל
תוצאות חיוביות שגויות #
ייתכן שחלק מהאפליקציות דורשות העלאות גדולות באופן לגיטימי.
המלצה:
- צור חריגים ספציפיים ליישום
- התאימו את הספים בזהירות
שיטות עבודה מומלצות #
- השתמש במגבלות העלאה ספציפיות ליישום
- שלב עם הגבלת קצב במידת האפשר
- ניטור יומני WAF באופן קבוע
- הימנעו מספי העלאה גבוהים שלא לצורך
- אימות התנהגות ההעלאה לאחר הפריסה
<br> סיכום #
ניתן להעביר את כללי ה-iRules של F5 המשמשים להגבלת גדלי העלאה אליהם RELIANOID שימוש בכללי WAF/ModSecurity מקוריים המשולבים עם OWASP CRS.
גישה זו מספקת:
- אכיפת מדיניות מרכזית
- רישום ונראות טובים יותר
- מדרגיות קלה יותר
- מורכבות סקריפטים מופחתת
- בדיקת בקשות מבוססות תקנים