Поделиться через


Авторизация <FTP>

Общие сведения

Элемент <authorization> позволяет настроить учетные записи пользователей, которые могут получить доступ к сайту или приложению. Используйте авторизацию в сочетании с проверкой подлинности для защиты доступа к содержимому на сервере. Проверка подлинности подтверждает личность пользователя, а авторизация определяет, к каким ресурсам пользователи могут или к каким ресурсам не могут получить доступ.

СЛУЖБЫ IIS определяют два типа правил авторизации: Разрешить правила и Запретить правила:

  • Разрешающие правила позволяют определять учетные записи пользователей или группы пользователей, которые могут получать доступ к сайту, приложению или ко всем сайтам на сервере.
  • Правила запрета позволяют определять учетные записи пользователей или группы пользователей, которые не могут получить доступ к сайту, приложению или ко всем сайтам на сервере.

Совместимость

Версия Примечания
IIS 10.0 Элемент <authorization> не был изменен в IIS 10.0.
IIS 8,5 Элемент <authorization> не был изменен в IIS 8.5.
IIS 8,0 Элемент <authorization> не был изменен в IIS 8.0.
IIS 7,5 Элемент <authorization> входит в <system.ftpServer/security> состав iis 7.5.
IIS 7.0 Элемент <authorization> элемента появился <system.ftpServer/security> в FTP 7.0, который был отдельной загрузкой для IIS 7.0.
IIS 6,0 Н/Д

Примечание

Службы FTP 7.0 и FTP 7.5 поставляются по аппаратному каналу для IIS 7.0, что требует загрузки и установки модулей по следующему URL-адресу:

https://www.iis.net/expand/FTP

В Windows 7 и Windows Server 2008 R2 служба FTP 7.5 поставляется в качестве функции для IIS 7.5, поэтому скачивание службы FTP больше не требуется.

Настройка

Для поддержки публикации ftp для веб-сервера необходимо установить службу FTP. Для этого выполните следующие действия.

Windows Server 2012 или Windows Server 2012 R2

  1. На панели задач щелкните Диспетчер сервера.

  2. В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.

  3. В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.

  4. На странице Роли сервера разверните узел Веб-сервер (IIS) и выберите FTP-сервер.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Помимо службы FTP необходимо выбрать расширяемость FTP.
    Снимок экрана: служба F T P и расширяемость F T P, выбранные в интерфейсе Windows Server 2012. .

  5. Нажмите кнопку Далее, а затем на странице Выбор компонентов нажмите кнопку Далее еще раз.

  6. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.

  7. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

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

  2. В панель управления щелкните Программы и компоненты, а затем — Включить или выключить компоненты Windows.

  3. Разверните узел Службы IIS, а затем выберите FTP-сервер.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
    Снимок экрана: служба F T P и расширяемость F T P, выбранные в интерфейсе Windows 8.

  4. Нажмите кнопку ОК.

  5. Щелкните Закрыть.

Windows Server 2008 R2

  1. На панели задач нажмите кнопку Пуск, наведите указатель мыши на пункт Администрирование, а затем щелкните диспетчер сервера.

  2. В области иерархии диспетчер сервера разверните узел Роли, а затем щелкните Веб-сервер (IIS) .

  3. В области Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.

  4. На странице Выбор служб ролеймастера добавления служб ролей разверните узел FTP-сервер.

  5. Выберите Служба FTP.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
    Снимок экрана: служба F T P и расширяемость F T P, выбранные в интерфейсе Windows Server 2008.

  6. Щелкните Далее.

  7. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.

  8. На странице Результаты нажмите кнопку Закрыть.

Windows 7

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

  2. В панель управления щелкните Программы и компоненты, а затем — Включить или отключить компоненты Windows.

  3. Разверните узел Службы IIS, а затем — FTP-сервер.

  4. Выберите Служба FTP.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
    Снимок экрана: служба F T P и расширяемость F T P, выбранные в интерфейсе Windows 7.

  5. Нажмите кнопку ОК.

Windows Server 2008 или Windows Vista

  1. Скачайте пакет установки по следующему URL-адресу:

  2. Следуйте инструкциям в следующем пошаговом руководстве, чтобы установить службу FTP:

Инструкции

Добавление правила авторизации FTP

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем щелкните Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
      • Дважды щелкните элемент Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения разверните имя сервера, узел Сайты, а затем перейдите к сайту или URL-адресу, для которого требуется настроить авторизацию.

  3. На панели Главная дважды щелкните Правила авторизации.
    Снимок экрана: пустая область правил авторизации F T P.

  4. Чтобы добавить новое правило авторизации, щелкните Добавить разрешающее правило... или Добавить запрещающее правило... на панели Действия .

  5. Примените параметры авторизации, необходимые для сайта или приложения. Необходимо учитывать два раздела:

    • Разрешить доступ к этому содержимому: используйте переключатели, чтобы указать, что правило доступа будет применяться к:

      • Все пользователи
      • Все анонимные пользователи
      • Указанные роли или группы пользователей (несколько групп или ролей можно разделить запятыми)
      • Указанные пользователи (несколько пользователей можно разделить запятыми)
    • Разрешения. Используйте поле проверка, чтобы указать доступ на чтение или запись для правила.
      Снимок экрана: добавление правила разрешения авторизации с разрешенным доступом для всех пользователей.

  6. Нажмите кнопку ОК.

Конфигурация

Элемент можно настроить <authorization> на уровне сайта или URL-адреса в файле ApplicationHost.config. Вы можете задать правила авторизации по умолчанию для всего сервера, настроив правила авторизации на уровне сервера. Эти правила можно удалить, очистить или переопределить, настроив более конкретные правила для сайтов или URL-адресов.

