понедельник, 12 апреля 2010 г.

Microsoft Security Concepts

Автор – Владислав Спектор

Эта статья является продуктом авторской компиляциии из нескольких книг и статей + собственный взгляд и понимание.

Содержание

Отличия Аутентификации от Авторизации
Понятия Windows Security
Аутентификация NTLM
Аутентификация и основные понятия Kerberos


Защищенность системы 2003 зависит от админа. Он может сделать ее защищенной на любом уровне в зависимости от своей компетентности (или ее отсутствия ):).
А теперь поговорим об основных понятиях системы защиты Windows линейки NT.
Отличия Аутентификации от Авторизации.

Authentication (Аутентификация, проверка подлинности) – это проверка того, что данное лицо соответствует опознавательным данным, которые оно предъявляет. Это то, что делает охранник, проверяя теудат-зеут и сверяя лицо с фотографией. Лицо здесь соответсвует паролю входа, а фото – паролю, хранимому на сервере.
Существует определение: аутентификация - проверка того, что субъект является тем, за кого он себя выдает. Аутентификация выполняется, в идеале, только однажды во время первого входа (logon) в систему.

Следует отличать аутентификацию от авторизации.

Authorization (Авторизация) – это получение субъектом (аутентифицированным лицом) прав на объекты. Последними могут быть объекты файловой системы, объекты Active Directory и многое другое.
Существует такое формальное определение:
Авторизация - процесс определения правомочности использования клиентом определенной услуги, перечня доступных объектов, а также разрешенных видов доступа.
Таким образом, авторизация выполняется при доступе к каждому объекту, имеющему разрешения доступа. Но для пользователя это обычно прозрачный процесс, не требующий дополнительного вмешательства

Еще в Windows NT был реализован механизм аутентификации NTLM (NT LAN Manager).
В Security Windows 2000/2003 появились новые элементы:
- Протокол Kerberos – новый механизм аутентификации
- PKI (Public Key Infrastructure) – Инфраструктура Открытого Ключа
- Active Directory вместе с GPO
- Протокол IPSec
- EFS – Encrypted File System
- Security Configuration Tool Set

Все упомянутые и не упомянутые темы мы постараемся обсудить в этой статье на уровне теоретических понятий, чтобы создать хорошую базу для понимания и восприятия конкретики в дальнейшем. Т.е. сначала что и почему, и лишь затем как.

Понятия Windows Security
- Integrated Windows Authentication (IWA)
- Secure Logon Process
- Interactive Logon Model – Winlogon, GINA, SSP, SSPI, LSA
- Interactive Logon and Network Authentication
- Security Principals: groups, users, computer accounts and Domains
- Security Descriptor, ACL, DACL, SACL
- ACE
- SID
- Security Access Token
- SSO
- Impersonating

- Integrated Windows Authentication (IWA) – это термин, ассоциированный с продуктами Microsoft и имеющий отношение к Kerberos и NTLM SSP протоколам аутентификации и к функциональности SSPI.

- Secure Logon Process – в NT безопасность доступа к системе усиливается обязательным Logon. Т.е., в отличие от Windows 9x, нельзя зайти даже локально, не выполнив входа с указанием имени и пароля (user credentials). Это является требованием стандарта безопасности C2.

- Interactive Logon Model – состоит из трех главных компонентов:

a) Winlogon.exe – отслеживает Ctrl-Alt-Del, аутентифицирует и логинит интерактивного пользователя, загружает профиль, выполняет Screen Saver.
b) GINA (Graphical Identification aNd Authorization) – создает экран Logon.
c) SSP (Security Support Provider) – network provider DLL, который делает пакеты безопасности доступными дла аппликаций. К таковым относятся NTLM SSP и Kerberos SSP. SSP действует через SSPI (SSP Interface) – API, функционирующий в качестве интерфейса к нескольким разным SSP.

LSA (Local Security Authority) – проверяет все локальные и удаленные (сетевые) Logons, генерирует маркеры безопасности (security access tokens), управляет локальной политикой безопасности (local security policy), включая политику аудита (audit policy) и журналы событий (event logs).

