Настройку аутентификации стандартными
методами предписывается производить
из консоли Диспетчер служб IIS -> свойства Web-сервера
-> вкладка IIS -> Проверка подлинности.
При нажатии на эту кнопку открывается
окно, в котором и производятся настройки
параметров аутентификации. В этом окне
(рисунок 12) можно:
- разрешить или запретить анонимный
доступ на Web-сайт и выбрать учетную запись,
которая будет использована для этой цели;
- настроить олицетворение ASP.NET;
- выбрать методы аутентификации,
которые могут быть использованы для доступа
на Web-сервер.
Рисунок
12 – Проверка подлинности
О методах аутентификации необходимо
рассказать подробнее:
- Integrated Windows Authentification – единственный
метод (кроме анонимного доступа), доступный
по умолчанию. При использовании этого
метода используются те же хэши NTLM (или
Kerberos – negotiate для Windows 2000/XP/2003), что и при
обычной аутентификации в Windows (например,
при обращении к файлам на файл-сервере).
Конечно, ни один браузер, кроме Internet Explorer,
такой аутентификации не поддерживает.
Необходимо отметить, что, если прав учетной
записи IUSR недостаточно (или анонимный
доступ вообще отключен) следующее, что
делает Internet Explorer - отсылает NTLM-хэш (его версия
зависит от версии операционной системы)
текущей учетной записи на сервер IIS. Если
аутентификация не прошла (или прошла,
но у учетной записи не оказалось прав
на Web-ресурс), то открывается всплывающее
окно аутентификации, в котором пользователь
имеет возможность ввести данные другой
учетной записи;
- Digest Authentification – сравнительно
новая технология (появилась только в Windows 2000/IIS5.0),
основанная на открытых Интернет-стандартах
(алгоритм хеширования MD5 и RFC 2617). При использовании
этого метода аутентификации сервер посылает
специальную случайную последовательность
символов «nonce» клиенту (для каждого сеанса
она будет сгенерирована заново). Клиент
принимает эту последовательность, на
основе ее и своего пароля генерирует
хэш по алгоритму MD5 и пересылает ее серверу.
Сервер, который производит такую же операцию
и сравнивает полученные значения. Главной
проблемой применения этого метода аутентификации
является то, что IIS должен получить доступ
к открытым паролям пользователей, которых
по умолчанию нет и на контроллерах домена.
Таким образом, чтобы этот метод аутентификации
заработал, необходимо для учетных записей
пользователей установить параметр "Store password using reversible encryption",
что обычно в защищенных сетях недопустимо;
- Basic Authentification – самый простой
тип аутентификации, который поддерживается
практически всеми браузерами. При этом
имя пользователя и пароль посылаются
почти открытым текстом (на самом деле
они кодируются, во избежание попадания
служебных символов, по алгоритму Base64).
Тем не менее, конечно, расшифровать эти
данные не составит никакого труда - например,
при помощи утилиты Base 64 Decoder (она умеет декодировать
и некоторые другие форматы) из каталога
прочее на компакт-диске. Поскольку передаются
таким образом на самом деле имя и пароль
учетной записи Windows, то последствия могут
оказаться очень серьезными (если в сети
запущен сниффер). Безопасно пользоваться
этим методом аутентификации можно только
при использовании SSL;
- .NET Passport authentification – возможность
использовать для аутентификации централизованную
систему .NET Passport от Microsoft. Не совсем понятно,
зачем эта возможность помещена на графический
интерфейс IIS Manager - использовать эту возможность
могут только участники программы .NET Passport,
фактически - очень ограниченный круг
крупных Web-коммерсантов. Существует и
множество других ограничений при использовании .NET
Passport.
Есть и другие методы аутентификации,
например, при помощи клиентских сертификатов,
при помощи серверов RADIUS и смарт-карт, но
обычно последние два способа используются
в составе комплексных решений для очень
защищенных Web-сайтов.
Еще несколько слов об служебных
учетных записях и группах, имеющих
отношение к IIS:
- IUSR_имя_компьютера – об
этой учетной записи уже говорилось, она
предназначена для обеспечения анонимного
доступа на сервер IIS и никаких дополнительных
прав ей предоставлять не рекомендуется;
- IWAM_имя_компьютера –
еще одна гостевая учетная запись, которой
не нужно давать лишние права. От имени
этой учетной записи запускаются внешние
процессы, порождаемые процессом INETINFO (то
есть процессом Web-сервера). Иногда для
работы Web-приложения этой учетной записи
необходимо предоставить дополнительные
права, например, на запись в каталог;
- IIS_WPG – эта
группа предназначена для предоставления
прав в операционной системе приложениям CGI и ASP.NET,
работающим на Web-сервере. Если таких приложений
нет, выдавать какие-либо разрешения этой
группе не нужно;
- ASPNET – как понятно из названия, эта
учетная запись используется приложениями ASP.NET,
работающими на сервере IIS. Если не используется ASP.NET (не
установлена как компонент IIS), то этой
учетной записи не будет. Этой учетной
записи нужно предоставлять права, например,
если приложению ASP.NET необходимо подключаться
к SQL Server.
При помощи группы переключателей IP address
and domain name restrictions можно также ограничить
доступ к сайту по IP-адресам, целым IP-сетям
или именам доменов DNS. Обычно такие возможности
используются только в Интранет Web-серверах.
1.2.2 Встроенная
система разрешений Internet Information Server
Встроенная система разрешений Internet Information Server настраивается
несколькими способами:
- общие разрешения на Web-сайт
(или на виртуальный каталог) - из вкладки Домашняя
директория его свойств (вкладки Виртуальная
директория для виртуального каталога).
Они едины для всех пользователей и не
могут быть предоставлены кому-либо индивидуально;
- разрешения на запуск компонентов Web-приложений
(скриптов, исполняемых файлов) - из той
же вкладки;
- разрешения на собственно
объекты, которые запрашивает пользователь
(HTML-страницы, изображения и т.п.) настраиваются
при помощи разрешений NTFS. При этом используется
стандартная система безопасности Windows.
В предыдущих версиях IIS вся настройка
таких разрешений производилась из Windows
Explorer, в IIS 6.0 появилась возможность настраивать
разрешения и из IIS Manager.
Чуть подробнее про систему
общих разрешений. Что означает каждое
из четырех разрешений на вкладке Домашняя
директория:
- Доступ к исходному коду –
возможность просматривать исходный код
скриптов (обычно в приложениях ASP и ASP.NET).
Такая необходимость может возникнуть
только на серверах, используемых для
разработки или учебных целей;
- Чтение – это разрешение обычно
предоставляется на Web-серверах и каталогах
IIS. Исключение - специальные каталоги,
которые служат, например, для приема файлов
от пользователей. Если снять это разрешение,
то таким образом, к примеру, можно на время
отключить Web-сайт для пользователей;
- Запись – разрешение на запись
файлов в этот каталог. Обычно не допускается.
Лучше всего использовать для записи данных
специальное Web-приложение или по крайней
мере создать специализированный каталог
без прав на чтение;
- Просмотр директории - если
этот флажок будет установлен, и в каталоге
не будет файла по умолчанию (default.htm, index.html и
т.п.), то пользователю при обращении к
этому будет автоматически предоставляться HTML-страница
со списком всех файлов и подкаталогов
этого каталога. Конечно, видеть структуру
каталогов сервера большинству пользователей
совсем необязательно.
Подавляющее большинство серверов
работают с единственным назначенным
общим разрешением Чтение.
Если используется какое-либо Web-приложение,
информацию о том, какие дополнительные
настройки безопасности следует производить
(регистрация ISAPI-фильтров, настройки в
группе переключателей Фильтры ISAPI), должны
предоставить разработчики.
1.2.3 Дополнительные
средства предоставления разрешений на
Internet Information Server
Основная проблема при использовании
стандартных средств аутентификации
и предоставления разрешений в Internet Information Server заключается в том, что все эти средства
основаны на системе безопасности Windows.
Такое решение, в принципе, можно использовать
в локальной сети (хотя при использовании
нескольких доменов оно сильно усложняется),
но почти невозможно - в Интернете. Вряд
ли, чтобы предоставить какому-либо пользователю
доступ после регистрации на Web-сайте, для него будет создана учетная
запись Windows. Чаще всего в подобных ситуациях
используются специально написанные Web-приложения
(примеров таких приложений очень много),
но можно использовать и готовые средства.
К самым популярным относятся:
- IIS Password – хранит свои настройки (и список пользователей с паролями) в текстовых файлах, встраивается в консоль IIS Manager, перехватывает обращения через специальный ISAPI фильтр. Поддерживает только basic authentification. Совместимы со стандартными файлами .htaccess и htpasswd, используемым в Apache (эти файлы помещаются в защищаемый каталог). В основном предназначен для обеспечения в IIS тех же возможностей, которые стандартно используются в Apache (поскольку используются стандартные средства, очень просто переносить каталоги между IIS и Apache с сохранением всех разрешений). Программа полностью бесплатна для любого использования;
- IIS Gate – более мощная программа, помимо Basic authentification может использовать также аутентификацию при помощи cookie. Поставляется с удобным графическим интерфейсом и инструкциями для разработчиков по интеграции с ней. Однако она уже не является бесплатной.
Обе этих программы для хранения
своих параметров (списков пользователей,
настроек и т.п.) используют текстовые
файлы, которые легко править из любого
Web-приложения (например, в IIS Password для добавления нового пользователя
достаточно запустить утилиту командной
строки userline и передать ей необходимые
параметры - имя пользователя, пароль и
файл *.htpasswd, в который будут вноситься
изменения).
Кроме того, существует большое количество
готовых и «полуфабрикатных» Web-приложений
для реализации собственного механизма
аутентификации/разрешений, которые требуют
минимального вмешательства разработчиков.
1.2.4 Конфигурирование сопоставления
клиентских сертификатов «один-к-одному»
IIS 6 обладал пользовательским интерфейсом
для конфигурирования и сопоставления
сертификатов «один-к-одному» для
аутентификации. Он позволял пользователям
выбирать способ проверки сертификата
клиента и назначать авторизованные пользовательские
учетные данные. В IIS 7 нет подобного пользовательского
интерфейса. В данном пункте рассматривается
конфигурирование клиентских сертификатов
один-к-одному с помощью Configuration Editor из
Administration Pack.
Это схема для функции Аутентификация
с помощью клиентских сертификатов в IIS
7.
<sectionSchema name="system.webServer/security/authentication/
iisClientCertificateMappingAuthentication">
<attribute name="enabled" type="bool"
defaultValue="false" />
<attribute name="oneToOneCertificateMappingsEnabled"
type="bool" defaultValue="true" />
<element name="oneToOneMappings">
<collection addElement="add" clearElement="clear">
<attribute name="enabled" type="bool"
defaultValue="true" />
<attribute name="userName" type="string"
/>
<attribute name="password" type="string"
encrypted="true" />
<attribute name="certificate" type="string"
required="true" isUniqueKey="true" />
</collection>
</element>
</sectionSchema>
Ниже представлены компоненты, необходимые
для выполнения задач:
1) установленный модуль IIS Client Certificate
Mapping;
2) веб-сайт с правильно сконфигурированной
привязкой HTTPS (рассматривается в пункте
1.5);
3) сертификат Base-64 (файл .cef) (это может
быть любой допустимый 64-битный сертификат,
но он должен быть представлен в форме
файла);
4) установленный на стороне клиента сертификат
клиента;
5) инсталляция IIS 7 Administration Pack Technical Preview 2.
Шаг 1: Получение BLOB сертификата
Элемент коллекции oneToOneMappings имеет
атрибут под названием certificate. Требуемое
значение для этого атрибута содержится
не в сертификате, а в blob сертификата. Вот
как можно его извлечь:
1) нужно щелкнуть правой кнопкой мыши
на файле .cer;
2) выбрать в контекстном меню пункт Открыть
с помощью...;
3) выбрать Блокнот из списка Другие программы
и нажать ОК;
4) ниже представлено то, что должно отобразиться
в блокноте:
-----BEGIN CERTIFICATE-----
MIIEfjCCA2agAwIBAgIKFW1IXAAAAAAAAjANBgkqhkiG9w0BAQUFADAbMRkwFwYD
VQQDExBJSVNSZW1vdGVNZ3JUZXN0MB4XDTA4MDIxMTIxNTk1NloXDTA5MDIxMTIy
MDk1NlowaDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
BAcTB1JlZG1vbmQxDTALBgNVBAoTBE1TRlQxDDAKBgNVBAsTA0lJUzEVMBMGA1UE
AxMMUkxVQ0VSTzItSUlTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611j
34q2qQgHa7ao11TcQMDYlJMrqET05MWFY1/Vso+leujLoIGTfdHOuz4IBVoeUE+y
mlL8r53s2BQeVFROnDtg4Jko1zJsz7AUAnQNBk/GYA1AHYmhY79Z0p1KXW/wSTJB
tdUn732GQOqYf4wY8jOD2zUJDUG4HXm6ib8ajwIDAQABo4IB+TCCAfUwDgYDVR0P
AQH/BAQDAgTwMBMGA1UdJQQMMAoGCCsGAQUFBwMBMHgGCSqGSIb3DQEJDwRrMGkw
DgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDALBglghkgBZQMEASowCwYJ
YIZIAWUDBAEtMAsGCWCGSAFlAwQBAjALBglghkgBZQMEAQUwBwYFKw4DAgcwCgYI
KoZIhvcNAwcwHQYDVR0OBBYEFHbHA+HwZcIrslklj1W3O23UFrBgMB8GA1UdIwQY
MBaAFMxzlGbmkp2+phhDg7TPfi83d7UVMHMGA1UdHwRsMGowaKBmoGSGL2h0dHA6
Ly9paXNzYjMwNS9DZXJ0RW5yb2xsL0lJU1JlbW90ZU1nclRlc3QuY3JshjFmaWxl
Oi8vXFxpaXNzYjMwNVxDZXJ0RW5yb2xsXElJU1JlbW90ZU1nclRlc3QuY3JsMIGe
BggrBgEFBQcBAQSBkTCBjjBEBggrBgEFBQcwAoY4aHR0cDovL2lpc3NiMzA1L0Nl
cnRFbnJvbGwvaWlzc2IzMDVfSUlTUmVtb3RlTWdyVGVzdC5jcnQwRgYIKwYBBQUH
MAKGOmZpbGU6Ly9cXGlpc3NiMzA1XENlcnRFbnJvbGxcaWlzc2IzMDVfSUlTUmVt
b3RlTWdyVGVzdC5jcnQwDQYJKoZIhvcNAQEFBQADggEBAEsSkcx0re36IL80UphJ
w/srR3LBsy8sfwqxBMzMTdF7k6jYtUVpn3D2Dd4JXXVOaEVud9YNn9pr6xJL4t79
Zh+hJzIPA5pQLbccx4vjWB4cWEYxzcoKYCuUdZrfPFXO1a5kQAj8IZ0/6bhMceyR
Z7dRDoaIuAGQLFAlC/KjIBCemDi54MlWtvATQ8bmiRuEOWeneK2Vd2e0fxyezk05
dRqa8DEC74CQN4rQuz395ECm+M/hQnN+dHOygV8n9swd0bdNq8qypwfVUes5HIpj
LFmKTuGyFSVj7jv+64oTxvxtYX2QFp9q6Bi+qj0uyrX8Xjxy5rPSVPEfnxPCBg58
RCI=
-----END CERTIFICATE-----
5) удалить -----BEGIN CERTIFICATE----- и -----END CERTIFICATE----;
6) отредактировать blob, чтобы он отображался
одной строкой;
7) сохранить этот файл как clientCertBlob.txt.
Шаг 2: Включение Аутентификация с
помощью клиентских сертификатов и сопоставление
сертификатов «один-к-одному» для веб-сайта
Следующие действия позволяют включить
функцию Аутентификация с помощью клиентских
сертификатов, сопоставление сертификатов
«один-к-одному» и добавить запись сопоставления:
1) нужно запустить пользовательский
интерфейс Диспетчер служб IIS;
2) выбрать веб-сайт SSL, который был сконфигурирован,
и открыть Редактор конфигураций;