Протокол передачі файлів (FTP) є одним із широко використовуваних методів переміщення даних, придатним для різноманітних сценаріїв.
Існують захищені варіації FTP, такі як FTPS та SFTP, котрі мають певні відмінності у своєму функціонуванні. Ці розбіжності стосуються способу передачі інформації, рівня захищеності з’єднання та особливостей брандмауера.
Розуміння принципів дії цих протоколів та розбіжностей між ними допоможе вам обрати найбільш відповідний варіант для ваших потреб.
FTP
FTP, або протокол передачі файлів, існує вже кілька десятиліть, вперше з’явившись у RFC 114. Згодом він був стандартизований у RFC 959, який є чинним стандартом на сьогодні.
FTP використовує два канали для обміну інформацією: один для команд, а інший для даних. Для його роботи потрібні два порти – для командного та для передачі даних.
Командний канал працює на порту 21, приймаючи з’єднання від клієнтів та обробляючи команди. Цей канал залишається активним протягом усього сеансу, поки клієнт не надішле команду QUIT або сервер не розірве з’єднання з інших причин.
Канал даних використовує тимчасовий порт, який сервер (пасивний режим) або клієнт (активний режим) прослуховує. Цей канал призначений для обміну фактичною інформацією між сервером та клієнтом, включаючи списки каталогів та самі файли.
На відміну від командного каналу, канал даних залишається відкритим лише на час передачі файлу, після чого закривається. Для паралельної передачі декількох файлів або списків потрібні додаткові порти каналу даних.
FTP є незахищеним протоколом, оскільки канали команд та даних передають інформацію у незашифрованому вигляді, що робить їх вразливими до перехоплення за допомогою атак “людина посередині”.
FTP вимагає вхідного з’єднання на сервері через порт 21/tcp для командного каналу. Діапазон пасивних портів використовується для передачі файлів та списків. Процес визначення цих портів може різнитися в залежності від сервера FTP. Деталі наведені у документації. Клієнт повинен дозволити вихідне з’єднання через порт 21/tcp, а також діапазон пасивних портів, встановлених на сервері.
Аутентифікація в FTP
Інформація для аутентифікації FTP передається через командний канал під час встановлення з’єднання. Для аутентифікації можна використовувати ім’я користувача та пароль, або ж з’єднання може бути анонімним, надаючи доступ будь-кому.
Активний і пасивний режими FTP
FTP використовує активний або пасивний режим для встановлення з’єднань.
В активному режимі клієнт з’єднується з довільного порту до порту 21/tcp на сервері, і відправляє команду PORT, вказуючи порт клієнта для з’єднання. Цей порт використовуватиметься для каналу даних.
Сервер з’єднується з порту 20/tcp до вказаного клієнтом порту. Цей канал даних використовується для передачі файлів між сервером та клієнтом.
У пасивному режимі клієнт з’єднується з довільного порту до порту 21/tcp на сервері та відправляє команду PASV. Сервер відповідає випадковим портом для каналу даних. Клієнт підключається до цього порту. Далі канал використовується для передачі файлів.
У активному режимі запит на підключення ініціюється клієнтом, а запит на канал даних – сервером.
У пасивному режимі обидва запити на підключення ініціюються клієнтом. Ця відмінність впливає на те, як брандмауер дозволяє/блокує запити FTP через напрямок з’єднання (вхідне/вихідне).
FTPS
Попри готовність ризикувати незахищеною передачею даних у FTP, галузеві вимоги часто вимагають використання більш захищених альтернатив, таких як FTPS та SFTP.
У 1990-х роках, для забезпечення безпеки зв’язку в мережі, Netscape розробили протокол Secure Sockets Layer (SSL), тепер відомий як TLS. SSL був застосований до FTP, створивши FTPS (безпечний протокол передачі файлів). FTPS зазвичай використовує порт 990/tcp, але може використовувати й порт 21/tcp. Для каналу даних зазвичай використовують порт 989/tcp. Якщо порт команд 21/tcp, то порт даних повинен бути 20/tcp.
Подібно до FTP, FTPS використовує два канали: командний і даних. Канал даних може бути зашифрований або ж обидва канали для більшої безпеки.
FTPS також використовує кілька портів для каналів команд і даних. Порт 21/tcp використовується для початкового підключення та передачі інформації аутентифікації. Різні порти потрібні для налаштування каналів даних під кожен запит клієнта. FTPS також потрібен діапазон портів, дозволений у брандмауері.
Аутентифікація в FTPS
Аутентифікація в FTPS використовує ім’я користувача, пароль та сертифікат сервера для шифрування. Клієнт перевіряє довіру до сертифіката сервера перед встановленням з’єднання. Сертифікат може запитуватись у клієнта та сервера.
SFTP
На відміну від FTP та FTPS, SFTP (SSH File Transfer Protocol) — це окремий протокол, побудований на SSH (Secure Shell). За замовчуванням SFTP працює на порту 22/tcp, як і SSH, але його можна налаштувати на будь-який вільний порт.
SFTP — це захищений протокол передачі файлів, що використовує SSH для надсилання та отримання файлів. Завдяки повному шифруванню SSH, SFTP є надійним та безпечним методом передачі даних через мережу.
SFTP, на відміну від FTP та FTPS, використовує єдиний канал для передачі команд і даних, які передаються у зашифрованому вигляді, як і інформація аутентифікації.
Аутентифікація в SFTP
Аутентифікація в SFTP може використовувати ім’я користувача та пароль, але вся інформація, включаючи дані аутентифікації, передається у зашифрованому вигляді.
SFTP також підтримує аутентифікацію за допомогою пари ключів SSH, де клієнт надає приватний ключ, а сервер має відповідний відкритий ключ. Це більш безпечно, ніж ім’я користувача та пароль. Можна використовувати обидва методи для аутентифікації.
Підсумок
У цій статті розглянуто основні функції популярних протоколів передачі файлів: FTP, FTPS та SFTP, а також їх відмінності. Описано порти, які потрібно дозволити у брандмауері для налаштування сервера FTP/FTPS/SFTP та підкреслено важливість переходу на безпечніші протоколи, такі як FTPS і SFTP.
Коли в тексті згадується FTP, мається на увазі будь-який протокол, описаний у статті. FTP існує давно, і навіть захищені версії іноді називають FTP для зручності.
Вам також може бути цікаво дізнатися про найкраще програмне забезпечення FTP-сервера та FTP/SFTP-клієнти.