- Interactive Logon and Network Authentication (Интерактивный вход и сетевая идентификация):

Interactive Logon – под ним подразумеваются действия пользователя, вводящего logon credantials (как правило это username и password) для аутентификации на локальном компьютере или в домене с целью доступа к компьютерному окружению Windows. Эти logon credantials соотносятся с секретом, который был установлен пользователем или администратором для локального или доменного аккаунта. Общим секретом (shared secret) м.б. как традиционный пароль так и ключ, хранимый на смарт-карте и защищенный PIN-кодом. Поскольку поддержка интерактивного Logon содержит заменяемые библиотеки (DLL), то общий секрет (за счет замены DLL на другой) может включать более трудную для подделки биометрическую идентификацию, такую как отпечатки пальцев (fingerprints) или сканирование зрачка (retinal scan).
Интерактивный Logon требует три системных компонента: Winlogon.exe, GINA и network provider DLL или SSP (Security Support Provider).

Network Authentication – в схеме SSO (single sign-on) сетевая идентификация зависит от успешного интерактивного входа в домен. Когда аппликация нуждается в использовании сетевого ресурса, она косвенно получает идентификационную информацию. При этом, на основе имеющегося TGT аппликация запрашивает у TGS сеансовый билет (session key), который затем представляется запрашиваемому ресурсу (мы обсудим в разделе о Kerberos). Главное, что для пользователя (при SSO) получение доступа к сетевому ресурсу выглядит прозрачно и не требует никаких действий, несмотря на сложность происходящих при этом процессов.

- Security Principals (subjects, субъекты безопасности): groups, users, services, computer accounts и Domains, которые имеют SIDs для интерактивного входа и сетевой идентификации. Субъекты безопасности могут выполнять действия над объектами: files, folders, printers, registry keys, AD entries и др. Аутентификация входа субъектов безопасности осуществляется обычно контроллером домена (DC). Каждый объект имеет владельца (owner) или хозяина, который назначает привилегии субъектам безопасности.

- Security Descriptor (SD) + ACL, DACL, SACL, ACE, SID.
SD является свойством объекта и определяет атрибуты безопасности объекта. Примеры объектов безопасности включают files, folders, printers, registry keys, AD entries и др. Security Descriptor содержит информацию о владельце (owner) объекта и его главной группе.
В добавок, SD содержит два списка доступа (ACL):
DACL (Discretionary Access Control) – описывает, кто имеет доступ к определенному объекту и тип доступа (permissions) определенных пользователей и групп.
SACL (System Access Control) – определяет такие типы доступа, которые генерируют записи аудита для объекта.
Итак, SD включает DACL и SACL, которые, в свою очередь, содержат ACEs, детализирующие тип доступа к объекту (DACL) или тип требуемого аудита (SACL). Каждый ACE, в свою очередь, содержит SID, определяющий субъект применения привилегий и описание того, что может делать данный субъект с ресурсом.

FlowChart - from Security Descriptor to SID
Security Descriptor (SD)
One DACL One SACL
ACE (or ACEs) ACE (or ACEs)
One SID One SID

Выражаясь количественно, SD состоит из одного DACL и одного SACL.
DACL и SACL состоят из одного или нескольких ACE.
Каждый ACE состоит из одного SID.
Каждый SID представляет одного пользователя, одну группу или компьютер.

Если в DACL отсутствуют ACEs, доступ к объекту запрещается всем, кроме собственника (Owner), который может назначать права на объект, или Админа, который может взять право владения (Ownership). Права доступа (Access Permissions) кумулятивны, т.е. складываются, за ислючением NoAccess (Deny), который проверяется первым по списку и поэтому является определяющим.

- ACEs (Access Control Entries) – это элементы, из которых состоят DACL и SACL.
ACE содержит:
- SIDs субъектов безопасности, которым даны привилегии
- маску доступа (access mask), которая определяет разрешенные права доступа
- набор контрольных битов (set of bit flags), контролирующих наследование и аудит

