Активный режим FTP
Активный режим FTP — это один из двух основных способов установки соединения между клиентом и сервером в протоколе передачи файлов (FTP, File Transfer Protocol), при котором инициатором открытия канала данных выступает сервер, а не клиент. В отличие от пассивного режима (PASV), в активном режиме сервер самостоятельно подключается к клиенту для передачи данных, что накладывает определённые требования к сетевой конфигурации, особенно при наличии межсетевых экранов (файрволов) и технологий трансляции сетевых адресов (NAT).
Принцип работы
Протокол FTP использует два логически разделённых соединения: управляющее (командное) и канал данных. Управляющее соединение всегда инициируется клиентом и служит для передачи команд и ответов (например, LOGIN, LIST, RETR, STOR). Канал данных используется для непосредственной передачи файлов или списка каталогов.
В активном режиме последовательность действий выглядит следующим образом:
- Клиент устанавливает управляющее соединение с сервером на порт 21 (стандартный порт FTP-управления). При этом клиент использует временный (эпизодический) порт, обычно в диапазоне от 49152 до 65535.
- После аутентификации и начала сессии, когда требуется передача данных (например, загрузка или скачивание файла), клиент отправляет серверу команду
PORT, в которой указывает свой IP-адрес и номер порта, на котором он ожидает входящее соединение от сервера. - Сервер, получив команду
PORT, инициирует новое TCP-соединение с указанного клиентом адреса и порта. Для этого сервер использует свой порт 20 (стандартный порт FTP-данных). - После установления канала данных происходит передача файла или списка каталогов. По завершении передачи канал данных закрывается, но управляющее соединение остаётся активным для последующих команд.
Отличия от пассивного режима
Основное различие между активным и пассивным режимами заключается в том, кто инициирует соединение для передачи данных:
| Характеристика | Активный режим | Пассивный режим |
|---|---|---|
| Инициатор канала данных | Сервер | Клиент |
| Порт сервера для данных | 20 (фиксированный) | Временный порт (обычно >1024) |
| Порт клиента для данных | Временный порт (указывается клиентом) | Временный порт (выбирается клиентом) |
| Требования к клиенту | Должен принимать входящие соединения (нет NAT/файрвола) | Не требует входящих соединений |
| Требования к серверу | Не требует специальной настройки файрвола | Должен разрешить входящие соединения на диапазон портов |
| Распространённость | Исторически первый, но менее популярен | Стандарт для современных клиентов и серверов |
Проблемы и ограничения
Активный режим FTP имеет ряд существенных недостатков, которые привели к его вытеснению пассивным режимом в большинстве современных сетей:
- Проблемы с NAT (Network Address Translation). Если клиент находится за NAT-устройством (например, домашним роутером), его локальный IP-адрес, указанный в команде
PORT, не маршрутизируется из внешней сети. Сервер пытается подключиться к частному адресу (например, 192.168.1.10), что приводит к неудаче. Для решения этой проблемы требуется поддержка FTP-ALG (Application Layer Gateway) на маршрутизаторе, что часто небезопасно и нестабильно. - Блокировка межсетевыми экранами. Многие корпоративные и домашние файрволы настроены на блокировку входящих соединений. Поскольку активный режим требует, чтобы клиент принимал входящее соединение от сервера на случайном порту, это часто воспринимается как попытка несанкционированного доступа. Администраторам приходится вручную открывать диапазон портов для FTP-клиентов.
- Необходимость использования порта 20. Хотя стандарт предписывает серверу использовать порт 20 для данных, на практике это не всегда обязательно и может быть изменено настройками сервера. Однако традиционно это требование создаёт дополнительные сложности при настройке серверного файрвола.
История и развитие
Активный режим был первым и единственным режимом работы FTP, описанным в оригинальной спецификации протокола (RFC 959, 1985 год). В то время сеть Интернет была небольшой, и большинство компьютеров имели реальные IP-адреса, а NAT и агрессивные файрволы практически не использовались. С ростом сети и появлением домашних маршрутизаторов проблемы активного режима стали очевидны.
В ответ на это был разработан пассивный режим (команда PASV), который был добавлен в протокол как расширение. В пассивном режиме клиент сам инициирует соединение для данных, что решает проблемы с NAT и файрволами. Несмотря на это, активный режим остаётся востребованным в некоторых сценариях, например, при настройке FTP-серверов в изолированных сетях, где нет NAT, или при использовании устаревшего программного обеспечения.
Применение в современных условиях
В настоящее время активный режим FTP используется крайне редко в публичных сетях. Основные случаи его применения:
- Локальные сети (LAN). Внутри корпоративной сети, где нет NAT и файрволы настроены на разрешение внутреннего трафика, активный режим может работать без проблем.
- Устаревшие системы. Некоторые старые FTP-клиенты и серверы (например, в промышленных или встроенных системах) могут поддерживать только активный режим.
- Специфические конфигурации. В некоторых случаях администраторы сознательно выбирают активный режим для повышения контроля над трафиком, так как сервер сам решает, когда инициировать соединение.
- FTP через SSL/TLS (FTPS). В активном режиме FTPS может быть более предсказуемым с точки зрения настройки файрвола, так как сервер использует фиксированный порт 20.
Большинство современных FTP-клиентов (FileZilla, WinSCP, curl) по умолчанию используют пассивный режим, но позволяют переключиться на активный в настройках.
Безопасность
Активный режим сам по себе не является более или менее безопасным, чем пассивный. Безопасность FTP-сессии в первую очередь зависит от используемого механизма аутентификации и шифрования. Однако с точки зрения сетевой безопасности активный режим создаёт дополнительные сложности:
- Усложнение правил файрвола. Администраторам приходится разрешать входящие соединения на случайные порты клиентов, что увеличивает поверхность атаки.
- Риск спуфинга. Команда
PORTможет быть подделана злоумышленником, что потенциально позволяет перенаправить поток данных на другой хост. Для защиты от этого используются современные расширения протокола (например, командаEPRTиз RFC 2428).
Источники
- RFC 959 — File Transfer Protocol (1985)
- RFC 2428 — FTP Extensions for IPv6 and NATs (1998)
- RFC 1579 — Firewall-Friendly FTP (1994)
- Стивенс, У. Р. «TCP/IP. Сеть. Протоколы. Разработка» (глава 27, FTP)
- Козье, Д. «TCP/IP. Сетевое администрирование»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →