תוכן
סקירה כללית
המאמר שלהלן מתאר מקרה של שימוש אמיתי עבור ספק שירותי אינטרנט או ספק אירוח, בו ה- Proxy ההפוך Load Balancer הפוך הוא נקודת הגישה העיקרית לכל שירותי האינטרנט הציבוריים, תצורה זו מראה עד כמה קל להגדיר WAF מתקדם וחזק. קביעת כללים על מנת לאבטח יישומי אינטרנט המבוססים בכתובות IP מקוריות ברשימה השחורה, שם וירטואליזציה מנהלת את הרשימה השחורה שלה באופן שניתן לאסור על IP ציבורי אחד להתחבר לדומיין אינטרנט כמו www.company1.com אבל מותר להתחבר www.company2.com.
אנו נתמקד במאמר בשני חלקים, בחלק הראשי תצורת פרופיל HTTPS תעבוד כפרוקסי הפוך עם רשימה של שירותים שונים, והקטע השני יסביר כיצד להגדיר תצורה של חומת אש של יישומי אינטרנט ערכת כללים שתנהל רשימה שחורה אחרת לכל שירות HTTP / S.
סביבה
התרשים הבא מתאר את פני השטח של Zevenet WAF. כפי שמוצג, השכבה הראשונה היא מודול WAF שמטרתו להבטיח בשלב מוקדם שרק בקשות בטוחות מורשות לעבור למודול איזון העומסים ואז להעביר את הבקשה לגבולות.
ראשית, ה- HTTP מארח הערכת כותרת ה- IP של הלקוח נבדקת ברשימה השחורה שהוגדרה כבר. אם מארח כותרת וכתובת ה- IP של הלקוח תואמת ואז החיבור נשמט ו האסור 403 תגובת HTTP נשלחת ללקוח, אך במקרה בו לקוח ה- IP וביקש מארח הכותרת אינה תואמת ואז התנועה מזוהה כלא זדונית ומועברת למודול איזון העומס, שם היעד נבחר על פי בקשת HTTP מארח כותרת ולבסוף מועבר לשרת ה- backend הזמין.
כאן תוכל למצוא סכמה של פנימי חומת האש של יישום האינטרנט עבור הדוגמה הנתונה.
תצורת שירות וירטואלי HTTP
הגדר אחד ייעודי כתובת IP וירטואליתבדוגמה שלנו 192.168.100.58, על ידי גלישה אל רשת> ממשקים וירטואליים> צור ממשק וירטואלי כפי שמוצג להלן:
עכשיו בואו נלך להגדיר את שירות איזון העומסים ב- HTTP, עבור אל LSLB> חוות ואז לחץ על הכפתור ליצור חוות והזן את פרטי השירות הווירטואלי כפי שמוצג להלן:
לאחר מכן לחץ על צור.
כעת לחץ על הכרטיסייה העליונה שירותים וליצור כמה שיותר שירותים כמו אתרים שונים שאתה מנהל, לחץ על הכפתור שירות חדשבמקרה שלנו, ניצור שני שירותים שונים, אחד לניהול השירות עבורו www.mycompany1.com ועוד אחד ל www.mycompany2.com.
לאחר יצירת השירות, הוסף את ה- מארח וירטואלי לסנן את העגלים כפי שמוצג בתמונה למטה.
במקרה שיש לכם כמה אתרים, עליכם להוסיף רק שירותים נוספים על מנת להגדיר שירות ייעודי אחד לניהול כל רשת מאותה כתובת IP.
כעת תצורת איזון העומסים נעשתה מאפשרת להגדיר את מודול חומת האש של יישום האינטרנט IPDS.
תצורת רשימות שחורות
אנו הולכים ליצור רשימה שחורה אחת לשירות אינטרנט על מנת להזין בכל רשימה שחורה את כתובות ה- IP הרצויות כדי לחסום את הגישה. בדוגמה שלנו, ניצור שני רשימות שחורות שונות עם השם הרשימה השחורהחברה 1 ו הרשימה השחורהחברה 2, אחד לשירות בהתאמה.
רשימה שחורה זו תישמר בנתיב /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany1.txt.
כללנו כתובות IP של 2 למטרות בדיקה, אנא שקול להוסיף כתובות IP רבות ככל הצורך. כמו כן, הקיים כבר רשימות שחורות ב IPDS ניתן להשתמש במודול.
הרשימה השחורה השנייה הזו תישמר בנתיב /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany2.txt.
קח בחשבון שברשימה השחורה הזו כללנו את כתובת ה- IP 192.168.1.191, IP זה ישמש למטרות בדיקה בלבד, משם נפעיל בקשות HTTP.
קביעת התצורה של חומת האש של יישום האינטרנט מוגדרת
מטרת תצורה זו היא לשמור על רשימות שחורות IP שונות בכל אתר, על מנת להימנע מאותה רשימה שחורה עבור כל נקודת הגישה לחווה.
אנו הולכים להגדיר א מערכת כללים, שהיא קבוצת כללים, עם שם רשימת אחסון אתרים. מערך כללים זה יורכב משני כללים פשוטים (מזהה כלל 1000 ומזהה כלל 1001 בדוגמא שלנו), כל כלל מוגדר כשידוך ופעולה, כאשר אם התנאי תואם אז הפעולה מבוצעת. בדוגמה שלנו, אנו נשתמש באותה פעולה בשני הכללים, אם התנאי תואם א דחה את הפעולה מבוצע עם א גישה 403 נדחתה תגובה.
תיכנס לאתר IPDS> WAF, ולאחר מכן לחץ על צור ערכת כללים של WAF והגדר שם תיאור כללי לכללים, בדוגמה שלנו רשימת אחסון אתרים.
קבע את התצורה של השדה שלב ברירת מחדל ל כותרות הבקשה מתקבלות. פירושו של שדה זה הוא שמודול WAF ינתח את כותרות הבקשות הנכנסות מהלקוח.
לאחר מכן עבור לכרטיסייה חוקי וליצור את הראשון כלל של סוג פעולה כפי שמוצג להלן.
כעת נוצר הכלל הראשון של מערך הכללים, מאפשר ליצור את התנאים על מנת להתאים ל- IP הלקוח ברשימה השחורה עבור כל אחד מארח כותרת. לך ל תנאים וליצור תנאי בהתאם ל REMOTE_ADDR משתנה כפי שמוצג להלן.
ואז צור תנאי נוסף עבור מארח וירטואלי התאמה לפי SERVER_NAME משתנה כדלקמן:
בשלב זה האתר הראשון שהתארח www.mycompany1.com מנהל כתובת IP של רשימת השחורים של יישום האינטרנט מהרשימה השחורה שהוגדרה כבר הרשימה השחורהחברה 1.txt.
בואו ניצור כלל נוסף לאתר השני www.mycompany2.com ולחזור על אותה תצורה כמו בתצורת הכלל הקודמת, אך במקרה זה, עליכם לשנות את SERVER_NAME ל mycompany2.com והפנו אל הדברים הבאים רשימה שחורה2.txt.
ראה את כל התצורה של ערכת הכללים המורכבת של WAF:
לבסוף, הוסף מערך כללים זה לחווה שכבר נוצרה, עבור לכרטיסייה חוות ולהעביר את החווה אירוח, בדוגמה שלנו, ל חוות מופעלות החלק כפי שהוא מוצג להלן.
כעת התחל את מערך הכללים של WAF עבור החווה, לחץ על הפעולה לְשַׂחֵק בחלק השמאלי העליון של חלון זה, והמערכת תתחיל לסנן תנועת HTTP עבור החווה אירוח.
בדיקת ערכת הכללים של חומת האש של יישום האינטרנט
IP הלקוח 192.168.1.191 יבקש את האתר http://www.mycompany1.com ו http://www.mycompany2.com ובהתאם לתצורה שלנו, מערכת WAF תאפשר חיבור לשירות הראשון עם אותו שם אך החיבור יימנע מ mycompany2.com מכיוון ש- IP זה נכלל ברשימה השחורה עם השם הרשימה השחורהחברה 2.
מכתובת IP 192.168.1.191 ל- VIP המבקשת את האתר www.mycompany1.com דרך מאזן העומסים:
root@192.168.1.191:# curl -H "Host: www.mycompany1.com" http://192.168.100.58 -v * Rebuilt URL to: http://192.168.100.58/ * Trying 192.168.100.58... * TCP_NODELAY set * Connected to 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany1.com > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 200 OK < Server: nginx/1.10.3 < Date: Tue, 10 Sep 2019 15:36:22 GMT < Content-Type: text/html < Content-Length: 11383 < Last-Modified: Thu, 13 Dec 2018 11:01:49 GMT < Connection: keep-alive < ETag: "5c123c1d-2c77" < Accept-Ranges: bytes <
מכתובת IP 192.168.1.191 ל- VIP המבקשת את האתר www.mycompany2.com דרך מאזן העומסים:
root@192.168.1.191:# curl -H "Host: www.mycompany2.com" http://192.168.100.58 -v * Rebuilt URL to: http://192.168.100.58/ * Trying 192.168.100.58... * TCP_NODELAY set * Connected to 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany2.com > User-Agent: curl/7.52.1 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 403 Request forbidden < Content-Type: text/html < Content-Length: 17 < Expires: now < Pragma: no-cache < Cache-control: no-cache,no-store < * Curl_http_done: called premature == 0 * Closing connection 0 replied forbiddenp
פעם אחת האסורה נוצרת תגובה, מודול WAF מודיע לדחייה בקובץ Syslog מאזן העומסים.
root@zva6000:# tail -f /var/log/syslog Sep 10 15:38:44 zva6000 pound: Hosting, ModSecurity: Warning. Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] Sep 10 15:38:44 zva6000 pound: Hosting, [WAF,service mycompany2, backend 192.168.100.22:80,] (7f6cfac3c700) [client 192.168.1.191] ModSecurity: Access denied with code 403 (phase 1). Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] Sep 10 15:38:44 zva6ktpl1 pound: Hosting, service mycompany2, backend 192.168.100.25:80, (7f6cfac3c700) WAF denied a request from 192.168.1.191
עכשיו אתה יכול לבנות ערכות חוקי חומת אש מותאמות אישית שלך כדי להגן על יישומי האינטרנט שלך באמצעות טכניקות בדיקת מנות עמוקות של HTTP / S.