При попытке доступа пользователя к какому-либо ресурсу, ОС пытается сопоставить SIDs субъекта, содержащиеся в маркере с SIDs в ACL объекта.

Среди основных типов ACE, определяемых специальными флагами, есть такие:
- Access-denied
- Access-allowed
- System-audit

- SID (Secirity IDentifier) – уникально идентифицирует Security Principals: groups, users, computer accounts и Domains.
SID состоит из двух частей – issuing authority и unique identifier.
Существуют well-known SIDs, например группа EveryOne, SID которой одинаков на всех компьютерах в мире. Для примера, если аккаунт, который определяет ваши права на ресурс, это EveryOne (Deny Full Control), то SID = S-1-1-0.
Иногда не понимается разница между группами EveryOne и Authenticated Users. Вот формула: EveryOne = Authenticated Users + Anonymous Users.

- Security Access Token (Маркер Доступа) – контейнер для SIDs и другой информации, создается процессом LSA как часть интерактивного или сетевого процесса Logon. Каждый процесс в системе имеет ассоциированный с ним Access Token, несущий информацию безопасности, которая затем используется для определения прав доступа такого процесса к объекту, имеющему Security Descriptor. Access Token наследуется от субъекта безопасности. Когда пользователь делает Log off, все ассоциированные процессы и маркер доступа уничтожаются. Security Access Token гарантирует, что процессы, идущие от имени пользователя не имеют большего доступа к объекту, чем сам пользователь, что эти процессы производятся в контексте безопасности (security context) этого пользователя.
Обобщая, можно сказать, что, когда пользователь выполняет logon, Windows создает структуру, называемую access token. В нем хранится информация о SID пользователя и SIDs групп, к которым он принадлежит. Этот token применим к каждому процессу, выполняемому пользователем.

- SSO (Single Sign-On) - система однократной регистрации пользователей при помощи единой учётной записи. Как результат, пользователю достаточно помнить лишь один пароль для доступа к различным ресурсам.

- Impersonating (олицетворение, представление) - выдавание себя за кого-либо другого, действия от имени пользователя, компъютера или любого субъекта безопасности.
Аутентификация NTLM.

Теперь, зная основные понятия Windows Security, мы можем поговорить об аутентификации NTLM, которая продолжает существовать при входе со старых систем, а также в новых системах при интерактивном входе в локальную систему, или при входе на серверы NT.
Как мы уже знаем, аутентификация – это процесс распознавания пользователя при входе в систему. Пользователь вводит имя и пароль в экране Logon. Этот экран создается компонентом с красивым женским именем Джина (не Лоллобриджида). Расшифровка слова GINA - Graphical Identification aNd Authorization. GINA существует в виде файла msgina.dll.
После этого система опознает пользователя, пересылая введенные данные в SAM (Security Account Manager или Диспетчер Учетных Записей). SAM сравнивает имя пользователя и зашифрованный пароль с теми, которые хранятся в базе данных пользователей домена или рабочей станции. Если имя и пароль совпадают, сервер уведомляет рабочую станцию о подтверждении доступа. Затем подсистема защиты создает маркер доступа (access token), представляющий пользователя. Маркер хранит SID пользователя и SIDs групп, к которым он принадлежит. Комбинация процесс/маркер (process/token) называется субъектом (subject). Субъекты оперируют над объектами (object), вызывая системные сервисы, которые и осуществляют реальные операции (например, чтения/записи в файл). В момент, когда субъект осуществляет доступ к объекту, содержимое маркера (т.е. SIDs субъекта и его групп) сравнивается с содержимым ACL (который также включает в себя SIDs). В соответствии с ACL определяются права доступа субъекта к объекту. Таким образом, маркер является связующим звеном между субъектом и объектом.
Затем маркер передается процессу Winlogon, который, в свою очередь предписывает подсистеме Win32 создать процесс для пользователя. К этому процессу присоединяется копия того же маркера доступа. После этого подсистема Win32 инициализирует Windows Explorer, который представляет нам Desktop и Окна. Процесс Logon завершился!

