פְּתִיחַ
רק לפני שבוע כתבתי חיבור על הנושא המצוין בכותרת והתמודדתי עם העובדה, נניח, אין כל כך הרבה מידע חינוכי באינטרנט. בעיקר עובדות יבשות והוראות התקנה. לכן, החלטתי לתקן מעט את הטקסט ולפרסם אותו כמאמר.
מה זה FTP
FTP (פרוטוקול העברת קבצים) הוא פרוטוקול להעברת קבצים דרך רשת. זהו אחד מפרוטוקולי ה-Ethernet הבסיסיים. הופיע ב-1971 ועבד בתחילה ברשתות DARPA. נכון לעכשיו, כמו HTTP, העברת קבצים מבוססת על מודל המורכב מקבוצה של פרוטוקולי TCP/IP (Transmission Control Protocol/Internet Protocol). מוגדר ב-RFC 959.
הפרוטוקול מגדיר את הדברים הבאים:
- כיצד תתבצע בדיקת השגיאות?
- שיטת אריזת נתונים (אם נעשה שימוש באריזה)
- איך המכשיר השולח מציין שסיים הודעה?
- איך המכשיר המקבל מציין שקיבל הודעה?
תקשורת בין לקוח לשרת
בואו נסתכל מקרוב על התהליכים המתרחשים במהלך פעולת FTP. החיבור מאותחל על ידי מתורגמן הפרוטוקול של המשתמש. המרכזייה נשלטת באמצעות ערוץ בקרה בתקן TELNET. פקודות FTP נוצרות על ידי מתורגמן הפרוטוקול של המשתמש ונשלחות לשרת. תגובות השרת נשלחות למשתמש גם דרך ערוץ הבקרה. באופן כללי, למשתמש יש את היכולת ליצור קשר עם מתורגמן הפרוטוקול של השרת ובאמצעים אחרים מלבד המתורגמן של המשתמש.
המאפיין העיקרי של FTP הוא שהוא משתמש בחיבורים כפולים. אחת מהן משמשת לשליחת פקודות לשרת ומתרחשת כברירת מחדל דרך יציאת TCP 21, אותה ניתן לשנות. חיבור הבקרה קיים כל עוד הלקוח מתקשר עם השרת. ערוץ הבקרה חייב להיות פתוח בעת העברת נתונים בין מכונות. אם הוא סגור, העברת הנתונים נעצרת. דרך השניה מתרחשת העברת נתונים ישירה. הוא נפתח בכל פעם שמתרחשת העברת קבצים בין הלקוח לשרת. אם מספר קבצים מועברים בו זמנית, כל אחד מהם פותח ערוץ שידור משלו.
FTP יכול לפעול במצב אקטיבי או פסיבי, הבחירה בו קובעת כיצד נוצר החיבור. במצב פעיל, הלקוח יוצר חיבור בקרת TCP עם השרת ושולח את כתובת ה-IP שלו ומספר יציאת לקוח שרירותי לשרת, ולאחר מכן ממתין שהשרת יתחיל חיבור TCP עם כתובת ומספר יציאה אלו. במקרה שהלקוח נמצא מאחורי חומת אש ואינו יכול לקבל חיבור TCP נכנס, ניתן להשתמש במצב פסיבי. במצב זה, הלקוח משתמש בזרימת הבקרה כדי לשלוח פקודת PASV לשרת, ולאחר מכן מקבל מהשרת את כתובת ה-IP ומספר היציאה שלו, שבהם הלקוח משתמש לאחר מכן כדי לפתוח זרימת נתונים מהיציאה השרירותית שלו.
ייתכן שהנתונים יועברו למחשב שלישי. במקרה זה, המשתמש מארגן ערוץ בקרה עם שני שרתים ומארגן ערוץ נתונים ישיר ביניהם. פקודות בקרה עוברות דרך המשתמש, והנתונים עוברים ישירות בין השרתים.
בעת העברת נתונים ברשת, ניתן להשתמש בארבעה ייצוגי נתונים:
- ASCII - משמש לטקסט. הנתונים מומרים, במידת הצורך, מייצוג התווים על המארח השולח ל"שמונה סיביות ASCII" לפני השידור, ו(שוב, אם יש צורך) לייצוג התווים על המארח המקבל. בפרט, תווים בשורה חדשה משתנים. כתוצאה מכך, מצב זה אינו מתאים לקבצים המכילים יותר מסתם טקסט רגיל.
- מצב בינארי - המכשיר השולח שולח כל קובץ בייט אחר בייט, והנמען מאחסן את זרם הביטים עם הקבלה. תמיכה במצב זה הומלצה עבור כל יישומי ה-FTP.
- EBCDIC - משמש להעברת טקסט רגיל בין מארחים בקידוד EBCDIC. אחרת, מצב זה דומה למצב ASCII.
- מצב מקומי - מאפשר לשני מחשבים עם הגדרות זהות לשלוח נתונים בפורמט משלהם מבלי להמיר ל-ASCII.
ניתן לבצע העברת נתונים בכל אחד משלושה מצבים:
- מצב זרם - הנתונים נשלחים כזרם רציף, המשחרר FTP מביצוע כל עיבוד. במקום זאת, כל העיבוד נעשה על ידי TCP. אין צורך במחוון סוף הקובץ פרט להפרדת הנתונים לרשומות.
- מצב חסימה - FTP מפרק את הנתונים למספר בלוקים (גוש כותרת, מספר בתים, שדה נתונים) ולאחר מכן מעביר אותם ל-TCP.
- מצב דחיסה - הנתונים נדחסים באמצעות אלגוריתם בודד (בדרך כלל על ידי קידוד אורכי ריצה).
שרת FTP הוא שרת המספק את היכולת להשתמש בפרוטוקול העברת הקבצים. יש לו תכונות מסוימות שמבדילות אותו משרתי אינטרנט רגילים:
- נדרש אימות משתמש
- כל הפעולות מבוצעות במהלך הפגישה הנוכחית
- יכולת לבצע פעולות שונות עם מערכת הקבצים
- ערוץ נפרד משמש לכל חיבור
לקוח FTP הוא תוכנה המאפשרת לך להתחבר לשרת מרוחק באמצעות FTP וגם לבצע בו את הפעולות הדרושות עם אלמנטים של מערכת הקבצים. ייתכן שהלקוח הוא דפדפן, שבשורת הכתובת שלו עליך להזין את הכתובת, שהיא הנתיב לספרייה או קובץ ספציפיים בשרת המרוחק, בהתאם לתרשים הבלוק הכללי של כתובת האתר:
ftp://user:pass@address:port/directory/file
עם זאת, שימוש בדפדפן אינטרנט בהקשר זה יאפשר לך רק להציג או להוריד את הקבצים המעניינים. על מנת לנצל את כל היתרונות של FTP, עליך להשתמש בתוכנה מיוחדת כלקוח.
אימות FTP משתמש בסכימת שם משתמש/סיסמה כדי להעניק גישה. שם המשתמש נשלח לשרת עם הפקודה USER, והסיסמה נשלחת עם הפקודה PASS. אם המידע שסופק על ידי הלקוח יתקבל על ידי השרת, אז השרת ישלח הזמנה ללקוח וההפעלה מתחילה. משתמשים יכולים, אם השרת תומך בתכונה זו, להיכנס מבלי לספק אישורים, אך השרת יכול להעניק גישה מוגבלת רק עבור הפעלות כאלה.
המארח המספק את שירות ה-FTP יכול לספק גישת FTP אנונימית. משתמשים נכנסים בדרך כלל עם "אנונימי" (עשוי להיות רגיש לאותיות גדולות בשרתי FTP מסוימים) כשם המשתמש שלהם. למרות שבדרך כלל משתמשים מתבקשים לספק את כתובת הדואר האלקטרוני שלהם במקום סיסמה, לא מתבצע אימות בפועל. מארחי FTP רבים המספקים עדכוני תוכנה תומכים בגישה אנונימית.
דיאגרמת פרוטוקול
ניתן להמחיש את האינטראקציה בין לקוח לשרת במהלך חיבור FTP באופן הבא:

