Как поднять FTP сервер на Server 2008 R2

Posted by

Итак задача:

  • Поднять FTP сервер на SP1 (Enterprise)
  • Авторизация на FTP ресурсе посредством IIS учетных записей, а не Windows.
  • Посредством FSRM настроить наблюдение и квоту
  • Настроить проброс порта для доступа из вне на эту систему.

Ниже я приведу все шаги посредством которых поставленная задача была выполнена и если ее нужно будет повторить, то это уже не составит ни какого труда.

Нужно установить роль File Services (компонент File Server Resource Manager) и Web Server (IIS) (компоненты FTP Server):

Start – Control Panel – Administrative Tools – Server Manager – Add Roles

или же через консоль командной строки:

C:\Users\Administrator>dism /online /enable-feature /featurename:CoreFileServer

C:\Users\Administrator>dism /online /enable-feature /featurename:FSRM-Management

C:\Users\Administrator>start /wait dism /online /enable-feature /featurename:IIS

-WebServerRole

C:\Users\Administrator>start /wait dism /online /enable-feature /featurename:IIS

-FTPServer /featurename:IIS-FTPSvc /featurename:IIS-FTPExtensibility

Важно замечание: установленный IIS имеет версию (Version 7.5.7600.16385)

Затем на логическом диске, пусть это будет тот на котором стоит система создаем каталог, отключаем наследование прав и оставляем доступ к нему только для Администраторов текущей системы: c:\ftpfolder

После запускаем оснастку управления IIS Web сервером:

Start – Control Panels – Administrative Tools – Internet Information Services (IIS) Manager и создаем новый FTP Site:

Start Page – SRV-HOST1 (SRV-HOST1\Administrator) – Sites и через правый клик вызываем мастер Add FTP Site…

FTP site name: srv-host1

Physical path: указываем путь до c:\ftpfolder

и нажимаем кнопку Next, теперь нужно указать на каком сетевом интерфейсе ожидать подключения, порт взаимодействия, запускать ли FTP сайт автоматические и поддерживает ли наш ftp сайт SSL сертификат:

  • IP Address: 192.168.1.162 (Я выбираю текущий IP адрес)
  • Port: 21 (дефолтный)
  • Start FTP site automatically: отмечаю галочкой
  • SSL: No SSL

и нажимаю кнопку Next, далее момент когда нужно определить каким образом будет происходить авторизация на FTP сервисе:

Authentication: Basic

AuthorizationAllow access toSpecified users (выбираю что только указанным учетным записям будет разрешен вход)

Ниже указываю их: ftpuser1,ftpuser2

Permissions: Write

и нажимаю кнопку Finish.

Вот и появился мой добавленный в IIS ресурс для обслуживания через FTP сервис:

FTP ресурс на IIS с необходимыми апплетами управления

 

Слева в оснастке Internet Information Services (IIS) Manager представлены имеющиеся сайты, выделив который справа отобразятся апплеты настройки и управления возможностями.

Хоть я и посредством мастера создал пользователя и тип доступ, его можно посредством апплетов и видоизменить.

Важным было бы это определить как производить логирование взаимодействия с FTP сервисом: FTP Logging – Select W3C Fields… — отмечаем все пункты которые представляют из себя колонки заполняемой информации в формируемом лог файле при взаимодействии с FTP сервисом, уже потом поработав какое-то время можно будет исключить не представляющую из себя логируемую информацию и нажимаем кнопку OK окна Information To Log. Каталог по умолчанию для логов:

  • Directory: c:\inetpub\logs\LogFiles
  • Select a method that FTP uses to create a new log file: Schedule: Daily
  • Use local time for file naming and rollover: Отмечаю галочкой

Чтобы внесенные изменения сохранились в правом углу нужно будет нажать кнопку Apply, когда изменения сохранены в правом углу появится надпись: The changes have been successfully saved.

Теперь нужно создать и назначить пароли для пользователей FTPресурса, для этого в оснастке IIS должны быть специальные апплеты, что я имею в виде, если перейти:

Start – Control Panels – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST1 (SRV-HOST1\Administrator) – и в правой части в подменю Management должна быть оснастка: IIS Manager Users если ее нет, как у меня к примеру:

