250 likes | 456 Views
פרויקט “Beaver”. הסוף למתקפות זדוניות. צוות הפרויקט : פבל רבינוביץ' דורון צוקרמן ליאור קוצ'ינסקי מנחה : גל בדישי. הפרויקט מבוסס על המחקר של מר גל בדישי, פרופ' עדית קידר מהטכניון ו פרופ' אמיר הרצברג מאונ' בר-אילן. מבוא - הבעיה. Distributed Denial-Of-Service
E N D
פרויקט “Beaver” הסוף למתקפות זדוניות צוות הפרויקט: פבל רבינוביץ' דורון צוקרמן ליאור קוצ'ינסקי מנחה: גל בדישי הפרויקט מבוסס על המחקר של מר גל בדישי, פרופ' עדית קידר מהטכניון ופרופ' אמיר הרצברגמאונ' בר-אילן
מבוא - הבעיה • Distributed Denial-Of-Service • פרויקט זה נותן מענה לבעיה זו, ומהווה מערכת הגנה מפני התקפות זדוניות.
הפתרון לבעיה - Beaver • פרויקט Beaver נועד להגן על שרתים מפני התקפת DoS ע"י יצירה של סדרת שרתי אימות המכונים ADMs . • מטרתם: בלימת ההתקפה ע"י אימות הלקוח (וסינון התוקפים) ומתן אפשרויות תקשורת טובות יותר מול השרתים, ללקוח המאומת.
העקרונות מאחורי הפרויקט: • לקוחות רבים מעוניינים לקבל שירות משרתים בודדים. • השרתים צריכים לפעול בצורה מיטבית ולמשך זמן רב ככל האפשר. • השרת לא יקצה משאבים ליצירת תקשורת מול לקוח שלא עבר אימות. • תחנות ה ADM ישמשו לאימות המשתמשים מול השרתים ,לבלימת משתמשים שאינם מאושרים לפנייה ל Servers.
העקרונות מאחורי הפרויקט (המשך): • שרתי האימות, ADM, הן תחנות זולות,מבוזרות ורבות, המבוססות על תוכנה בלבד. תידרש התקפה מסיבית ביותר ע"מ לשתק את כולם. • ריבוי תחנות אלו נועד גם לצורך חלוקת עומסי האימות של המשתמשים ביניהן. • במקרה של קריסה/ עומס יתר של שרת אימות כלשהו, לקוח יכול לבחור להתחבר לכל שרת אימות אחר הקיים ברשת, ובכך נמנע המצב של Dos עבור הלקוחות.
תרשים עקרוני ADM's 5. Admission approval Server 4. Admission Request 6. Admission completion 3. Response 2. Challenge 7. Session 1. Connection Request Skip Back Client
הלקוח - Client • זהו הממשק בו ישתמש הלקוח ע"מ ליזום תקשורת (בקשת שירות), תחילה מול שרת האימות, ADM, ולאחר האישור (authentication) גם מול השרת שיספק את השירות עצמו. • הלקוח ייזום את תחילת תהליך האימות מול ה-ADM, יספק את נתוני האימות עבורו ואז יוכל להתחבר לשרת ולקיים התקשרות (session) עם השרת.
שרת האימות – ADM Server • ה-ADM, מאמת את הלקוח מול השרת, ורק לאחר שתהליך האימות מסתיים, מאפשר ה-ADM ללקוח להתחבר לשרת. • מכיוון שה-ADM מונע תקשורת ישירה מול השרת, נמנעת הסכנה של תקיפה ישירה של השרת ע"י משתמשים זדוניים. • זהו רכיב תוכנה זול, שאותו, בניגוד לשרת –ניתן לשכפל בכמויות מספיקות, ע"מ לתת מענה לתקיפה בסדרי גודל מסיביים על חוות השרתים עליה הוא מגן.
שרת האימות – ADM Serverהמשך • הלקוח פונה תחילה אליו, ולא לשרת ע"מ לקבל תקשורת. • אם תוך זמן מסוים הנקבע מראש, ה-ADM לא יענה, יוכל הלקוח לבחור בשרת ADM אחר שיספק לו את השירות. • ריבוי התחנות נועד גם לפזר את העומס גם של לקוחות חוקיים (valid clients), שרוצים לקבל שירות.
שרת האימות – ADM Serverהמשך • אופן התקשורת והעבודה עם מבני הנתונים • החוט הראשי, הוא זה שיוצר את התקשורת מול הלקוח ומול השרת. תפקידו: • קבלת הודעות מהלקוח והשמתן בתוך מבנה הנתונים של ADM. • יצירת החוטים המשניים. • החוט המשני המטפל בלקוח • טיפול בכל המשך ההתקשרות וניהול תהליך האימות מול הלקוח. • שליחת הודעה לשרת, ע"מ לדרוש הקצאת משאבים ללקוח. • החוט המשניהמאזין לתשובות מהשרת • מוסיף אותן למבנה הנתונים המשותף, ע"מ שהחוט המשני השני, יקרא את ההודעות הללו ויטפל בהן ע"פ האלגוריתם.
שרת האימות - מבנה נתונים Did you know? MAC- Message Authentication Code
שרת ראשי - Server • נותן השירות הראשי שאליו רוצה הלוקח להתחבר. השרת מאזין לשרתי האימות, ע"מ לאפשר תקשורת מלקוח מסוים. • השרת מקצה משאבים ללקוח מסוים, רק לאחר שאותו הלקוח עבר אימות אצל ה-ADM, ואצלו. • מונע בזבוז משאבים על לקוחות זדוניים, אשר מנסים להעמיס על השרת.
שרת ראשי - Serverהמשך • אופן התקשורת והעבודה עם מבני הנתונים • החוט הראשי • מקבל הודעות מ-ADM, מכניס את ההודעות לתוך מבנה הנתונים, תוך יצירת חוטים משניים שיטפלו בהודעות עצמן. • החוט המשני, לאחר אימות ההודעה: • מוריד אותה מהתור, ושולח אישור ל-ADM, ע"מ לאפשר יצירת Session עם הלקוח. • האזנה ל-socket שבו הלקוח ישדר לו את הודעותיו.
The Admission Process הגדרה: • תהליך האימות שעובר הלקוח מול שרת האימות (ADM) ומול השרת עצמו. בסופו של התהליך יוכל הלקוח לקבל שירות מול השרת –לשלוח ולקבל מידע. • ניזכר בתרשים העקרוני
Script for example: #! /usr/bin/tcsh -f # 1 server, 1 ADM on a different machines , 1 clients for ADM on the same machine as the ADM # Expected result: normal session #Run server: ssh -i id_rsa pavel_rab@132.68.60.104 "./SERVER 4045 4 132.68.60.104 >& out_server4.txt" & #Run ADM and for each ADM run 1 Client ssh -i id_rsa pavel_rab@132.68.60.102 "./ADM 132.68.60.104 4045 2 3050 >& ADM102.txt" & ssh -i id_rsa pavel_rab@132.68.60.101 "./CLIENT 132.68.60.102 3050 0 >& Client101.txt" & #clean ssh -i id_rsa pavel_rab@132.68.60.104 "killall SERVER" ssh -i id_rsa pavel_rab@132.68.60.102 "killall ADM"
Output: Client Sending Connection Request to ADM... Sending: clientID:0,requestID:420121036,clientTS:0, MACScadm:420121037,MACScs:-1,MACSsadm:-1,nonce:-1, ADM_id:-1,serverID:-1 client ID: 0 - Sending complete. Recieving Challenge from ADM... Recieving: clientID:0,requestID:420121036,clientTS:0, MACScadm:93031992,MACScs:0,MACSsadm:0,nonce:478218229, ADM_id:-1,serverID:-1 client ID: 0 - Recieving complete. Sending Challenge Response to ADM... Sending: clientID:0,requestID:420121036,clientTS:1, MACScadm:93031993,MACScs:93031994,MACSsadm:-1,nonce:478218229, ADM_id:-1,serverID:-1 client ID: 0 - Sending complete. Recieving Admission Completion from ADM... Recieving: clientID:0,requestID:420121036,clientTS:1, MACScadm:93031997,MACScs:93031998,MACSsadm:93031997,nonce:478218229, ADM_id:2,serverID:4 client ID: 0 - Recieving complete. Sending msg to server-ID 4... Recieving msg from server-ID 4... the server says: The server is here!
Output: ADM ADM is on-line. Recieving: clientID:0,requestID:420121036,clientTS:0, MACScadm:420121037,MACScs:-1,MACSsadm:-1,nonce:-1, ADM_id:-1,serverID:-1 client ID: 0 - Recieving complete. client ID: 0 - Recieved Data from Client. client ID: 0 - Sending Challenge to the client... Sending: clientID:0,requestID:420121036,clientTS:0, MACScadm:93031992,MACScs:0,MACSsadm:0,nonce:478218229, ADM_id:-1,serverID:-1 client ID: 0 - Sending complete. Recieving: clientID:0,requestID:420121036,clientTS:1, MACScadm:93031993,MACScs:93031994,MACSsadm:-1,nonce:478218229, ADM_id:-1,serverID:-1 client ID: 0 - Recieving complete. client ID: 0 - Recieved Data from Client. client ID: 0 - Sending Admission Request to the server... Sending: clientID:0,requestID:420121036,clientTS:1, MACScadm:93031992,MACScs:93031994,MACSsadm:93031997,nonce:478218229, ADM_id:2,serverID:-1 client ID: 0 - Sending complete. Recieving: clientID:0,requestID:420121036,clientTS:1, MACScadm:-1,MACScs:93031998,MACSsadm:93031993,nonce:478218229, ADM_id:-1,serverID:4 client ID: 0 - Recieving complete. client ID: 0 - Recieved Admisson Approval from server. client ID: 0 - Sending Admisson Completion to the client... Sending: clientID:0,requestID:420121036,clientTS:1, MACScadm:93031997,MACScs:93031998,MACSsadm:93031997,nonce:478218229, ADM_id:2,serverID:4 client ID: 0 - Sending complete.
Output: Server Server is on-line. Recieving: clientID:0,requestID:420121036,clientTS:1, MACScadm:93031992,MACScs:93031994,MACSsadm:93031997,nonce:478218229, ADM_id:2,serverID:-1 client ID: 0 - Recieving complete. client ID: 0 ,ADM ID: 2 - Recieved Admission Request from ADM. client ID: 0, ADM ID: 2 - Sending Admission Approval to ADM... Sending: clientID:0,requestID:420121036,clientTS:1, MACScadm:-1,MACScs:93031998,MACSsadm:93031993,nonce:478218229, ADM_id:-1,serverID:4 client ID: 0 - Sending complete. client ID: 0, ADM ID: 2 - Recieving a msg from client... Message from clientID-0: Hello Server Sending msg to client-ID 0...
מה למדנו... • מודל שרת לקוח בפרוטוקול תקשורת UDP • עבודה בסביבה מרובת תהליכים(Multi-Threaded Environment)תחת מערכת ההפעלה Linux. • מנגנוני סנכרון והגנה על משאבים משותפים וקטעים קריטיים (בקרת מקביליות)- semaphore, mutex • עבודה עם מודולים תוך תכנון (design), ביצוע ושיתוף פעולה בין צוות התוכנה.
מה למדנו... המשך.. • עבודה עם פרוטוקול ssh. • תכנון וביצוע בדיקות QA באמצעות scripts.
סיכום • לסיכום, הפרויקט משלב סביבה מרובת תהליכים (Multi- threaded) ,תקשורת מאובטחת ומבני נתונים. • הוא תרם לנו המון, מבחינת השלבים השונים שהיינו צריכים לעבור בפרויקט: לימוד החומר התיאורטי,תכנון, ניסיונות המימוש, התגברות על הקשיים השונים ותהליך מתמיד של שיפור וליטוש של המוצר הסופי ובדיקתו. • השילוב של הדרכה מתמדת, סביבת עבודה נוחה של המעבדה והשקעה רבה הביאו להצלחת הפרויקט וסיומו.
The End תודות לצוות המעבדה והמנחה, גל בדישי