Построение защищенных Web-приложений на основе IIS и MS SQL Server
Курсовая работа, 12 Июня 2012, автор: пользователь скрыл имя
Описание работы
В IIS 6.0 строгая изоляция была представлена в качестве подхода к осуществлению защиты по умолчанию. Это был существенный шаг в строну по сравнению с другими версиями IIS, которые устанавливали и активировали почти все функции, присутствующие в установочном пакете, в результате чего пользователь получал полностью укомплектованный веб-сервер по умолчанию.
Работа содержит 1 файл
kurs.docx
— 5.59 Мб (Скачать)Настройку аутентификации стандартными методами предписывается производить из консоли Диспетчер служб 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
Встроенная система разрешений
- общие разрешения на 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
Основная проблема при использовании
стандартных средств
- 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.
<sectionSchema name="system.webServer/
iisClientCertificateMappingAut
<attribute name="enabled" type="bool" defaultValue="false" />
<attribute name="
<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
1) нужно щелкнуть правой кнопкой мыши на файле .cer;
2) выбрать в контекстном меню пункт Открыть с помощью...;
3) выбрать Блокнот из списка Другие программы и нажать ОК;
4) ниже представлено то, что должно отобразиться в блокноте:
-----BEGIN CERTIFICATE-----
MIIEfjCCA2agAwIBAgIKFW1IXAAAAA
VQQDExBJSVNSZW1vdGVNZ3JUZXN0MB
MDk1NlowaDELMAkGA1UEBhMCVVMxEz
BAcTB1JlZG1vbmQxDTALBgNVBAoTBE
AxMMUkxVQ0VSTzItSUlTMIGfMA0GCS
34q2qQgHa7ao11TcQMDYlJMrqET05M
mlL8r53s2BQeVFROnDtg4Jko1zJsz7
tdUn732GQOqYf4wY8jOD2zUJDUG4HX
AQH/
DgYIKoZIhvcNAwICAgCAMA4GCCqGSI
YIZIAWUDBAEtMAsGCWCGSAFlAwQBAj
KoZIhvcNAwcwHQYDVR0OBBYEFHbHA+
MBaAFMxzlGbmkp2+
Ly9paXNzYjMwNS9DZXJ0RW5yb2xsL0
Oi8vXFxpaXNzYjMwNVxDZXJ0RW5yb2
BggrBgEFBQcBAQSBkTCBjjBEBggrBg
cnRFbnJvbGwvaWlzc2IzMDVfSUlTUm
MAKGOmZpbGU6Ly9cXGlpc3NiMzA1XE
b3RlTWdyVGVzdC5jcnQwDQYJKoZIhv
w/
Zh+
Z7dRDoaIuAGQLFAlC/
dRqa8DEC74CQN4rQuz395ECm+M/
LFmKTuGyFSVj7jv+
RCI=
-----END CERTIFICATE-----
5) удалить -----BEGIN CERTIFICATE----- и -----END CERTIFICATE----;
6) отредактировать blob, чтобы он отображался одной строкой;
7) сохранить этот файл как clientCertBlob.txt.
Шаг 2: Включение Аутентификация с помощью клиентских сертификатов и сопоставление сертификатов «один-к-одному» для веб-сайта
Следующие действия позволяют включить функцию Аутентификация с помощью клиентских сертификатов, сопоставление сертификатов «один-к-одному» и добавить запись сопоставления:
1) нужно запустить пользовательский интерфейс Диспетчер служб IIS;
2) выбрать веб-сайт SSL, который был сконфигурирован, и открыть Редактор конфигураций;