В целом, Access Control Model в WinNT 4.0 основывается на Access Token и ACL.

Поскольку в какой-то момент было осознано, что NTLM легко поддается взлому, то в Windows NT 4.0 SP4 появился протокол NTLMv2, который отличается 128-битным шифрованием пароля.

Аутентификация Kerberos.

Идентификация и проверка подлинности пользователей или аутентификация - основное средство защиты информационных систем от постороннего вмешательства.
Протокол Kerberos представляет собой набор методов идентификации и проверки истинности партнеров по обмену информацией (рабочих станций, пользователей или серверов) в открытой (незащищенной) сети.
Как и легендарный трехголовый пес, охраняющий врата в ад, аутентификация Kerberos основана на 3 компонентах-головах: клиент, сервер и удостоверяющая сторона.
Формальное определение гласит, что Kerberos – это протокол безопасной сетевой аутентификации.
В качестве протокола, Kerberos является набором правил взаимодействия клиентов и серверов в сети с целью проверка подлинности. Кроме того он является набором программ, действующих на нескольких компьютерах, связанных сетью. Kerberos основан на симметричной криптосистеме системе с общим секретом (shared secret key) и третьим доверенным лицом (KDC). Причем KDC – центр распределения билетов и главная удостоверяющая сторона – может существовать только на Domain Controllers. Безопасность протокола обеспечивается, в частности, тем, что пароль никогда не передается по сети даже в зашифрованном виде, а также постоянным отслеживанием синхронности системного времени.

Три главных этапа использования клиентом Kerberos:

1. Logon и аутентификация на KDC.
2. Запрос к KDC на обращение к ресурсам.
3. Обращение к серверу ресурсов с целью получения услуг.

Краткое объяснение аутентификации Kerberos (RFC 1510).

1 этап. Клиент совершает Logon (GINA, Winlogon, LSA, SSP и т.д.) и аутентифицируется в домене при помощи KDC (Key Distribution Center), используя его компонент AS (Authentication Server). Заодно клиент получает билет TGT, дающий право обратиться к этому же или к другому серверу KDC.

2 этап. Клиент запрашивает какой-либо сервис в домене, но обращается при этом не к серверу ресурсов (файловый сервер, например), как можно было бы подумать, а все к тому же серверу KDC (возможно это будет другой сервер KDC в другом домене), a говоря точнее, к его компоненту под названием TGS (Ticket Granting Service). При этом клиент предъявляет билет TGT, полученный на предыдущем этапе. Сервер KDC посылает в ответ разрешение на подсоединение к серверу ресурсов. Это разрешение состоит из двух сообщений, одно из которых понятно клиенту, а другое серверу (т.к. они шифруются по разному).

3 этап. Получив оба сообщения, клиент посылает их серверу ресурсов в слегка измененном виде. Сервер проверяет сообщения и, если все в порядке, посылает клиенту свое сообщение о готовности к обслуживанию. Клиент в свою очередь проверяет сообщение сервера на предмет доверия и затем начинает посылать запросы на услуги, а сервер предоставляет клиенту требуемый сервис.

Основные понятия Kerberos:

KERBEROS (ЦЕРБЕР) - НЕ ТОЛЬКО МИФОЛОГИЧЕСКИЙ ТРЕХГОЛОВЫЙ ПЕС, ОХРАНЯВШИЙ ПОДЗЕМНОЕ ЦАРСТВО, НО И НАЗВАНИЕ СЕРВИСА ПРОВЕРКИ ПОДЛИННОСТИ ДЛЯ ПРОЕКТА АФИНА (МАССАЧУСЕТСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ), ПРОТОКОЛ, ИСПОЛЬЗУЕМЫЙ ЭТИМ СЕРВИСОМ, А ТАКЖЕ ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СЕРВИСА АУТЕНТИФИКАЦИИ.