Атрибуты

Отсутствует.

Дочерние элементы

Элемент Описание
add Необязательный элемент.

Добавляет правило авторизации в коллекцию правил авторизации.
remove Необязательный элемент.

Удаляет ссылку на правило авторизации в коллекции правил авторизации.
clear Необязательный элемент.

Удаляет все ссылки на правила авторизации из коллекции правил авторизации.

Образец конфигурации

В следующем примере показаны несколько параметров конфигурации, связанных с безопасностью, в элементе <system.ftpServer> для ftp-сайта. В частности, <location> параметры в этом примере демонстрируют следующее:

  • Укажите правило авторизации FTP для доступа на чтение и запись для группы администраторов.
  • Укажите параметры фильтрации запросов FTP, которые запрещают файлы *.exe, *.bat и *.cmd.
  • Укажите ограничения ftp-запросов для максимальной длины содержимого в 1000000 байт и максимальной длины URL-адреса 1024 байта.
  • Блокировка доступа по протоколу FTP к виртуальному каталогу _vti_bin, который используется с серверными расширениями FrontPage.
  • Укажите параметры фильтрации IP-адресов FTP, которые разрешают доступ с 127.0.0.1 и запрещают доступ из диапазона IP-адресов 169.254.0.0/255.255.0.0.
<location path="ftp.example.com">
  <system.ftpServer>
    <security>
      <authorization>
        <add accessType="Allow" roles="administrators" permissions="Read, Write" />
      </authorization>
      <requestFiltering>
        <fileExtensions allowUnlisted="true">
          <add fileExtension=".exe" allowed="false" />
          <add fileExtension=".bat" allowed="false" />
          <add fileExtension=".cmd" allowed="false" />
        </fileExtensions>
        <requestLimits maxAllowedContentLength="1000000" maxUrl="1024" />
        <hiddenSegments>
          <add segment="_vti_bin" />
        </hiddenSegments>
      </requestFiltering>
      <ipSecurity enableReverseDns="false" allowUnlisted="true">
        <add ipAddress="127.0.0.1" allowed="true" />
        <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
      </ipSecurity>
    </security>
  </system.ftpServer>
</location>

Пример кода

В следующих примерах добавляются два правила авторизации FTP для веб-сайта по умолчанию. Первое правило разрешает доступ на чтение и запись для группы администраторов, а второе правило запрещает доступ на чтение и запись для гостевой учетной записи.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.ftpServer/security/authorization /+"[accessType='Allow',roles='administrators',permissions='Read, Write']" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.ftpServer/security/authorization /+"[accessType='Deny',users='guest',permissions='Read, Write']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection authorizationSection = config.GetSection("system.ftpServer/security/authorization", "Default Web Site");
         ConfigurationElementCollection authorizationCollection = authorizationSection.GetCollection();

         ConfigurationElement addElement = authorizationCollection.CreateElement("add");
         addElement["accessType"] = @"Allow";
         addElement["roles"] = @"administrators";
         addElement["permissions"] = @"Read, Write";
         authorizationCollection.Add(addElement);

         ConfigurationElement addElement1 = authorizationCollection.CreateElement("add");
         addElement1["accessType"] = @"Deny";
         addElement1["users"] = @"guest";
         addElement1["permissions"] = @"Read, Write";
         authorizationCollection.Add(addElement1);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim authorizationSection As ConfigurationSection = config.GetSection("system.ftpServer/security/authorization", "Default Web Site")
      Dim authorizationCollection As ConfigurationElementCollection = authorizationSection.GetCollection

      Dim addElement As ConfigurationElement = authorizationCollection.CreateElement("add")
      addElement("accessType") = "Allow"
      addElement("roles") = "administrators"
      addElement("permissions") = "Read, Write"
      authorizationCollection.Add(addElement)

      Dim addElement1 As ConfigurationElement = authorizationCollection.CreateElement("add")
      addElement1("accessType") = "Deny"
      addElement1("users") = "guest"
      addElement1("permissions") = "Read, Write"
      authorizationCollection.Add(addElement1)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var authorizationSection = adminManager.GetAdminSection("system.ftpServer/security/authorization", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var authorizationCollection = authorizationSection.Collection;

var addElement = authorizationCollection.CreateNewElement("add");
addElement.Properties.Item("accessType").Value = "Allow";
addElement.Properties.Item("roles").Value = "administrators";
addElement.Properties.Item("permissions").Value = "Read, Write";
authorizationCollection.AddElement(addElement);

var addElement1 = authorizationCollection.CreateNewElement("add");
addElement1.Properties.Item("accessType").Value = "Deny";
addElement1.Properties.Item("users").Value = "guest";
addElement1.Properties.Item("permissions").Value = "Read, Write";
authorizationCollection.AddElement(addElement1);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set authorizationSection = adminManager.GetAdminSection("system.ftpServer/security/authorization", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set authorizationCollection = authorizationSection.Collection

Set addElement = authorizationCollection.CreateNewElement("add")
addElement.Properties.Item("accessType").Value = "Allow"
addElement.Properties.Item("roles").Value = "administrators"
addElement.Properties.Item("permissions").Value = "Read, Write"
authorizationCollection.AddElement(addElement)

Set addElement1 = authorizationCollection.CreateNewElement("add")
addElement1.Properties.Item("accessType").Value = "Deny"
addElement1.Properties.Item("users").Value = "guest"
addElement1.Properties.Item("permissions").Value = "Read, Write"
authorizationCollection.AddElement(addElement1)

adminManager.CommitChanges()