Отсутствует необходимая оснастка: IIS Manager Users

То чтобы она появилась действия следующие:

Start – Control panel – Administrative Tools – Server Manager – Server Manager – Roles – Web Server (IIS) – Add Role Services

и отмечаем галочками:

  • IIS Managemenet Console
  • IIS Management Scripts and Tools
  • Managemenet Service
  • IIS 6 Managemenet Compatibility
  • IIS 6 Metabase Compatibility
  • IIS 6 Scripting Tools
  • IIS 6 Management Console

и нажимаю кнопку Next – Install – Close

После нужно закрыть консоль управления IIS и заново открыть и необходимый апплет появится. Заходим в апплет → IIS Manager Users и создаю необходимых пользователей: Add User

  • User name: ftpuser1
  • Password: Aa1234567
  • Confirm password: Aa1234567

и нажимаю OK, по аналогии создаю другого пользователя ftpuser2

Создаю необходимых пользователей FTP ресурса

Далее нужно определить что доступ к FTP ресурсу будет осуществлен с использованием созданных учетных записей IIS, а не учетных записей системы:

Start – Control Panels – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST1(SRV-HOST1\Administrator) – Sites – srv-host1 – FTP Authentication – через правый клик мышью вызываю мастер: Custom Providers… и регистрирую провайдера IisManagerAuth.

У Вас должно быть точно также как у меня на представленном скриншоте ниже:

  • Anonymous Authentication: Disabled
  • Basic Authentication: Disables
  • IisManagerAuth: Enable

Изменяю метод аутентификации на FTP ресурсе

После меняем тип аутентификации на всем сервисе, по умолчанию стоит Windows credentials only, а я изменяю на:

Start – Control Panels – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST1 (SRV-HOST1\Administrator) – Management Service: Windows credentials or IIS Manager credentials и не забываем нажать Apply.

C:\Users\Administrator>CACLS "%SystemDrive%\Windows\System32\inetsrv\config" /G "Network Service":R /E

C:\Users\Administrator>CACLS "%SystemDrive%\Windows\System32\inetsrv\config\administration.config" /G "Network Service":R /E

C:\Users\Administrator>CACLS "%SystemDrive%\Windows\System32\inetsrv\config\redirection.config" /G "Network Service":R /E

C:\Users\Administrator>cacls "c:\ftpfolder" /G "Network Service":C /T /E

Так должны выглядеть права на FTP каталог

C:\Users\Administrator>iisreset /stop

Attempting stop…

Internet services successfully stopped

C:\Users\Administrator>iisreset /start

Attempting start…

Internet services successfully started

C:\Users\Administrator>iisreset /status

Status for IIS Admin Service ( IISADMIN ) : Running

Status for Windows Process Activation Service ( WAS ) : Running

Status for World Wide Web Publishing Service ( W3SVC ) : Running

или же находясь в то же окне где изменяли поведение авторизации справа нажать Start.

Затем добавляю к своему FTPресурсу в разрешения IIS учетные записи на основе которых и будет происходить авторизация, а не Windows создаваемые учетные записи:

Start – Control Panels – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST1(SRV-HOST1\Administrator) – Sites – srv-host1 – IIS Manager Permissions – Allow User… —

теперь параметр IIS Manager доступен для выбора (ранее он был затемнен, т.е. деактивирован) и через Select… указываю созданный ранее двух пользователей: ftpuser1, ftpuser2 и нажимаю OK.

Указываю какие учетные записи будут иметь доступ

После нужно дать данным пользователям полный доступ к FTP ресурсу, а не права только чтения, но и запись иначе да они смогут создавать каталоги,файлы,переименовывать, но получить список файлов не смогут:

Start – Control Panels – Administrative Tools – Internet Information Services (IIS) Manager – Start Page – SRV-HOST1(SRV-HOST1\Administrator) – Sites – srv-host1 —

FTP Authorization Rules —

  • Specified users: ftpuser1,ftpuser2
  • Permissions: Read и Write отмечаем галочками как на представленном ниже скриншоте.

Чтобы можно было просматривать FTP ресурс то даем еще и права на чтение

