Яка різниця між активним та пасивним FTP?


312

Може хтось скаже мені, в чому різниця між активним та пасивним FTP?
Який із них кращий?

Відповіді:


474

Активний та пасивний - це два режими роботи FTP.

Для фону FTP фактично використовує два канали між клієнтом і сервером, командні та канали даних, які насправді є окремими TCP-з'єднаннями.

Командний канал призначений для команд та відповідей, тоді як канал даних фактично передає файли.

Такий поділ інформації команди та даних на окремі канали - чудовий спосіб можливості відправляти команди на сервер, не вимагаючи чекати завершення поточної передачі даних. Відповідно до RFC, це призначено лише для підмножини команд, таких як вихід, припинення поточної передачі та отримання статусу.


В активному режимі клієнт встановлює командний канал, але сервер відповідає за встановлення каналу даних. Це насправді може бути проблемою, якщо, наприклад, клієнтська машина захищена брандмауерами і не дозволить несанкціоновано запитувати сеанси від сторонніх сторін.

У пасивному режимі клієнт встановлює обидва канали. Ми вже знаємо, що він встановлює командний канал в активному режимі, і він робить те ж саме тут.

Однак він просить сервер (на командному каналі) почати прослуховування через порт (на розсуд серверів), а не намагатися встановити з'єднання назад з клієнтом.

В рамках цього сервер також повертає клієнту номер порту, який він вибрав для прослуховування, щоб клієнт знав, як до нього підключитися.

Після того, як клієнт це знає, він може успішно створити канал даних і продовжити.

Більш детальна інформація доступна в RFC: https://www.ietf.org/rfc/rfc959.txt


1
Я не думаю, що твердження навколо порту Y є правильним, в активному режимі клієнт не визначає порт Y, сервер намагається випадковим чином вибрати порт № і намагається побачити, чи дозволить клієнт спілкування через обраний порт . Причиною цього я є те, що якщо це неправда (мій аргумент), то клієнтська сторона, навіть якщо вона стоїть за брандмауером, завжди може створити два правила протипожежної стіни - одне для вихідного з'єднання та одне для вхідного з'єднання.
arun.raj.mony

1
@arun, клієнт не обов'язково контролює брандмауер. Приклад: у корпоративних середовищах зазвичай існує брандмауер між усією компанією та зовнішнім світом, над яким клієнт із FTP має нульову потужність.
paxdiablo

У чому пасивному режимі, чому сервер надсилає клієнту випадковий порт клієнту, а не клієнт підключається безпосередньо до порту 20 сервера?
Ченбо

@paxdiablo У пасивному режимі, чому сервер присвоює випадковий порт ні та відправляє його клієнту для з'єднання даних? Чому клієнт не може безпосередньо відкрити канал даних з порту клієнта ні до порту № 20 на стороні сервера?
Зефір

1
Я задав питання тут зараз networkengineering.stackexchange.com/q/43680/37406
Зефір

166

Нещодавно я наштовхнувся на це питання на своєму робочому місці, тому думаю, що тут слід щось більше сказати. Я буду використовувати зображення, щоб пояснити, як FTP працює як додаткове джерело для попередньої відповіді.

Активний режим:

активний режим


Пасивний режим:

введіть тут опис зображення


В конфігурації активного режиму сервер намагатиметься підключитися до випадкового порту на стороні клієнта. Тож існує ймовірність, що цей порт не був би одним із заздалегідь визначених портів. В результаті, брандмауер заблокує спробу підключення до нього, і з'єднання не буде встановлено.

введіть тут опис зображення


Пасивна конфігурація не матиме цієї проблеми, оскільки клієнт буде тим, хто ініціює з'єднання. Звичайно, можливо, і на стороні сервера є брандмауер. Однак, оскільки очікується, що сервер отримає більшу кількість запитів на з'єднання порівняно з клієнтом, тоді адміністратору сервера було б логічно адаптуватися до ситуації та відкрити вибір портів для задоволення конфігурацій пасивного режиму.

Тож найкраще буде налаштувати сервер для підтримки пасивного режиму FTP. Однак пасивний режим зробить вашу систему вразливою до атак, оскільки клієнти повинні підключатися до випадкових портів сервера. Таким чином, для підтримки цього режиму не тільки, якщо ваш сервер повинен мати кілька портів, ваш брандмауер повинен також дозволяти проходити з'єднання з усіма цими портами!

Щоб пом'якшити ризики, хорошим рішенням було б вказати діапазон портів на вашому сервері, а потім дозволити лише той діапазон портів на вашому брандмауері.

Для отримання додаткової інформації, будь ласка, прочитайте офіційний документ .


Я просто здогадуюсь, яка проблема безпеки. Якщо сервер слухає той же порт (20), він не може зрозуміти, про який клієнт говорить, тому він вибирає випадковий порт і відправляє його клієнту, починаючи слухати цей порт. Коли клієнт підключається до цього порту, сервер знає, якому клієнту він належить. Але MITM достатньо підключитися до того ж клієнта. (ну, атака mitm тут все-таки хитра ...)
Daniele Cruciani,

2
Чудова відповідь, особливо інформація про проблему брандмауера
Anh Tuan

14

Перероблена версія моєї статті Режими підключення FTP (Активне проти Пасивного) :

Режим з'єднання FTP (активний або пасивний) визначає спосіб встановлення з'єднання даних. В обох випадках клієнт створює з'єднання управління TCP з командним портом сервера FTP 21. Це стандартне вихідне з'єднання, як і будь-який інший протокол передачі файлів (SFTP, SCP, WebDAV) або будь-який інший клієнтський додаток TCP (наприклад, веб-браузер ). Так, зазвичай не виникає проблем при відкритті керуючого з'єднання.

Якщо протокол FTP є складнішим порівняно з іншими протоколами передачі файлів, це передача файлів. Хоча інші протоколи використовують одне і те ж з'єднання як для управління сеансом, так і для передачі файлів (даних), протокол FTP використовує окреме з'єднання для передачі файлів і списків каталогів.

В активному режимі клієнт починає прослуховувати на випадковому порту для вхідних з'єднань даних із сервером (клієнт відправляє команду FTP, PORTщоб повідомити сервер, на якому порту він слухає). В даний час типово, що клієнт знаходиться за брандмауером (наприклад, вбудованим брандмауером Windows) або маршрутизатором NAT (наприклад, модемом ADSL), не в змозі прийняти вхідні TCP-з'єднання.

З цієї причини пасивний режим був введений і в основному використовується в наш час. Використання пасивного режиму є кращим, оскільки більшість складної конфігурації проводиться лише один раз на стороні сервера, досвідченим адміністратором, а не індивідуально на стороні клієнта (можливо) недосвідченими користувачами.

У пасивному режимі клієнт використовує керування з'єднанням для відправлення PASVкоманди на сервер, а потім отримує IP-адресу сервера та номер порту сервера від сервера, який клієнт потім використовує для відкриття з'єднання даних з IP-адресою сервера та сервером номер порту отримано.

Конфігурація мережі для пасивного режиму

У пасивному режимі більша частина конфігураційного навантаження лежить на стороні сервера. Адміністратор сервера повинен налаштувати сервер, як описано нижче.

Брандмауер та NAT на стороні FTP-сервера повинні бути налаштовані не тільки для дозволу / маршрутизації вхідних з'єднань на FTP-порт 21, але й діапазону портів для вхідних з'єднань даних. Зазвичай програмне забезпечення сервера FTP має параметр конфігурації для установки діапазону портів, які сервер буде використовувати. І той самий діапазон має бути відкритий / маршрутизований на брандмауері / NAT.

Коли FTP-сервер стоїть за NAT, він повинен знати, що це зовнішня IP-адреса, щоб він міг надати його клієнту у відповіді на PASVкоманду.

Конфігурація мережі для активного режиму

В активному режимі більша частина навантаження на конфігурацію лежить на стороні клієнта.

Брандмауер (наприклад, брандмауер Windows) та NAT (наприклад, правила маршрутизації модему ADSL) на стороні клієнта повинні бути налаштовані так, щоб дозволити / прокласти ряд портів для вхідних з'єднань даних. Щоб відкрити порти в Windows, перейдіть до Панелі управління> Система та безпека> Брандмауер Windows> Додаткові налаштування> Вхідні правила> Нове правило . Для маршрутизації портів на NAT (якщо такі є) див. Його документацію.

Коли у вашій мережі є NAT, клієнт FTP повинен знати свою зовнішню IP-адресу, яку WinSCP потрібно надати серверу FTP за допомогою PORTкоманди. Так що сервер може правильно підключитися назад до клієнта, щоб відкрити з'єднання для передачі даних. Деякі клієнти FTP здатні автоматично визначати зовнішню IP-адресу, деякі повинні бути налаштовані вручну.

Розумні брандмауери / NAT

Деякі міжмережеві стіни / NAT намагаються автоматично відкривати / закривати порти даних, перевіряючи з'єднання FTP-контролю та / або перекладаючи IP-адреси з'єднання даних у трафік з'єднання управління.

З таким брандмауером / NAT, наведена вище конфігурація не потрібна для простого незашифрованого FTP. Але це не може працювати з FTPS, оскільки трафік з'єднання управління зашифрований, а брандмауер / NAT не може перевірити його і не змінити.



1

Активний режим - клієнт видає сервер команду PORT, сигналізуючи про те, що він "активно" надасть IP-номер та номер порту, щоб відкрити З'єднання даних назад клієнту.

Пасивний режим - Клієнт видає команду PASV, щоб вказати, що він буде «пасивно» чекати, коли сервер подасть IP-номер та номер порту, після чого клієнт створить Підключення даних до сервера.

Вище є гарних відповідей, але ця публікація в блозі містить корисну графіку і дає досить ґрунтовне пояснення: https://titanftp.com/2018/08/23/what-is-the-difference-bet between-active-and -пасивний-ftp /

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.