Post, IMAP, SSH, Telnet

מדריך זה מעניק סקירה תמציתית על פרוטוקולי רשת מרכזיים וכלי אבטחה נפוצים.
תגלו כיצד בקשות GET ו-POST זורמות ב-HTTP וכיצד הצפנת HTTPS מגנה על הנתונים.
נבחן את ההבדל בין IMAP ל-POP3 בניהול דואר, ונראה למה SSH החליף את Telnet בחיבור מרחוק.
תקבלו היכרות עם Port Forwarding, שימוש ב-Agent Forwarding ושמירה על מפתחות בקבצי known_hosts.
לבסוף נסקור עקרונות בסיסיים של מנהרות מאובטחות, אימות מפתחות והגנות מפני מתקפות Brute Force.
הקדמה זו תכוון אתכם אל נושאי הליבה בטרם תצללו לפרטים המלאים שבמדריך.

הקדמה

בעידן המודרני, כמעט כל אינטראקציה מקוונת מבוססת על פרוטוקולי תקשורת שונים.
ההיכרות עם פרוטוקולים כגון ‪HTTP‬, ‪IMAP‬, ‪SMTP‬ ו‪SSH‬ חשובה לא רק לצרכים תפעוליים, אלא גם לאבטחת המידע ולשמירה על פרטיות.
לימוד מעמיק של תחומים אלו מהווה בסיס יציב למתעניינים בעולם הסייבר.
ידע זה רלוונטי במיוחד גם למי שעובר תהליכי הכנה למיונים גאמא סייבר.
לאורך מדריך זה נסקור את עקרונות העבודה עם פרוטוקולים נפוצים, נלמד על שיטות חיבור מאובטחות ונבין כיצד התקשורת מוצפנת ומאובטחת מפני גורמים לא רצויים.

בקשות ‪GET‬ ובקשות ‪POST‬ בפרוטוקול ‪HTTP‬

פרוטוקול ‪HTTP‬ הוא הבסיס להעברת נתונים בין דפדפנים לשרתי אינטרנט.
הוא מתבסס על מודל בקשה-תשובה: הלקוח (המחשב או הדפדפן) שולח בקשה, והשרת מחזיר תשובה.
בקשת ‪GET‬ בדרך כלל מתאימה לשליפת מידע, כאשר הפרמטרים והנתונים נשלחים בשורת ה‪URL‬ עצמה.
מצד שני, בקשת ‪POST‬ שולחת את הנתונים בגוף הבקשה וכך מאפשרת להעביר טפסים גדולים, קבצים או מידע רגיש בצורה חשופה פחות.
כאשר עובדים עם מידע רגיש, חשוב לשלב גם ‪HTTPS‬ (ערוץ מוצפן) כדי למנוע אפשרות ליירוט המידע בדרך.

אחת הסיבות שבגללן בקשת ‪GET‬ נחשבת לפחות מאובטחת, היא שהפרמטרים מופיעים בגלוי בשורת ה‪URL‬, ונשמרים בהיסטוריית הדפדפן או בלוגים של השרת.
לעומת זאת, בבקשת ‪POST‬ הנתונים אינם מופיעים ב‪URL‬, אלא נשלחים כחלק מגוף הבקשה.
כל עוד משתמשים גם בהצפנה (‪HTTPS‬), ניתן להגן על המידע מפני עיניים חטטניות.
בנוסף, כשרוצים לשלוח קבצים או תוכן מורכב, ניתן להשתמש ב‪multipart/form-data‬, שמאפשר חלוקה לקבוצות נתונים וקבצים בתוך אותה בקשה.
בחלק מהטפסים הפשוטים נעשה שימוש בפורמט ‪urlencoded‬, שנוח לנתונים טקסטואליים אך פחות מתאים לקבצים.

הבדלים בין ‪IMAP‬ ל‪POP3‬ בפרוטוקולי דואר

כאשר מדובר בגישת דואר אלקטרוני, שני הפרוטוקולים הנפוצים הם ‪IMAP‬ ו‪POP3‬.
‪POP3‬ מתמקד בעיקר בשליפה של הודעות מהשרת למחשב המקומי, לעיתים אף מוחק אותן מהשרת כברירת מחדל.
לעומת זאת, ‪IMAP‬ שומר את כל ההודעות על השרת ומסנכרן את הפעולות בין מספר מכשירים.
כך ניתן לגשת אל אותם מיילים ותיקיות מכל מכשיר, ולראות את העדכונים והפעולות בזמן אמת.
באופן הזה, ‪IMAP‬ מקל על ניהול התיקיות (Folders) בשרת, מאפשר שימוש בפקודת ‪IDLE‬ לצורך התראות על דואר חדש, ומשפר את היכולת לעבוד ממספר מכשירים במקביל.

ישנם מצבים שבהם נרצה להגן על החיבור גם כאשר לא ניתן להשתמש ביציאה מאובטחת כמו 993 (נקראת לעיתים ‪IMAPS‬).
במקרה כזה, ניתן להגדיר חיבור לטווח הסטנדרטי (למשל 143) ולפעיל ‪STARTTLS‬, שמורה לשרת וללקוח לעלות פרוטוקול הצפנה (‪TLS‬ או ‪SSL‬) מעל החיבור הקיים.
אם אין גישה ליציאה מוצפנת כלל, אפשר לעטוף את החיבור כולו במנהרת ‪SSH‬, ובכך להגן על התעבורה למרות שהפרוטוקול המקורי אינו מצפין.

ההבנה של פרוטוקולים כגון ‪IMAP‬ רלוונטית לאנשים המעוניינים להעמיק בעולם התקשורת והסייבר, וגם למי שמתכנן להצטרף ליחידה 8200, שם הידע ברשתות ופרוטוקולי תקשורת יכול לסייע מאוד.

גישה מרחוק: ‪SSH‬ לעומת ‪Telnet‬

בעבר נעשה שימוש נרחב ב‪Telnet‬ לצורך התחברות מרחוק לשרתים והפעלת פקודות, אך הוא אינו מצפין את המידע ולכן חושף שם משתמש וסיסמה לטקסט גלוי.
‪SSH‬ (Secure Shell) החליף את ‪Telnet‬ ברוב המקרים משום שהוא מצפין את כל התעבורה.
כך נמנעת אפשרות יירוט בקלות של פרטי הכניסה, והחיבור הופך למאובטח יותר.
בשימוש מודרני, ‪Telnet‬ נותר ככלי עזר לבדיקת תקינות יציאות (‪Ports‬) או בדיקות בסיסיות, אך לא מומלץ לניהול שוטף של שרתים.

‪SSH‬ אינו רק פרוטוקול להצגת טרמינל מרחוק.
הוא מאפשר גם העברת קבצים בצורה מוצפנת (באמצעות ‪SCP‬ או ‪SFTP‬), אימות מבוסס מפתחות שמקטין את הסיכון ל‪Brute Force‬, וכן אפשרויות מתקדמות כגון ‪Agent Forwarding‬, שיתוף תצוגה גרפית באמצעות ‪X11 Forwarding‬, וגם יצירת מנהרות מאובטחות (‪Port Forwarding‬ או ‪Reverse Port Forwarding‬) כדי לאפשר גישה מבוקרת לשירותים פנים-ארגוניים.

אימות מבוסס מפתחות ו‪Agent Forwarding‬

אחד הכלים החזקים של ‪SSH‬ הוא האפשרות להשתמש במפתחות הצפנה במקום בסיסמה רגילה.
תהליך זה נקרא אימות מבוסס מפתחות, או ‪Key-based Authentication‬.
בגישה זו, על השרת מאוחסן המפתח הציבורי, ועל הלקוח נשמר המפתח הפרטי.
כך גם אם תוקף מנסה לנחש סיסמה באמצעות התקפת ‪Brute Force‬, הוא לא יצליח לחדור אם אין לו את המפתח הפרטי המתאים.
בנוסף, ניתן להגדיר סיסמה למפתח הפרטי עצמו, כדי להגן מפני גניבתו מהמחשב האישי.

‪Agent Forwarding‬ מאפשר ללקוח (המשתמש) לשמור את המפתח הפרטי במקום אחד מקומי, ובכל זאת להמשיך לעבור בין שרתים מרוחקים מבלי להעתיק את המפתח עצמו לשרת הבא.
בפועל, ה‪SSH‬ Agent מבצע את החתימה הנדרשת ומאמת את הזהות מול השרתים השונים, מבלי לחשוף את המפתח הפרטי עצמו.
כך משתפרת האבטחה כאשר יש צורך להתחבר לשרשרת של שרתים מרוחקים אחד דרך השני.

ניהול זהויות ובטיחות: קבצי ‪known_hosts‬ ו‪authorized_keys‬

בכל חיבור של ‪SSH‬ למכונה מרוחקת, נשמרת טביעת האצבע (Fingerprint) של השרת בקובץ ‪known_hosts‬ בתיקיית המשתמש.
בקובץ זה יכול הלקוח לזהות אם השרת שאליו הוא מתחבר הוא אכן אותו שרת כמו קודם, או שמדובר במישהו המתחזה אליו (למשל התקפת Man-in-the-Middle).
אם זוהתה טביעת אצבע חדשה, ‪SSH‬ יזהיר את המשתמש ויבקש אישור להוסיף את השרת לרשימה.

כדי לאפשר חיבור למשתמש מסוים ללא סיסמה, ניתן להוסיף את המפתח הציבורי של המשתמש המקומי לקובץ ‪authorized_keys‬ שבשרת המרוחק.
כך, בעת התחברות, השרת מוודא שהמשתמש יכול להוכיח את החזקת המפתח הפרטי המתאים למפתח הציבורי הרשום.
המנגנון הזה מהווה בסיס לאוטומציה מאובטחת, כי מאפשר להריץ סקריפטים או תהליכים נוספים ללא צורך בהקלדת סיסמה.

כל אלו הם עקרונות חשובים גם עבור מי שמעוניין לגשת לתחומי אבטחת מידע, ובפרט כחלק ממסלול גאמא סייבר או התעמקות כללית בפרוטוקולי תקשורת.

מנהרות ותעבורה מאובטחת: ‪Port Forwarding‬, ‪Reverse Port Forwarding‬ ו‪X11‬ Forwarding

כאשר רוצים לגשת לשירות פנימי ברשת מרוחקת, ניתן להשתמש ב‪Port Forwarding‬ של ‪SSH‬ על ידי שימוש בדגל ‎-L.
כך, למשל, הפקודה הבאה ssh -L 8080:127.0.0.1:80 [email protected] תעביר את כל התעבורה ליציאה המקומית 8080 ליעד 127.0.0.1:80 דרך השרת המרוחק.
כל התקשורת תהיה מוצפנת, גם אם הפרוטוקול עצמו אינו מאובטח.

היפוך של זה הוא ‪Reverse Port Forwarding‬ (בעזרת הדגל ‎-R), שמאפשר להפנות בקשות שמגיעות ליציאה מסוימת בשרת המרוחק אל יציאה מקומית.
למשל: ssh -R 9090:localhost:80 [email protected] כעת גלישה לכתובת remote.server:9090 תגיע בפועל לlocalhost:80 במכונה המקומית.
גישה זו שימושית במיוחד כשנמצאים מאחורי ‪NAT‬ או חומת אש, ורוצים לאפשר גישה זמנית לשירות מקומי.

בנוסף, בשרתים גרפיים אפשר להשתמש ב‪X11‬ Forwarding (בעזרת הדגל ‎-X או ‎-Y).
זה אומר שהחלונות והתצוגה של תוכנות גרפיות שרצות בשרת המרוחק יופיעו על גבי התחנה המקומית, וכל זאת על גבי חיבור ‪SSH‬ מאובטח.

סיכום

במדריך זה ראינו כיצד בקשות ‪GET‬ ו‪POST‬ ב‪HTTP‬ משמשות לשליחת מידע, ואיך ניתן להגן על המידע הזה באמצעות הצפנה.
עמדנו על ההבדל בין ‪IMAP‬ ו‪POP3‬, ועל החשיבות של ‪SSH‬ לעומת ‪Telnet‬ למטרות חיבור מרחוק מאובטח.
בנוסף, למדנו על היכולות המתקדמות של ‪SSH‬ כמו ‪Agent Forwarding‬ ו‪X11 Forwarding‬, ועל המנגנונים לניהול מפתחות וזיהוי שרתים באמצעות קבצי ‪known_hosts‬ ו‪authorized_keys‬.
כל אלה מהווים נדבך מרכזי בתחום התקשורת ואבטחת המידע.

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

תודה! בזכותכם נוכל להשתפר