KDC, KEY DISTRIBUTION CENTER (ЦЕНТР РАСПРЕДЕЛЕНИЯ БИЛЕТОВ) - СЕТЕВОЙ СЕРВИС, ПРЕДОСТАВЛЯЮЩИЙ БИЛЕТЫ И ВРЕМЕННЫЕ СЕАНСОВЫЕ КЛЮЧИ, ИЛИ КОНКРЕТНЫЙ СЕРВЕР, ОКАЗЫВАЮЩИЙ ДАННУЮ УСЛУГУ, ИЛИ ХОСТ - КОМПЬЮТЕР, НА КОТОРОМ ФУНКЦИОНИРУЕТ ЭТОТ СЕРВЕР. KDC ОБСЛУЖИВАЕТ ЗАПРОСЫ И НА НАЧАЛЬНЫЙ БИЛЕТ, А СООТВЕТСТВУЮЩИЙ КОМПОНЕНТ ИНОГДА НАЗЫВАЮТ СЕРВЕРОМ НАЧАЛЬНОЙ АУТЕНТИФИКАЦИИ - AUTHENTICATION SERVER, AS, И НА БИЛЕТЫ К КОНКРЕТНЫМ СЕРВЕРАМ - ЭТОТ КОМПОНЕНТ ИМЕНУЮТ СЕРВЕРОМ ВЫДАЧИ БИЛЕТОВ – TGS.

AS, AUTHENTICATION SERVER - СЕРВЕР НАЧАЛЬНОЙ АУТЕНТИФИКАЦИИ
TGS, TICKET GRANTING SERVICE – СЕРВЕР ВЫДАЧИ БИЛЕТОВ К КОНКРЕТНЫМ СЕРВЕРАМ РЕСУРСОВ

TICKET (БИЛЕТ) - ЗАПИСЬ, ПОМОГАЮЩАЯ КЛИЕНТУ ДОКАЗАТЬ СЕРВЕРУ СВОЮ ПОДЛИННОСТЬ. БИЛЕТ СОДЕРЖИТ СВЕДЕНИЯ О КЛИЕНТЕ, СЕАНСОВЫЙ КЛЮЧ, ВРЕМЕННОЙ ШТАМП И ДРУГУЮ ИНФОРМАЦИЮ. НА БИЛЕТЕ СТАВИТСЯ ПЕЧАТЬ С ПОМОЩЬЮ СЕКРЕТНОГО КЛЮЧА СЕРВЕРА. БИЛЕТ ДЕЙСТВИТЕЛЕН ТОЛЬКО ВМЕСТЕ СО СВЕЖИМ АУТЕНТИФИКАТОРОМ.
TGT, TICKET-GRANTING TICKET (БИЛЕТ НА БИЛЕТЫ) - БИЛЕТ ДЛЯ СЕРВЕРА ВЫДАЧИ БИЛЕТОВ (TICKET-GRANTING SERVER, TGS), ПОЗВОЛЯЮЩИЙ ПОЛУЧАТЬ БИЛЕТЫ К ДРУГИМ СЕРВЕРАМ.

SECRET KEY (СЕКРЕТНЫЙ КЛЮЧ) - КЛЮЧ ШИФРОВАНИЯ, РАЗДЕЛЯЕМЫЙ СУБЪЕКТОМ И KDC И ИСПОЛЬЗУЕМЫЙ ДЛИТЕЛЬНОЕ ВРЕМЯ. В СЛУЧАЕ, КОГДА СУБЪЕКТОМ ЯВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЬ, СЕКРЕТНЫЙ КЛЮЧ ВЫЧИСЛЯЕТСЯ ПО ПАРОЛЮ.

SESSION KEY (СЕАНСОВЫЙ КЛЮЧ) - ВРЕМЕННЫЙ КЛЮЧ ШИФРОВАНИЯ, ИСПОЛЬЗУЕМЫЙ ДВУМЯ СУБЪЕКТАМИ. ВРЕМЯ ЖИЗНИ ТАКОГО КЛЮЧА ОГРАНИЧЕНО ОДНИМ СЕАНСОМ РАБОТЫ В СИСТЕМЕ.

О системе PKI будет рассказано в следующей статье…

Комментариев нет:

Отправить комментарий