Теперь когда все настройки по организации FTP сервиса настроены нужно по заметке если нужно настроить квоту на FTP-каталог и определить какие файлы разрешено на нем размещаться, останавливаться как это сделать не буду лишь укажу ссылки на FSRM с помощью которого все это делается.

Ладно это все вспомогательная часть которую можно и опустить, но я этого не рекомендую.

Теперь нужно на встроенный брандмауэер системы добавить правила на доступ:

C:\Users\Administrator>netsh advfirewall firewall add rule name=FTP action=allow protocol=tcp localport=21 dir=in profile=any

C:\Users\Administrator>netsh advfirewall set global statefulftp enable

После проверяю, что могу с другой системы в локальной сети подключиться, к примеру это будет моя рабочая система Ubuntu 12.04.5 Desktop amd64 (Gnome Classic):

ekzorchik@navy:~$ nmap -v 192.168.1.162 -p 21 | grep ftp

21/tcp open ftp

Теперь пробую подключиться с организованному FTP ресурсу:

ekzorchik@navy:~$ ftp 192.168.1.162

Connected to 192.168.1.162.

220 Microsoft

Name (192.168.1.162:ekzorchik): ftpuser1

331 Password required for ftpuser1.

Password:Aa1234567

230 User logged in.

Remote system type is Windows_NT.

ftp> pwd

257 «/» is current directory.

ftp> mkdir 1

257 «1» directory created.

ftp> rename 1 2

350 Requested file action pending further information.

250 RNTO command successful.

ftp> quit

421 Service not available, remote server has closed connection

Справку по командам FTP ресурсам смотреть: ftp> help

Итого я получил решение своей задумки по организации FTP ресурса на Windows Server 2008 R2 без создания аутентификационных данных в Windows, только IIS аутентификация. Теперь же я смогу выполнить поставленную задачу от руководитель отдела запасных частей:

Есть необходимость в FTP.

Суть вопроса в следующем:

Поставщик шин готов предоставить нам выгрузку остатков шин (обновления будут происходить каждые 5 минут). Возможные варианты, которые реализованы с их стороны — выгрузка на FTP.

С нашей стороны необходимо предоставить   / Хост[:Порт / Логин: / Пароль:

В дальнейшем данные файлы будут использоваться для загрузки на наш интернет-магазин, так же в автоматическом режиме.

Прошу предоставить ответ сегодня о возможности использования данного алгоритма.

Но это я сделал если FTP ресурс будет в пределах локальной сети, а тут как я погляжу из задания требуется доступ снаружи для поставщика, что ж и это можно.

У меня вся сетевая инфраструктура организована посредством оборудования Mikrotik (вот к примеру действия на моем: v6.37 on RB2011UiAS-2HnD), а значит я могу просто сделать проброс порта из вне:

winbox – IP&DNS – user&pass – IP – Firewall – NAT – Add —

вкладка: General

  • Chain: dstnat
  • Dst. Address: <уникальный_идентификатор>.sn.mynetname.net&IP-Addresss (Если статический)
  • Protocol: 6 (tcp)
  • Dst. Port: 33644 (выбирается произвольно главное чтобы был не занят)

вкладка: Action

  • Action: dst-nat
  • To Addresses: 192.168.1.162
  • To Ports: 21

После не забываем сохранить изменения: Apply – Ok. Вот и все, проверяю со своего хостинга:

ekzorchik@ekzorchik:~$ ftp <уникальный_идентификатор>.sn.mynetname.net 33644

Connected to <уникальный_идентификатор>.sn.mynetname.net.

220 Microsoft FTP Service

Name (<уникальный_идентификатор>.sn.mynetname.net:ekzorchik): ftpuser1

331 Password required for ftpuser1.

Password:Aa1234567

230 User logged in.

Remote system type is Windows_NT.

ftp> quit

221 Goodbye.

Ну конечно же работает как могло быть иначе, ведь после того как сделал и перепроверил все работает как и было задумано. Вот теперь я могу отписать руководителю поставленной задачи – что задача выполнена и прислать ему необходимые данные для поставщика и организации задачи. На этом я прощаюсь и до новых встреч на моем блоге практических задач с которыми мне как системному администратору приходится сталкиваться, с уважением автор блога – Олло Александр.