עודכן לפני חודש
פרוטוקול העברת הקבצים מעביר קבצים ברחבי האינטרנט מאז שנות ה-70 — לפני שהרשת הייתה קיימת, לפני שרוב האנשים שמעו על האינטרנט, לפני שלמדנו לחשוד בחיבורים נכנסים. ארכיטקטורת שני הפורטים שלו, אלגנטית בעת תכנונה, מתנגשת כיום עם הנחות יסוד של רשתות מחשבים מודרניות.
הבנת הסיבה שבגללה FTP משתמש בשני פורטים, ומדוע זה גורם לבעיות, מגלה מה קורה כשפרוטוקול מאריך חיים מעבר למודל האמון שבנה אותו.
שני פורטים, שני ערוצים
FTP מפריד בין שליטה לנתונים. פורט 21 מטפל בשיחה: אימות, פקודות כמו LIST ו-RETR, ניווט בתיקיות. חיבור זה נשאר פתוח לאורך כל המושב, ושומר על מצב.
פורט 20 מטפל במטען — תוכן הקבצים בפועל, רשימות תיקיות, נתונים בינאריים. הפרדה זו מאפשרת להוציא פקודות בזמן שהעברות מתבצעות, ומאפשרת לפרוטוקול לפתוח ולסגור חיבורי נתונים מבלי לשבש את ערוץ הפקודות.
ערוץ השליטה בפורט 21 מנהל משא ומתן על כל העברת נתונים: מה מועבר, כיצד להתחבר, איזה פורט לשימוש. לאחר מכן הנתונים זורמים בנפרד. עיצוב נקי לתקופתו.
מצב אקטיבי: כשהשרתים חזרו אליך
במצב FTP אקטיבי, אתה מתחבר לפורט 21 של השרת ומאמת את עצמך. כשאתה רוצה נתונים, אתה שולח פקודת PORT שאומרת, בעצם: "אני מאזין בפורט 5001 — שלח את הנתונים לשם."
השרת אז יוזם חיבור חדש מהפורט 20 שלו לפורט שציינת. הנתונים זורמים. ההעברה הושלמה.
זה עבד בצורה מצוינת באינטרנט המוקדם. למכשירים היו כתובות IP אמיתיות. הרשתות היו שטוחות. אם אמרת לשרת להתחבר אליך, הוא יכל.
אחר כך הצבנו חומות אש בכל מקום.
פקודת PORT היא FTP שאומר "התקשר אלי חזרה למספר הזה." כשאתה מאחורי חומת אש, אותו חיבור חוזר נחסם. חומת האש רואה חיבור נכנס לא מבוקש מפורט 20 של שרת כלשהו ודוחה אותו. השרת חושב שהחיבור נכשל. הלקוח ממתין לנתונים שלעולם לא יגיעו.
FTP במצב אקטיבי מת בפועל לרוב המשתמשים — לא בגלל באג, אלא מפני שהאינטרנט הפסיק לסמוך על חיבורים נכנסים.
מצב פסיבי: הפתרון
מצב פסיבי הופך את כיוון חיבור הנתונים. במקום PORT, אתה שולח PASV. השרת מגיב עם כתובת IP ופורט שהוא מאזין בהם — משהו כמו "התחבר אלי ב-10.0.0.5 פורט 52341."
עכשיו אתה יוזם את שני החיבורים: שליטה לפורט 21, נתונים לפורט שהשרת ציין. שניהם יוצאים מנקודת מבטך. חומות אש מאפשרות חיבורים יוצאים. הבעיה נפתרה.
אלא שמצב פסיבי יוצר בעיה משלו: השרת חייב להאזין על טווח של פורטים גבוהים לחיבורי נתונים נכנסים. תצורה טיפוסית פותחת פורטים 50000–50100. זה 100 נקודות כניסה אפשריות במקום שתיים. חומות האש של השרת חייבות לאפשר את כל הטווח הזה, ומרחיבות את משטח ההתקפה.
סחרנו חור אחד בחומת האש במאה חורים.
בעיית האבטחה
הבעיה העמוקה יותר של FTP אינה הפורטים — אלא הטקסט הגלוי.
כשאתה מאמת לשרת FTP, שם המשתמש והסיסמה שלך עוברים ברשת ללא הצפנה. כל מי שלוכד חבילות רואה אותם. תוכן קבצים, רשימות תיקיות, כל פקודה — הכל גלוי לכל מי שצופה.
בשנות ה-70, זה לא הדאיג אף אחד. הרשתות היו מהימנות. גורמים עוינים שמרחרחים חבילות היו נדירים.
היום, שידור פרטי כניסה בטקסט גלוי הוא פסילה. רשתות WiFi, תשתית משותפת, תוקפים מתוחכמים, תקנות ציות — הנחת הרשת המהימנה כבר לא קיימת.
FTP גם חסר אימות שלמות. TCP מבטיח שחבילות מגיעות, אבל שום דבר קריפטוגרפי לא מאשר שקבצים לא שונו בדרך. מתקפת MITM יכולה לשנות תוכן מבלי שתתגלה.
חלופות מודרניות
SFTP (פרוטוקול העברת קבצים של SSH) מעביר קבצים דרך SSH בפורט 22. למרות השם הדומה, מדובר בפרוטוקול שונה לחלוטין — ללא מורכבות שני הפורטים, ללא מצבים אקטיביים/פסיביים, ללא פרטי כניסה בטקסט גלוי. הכל קורה בתוך מושב SSH מוצפן. פורט אחד. אימות חזק. כללי חומת אש פשוטים.
FTPS מוסיף הצפנת TLS ל-FTP המסורתי. FTPS מפורש מתחיל בפורט 21 ומשדרג ל-TLS דרך פקודת AUTH. FTPS מרומז מבסס TLS מיד בפורט 990. FTPS שומר על תהליך העבודה של FTP אבל יורש את מורכבותו — עדיין צריך טווחי פורטים פסיביים, והצפנה עלולה להפריע לבחינת חומת האש.
למערכות חדשות, SFTP מנצח בפשטות. FTPS קיים עבור ארגונים עם תשתית FTP קיימת ודרישות ציות המפרטות TLS.
תצורת חומת האש
עבור מצב אקטיבי: לקוחות צריכים גישה יוצאת לפורט 21; שרתים צריכים גישה יוצאת מפורט 20 לפורטים זמניים של הלקוח. זה לעיתים נדירות עובד דרך NAT.
עבור מצב פסיבי: לקוחות צריכים גישה יוצאת לפורט 21 ולטווח הפורטים הפסיביים של השרת. שרתים צריכים גישה נכנסת לפורט 21 ולטווח הפסיבי.
חלק מחומות האש מציעות בחינת FTP (שער שכבת יישום) שצופה בערוץ השליטה ופותחת פורטים באופן דינמי לחיבורי נתונים. זה יכול לפשט את התצורה אך לפעמים שובר גרסאות מוצפנות. מנהלים רבים מבטלים אותה ומגדירים פורטים במפורש.
SFTP מפשט הכל: פורט 22, שני הכיוונים, סיום.
שאלות נפוצות על פורטי FTP
מדוע FTP משתמש בשני פורטים במקום אחד?
FTP מפריד תעבורת שליטה (פקודות, אימות) מתעבורת נתונים (תוכן קבצים). פורט 21 מטפל בשיחה; פורט 20 או פורט גבוה מטפל בהעברות. זה היה הגיוני בשנות ה-70 אבל יוצר סיבוכי חומת אש כיום.
מדוע FTP אקטיבי נכשל דרך חומות אש?
במצב אקטיבי, השרת יוזם את חיבור הנתונים ללקוח. חומות אש חוסמות חיבורים נכנסים לא מבוקשים כברירת מחדל. ניסיון החיבור של השרת מפורט 20 נחסם לפני שמגיע ללקוח.
האם FTP בטוח לשימוש?
FTP סטנדרטי מעביר פרטי כניסה ונתונים בטקסט גלוי — כל מי שלוכד תעבורת רשת רואה הכל. השתמש במקום זאת ב-SFTP או FTPS לכל יישום המודע לאבטחה.
מה ההבדל בין SFTP ל-FTPS?
SFTP פועל דרך SSH בפורט 22 — כללי חומת אש פשוטים, הצפנה חזקה, ללא מורכבות מרובת-פורטים. FTPS מוסיף TLS ל-FTP המסורתי, ושומר על ארכיטקטורת שני הפורטים. SFTP פשוט יותר; FTPS קיים לצורך תאימות לאחור.
האם דף זה היה מועיל?