Windows 2012 nat ftp
Как настроить ftp в Windows Server 2012 R2
Всем привет в первой части мы с вами установили IIS 8.5 и FTP, давайте теперь посмотрим, как настраивается простейший FTP сервер в Windows Server 2012 R2, я расскажу в каких случаях вам его удобно будет применять. Рассмотрим далее как его обезопасить и решить возникшие ошибки, а они могут быть, особенно у тех системных администраторов, кто это делает в первый раз, но прочитав данную заметку, они избегут этой участи и легко смогут продемонстрировать потом свои навыки и достижения перед коллегами и руководством.
Настройка ftp сервера
Настройка ftp сервера windows server 2012 начинвется вот с таких действий. Открываем меню Средства и выбираем Диспетчер служб IIS
Как настроить ftp в Windows Server 2012 R2-02
Откроется оснастка управления IIS и FTP.
Как настроить ftp в Windows Server 2012 R2-03
Давайте создадим наш ftp сервер, открываем Сайты, щелкаем правым кликом и выбираем Добавить FTP-сайт
Как настроить ftp в Windows Server 2012 R2-04
Вас попросят задать имя FTP-сайта и указать физический путь где будут хранится файлы фтп сервера.
Как настроить ftp в Windows Server 2012 R2-05
Можно задать привязки ip адресов или оставить все свободные, задать порт, по умолчанию это порт 21. При желании можно задать использование SSL и указаьб сертификат, мы пока поставим без SSL. Жмем далее
Как настроить ftp в Windows Server 2012 R2-06
Указываем тип проверки подлинности, либо Анонимный то есть открыты для всех или Обычная, с вводом логина и пароля. Ниже задаем группу или пользователя кому мы даем права на доступ, чтение или чтение с записью. Учтите что у пользователя или группы должны быть права на папку которая является каталогом для ftp иначе получите ошибку что нет прав.
Как настроить ftp в Windows Server 2012 R2-07
Все FTP создан при желании можете добавить пользователей или группы в пункте Правила авторизации FTP.
Как настроить ftp в Windows Server 2012 R2-08
Открываем на другом сервере проводник и пишем адрес вашего ftp сервера, откроется форма ввода пароля, если не открылась то закрыты порты вероятнее всего ниже расскажу как это исправить.
Как настроить ftp в Windows Server 2012 R2-09
Видим, мы получили доступ к серверу по протоколу ftp.
Как настроить ftp в Windows Server 2012 R2-10
Вот так вот просто настроить ftp в Windows Server 2012 R2. Если у вас выскочила ошибка:
Убедитесь, что у вас есть разрешение открыть эту папку.
Подробности. Операция прервана по тайм ауту.
В ходе открытия папки на FTP-сервере произошла ошибка.
Доступ к FTP-серверу за NAT
Протокол FTP является старейшим сетевым протоколом (создан в 1971 году), но, тем не менее, широко используется по сей день. Важной особенностью протокола является то, что он использует несколько соединений: одно для управляющих команд, остальные для данных. Причем соединений для передачи данных может открываться несколько.
В зависимости от способа установления соединения для передачи данных различают активный и пассивный режимы работы FTP. В активном режиме сервер сам устанавливает соединение передачи данных к клиенту, в пассивном наоборот.
Активный режим
В активном режиме клиент устанавливает управляющее соединение на порт 21 сервера и передает специальную команду PORT , в которой указывает свой адрес и порт для передачи данных. Получив данную команду, сервер устанавливает соединение с 20 порта на указанный в команде порт клиента.
Тут сразу виден недостаток данного метода: для работы в активном режиме клиенту требуется выделенный IP-адрес. Также определенные сложности будут возникать при нахождении клиента за брандмауэром или NAT-ом.
Пассивный режим
В пассивном режиме клиент устанавливает управляющее соединение на порт 21 сервера и передает специальную команду PASV . В ответ сервер передает адрес и порт, на который следует устанавливать соединение для передачи данных. Получив эту информацию, клиент устанавливает подключение к серверу и начинает передачу данных.
Как видим, в пассивном режиме все соединения инициирует клиент и поэтому к нему нет никаких требований, он может находиться за NAT и брандмауэром, а также не иметь выделенного IP-адреса. Поэтому на сегодняшний день основным режимом работы FTP является пассивный.
FTP сервер за NAT
У меня дома компьютер с установленной Windows 10 и VirtualBox. Давайте создадим несколько виртуальных машин: router , pc-1 , pc-2 , ftp-server и web-server (будет играть роль FTP-клиента). У виртуальной машины router два сетевых интерфейса:
- enp0s3 (сетевой мост) — смотрит в домашнюю сеть, получает ip-адрес 192.168.110.8 от роутера Keenetic Air
- enp0s8 (виртуальная сеть) — смотрит в одну сеть с виртуальными машинами pc-1 , pc-2 и ftp-server
Виртуальная машина router обеспечивает выход в интренет для pc-1 , pc-2 и ftp-server . Все это более подробно можно прочитать здесь. А если совсем коротко, то тогда так
Давайте установим на виртуальную машину ftp-server FTP-сервер vsftpd :
Про настройки подробно рассказывать не буду (подробнее можно прочитать здесь), упомяну только важные для нас:
- pasv_enable=NO — используется только активный режим
- pasv_enable=YES — можно использовать пассивный режим
- pasv_address=XXX.XXX.XXX.XXX — этот ip-адрес сервер будет передавать клиенту вместо своего в ответ на PASV
- pasv_min_port и pasv_max_port — сервер будет отправлять клиенту порт из этого диапазона в ответ на PASV
Теперь на виртуальной машине router настроим перенаправление пакетов, которые приходят на внешней интерфейс enp0s3 , порт 21 — это управляющее соединение от клиента к серверу:
И будем перенаправлять пакеты, которые приходят на внешней интерфейс enp0s3 , порт 60000-60100 , при работе в пассивном режиме — это соединение от клиента к серверу для передачи данных:
Сохраняем новые правила, чтобы они применились после перезагрузки:
Активный режим
В реальной ситуации FTP-клиент и маршрутизатор должны иметь белые ip-адреса. Но мы здесь моделируем ситуацию, как будто бы у них белые ip-адреса. Просто потому, что у нас маршртузатор и FTP-клиент находятся в одной сети 192.168.110.0/24 и видят друг друга. Когда FTP-клиент устанавливает управляющее соединение с FTP-сервером — он отправляет пакеты на внешний интерфейс маршрутизатора, на порт 21. А маршрутизатор отправляет эти пакеты внутрь сети 192.168.30.0/24 — на ip-адрес 192.168.30.254 FTP-сервера (DNAT, первое правило).
Вроде все готово для испытаний, файл конфигурации FTP-сервера разрешает использовать только активный режим. Пробуем из сети 192.168.110.0/24 подключиться к FTP-серверу за NAT с виртуальной машины web-server (ip-адрес 192.168.110.12 ).
Сервер получил от клиента команду PORT и успешно ее обработал — PORT command successful . Сервер устанавливает соединение с 20 порта на указанный в команде PORT ip-адрес и порт клиента и отправляет листинг директории. Адрес клиента — это 192.168.110.12 , сервер отправит данные в шлюз 192.168.30.1 , маршрутизатор перебросит пакеты с интерфейса enp0s8 на enp0s3 и отправит дальше — FTP-клиенту web-server .
Пассивный режим
Теперь изменим настройки сервера, чтобы разрешить работу в пассивном режиме:
Пробуем подключиться к серверу
После команды passive ( PASV , пассивный режим), сервер сообщает клиенту ip-адрес 192.168.110.8 из директивы pasv_address (вместо своего 192.168.30.254 ) и порт — 60053 (порт вычисляется как 234*256+149=60053 ). А клиент устанавливает еще одно соединение с сервером — уже для передачи данных.
Тут важно то, что FTP-сервер сообщает FTP-клиенту не свой серый ip-адрес, а белый ip-адрес внешнего интерфейса шлюза (который на самом деле серый, но мы только моделируем реальную ситуацию). И сообщает порт из диапазона 60000-60100, который мы задали в настройках FTP-сервера. FTP-клиент отправляет пакеты с данными на белый ip-адрес маршрутизатора, на порт 60053 . А маршрутизатор отправляет эти пакеты внутрь сети 192.168.30.0/24 — на ip-адрес 192.168.30.254 FTP-сервера (DNAT, второе правило).
Как поднять FTP на Server 2012 R2
Сегодня я задокументирую шаги, как поднять FTP сервис на операционной системе Windows Server 2012 R2 Standard. Ранее я уже выкладывал во всеобщее обозрение свою пошаговую заметку по настройке FTP на Server 2008 R2 SP1, да оно работает и по сей день. Сейчас же я хочу сделать все то же самое и под Server 2012 R2, за исключение что выкладывать для всех я не намерен. Я потратил кучу времени чтобы разобраться, как и что, а выложив в публичный доступ, на мне все кому нужна данная задача, просто заработают. А потому я только за платный доступ к собственным реальным наработкам. Ведь опыт приобретается с таким трудом.
Дальнейшие действия выполняю с правами Администратора на серверной операционной системе:
Шаг №1: Нажимаю Win + X → Control Panel — Administrative Tools — Server Manager — Dashboard — Add roles and features — Role-based or feature-based installation — Select a server from the server pool (srv-host: 10.7.8.177) отмечаю роль: Web Server (IIS), затем нажимаю по умолчанию Add Features (Web Server (IIS) — Management Tools — [Tools] IIS Management Console) → Нажимаю Next → Нажимаю Next → а теперь устанавливаю компоненты FTP роли Web Server (IIS):
FTP Server (FTP Service, FTP Extensibility) и нажимаю Next, Install, ожидаю:
или все то же самое выше, но через консоль командной строки запущенной с правами администратора:
Win + X — Command Prompt (Admin)
C:\Windows\system32>cd /d %systemroot%\system32\WindowsPowerShell\v1.0\
C:\Windows\System32\WindowsPowerShell\v1.0>powershell.exe
PS C:\Windows\System32\WindowsPowerShell\v1.0> Install-WindowsFeature Web-FTP-Server
После не забываем перезагрузиться сервер вне зависимости как происходила установки сервиса FTP:
PS C:\Windows\System32\WindowsPowerShell\v1.0> shutdown /r /t 3
Когда система загрузилась, авторизовываемся (хотя можно настроить AutoLogon для удобства) и продолжаем.
Шаг №2: Далее создаем каталог где будут располагаться файлы будущего FTP сервиса для обмена:
Win + X — Command Prompt (Admin)
C:\Windows\system32>mkdir c:\ftpfolder
Права на каталог должны быть следующими, отключено наследование и:
- группа SYSTEM — Full Control
- группа Administrators — Full Control
- группа Users — Удалена
- добавлена группа NETWORK SERVICE — права до уровня Modify, не полные (т. е. Не Full Control).
Шаг №3: Далее создаем новый FTP сайт :
Win + X — Control panel — Administrative Tools — Internet Information Services (IIS) Manager — SRV-HOST (SRV-HOST\Administrator) — и через правый клик мышью на Sites выбираю: => Add FTP Site…
- FTP site name: srv-host
- Physical path: c:\ftpfolder
Далее отмечаю на каком интерфейсе будет работать данный сервис:
- IP Addresses: выбираю текущий IP адрес системы, в моем случае: 10.7.8.177
- Port: 21
- Start FTP site automatically: отмечаю галочкой
- SSL: пока не буду задействовать, это тема отдельной заметки и поэтом отмечаю: No SSL
На заметку: позже можно будет сменить порт если возникнет нужда.
После нажимаю Next, далее определяю как и под кем будет происходит аутентификация на FTP ресурсе:
- Authentication: Basic
- Authorization:
- Allow access to: Specified users
и указываю имена учетных записей: ftpuser1,ftpuser2
- Permissions: отмечаю галочкой Write
и нажимаю Finish.
Шаг №4: Теперь нужно создать данные выше учетные записи и присвоить им пароли, но вот в чем проблема нужной оснастки у меня нет, значит по аналогии, как в Server 2008 R2 нужно доустановить отсутствующие компоненты IIS:
Нажимаю Win + X → Control Panel — Administrative Tools — Server Manager — Dashboard — Add roles and features — Role-based or feature-based installation — Select a server from the server pool (srv-host:10.7.8.177) — разворачиваю роль Web Server (IIS) (11 of 43 installed) — Management Tools (1 of 7 installed) — и отмечаю галочками:
- IIS 6 Management Compatibility
- IIS 6 Metabase Compatibility
- IIS 6 Management Console
- IIS 6 Scripting Tools
- IIS 6 WMI Compatibility
- IIS Management Scripts and Tools
- Management Service
В процессе возникнет окно установки зависимостей, не забываем согласиться с установкой тоже.
и нажимаю Next, Next, отмечаю галочкой, что по завершении процесса установки компонентов IIS следует перезагрузить сервер (Restart the destinations server automatically if required) и нажимаю Install.
Шаг №5: А теперь возвращаемся к созданию логина и пароля:
Нажимаю Win + X → Control Panel — Administrative Tools — Internet Information Services (IIS) Manager — SRV-HOST (SRV-HOST\Administrator) — IIS Manager Users — Add User…
- User name: ftpuser1
- Password: Aa1234567@!
- Confirm password: Aa1234567@!
И еще одну учетную запись создаю с логином: ftpuser2.
Шаг №6: Далее нужно определить что доступ к FTP ресурсу будет осуществлен с использованием созданных учетных записей IIS, а не учетных записей системы:
Win + X → Control Panel – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST(SRV-HOST\Administrator) – Sites – srv-host – FTP Authentication – через правый клик мышью вызываю мастер: Custom Providers… и регистрирую провайдера IisManagerAuth.
Привожу настройки теперь к виду:
- Anonymous Authentication: Disabled
- B asic Authentication: Disables
- IisManagerAuth: Enable
Шаг №7: После запускаю оснастку управления/назначения прав на FTP (либо чтение, либо запись):
Win + X → Control Panel – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST(SRV-HOST\Administrator) — Sites — srv-host — FTP Authorization Rules и определяю права доступа → Add Allow Rule… —
- Specified users: ftpuser1,ftpuser2
- Permissions: Read & Write отмечаю галочками.
Шаг №8: Запираем пользователей FTP ресурса данным каталогом указанным в самом начале:
Win + X → Control Panel – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST(SRV-HOST\Administrator) — Sites — srv-host — FTP User Isolation:
- Do not isolate users. Start users. In: FTP root directory
Шаг №9: После изменяю, что по дефолту авторизация на FTP будет происходить только с применением специальных пользователей (созданных в оснастке IIS), а не Windows пользователей и Windows пользоваталей:
Win + X → Control Panel – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST(SRV-HOST\Administrator) —
(Management) Management Service:
- Enable remote connections: отмечаю галочкой
- Identity Credentials: Windows credentials or IIS Manager credentials
А после не забываем сохранить внесенные изменения нажатием на кнопку Apply.
Шаг №10: Затем следует поправить права на каталог IIS сервера:
C:\Windows\system32>CACLS «%SystemDrive%\Windows\System32\inetsrv\config» /G «Network Service»:R /E
processed dir: C:\Windows\System32\inetsrv\config
C:\Windows\system32>CACLS «%SystemDrive%\Windows\System32\inetsrv\config\administration.config» /G «Network Service»:R /E
processed file: C:\Windows\System32\inetsrv\config\administration.config
C:\Windows\system32>CACLS «%SystemDrive%\Windows\System32\inetsrv\config\redirection.config» /G «Network Service»:R /E
processed file: C:\Windows\System32\inetsrv\config\redirection.config
C:\Windows\system32>iisreset /stop
C:\Windows\system32>iisreset /start
Шаг №11: Затем добавляю, что к моему ресурсу с FTP Root каталогом (c:\ftpfolder) должны иметь доступ созданные пользователи IIS:
Win + X → Control Panel – Administrative Tools – Internet Information Services (IIS) Manager — SRV-HOST (SRV-HOST\Administrator) — Sites — srv-host — (Management) IIS Manager Permissons — Allow user… —
Select the type of user: отмечаю IIS Manager нажимаю Select и выбираю пользователей: ftpuser1,ftpuser2 и нажимаю OK
После проверяю, что сервис поднялся и ожидает соединения на 21 порт:
Win + X → Command Prompt (Admin) —
C:\Windows\system32>netstat -a | findstr /I «:21»
TCP 0.0.0.0:21 srv-host:0 LISTENING
TCP [::]:21 srv-host:0 LISTENING
Шаг №12: Проверяю, как работает подключение через проводник:
Win + X — File Explorer — и в строке адреса указываем по следующему синтаксису обращение к FTP сервису: ftp://10.7.8.177:21/ и нажимаем клавишу Enter, следом появляется окно аутентификации, указываем:
- User name: ftpuser1
- Password: Aa1234567@!
и нажимаем кнопку Log On, после авторизация проходит успешно и я могу создавать файлы, папки, удалять, переименовывать.
Только после советую проверить подключение с другой станции к этому FTP сервису, если подключение не происходит, то нужно проверить наличие включенных правил брандмауэера или отключить его
Win — X — Command prompt (Admin):
C:\Windows\system32>netsh advfirewall set allprofiles state off
а после с Ubuntu системы проверить, открыт ли 21 порт через который работает FTP сервис по умолчанию:
$ sudo nmap -p21 10.7.8.177
Starting Nmap 6.40 ( http://nmap.org ) at 2017-03-29 08:59 MSK
Nmap scan report for 10.7.8.177
Host is up (0.00073s latency).
PORT STATE SERVICE
21/tcp open ftp
MAC Address: 08:00:27:9B:68:4A (Cadmus Computer Systems)
Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds
Видно, что порт открыт, значит и удаленное подключение можно произвести, как с Ubuntu системы так и с рабочей станции через утилиту FileZilla.
Вот собственно и все действия которые необходимо проделать чтобы на серверной системе Windows Server 2012 R2 Standard поднять сервис FTP для передачи файлов. Хочу отметить, что для защиты каталога от возможного заражения поставить на текущую систему FSRM с запретом записи исполняемых файлов и уведомлением по почте если такая попытка происходит. А также настройка квоты на FTP каталог. На этом всё, с уважением автор блога Олло Александр aka ekzorchik.