העברת F5 iRules X-Forwarded-For סינון אל RELIANOID WAF/IPDS

צפה בקטגוריות

העברת F5 iRules X-Forwarded-For סינון אל RELIANOID WAF/IPDS

4 דק קריאה

סקירה כללית #

מאמר זה מסביר כיצד להעביר iRule של F5 BIG-IP המשמש לחסימת בקשות על סמך X-Forwarded-For כותרת HTTP לתוך RELIANOID באמצעות המשולב WAF/IPDS (מערכת למניעת וגילוי חדירות) מופעל על ידי תואם לכללי ModSecurity/OWASP.

ה-iRule המקורי בודק את X-Forwarded-For כותרת ומחזירה HTTP 410 Gone כאשר נמצאה התאמה מול רשימה של כתובות IP.

F5 iRule מקורי #

כאשר HTTP_REQUEST { אם { [HTTP::header values ​​"X-Forwarded-For"] מכיל "31.192.108.123" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "65.103.109.21" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "193.90.12.87" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "208.100.0.117" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "100.113.150.102" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "176.10.99.200" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "163.172.143.114" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "163.172.209.46" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "188.138.9.49" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "217.23.13.129" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "162.247.72.27" || [HTTP::header values ​​"X-Forwarded-For"] מכיל "194.67.208.57" || [ערכי HTTP::header "X-Forwarded-For"] מכילים "41.216.186.114" } { HTTP::respond 410 } }

RELIANOID גישת ההגירה #

In RELIANOID, ניתן ליישם לוגיקה זו באמצעות:

  • מודול WAF/IPDS
  • כללים מותאמים אישית של ModSecurity/OWASP
  • קובץ התאמת IP חיצוני

גישה זו ניתנת להרחבה וקלה יותר לתחזוקה מאשר הטמעת השוואות IP מרובות בתוך סקריפט.

מוּמלָץ RELIANOID אדריכלות #

ההגירה משתמשת ב:

  • בדיקת כותרת ה-HTTP X-Forwarded-For
  • קובץ רשימה שחורה חיצוני המכיל כתובות IP
  • התאמת IP דינמית באמצעות אופרטורים של מערך הכללים של ModSecurity/OWASP

יתרונות:

  • ניהול IP קל יותר
  • רשימה שחורה מרכזית
  • אין צורך לערוך כללים עבור כל שינוי IP
  • יכולת הרחבה טובה יותר

תצורת כלל WAF #

ניתן להגדיר את כלל ModSecurity/OWASP הבא במצב Raw בתוך מודול WAF/IPDS.

SecRule REQUEST_HEADERS:X-Forwarded-For "@ipMatchFromFile /usr/local/relianoid/config/ipds/waf/sets/xff_blacklist.data" "\ id:1001,\ msg:'התאמה מותאמת אישית',\ phase:1,\ deny,\ nolog"

איך הכלל עובד #

כלל זה מבצע את הפעולות הבאות:
REQUEST_HEADERS:X-Forwarded-Forקורא את כותרת ה-HTTP X-Forwarded-For
@ipMatchFromFileמשווה את ערך הכותרת לערך של קובץ חיצוני
xff_blacklist.txtמכיל את רשימת כתובות ה-IP החסומות
phase:1מבוצע במהלך עיבוד כותרת הבקשה
denyחוסם בקשות תואמות
nolog: מבטל רישום עבור בקשות תואמות

תצורת קובץ רשימה שחורה #

צור את קובץ הרשימה השחורה:

/usr/local/relianoid/config/ipds/waf/sets/xff_blacklist.data

תכנים לדוגמה:

31.192.108.123
65.103.109.21
193.90.12.87
208.100.0.117
100.113.150.102
176.10.99.200
163.172.143.114
163.172.209.46
188.138.9.49
217.23.13.129
162.247.72.27
194.67.208.57
41.216.186.114

הגדר את הכלל דרך ממשק המשתמש של האינטרנט #

צור את רשימת נתוני ה-IP #

צור קובץ נתוני WAF חדש במקטע IPDS > WAF > קבצים כולל תוכן רשימת ה-IP:

קובץ נתונים של רשימה שחורה של Relanoid IPDS WAF

צור את תנאי הכלל #

צור מערך חוקי WAF חדש במקטע IPDS > WAF > ערכות כללים כולל תנאי ה-IP של ההתאמה:

הפעלת כלל רשימה שחורה של Relanoid ipds waf xff

הפעל את הכלל בחווה #

הפעל את ערכת הכללים והקצה אותה לחוות הנדרשות.

הפעלת כלל רשימה שחורה של Relanoid ipds waf xff

הערה תפעולית חשובה #

כל שינוי בקובץ הרשימה השחורה דורש:

  • עצירת כלל ה-WAF
  • הפעלה מחדש של כלל ה-WAF

פעולה זו טוענת מחדש את הכלל ומחילה את רשימת ה-IP המעודכנת. פעולה זו תשפיע רק על כללי ה-WAF שנבדקו בחוות המושפעות, ולא תשפיע על התעבורה בפועל שעוברת דרך מאזן העומסים.

אימות ובדיקה #

ניתן להשתמש בפקודה הבאה כדי לאמת את התנהגות הכלל:

curl -k -H "מועבר באמצעות X עבור: כתובת IP" https://LB_VIP -v

דוגמא:

curl -k -H "מועבר X עבור: 31.192.108.123" https://192.168.1.100 -v

תוצאה צפויה #

כאשר כתובת ה-IP תואמת את הרשימה השחורה:

  • הבקשה נדחתה על ידי WAF
  • תגובת שגיאת HTTP מוחזרת

שיפור אופציונלי: החזרת HTTP 410 #

ה-iRule המקורי של F5 מחזיר במפורש:

HTTP 410 נעלם

כברירת מחדל, ערכות כללים של ModSecurity/OWASP מניעות פעולות עשויות להחזיר HTTP 403 Forbidden.

אם נדרש שוויון התנהגותי מדויק, ניתן לשפר את הכלל כדי להחזיר 410.

דוגמא:

SecRule REQUEST_HEADERS:X-Forwarded-For "@ipMatchFromFile /usr/local/relianoid/config/ipds/waf/xff_blacklist.txt" "\ id:1001,\ msg:'התאמה מותאמת אישית',\ phase:1,\ deny,\ status:410,\ nolog"

פתרון בעיות #

כלל לא מופעל #

אמת:

  • WAF/IPDS מופעל בחווה
  • הכלל נטען כהלכה
  • כותרת קיימת בבקשה
  • הכלל הופעל מחדש לאחר שינויי קובץ

בקשות שלא נחסמו #

לבדוק:

  • עיצוב IP בתוך הקובץ
  • אין רווחים מיותרים או תווים מוסתרים
  • הרשאות קבצים נכונות

כותרת חסרה #

ייתכן שחלק מפרוקסי הזרם לא ישלחו X-Forwarded-Forאימות עם:

curl -k -H "מועבר ב-X עבור: 1.2.3.4" https://LB_VIP -v

רישום נדרש לצורך פתרון בעיות #

הסר באופן זמני:

נולוג

זה מאפשר רישום של ערכות כללים של ModSecurity/OWASP למטרות ניפוי שגיאות.

שיטות עבודה מומלצות #

  • ניהול קבצים ברשימה השחורה באופן מרכזי
  • השתמש באוטומציה לעדכוני רשימה שחורה
  • בדוק מעת לעת כתובות IP חסומות
  • הגן על קבצי כללי WAF עם הרשאות מתאימות
  • העדפת קבצים חיצוניים על פני כללים קשיחים לצורך גמישות

<br> סיכום #

ביצועי F5 iRules X-Forwarded-For ניתן להעביר סינון ביעילות אל תוך RELIANOID באמצעות מודול WAF/IPDS המשולב וכללי ModSecurity.

גישה זו מספקת:

  • ניהול IP מרכזי
  • יכולת הרחבה טובה יותר
  • תחזוקה קלה יותר
  • שילוב WAF מקורי
  • מורכבות סקריפטים מופחתת

📄 הורד מסמך זה בפורמט PDF #

    דואר אלקטרוני: *

    פותח ומופעל ע"י BetterDocs