Пассивный режим FTP
Пассивный режим FTP — это один из двух основных режимов передачи данных в протоколе FTP (File Transfer Protocol), при котором инициатором установления соединения для передачи данных выступает клиент. В отличие от активного режима, где сервер сам подключается к клиенту, в пассивном режиме сервер открывает порт для прослушивания, а клиент устанавливает соединение с этим портом. Пассивный режим был разработан для решения проблем, возникающих при работе FTP через межсетевые экраны (firewalls) и системы трансляции сетевых адресов (NAT).
История возникновения
Протокол FTP был разработан в 1971 году и изначально предполагал только активный режим передачи данных. В активном режиме сервер, получив команду на передачу данных, сам инициирует соединение с клиентом с порта 20 на случайный порт клиента, указанный в команде PORT. Однако с развитием компьютерных сетей и распространением межсетевых экранов и NAT, активный режим стал создавать проблемы. Межсетевые экраны, настроенные на блокировку входящих соединений, не пропускали попытки сервера подключиться к клиенту. Для решения этой проблемы в 1994 году в спецификацию FTP (RFC 1579) был добавлен пассивный режим (PASV). Позднее, в 1997 году, в RFC 2389 был определён расширенный пассивный режим (EPSV), поддерживающий протокол IPv6.
Принцип работы
В пассивном режиме клиент инициирует как управляющее, так и все последующие соединения для передачи данных. Последовательность действий выглядит следующим образом:
- Клиент устанавливает управляющее соединение с сервером на порт 21.
- Клиент отправляет команду PASV (или EPSV для IPv6).
- Сервер открывает случайный порт (обычно в диапазоне 1024–65535) и сообщает клиенту его номер в ответе на команду PASV.
- Клиент устанавливает новое TCP-соединение с указанным портом сервера.
- По этому соединению осуществляется передача данных (загрузка или выгрузка файлов, получение списка директорий).
- После завершения передачи данных соединение закрывается. При необходимости новой передачи клиент повторяет процедуру с шага 2.
Отличие от активного режима
В активном режиме сервер сам инициирует соединение для передачи данных с клиентом, что требует от клиента открытого порта для приёма входящих соединений. В пассивном режиме клиент выступает инициатором всех соединений, что упрощает настройку межсетевых экранов на стороне клиента — достаточно разрешить исходящие соединения на порты сервера.
Классификация и варианты
Стандартный пассивный режим (PASV)
Определён в RFC 959 и RFC 1579. Используется для IPv4. Сервер сообщает клиенту IP-адрес и порт для подключения. В некоторых конфигурациях сервер может сообщать свой внутренний IP-адрес, что приводит к проблемам при работе через NAT.
Расширенный пассивный режим (EPSV)
Определён в RFC 2428. Предназначен для работы с IPv6, но также может использоваться с IPv4. В отличие от PASV, сервер сообщает только номер порта, а клиент использует тот же IP-адрес, что и для управляющего соединения. Это устраняет проблемы с NAT, связанные с передачей IP-адреса.
Применение и значение
Пассивный режим является предпочтительным способом передачи данных в современных сетях по нескольким причинам:
- Совместимость с межсетевыми экранами: клиенту не нужно открывать входящие порты, достаточно разрешить исходящие соединения.
- Работа через NAT: пассивный режим позволяет корректно работать клиентам, находящимся за устройствами NAT, без дополнительной настройки.
- Безопасность: снижается риск несанкционированного доступа к клиентской машине, так как она не принимает входящие соединения.
- Поддержка IPv6: расширенный пассивный режим (EPSV) обеспечивает корректную работу протокола FTP в сетях следующего поколения.
Пассивный режим широко используется в FTP-клиентах (FileZilla, WinSCP, Total Commander и других) и серверах (vsftpd, ProFTPD, FileZilla Server). Большинство современных FTP-клиентов по умолчанию используют пассивный режим.
Недостатки и ограничения
Несмотря на преимущества, пассивный режим имеет и некоторые недостатки:
- Нагрузка на сервер: серверу необходимо открывать и поддерживать большое количество портов для каждого клиента, что может потребовать дополнительных ресурсов и настройки.
- Конфигурация межсетевого экрана на стороне сервера: администратору сервера необходимо настроить межсетевой экран так, чтобы он пропускал входящие соединения на диапазон портов, используемых для пассивного режима.
- Проблемы с NAT на стороне сервера: если сервер находится за NAT, он может сообщить клиенту свой внутренний IP-адрес, что сделает невозможным подключение. Для решения этой проблемы сервер должен быть настроен на передачу внешнего IP-адреса.
- Безопасность: злоумышленник может попытаться подключиться к портам, открытым сервером для пассивного режима, если они не защищены должным образом.
Примеры использования
Командная строка (FTP-клиент Windows)
`` ftp> open ftp.example.com ftp> passive Пассивный режим включён. ftp> get file.txt ``
FTP-клиент FileZilla
В FileZilla пассивный режим включается в настройках: «Настройки» → «Передача» → «Пассивный режим (рекомендуется)». По умолчанию используется расширенный пассивный режим (EPSV).
Критика
Основная критика пассивного режима связана с тем, что он требует от сервера открытия большого диапазона портов, что может быть расценено как угроза безопасности. Некоторые администраторы предпочитают активный режим, если клиенты находятся в контролируемой сети без NAT. Кроме того, протокол FTP в целом, включая пассивный режим, считается устаревшим и небезопасным, так как передаёт данные (включая пароли) в открытом виде. Рекомендуется использовать защищённые версии, такие как FTPS (FTP over SSL/TLS) или SFTP (SSH File Transfer Protocol), которые также поддерживают пассивный режим.
Источники
- RFC 959 — File Transfer Protocol (1985)
- RFC 1579 — Firewall-Friendly FTP (1994)
- RFC 2428 — FTP Extensions for IPv6 and NATs (1998)
- Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley, 1994.
- Книга: «Компьютерные сети. Принципы, технологии, протоколы» (Олифер В.Г., Олифер Н.А.)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →