Использование FTP proxy#
Протокол FTP (File Transfer Protocol) является одним из старейших прикладных протоколов и предназначен для передачи файлов между сервером и клиентом. Данный протокол для работы поверх IP был описан в RFC 765 и RFC 959 и в дальнейшем дополнялся различными стандартами. Для фильтрации данного протокола в Numa Edge присутствует функционал ftpproxy, который позволяет осуществлять фильтрацию команд прикладного уровня протокола. В данном документе описано использование функционала ftpproxy.
Описание работы протокола FTP#
Типичным сценарием использования протокола FTP является установления соединение клиента с сервером с последующей загрузкой файлов с сервера либо на сервер. Установления соединения может осуществляться после ввода клиентом идентификационных данных либо без них (на сервере может быть разрешен анонимный режим работы). Протокол FTP использует два параллельных TCP-соединения:
- управляющее соединение, через которое передаются команды протокола и получаются ответы;
- соединение данных, через которое передаются файлы, где для каждого нового передаваемого файла открывается новое соединение.
Для управляющего соединения используется порт 21/TCP, к которому подключается клиент. Это соединение, в отличие от соединения данных, активно на протяжении работы с FTP-сервером и передачи информации.
Используемый порт для соединения данных изменяется в зависимости от режима работы FTP-сервера:
- в активном режиме – клиент передает серверу номер порта, который он открывает для подключения сервера. Исходящий порт сервера 20/TCP;
- в пассивном режиме – в этом случае сервер сам назначает порт для соединения данных из предварительного настроенного диапазона (по умолчанию 1024-65535). Данный режим, после изменения диапазона портов пассивного режима, принято использовать при прохождении FTP-соединения через NAT.
Возможности фильтрации протокола FTP с использованием FTP Proxy#
FTP-прокси, как и любой другой прокси-сервер, использует промежуточное устройство посредника для сокрытия реального IP адреса. Применимо к FTP-прокси, возможно расположение FTP-сервера внутри защищенного периметра и настройка на Numa Edge службы ftpproxy для сокрытия реального IP-адреса сервера. Другой особенностью данной службы является разбор передаваемых сообщений внутри управляющего соединения, с последующим принятием решения о разрешении или запрете их передачи в зависимости от IP-адресов отправителя и получателя, а также имени пользователя.
Правила фильтрации разделены на две группы:
- auth-rules: правила аутентификации, которые выполняются на этапе подключения к прокси-серверу и регламентируют возможность данного подключения;
- command-rules: правила команд, которые работают только после успешной аутентификации и регламентируют возможность выполнения команд.
Функционал Numa Edge позволяет фильтровать следующие команды протокола:
- APPE – добавить новый файл;
- CDUP – перейти в родительский каталог;
- CWD – перейти в директорию;
- DELE – удалить файл;
- LIST – получить содержимое каталога;
- MDTM – вернуть время последнего изменения указанного файла;
- MKD – создать директорию;
- NLST – вернуть список имен файлов в указанном каталоге;
- RETR – скачать файл;
- RMD – удалить директорию;
- RNFR – выбрать файл для переименования;
- RNTO – переименовать файл;
- SIZE – вернуть размер файла;
- STAT – вернуть информацию о состоянии сервера, включая состояние текущего соединения;
- STOR – загрузить файл;
- STOU – хранить файл уникальным образом;
- XCUP – перейти к родительскому элементу текущего рабочего каталога;
- XCWD – перейти в директорию;
- XMKD – создать директорию;
- XRMD – удалить директорию.
Обратите внимание, что некоторые команды могут повторять смысл друг друга. Это объясняется различными стандартами RFC, в которых данные команды были описаны.
Примечание
Поддерживается работа (фильтрация) только для 1 FTP-сервера, на который служба ftpproxy перенаправляет соединения. В случае использования парольной аутентификации, имя пользователя и пароль передаются в открытом виде как при установлении соединения от клиента к ftpproxy на Numa Edge, так и от Numa Edge к FTP-серверу. Разбор соединений, зашифрованных TLS (FTPS) службой ftpproxy, не поддерживается.
Пример настройки FTP Proxy#
Настройка правил FTP proxy#
В качестве примера настройки службы ftpproxy рассмотрим настройку ограничения, когда определенному пользователю запрещается удалять каталоги и файлы, но при этом разрешается их загружать и скачивать. Пусть существует следующая схема сети, представленная на рисунке ниже:
В данной схеме Numa Edge выступает в роли FTP-прокси-сервера, и перенаправляет сообщения протокола FTP между клиентом и сервером. Настройка FTP-server и FTP-client в данном примере не рассматривается. В этом примере FTP-server находится во внутренней сети 192.168.1.0/24, а клиенты подключаются из внешней сети Интернет. На Numa Edge настроен адрес из внешней сети на интерфейсе eth1 – 203.0.113.1/24.
Примечание
В этом примере подразумевается, что внутренняя сеть находится за NAT, но поскольку ftpproxy будет настроен на прослушивание адреса из внешней сети 203.0.113.1, то настройка проброса портов для FTP-сервера не потребуется.
Для ограничения возможности удаления файлов и каталогов пользователю ftpuser выполните действия, описанные в примере ниже.
Пример – Настройка ftpproxy#
- Настройка адреса, на котором ftpproxy будет ожидать соединения. По умолчанию используется порт 21/TCP:
- Настройка адреса FTP-сервера, на который ftpproxy будет перенаправлять соединения:
- Настройка действия по умолчанию, которое безусловно разрешает все команды для любых пользователей с любых IP-адресов:
- Настройка правила 10, ограничивающее удаление каталогов для пользователя ftpuser:
- Настройка правила 20, ограничивающее удаление файлов для пользователя ftpuser:
- Настройка правила 30, ограничивающее удаление каталогов альтернативной командой FTP для пользователя ftpuser:
- Применение изменений:
- Просмотр полученной конфигурации:
Запрет доступа к FTP-серверу для определенного пользователя#
Предположим, что необходимо запретить определенному пользователю доступ на FTP-сервер. Для этого необходимо создать запрещающее правило auth-rule
, в котором будет указано имя данного пользователя. В следующем примере описано как произвести данную настройку.
Пример – Запрет доступа на FTP-сервер определенному пользователю#
- Создание правила доступа, в котором указывает имя пользователя baduser:
- Запрет доступа к FTP-серверу для данного пользователя:
- Применение изменений:
- Просмотр получившейся конфигурации службы ftpproxy:
Настройка правил МЭ для разрешения только FTP-трафика#
В качестве следующего примера будет произведена настройка правил межсетевого экранирования на Numa Edge. Поскольку служба ftpproxy работает на самом Numa Edge, правила будут применяться для входящего локального трафика (направление local) для внешнего интерфейса, к которому подключаются клиенты (eth2 согласно схеме на рисунке выше). Команды, приведенные в данном примере, ограничивают весь трафик, кроме явно разрешенного. Для этого будет создано правило фильтрации трафика, которое будет добавлено в политику межсетевого экранирования. В случае если в реальном использовании у вас уже существует политика межсетевого экранирование, вы можете добавить в нее новое правило по аналогии с представленным примером.
Для разрешения входящих соединений только для FTP-трафика выполните следующие действия:
Пример – Настройка политик межсетевого экранирования, разрешающих только входящий FTP-трафик#
- Создание фильтра FTP, в правиле под номером 10 которого указывается, что необходимо помечать трафик с портом назначения 21/TCP:
- В этот же фильтр добавляются установленные (established) и ссылающиеся на установленные соединения (related). Последние используются для разрешения соединения данных. Данный механизм подходит как для активного, так и для пассивного режима работы FTP-сервера:
- Фиксация изменений политики фильтрации:
- Просмотр изменений:
- Создание политики межсетевого экранирования с именем
FTP-only
. Правило 10 разрешает трафик, попавший под ранее настроенную политику фильтрации FTP: - Действие по умолчанию отбрасывает весь трафик, не попавший под настроенные правила:
- Фиксация изменений политики межсетевого экранирования:
- Просмотр получившихся изменений:
Настройка правил NAT для работы FTP proxy в прозрачном режиме#
Предположим, необходимо настроить FTP proxy таким образом, чтобы клиенты FTP не подозревали о его существовании. Данный метод реализуется с помощью так называемого «прозрачного режима». Для его реализации необходимо настроить правила NAT, перенаправляющие FTP-трафик, адресом назначения которого является FTP-сервер на FTP proxy.
Примечание. Для настройки данного метода используется IP-адресация как в примере выше с тем лишь условием, что у устройств FTP-server и FTP-client есть маршруты до подсетей друг друга.
Для настройки FTP proxy в прозрачном режиме выполните следующие действия:
Пример – Настройка правил NAT для работы в «прозрачном режиме»#
- Создание правила NAT, с номером 10 в режиме преобразования адреса получателя (DNAT):
- Данное правило будет срабатывать для трафика, адресом назначения которого является 192.168.1.100 и портом назначения 21:
- При указании специфического порта обязательным условием является задание протокола, в данном случае TCP:
- Для применения правил фильтрации данный трафик должен поступать на порт eth2:
- Данное правило фильтрации перенаправляет трафик, попавший под описание, на адрес 203.0.113.1 и порт 21. Этот адрес и порт прослушивает служба ftpproxy согласно настройкам в примере выше: