- FTP over SSL (FTPS) в Windows Server 2012 R2
- Установка роли FTP сервера
- Генерация и установка на IIS SSL сертификата
- Создаём FTP сайт с поддержкой SSL
- FTPS и межсетевые экраны
- Тестирование подключения FTP over SSL
- Passive ftp windows server
- Information Security Squad
- 🚼 Активный FTP и пассивный FTP сравнение и отличие
- Вступление
- Основы
- Активный FTP
- Пример активного FTP
- Пассивный FTP
- Пример пассивного FTP
- Резюме
FTP over SSL (FTPS) в Windows Server 2012 R2
Одним из основных недостатков протокола FTP для передачи файлов – отсутствие средств защиты и шифрования передаваемых данных. Имя и пароль пользователя при подключении к FTP серверу также передаются в открытом виде. Для передачи данных (особенно по публичным каналам связи) рекомендуется использовать более безопасные протоколы, такие как FTPS или SFTP. Рассмотрим, как настроить FTPS сервер на базе Windows Server 2012 R2.
Протокол FTPS (FTP over SSL/TLS, FTP+SSL) – является расширением стандартного протокола FTP, но соединение между клиентом и сервером защищается (шифруется) с помощью протоколов SSL /TLS. Как правило, для подключения используется тот же самый порт 21.
Поддержка FTP over SSL появилась в IIS 7.0 (Windows Server 2008). Для работы сервера FTPS, на веб сервере IIS понадобится установить SSL сертификат.
Установка роли FTP сервера
Установка роли FTP сервера на Windows Server 2012 проблем не вызывает и уже не раз описана.
Генерация и установка на IIS SSL сертификата
Затем открываем консоль IIS Manager, выбираем сервер и переходим в раздел Server Certificates.
Этот раздел позволяет импортировать сертификат, создать запрос на получение сертификата, обновить сертификат или создать самоподписанный сертификат. В целях демонстрации мы остановимся на самоподписанном сертфикате (его также можно создать с помощью командлета New-SelfSifgnedCertificate). При обращении к сервису будет появляться предупреждение о том, что сертификат выдан недоверенным CA, чтобы отключить это предупреждение для данного сертификата, его можно добавить в доверенные через GPO.
Выбираем Create Self-Signed Certificate.
В мастере создания сертификата указываем его имя и выбираем тип сертификата Web Hosting.
Самоподписанный сертификат должен появиться в списке доступных сертификатов. Срок действия сертификата – 1 год.
Создаём FTP сайт с поддержкой SSL
Далее нужно создать FTP сайт. В консоли IIS щелкаем ПКМ по узлу Sites и создаем новый FTP сайт (Add FTP).
Указываем имя и путь к корневому каталогу FTP сайта (у нас каталог по-умолчанию C:\inetpub\ftproot).
На следующем шаге мастера в разделе SSL сертификатов выбираем созданный нами сертификат.
Осталось выбрать тип аутентификации и права доступа пользователей.
На этом завершаем работу мастера. По умолчанию SSL защита является обязательной и используется для шифрования как команд управления так и и передаваемых данных.
FTPS и межсетевые экраны
При использовании протокола FTP используется 2 разных TCP соединения, по одному передаются команды, по другому данные. Для каждого канала данных открывается свой TCP порт, номер которого выбирается сервером или клиентом. Большинство файерволов позволяют инспектировать FTP трафик и, анализируя его, автоматически открывать нужные порты. При использовании защищенного FTPS передаваемые данные закрыты и не поддаются анализу, в результате межсетевой экран не может определить какой порт нужно открыть для передачи данных.
Чтобы не открывать снаружи к FTPS серверу весь диапазон TCP портов 1024-65535, можно принудительно указать FTP серверу диапазон используемых адресов. Диапазон указывается в настройках сайта IIS в разделе FTP Firewall Support.
После изменения диапазона портов нужно перезапустить сервис (iisreset).
Во встроенном файерволе Windows за входящий трафик будут отвечать правила:
- FTP Server (FTP Traffic-In)
- FTP Server Passive (FTP Passive Traffic-In)
- FTP Server Secure (FTP SSL Traffic-In)
Соответственно на внешнем межсетевом экране придется открыть порты 21, 990 и 50000-50100 (выбранный нами диапазон портов).
Тестирование подключения FTP over SSL
Для тестирования подключения по FTPS воспользуемся клиентом Filezilla.
- Запустите FileZilla (или любой другой клиент с поддержкой FTPS).
- Нажмите File>SiteManager, и создайте новое подключение (NewSite).
- Укажите адрес FTPS сервера (Host), тип протокола (RequireexplicitFTPoverTLS), имя пользователя (поле User) и требование требовать ввод пароля для авторизации (Askforpassword)
- Нажимаем кнопку Connect и вводим пароль пользователя.
- Должно появиться предупреждение о недоверенном сертификате (при использовании самоподписанного сертификата). Подтверждаем соединение.
- Соединение должно установиться, а в журнале должны появиться строки:
Status: Initializing TLS.
Status: Verifying certificate.
Status: TLS connection established.
Passive ftp windows server
I got this error.
Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.
C:\Users\administrator.warehouse>netsh advfirewall firewall add rule name=»FTP
Service» action=allow service=ftpsvc protocol=TCP dir=in
An invalid value was specified.
Usage: add rule name=
dir=in|out
action=allow|block|bypass
[program=
]
[service= |any]
[description= ]
[enable=yes|no (default=yes)]
[profile=public|private|domain|any[. ]]
[localip=any| | | | |
[remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
| | | |
[localport=0-65535|RPC|RPC-EPMap|any[. ] (default=any)]
[remoteport=0-65535|any[. ] (default=any)]
[protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
tcp|udp|any (default=any)]
[interfacetype=wireless|lan|ras|any]
[rmtcomputergrp= ]
[rmtusrgrp= ]
[edge=yes|no (default=no)]
[security=authenticate|authenc|notrequired (default=notrequired)]
— Add a new inbound or outbound rule to the firewall policy.
— Rule name should be unique and cannot be «all».
— If a remote computer or user group is specified, security must be
authenticate or authenc.
— If action=bypass, the remote computer group must be specified.
— Action=bypass is only valid for rules with dir=in.
— If service=any, the rule applies only to services.
— ICMP type or code can be «any».
— Edge can only be specified for inbound rules.
Add an inbound rule for messenger.exe:
netsh advfirewall firewall add rule name=»allow messenger»
dir=in program=»c:\programfiles\messenger\msmsgs.exe»
action=allow
Add an outbound rule for port 80:
netsh advfirewall firewall add rule name=»allow80″
protocol=TCP dir=out localport=80 action=block
Add an inbound rule for messenger.exe and require security
netsh advfirewall firewall add rule name=»allow messenger»
dir=in program=»c:\program files\messenger\msmsgs.exe»
security=authenticate action=allow
Add an authenticated firewall bypass rule for group
acmedomain\scanners identified by a SDDL string:
netsh advfirewall firewall add rule name=»allow scanners»
dir=in rmtcomputergrp= action=bypass
security=authenticate
Information Security Squad
stay tune stay secure
- Home
- 2019
- Май
- 13
- 🚼 Активный FTP и пассивный FTP сравнение и отличие
🚼 Активный FTP и пассивный FTP сравнение и отличие
Вступление
Один из наиболее часто встречающихся вопросов при работе с брандмауэрами и другими проблемами подключения к Интернету – это различие между активным и пассивным FTP (протокол передачи файлов) и как лучше всего поддерживать один или оба из них.
Надеемся, что следующая статья поможет разобраться в путанице, связанной с поддержкой FTP в среде с межсетевым экраном.
Этот пост содержит примеры как активных, так и пассивных сеансов FTP из командной строки.
Эти примеры сессий должны помочь немного прояснить ситуацию.
Они также дают хорошую картину того, что происходит за кулисами во время сеанса FTP. Теперь перейдем к информации по теме…
Основы
FTP является исключительно службой на основе TCP.
Для FTP нет компонента UDP.
FTP является необычной службой, в которой используются два порта: порт данных и порт команды (также известный как порт управления).
Традиционно это порт 21 для командного порта и порт 20 для порта данных.
Однако возникает путаница, когда мы обнаруживаем, что в зависимости от режима порт данных не всегда находится на порте 20.
Активный FTP
В активном режиме FTP клиент подключается от случайного непривилегированного порта (N> 1024) к командному порту FTP-сервера, а именно 21.
Затем клиент начинает прослушивать порт N + 1 и отправляет команду FTP PORT N + 1 на FTP. сервер.
Затем сервер подключится к указанному клиенту порту данных через локальный порт данных, который является портом 20.
С точки зрения серверного брандмауэра, для поддержки активного режима FTP необходимо открыть следующие каналы связи:
- Порт FTP-сервера 21 отовсюду (Клиент инициирует соединение)
Порт 21 сервера FTP для портов> 1024 (сервер отвечает на порт управления клиента) - Порт 20 сервера FTP для портов> 1024 (сервер инициирует подключение данных к порту данных клиента)
- Порт 20 сервера FTP от портов> 1024 (Клиент отправляет ACK на порт данных сервера)
При продолжительном соединение все выглядит следующим образом:
- С клиентского порта 1026 (Cmd) на серверный порт 21 (Cmd)
- С порта сервера 21 (Cmd) на порт клиента 1026 (Cmd)
- С порта сервера 20 (данные) на порт клиента 1027 (данные)
- С клиентского порта 1027 (данные) на серверный порт 20 (данные)
На шаге 1 командный порт клиента связывается с командным портом сервера и отправляет команду PORT 1027.
Затем сервер отправляет ACK обратно на командный порт клиента на шаге 2.
На шаге 3 сервер инициирует подключение через свой локальный порт данных к порту данных клиент указал ранее.
Наконец, клиент отправляет ACK обратно, как показано на шаге 4.
Основная проблема с активным режимом FTP на самом деле ложится на клиентскую сторону.
FTP-клиент не устанавливает фактическое соединение с портом данных сервера – он просто сообщает серверу, какой порт он прослушивает, и сервер снова подключается к указанному порту на клиенте.
Со стороны брандмауэра на стороне клиента это внешняя система, инициирующая соединение с внутренним клиентом, что обычно блокируется.
Пример активного FTP
Ниже приведен пример активного сеанса FTP.
Изменены только имена серверов, IP-адреса и имена пользователей.
В этом примере сеанс FTP инициируется от user01 (192.0.0.1), блока Solaris, на котором работает стандартный клиент командной строки FTP, к dest_serv (192.0.0.2), блока Solaris, на котором запущен solaris [TM] 9 ftpd.
Флаг отладки (-d) используется с клиентом FTP, чтобы показать, что происходит за кулисами.
Все, что выделено курсивом, является результатом отладки, который показывает фактические команды FTP, отправляемые на сервер, и ответы, генерируемые этими командами.
Есть несколько интересных вещей, чтобы рассмотреть об этом диалоге.
Обратите внимание, что при вводе команды PORT указывается порт в клиентской (192.0.0.1) системе, а не на сервере.
Мы увидим противоположное поведение, когда будем использовать пассивный FTP.
Пока мы находимся на этой теме, быстрое примечание о формате команды PORT.
Как видно из приведенного ниже примера, он отформатирован как последовательность из шести чисел, разделенных запятыми.
Первые четыре октета являются IP-адресом, а вторые два октета составляют порт, который будет использоваться для подключения к данным.
Чтобы найти действительный порт, умножьте пятый октет на 256, а затем добавьте шестой октет к сумме.
Таким образом, в приведенном ниже примере номер порта ((256 * 188) + 231) или 48359.
Быстрая проверка с помощью netstat должна подтвердить эту информацию.
Пассивный FTP
Чтобы решить проблему с сервером, инициирующим соединение с клиентом, был разработан другой метод для FTP-соединений.
Он известен как пассивный режим, или PASV, после команды, использованной клиентом, чтобы сообщить серверу, что он находится в пассивном режиме.
В пассивном режиме FTP клиент инициирует оба подключения к серверу, решая проблему межсетевых экранов, фильтрующих входящее соединение порта данных с клиентом с сервера.
При открытии FTP-соединения клиент открывает два случайных непривилегированных порта локально (N> 1024 и N + 1).
Первый порт связывается с сервером через порт 21, но вместо того, чтобы затем выполнять команду PORT и разрешить серверу подключиться к своему порту данных, клиент выдаст команду PASV.
В результате сервер открывает случайный непривилегированный порт (P> 1024) и отправляет команду PORT P обратно клиенту.
Затем клиент инициирует соединение от порта N + 1 к порту P на сервере для передачи данных.
С точки зрения брандмауэра на стороне сервера, для поддержки FTP в пассивном режиме необходимо открыть следующие каналы связи:
- Порт FTP-сервера 21 отовсюду (Клиент инициирует соединение)
- Порт 21 сервера FTP для портов> 1024 (сервер отвечает на порт управления клиента)
- Порты FTP-сервера> 1024 отовсюду (Клиент инициирует подключение данных к произвольному порту, указанному сервером)
- Порты FTP-сервера> 1024 для удаленных портов> 1024 (Сервер отправляет ACK (и данные) на порт данных клиента)
При подключении FTP-соединение в пассивном режиме выглядит следующим образом:
- С клиентского порта 1026 (Cmd) на серверный порт 21 (Cmd)
- С порта сервера 21 (Cmd) на порт клиента 1026 (Cmd)
- С клиентского порта 1027 (данные) на серверный порт 2024
- С порта сервера 2024 (Cmd) на порт клиента 1027 (данные)
На шаге 1 клиент связывается с сервером через командный порт и выдает команду PASV.
Затем сервер отвечает на шаге 2 с помощью PORT 2024, сообщая клиенту, какой порт он прослушивает для подключения к данным.
На шаге 3 клиент затем инициирует соединение для передачи данных со своего порта данных на указанный порт данных сервера.
Наконец, сервер отправляет ACK на шаге 4 в порт данных клиента.
Хотя пассивный режим FTP решает многие проблемы на стороне клиента, он открывает целый ряд проблем на стороне сервера.
Самой большой проблемой является необходимость разрешить любое удаленное подключение к портам с высоким номером на сервере.
К счастью, многие FTP-демоны, включая демон Solaris in.ftpd, позволяют администратору указывать диапазон портов, которые будет использовать FTP-сервер. См. Приложение 1 для получения дополнительной информации.
Вторая проблема связана с поддержкой и устранением неполадок клиентов, которые поддерживают (или не поддерживают) пассивный режим.
Например, утилита FTP командной строки, поставляемая с демоном Solaris ftp, поддерживает пассивный режим начиная с Solaris 9 (начиная с sccs v1.20). Посмотрите справочные страницы (in.ftpd), опция -p.
С огромной популярностью Всемирной паутины, многие люди предпочитают использовать свой веб-браузер в качестве FTP-клиента.
Большинство браузеров поддерживают только пассивный режим при доступе к URL-адресам ftp://. Это может быть как хорошим, так и плохим фактов, в зависимости от того, какие серверы и брандмауэры настроены для поддержки.
Пример пассивного FTP
Ниже приведен пример пассивного сеанса FTP.
Изменены только имена серверов, IP-адреса и имена пользователей.
В этом примере сеанс FTP инициируется от user01 (192.0.0.1), окна Solaris, на котором работает стандартный клиент командной строки FTP, до dest_serv (192.0.0.2), Solaris, работающего под управлением Solaris 9 ftpd.
Флаг отладки (-d) используется с клиентом FTP, чтобы показать, что происходит за кулисами.
Все, что выделено курсивом, является результатом отладки, который показывает фактические команды FTP, отправляемые на сервер, и ответы, генерируемые этими командами.
Нормальный вывод на сервер показан черным, а ввод пользователя – жирным.
Обратите внимание на разницу в команде PORT в этом примере по сравнению с примером активного FTP.
Здесь мы видим, что порт открывается в системе сервера (192.0.0.2), а не на клиенте. См. Обсуждение формата команды PORT выше в разделе «Пример активного FTP».
Резюме
Следующая таблица должна помочь администраторам запомнить, как работает каждый режим FTP:
Краткий обзор плюсов и минусов активного и пассивного FTP также по порядку:
Активный FTP полезен для администратора сервера FTP, но вреден для администратора на стороне клиента.
FTP-сервер пытается подключиться к случайным высоким портам на клиенте, которые почти наверняка будут заблокированы брандмауэром на стороне клиента.
Пассивный FTP полезен для клиента, но вреден для администратора FTP-сервера.
Клиент установит оба соединения с сервером, но одно из них будет со случайным портом с высокой пропускной способностью, который почти наверняка будет заблокирован брандмауэром на стороне сервера.
К счастью, есть некоторый компромисс.
Поскольку администраторам, работающим с FTP-серверами, необходимо сделать свои серверы доступными для наибольшего числа клиентов, им почти наверняка потребуется поддержка пассивного FTP.
Доступность портов высокого уровня на сервере можно минимизировать, указав ограниченный диапазон портов для использования FTP-сервером.
Таким образом, все, кроме этого диапазона портов, может быть защищено на стороне сервера.
Хотя это не устраняет все риски для сервера, оно значительно снижает его. См. Приложение 1 для получения дополнительной информации.