FTP מאובטח
FTP לא נועד במקור להיות מאובטח, מכיוון שהוא נועד לתקשורת בין מתקנים וסוכנויות צבאיות מרובות. אך עם התפתחותו והתפשטותו של האינטרנט, הסכנה לגישה לא מורשית גדלה פעמים רבות. היה צורך להגן על שרתים מפני סוגים שונים של התקפות. במאי 1999, מחברי RFC 2577 סיכמו את הפגיעויות ברשימת הבעיות הבאה:
- התקפות נסתרות (התקפות הקפצה)
- התקפות זיוף
- התקפות כוח אכזריות
- לכידת מנות, רחרוח
- גניבת נמל
ל-FTP רגיל אין את היכולת להעביר נתונים בצורה מוצפנת, וכתוצאה מכך שמות משתמש, סיסמאות, פקודות ומידע אחר ניתנים ליירט בקלות ובקלות על ידי התוקפים. הפתרון הרגיל לבעיה זו הוא להשתמש בגרסאות "מאובטחות", מוגנות TLS של הפרוטוקול הפגיע (FTPS) או פרוטוקול אחר, מאובטח יותר, כגון SFTP/SCP, המסופקים עם רוב יישומי פרוטוקול Secure Shell.
FTPS
FTPS (FTP + SSL) היא הרחבה של פרוטוקול העברת הקבצים הסטנדרטי שמוסיפה לפונקציונליות הבסיסית שלו יצירת הפעלות מוצפנות באמצעות פרוטוקול SSL (Secure Sockets Layer). כיום, ההגנה מסופקת על ידי ה-TLS האנלוגי המתקדם יותר (Transport Layer Security).
SSL
פרוטוקול SSL הוצע על ידי Netscape Communications בשנת 1996 כדי להבטיח את האבטחה והפרטיות של חיבורי האינטרנט. הפרוטוקול תומך באימות לקוח ושרת, אינו תלוי באפליקציה, ושקוף לפרוטוקולי HTTP, FTP ו-Telnet.
פרוטוקול SSL Handshake מורכב משני שלבים: אימות שרת ואימות לקוח אופציונלי. בשלב הראשון, השרת מגיב לבקשת הלקוח על ידי שליחת פרמטרי האישור וההצפנה שלו. לאחר מכן הלקוח יוצר מפתח ראשי, מצפין אותו במפתח הציבורי של השרת ושולח אותו לשרת. השרת מפענח את המפתח הראשי עם המפתח הפרטי שלו ומאמת את עצמו ללקוח על ידי החזרת הודעה מאומתת על ידי המפתח הראשי של הלקוח.
הנתונים הבאים מוצפנים ומאומתים באמצעות מפתחות הנגזרים ממפתח ראשי זה. בשלב השני, שהוא אופציונלי, השרת שולח בקשה ללקוח, והלקוח מאמת את עצמו לשרת על ידי החזרת הבקשה עם חתימה דיגיטלית משלו ותעודת מפתח ציבורי.
SSL תומך במגוון אלגוריתמים קריפטוגרפיים. במהלך הקמת התקשורת, נעשה שימוש במערכת ההצפנה של המפתח הציבורי RSA. לאחר החלפת המפתחות, נעשה שימוש בצפנים רבים ושונים: RC2, RC4, IDEA, DES ו-TripleDES. נעשה שימוש גם ב-MD5 - אלגוריתם ליצירת תקציר הודעות. התחביר עבור אישורי מפתח ציבורי מתואר ב-X.509.
אחד היתרונות החשובים של SSL הוא עצמאותו המלאה של פלטפורמת תוכנה. הפרוטוקול פותח על פי עקרונות הניידות, והאידיאולוגיה של בנייתו אינה תלויה ביישומים בהם נעשה בו שימוש. בנוסף, חשוב שגם פרוטוקולים אחרים יכולים להיות מונחים בשקיפות על גבי פרוטוקול SSL; או כדי להגביר עוד יותר את מידת ההגנה על זרימות מידע יעד, או כדי להתאים את היכולות ההצפנה של SSL למשימה אחרת, מוגדרת היטב.
חיבור SSL

לערוץ המאובטח שמספק SSL יש שלושה מאפיינים עיקריים:
- הערוץ הוא פרטי. ההצפנה משמשת עבור כל ההודעות לאחר דיאלוג פשוט המשמש לקביעת המפתח הסודי.
- הערוץ מאומת. צד השרת של השיחה מאומת תמיד, בעוד שצד הלקוח מאומת באופן אופציונלי.
- הערוץ אמין. העברת הודעות כוללת בדיקת תקינות (באמצעות ה-MAC).
תכונות של FTPS
ישנם שני יישומים של FTPS, תוך שימוש בשיטות שונות לספק אבטחה:
- השיטה המרומזת כוללת שימוש בפרוטוקול ה-SSL הסטנדרטי כדי ליצור הפעלה לפני שליחת נתונים, אשר בתורו, שובר את התאימות עם לקוחות ושרתים FTP רגילים. עבור תאימות לאחור עם לקוחות שאינם תומכים ב-FTPS, יציאת TCP 990 משמשת לחיבור הבקרה ו-989 משמשת להעברת נתונים. פעולה זו שומרת על יציאה 21 הסטנדרטית עבור פרוטוקול FTP. שיטה זו נחשבת למיושנת.
- מפורש הוא הרבה יותר נוח, מכיוון שהוא משתמש בפקודות FTP סטנדרטיות, אך מצפין את הנתונים בעת תגובה, מה שמאפשר לך להשתמש באותו חיבור בקרה עבור FTP ו-FTPS. על הלקוח לבקש במפורש העברת נתונים מאובטחת מהשרת, ולאחר מכן לאשר את שיטת ההצפנה. אם הלקוח אינו מבקש העברה מאובטחת, לשרת FTPS יש את הזכות לשמור או לסגור את החיבור הלא מאובטח. מנגנון אימות ואבטחת נתונים נוסף תחת RFC 2228 הכולל את הפקודה החדשה FTP AUTH. למרות שתקן זה אינו מגדיר במפורש מנגנוני אבטחה, הוא מציין כי חיבור מאובטח חייב להיות יזום על ידי הלקוח באמצעות האלגוריתם המתואר לעיל. אם חיבורים מאובטחים אינם נתמכים על ידי השרת, יש להחזיר קוד שגיאה של 504. לקוחות FTPS יכולים לקבל מידע על פרוטוקולי האבטחה הנתמכים על ידי השרת באמצעות פקודת FEAT, עם זאת, השרת אינו נדרש לחשוף את רמות האבטחה שלו. תומך. פקודות ה-FTPS הנפוצות ביותר הן AUTH TLS ו-AUTH SSL, המספקות אבטחת TLS ו-SSL, בהתאמה.
SFTP
SFTP (Secure File Transfer Protocol) הוא פרוטוקול העברת קבצים בשכבת יישומים הפועל על גבי ערוץ מאובטח. לא להתבלבל עם (Simple File Transfer Protocol), שיש לו אותו קיצור. אם FTPS הוא פשוט הרחבה של FTP, אז SFTP הוא פרוטוקול נפרד ולא קשור שמשתמש ב-SSH (Secure Shell) כבסיס שלו.
Shell המאובטח
הפרוטוקול פותח על ידי אחת מקבוצות IETF בשם Secsh. תיעוד העבודה של פרוטוקול ה-SFTP החדש לא הפך לתקן רשמי, אלא החל לשמש באופן פעיל לפיתוח יישומים. לאחר מכן, פורסמו שש גרסאות של הפרוטוקול. אולם העלייה ההדרגתית בפונקציונליות בו הביאה לכך שביום 14 הוחלט להפסיק את העבודה על פיתוח הפרוטוקול עקב השלמת המשימה העיקרית של הפרויקט (פיתוח SSH) והחוסר ברמת מומחה מספיק כדי לעבור לפיתוח של פרוטוקול מלא של מערכת קבצים מרוחקת.
SSH הוא פרוטוקול רשת המאפשר שליטה מרחוק על מערכת ההפעלה ומנהור של חיבורי TCP (למשל להעברת קבצים). דומה בפונקציונליות לפרוטוקולי Telnet ו-rlogin, אך בניגוד אליהם, הוא מצפין את כל התעבורה, כולל סיסמאות משודרות. SSH מאפשר בחירה בין אלגוריתמי הצפנה שונים. לקוחות SSH ושרתי SSH זמינים עבור רוב מערכות ההפעלה ברשת.
SSH מאפשר להעביר בצורה מאובטחת כמעט כל פרוטוקול רשת אחר בסביבה לא מאובטחת. כך, אתה לא יכול רק לעבוד מרחוק במחשב שלך דרך מעטפת הפקודה, אלא גם להעביר זרם אודיו או וידאו (לדוגמה, ממצלמת אינטרנט) בערוץ מוצפן. SSH יכול גם להשתמש בדחיסה של נתונים משודרים להצפנה שלאחר מכן, וזה נוח, למשל, להפעלה מרחוק של לקוחות X WindowSystem.
הגרסה הראשונה של הפרוטוקול, SSH-1, פותחה ב-1995 על ידי החוקר Tatu Ulönen מאוניברסיטת הלסינקי לטכנולוגיה (פינלנד). SSH-1 נכתב כדי לספק פרטיות רבה יותר מאשר פרוטוקולי rlogin, telnet ו-rsh. בשנת 1996 פותחה גרסה מאובטחת יותר של הפרוטוקול, SSH-2, שאינה תואמת ל-SSH-1. הפרוטוקול זכה לפופולריות רבה עוד יותר, ועד שנת 2000 היו לו כשני מיליון משתמשים. נכון לעכשיו, המונח "SSH" פירושו בדרך כלל SSH-2, כי הגרסה הראשונה של הפרוטוקול כמעט ואינה בשימוש עקב ליקויים משמעותיים. בשנת 2006 אושר הפרוטוקול על ידי קבוצת העבודה של IETF כתקן אינטרנט.
ישנם שני יישומים נפוצים של SSH: פרטי מסחרי וקוד פתוח בחינם. המימוש החינמי נקרא OpenSSH. עד 2006, 80% מהמחשבים באינטרנט השתמשו ב-OpenSSH. היישום הקנייני פותח על ידי SSH Communications Security, חברה בת בבעלות מלאה של Tectia Corporation, והוא בחינם לשימוש לא מסחרי. יישומים אלה מכילים כמעט את אותה קבוצה של פקודות.
פרוטוקול SSH-2, בניגוד לפרוטוקול telnet, עמיד בפני התקפות האזנה לתעבורה ("הרחה"), אך אינו עמיד בפני התקפות אדם-באמצע. פרוטוקול SSH-2 עמיד גם בפני התקפות חטיפת הפעלה, מכיוון שאי אפשר להצטרף או לחטוף הפעלה שכבר הוקמה.
כדי למנוע התקפות של אדם באמצע בעת חיבור למארח שהמפתח שלו עדיין לא ידוע ללקוח, תוכנת הלקוח מציגה למשתמש "טביעת אצבע של מפתח". מומלץ לבדוק היטב את "תמונת המפתח" שמוצגת על ידי תוכנת הלקוח עם תמונת מפתח השרת, רצוי שתתקבל דרך ערוצי תקשורת אמינים או באופן אישי.
תמיכת SSH זמינה בכל המערכות דמויות UNIX, ולרובן יש לקוח ושרת ssh ככלי שירות סטנדרטיים. ישנם יישומים רבים של לקוחות SSH עבור מערכות הפעלה שאינן UNIX. הפרוטוקול זכה לפופולריות רבה לאחר פיתוח נרחב של מנתחי תעבורה ושיטות לשיבוש פעולת הרשתות המקומיות, כפתרון חלופי לפרוטוקול Telnet הלא מאובטח לניהול צמתים חשובים.
תקשורת באמצעות SSH
כדי לעבוד באמצעות SSH, אתה צריך שרת SSH ולקוח SSH. השרת מאזין לחיבורים ממכונות לקוח, וכאשר נוצר חיבור, מבצע אימות, ולאחר מכן הוא מתחיל לתת שירות ללקוח. הלקוח משמש לכניסה למחשב מרוחק וביצוע פקודות.

השוואה עם FTPS
הדבר העיקרי שמבדיל את SFTP מ-FTP ו-FTPS סטנדרטיים הוא ש-SFTP מצפין לחלוטין את כל הפקודות, שמות המשתמש, הסיסמאות ומידע סודי אחר.
גם פרוטוקולי FTPS וגם SFTP משתמשים בשילוב של אלגוריתמים אסימטריים (RSA, DSA), אלגוריתמים סימטריים (DES/3DES, AES, Twhofish וכו'), כמו גם אלגוריתם חילופי מפתחות. לצורך אימות, FTPS (או ליתר דיוק, SSL/TLS על FTP) משתמש בתעודות X.509, בעוד ש-SFTP (פרוטוקול SSH) משתמש במפתחות SSH.
אישורי X.509 כוללים מפתח ציבורי וקצת מידע על תעודת הבעלים. מידע זה מאפשר, לעומת זאת, לוודא את תקינות התעודה עצמה, את האותנטיות ואת בעל התעודה. לאישורי X.509 יש מפתח פרטי תואם, שלרוב מאוחסן בנפרד מהאישור מסיבות אבטחה.
מפתח SSH מכיל רק את המפתח הציבורי (המפתח הפרטי המתאים נשמר בנפרד). הוא אינו מכיל מידע על בעל המפתח. חלק מהטמעות SSH משתמשות בתעודות X.509 לאימות, אך הן אינן מאמתות את כל שרשרת האישורים - רק המפתח הציבורי משמש (מה שהופך את האימות הזה לבלתי שלם).
מסקנה
פרוטוקול ה-FTP ללא ספק עדיין ממלא תפקיד חשוב באחסון והפצה של מידע ברשת למרות גילו המכובד. זהו פרוטוקול נוח, רב תכליתי וסטנדרטי. ארכיוני קבצים רבים נבנו על בסיסו, שבלעדיהם עבודה טכנית לא תהיה כל כך יעילה. בנוסף, קל להגדיר, ותוכנות שרת ולקוח קיימות כמעט לכל הפלטפורמות הנוכחיות והלא כל כך עדכניות.
בתורו, הגרסאות המוגנות שלו פותרות את בעיית הסודיות של הנתונים המאוחסנים והמועברים בעולם המודרני. לשני הפרוטוקולים החדשים יש את היתרונות והחסרונות שלהם והם משרתים תפקידים מעט שונים. באותם אזורים בהם יש צורך בארכיון קבצים, עדיף להשתמש ב-FTPS, במיוחד אם כבר נעשה בו שימוש ב-FTP הקלאסי בעבר. SFTP פחות נפוץ בגלל חוסר ההתאמה שלו לפרוטוקול הישן, אך הוא מאובטח יותר ובעל פונקציונליות רבה יותר, מכיוון שהוא חלק ממערכת הניהול מרחוק.
רשימת מקורות
מקור: www.habr.com
