понедельник, 20 апреля 2009 г.

Аудит событий регистрации пользователя

Windows IT Pro :: Безопасность

Ранее я уже рассказывал об использовании в Windows 2000 категории аудита Audit logon events для контроля локальных подключений к серверу или рабочей станции. [Другие статьи на эту тему перечислены во врезке – прим. ред.] Категория Audit logon events собирает данные на той локальной системе, к которой произошло подключение. Однако следить за большим количеством сетевых подключений, перебирая одну систему за другой, крайне неудобно.

На помощь приходит новая категория Audit account logon events («аудит событий регистрации пользователя»), использующая контроллеры доменов Windows 2000 как основное место сбора сообщений о событиях аутентификации. Пожалуй, эту категорию стоило бы назвать Audit authentication events – «аудит событий аутентификации». Если пользователь регистрируется на рабочей станции локально и в качестве входного имени предъявляет учетную запись пользователя домена, то рабочая станция посылает запрос на контроллер домена для проверки подлинности имени и прав доступа. То же самое происходит, если пользователь подключается по сети к серверу. Аутентификация пользователя осуществляется на контроллере домена. Следить за такими событиями можно при помощи оснастки Domain Controller Security Policy консоли управления MMC контроллера домена. Это расширение использует параметры объекта Default Domain Controller Group Policy Object (GPO), которые называются Security Settings. В свою очередь, GPO входит в организационную единицу Domain Controllers, а организационная единица – в состав AD. Чтобы включить аудит, следует в консоли выбрать Local Policies\Audit Policy, перейти на правую панель, щелкнуть правой кнопкой мыши на Audit account logon events и выбрать Security. Откроется диалоговое окно Security Policy Setting. Для включения аудита нужно отметить флажки Success и Failure, затем сохранить изменения.

Windows 2000 может использовать различные протоколы аутентификации для обработки запросов на подключение к системе. Для разных протоколов в журнале аудита генерируются разные типы сообщений. Windows 2000 поддерживает протоколы Kerberos и Windows NT LAN Manager (NTLM). Kerberos используется при локальном подключении к рабочей станции Windows 2000 или сетевом подключении пользователя домена с рабочей станции Windows 2000 к серверу Windows 2000. В этом случае на контроллере домена ведется запись событий, специфичных для Kerberos. Если пользователь локально или удаленно подключается к системе NT или к серверу со станции NT, то применяется NTLM, и ведется запись событий, характерная для этого протокола.

Аудит успешных событий Kerberos

Протокол аутентификации Kerberos применяет шифрованные билеты, tickets (с записанными временными метками), для проверки возможности входа в систему. Чтобы предоставить доступ даже к локальной системе, Windows 2000 сначала запрашивает у контроллера домена билет доступа к службе (service ticket). Он содержит информацию, подтверждающую права пользователя на доступ к системе. Но прежде, чем будет получен билет доступа к службе, выполняется аутентификация пользователя на контроллере домена и затем выдается билет на сеанс работы, ticket-granting ticket (TGT). Пароль пользователя проверяется контроллером домена только один раз. Это происходит на ранней стадии подключения к рабочей станции, когда станция запрашивает TGT для пользователя. После того как билет TGT получен и пользователю требуется подключаться к различным сетевым службам (например, файловым серверам, серверу SQL, серверу Ex-change), рабочая станция использует тот же билет TGT при формировании каждого нового запроса. В этом отличие TGT от билета доступа к службе, который запрашивается всякий раз при подключении пользователя к сетевым службам. Удачные и неудачные попытки запросов билетов TGT и доступа к службе фиксируются в журнале Windows 2000 с различными идентификаторами с ID.

Каждое утро, когда пользователь включает компьютер, вводит свое имя в домене и пароль, станция запрашивает TGT у ближайшего контроллера домена. Если имя и пароль признаны корректными, проводится проверка полномочий пользователя, после чего контроллер выдает TGT, и в журнал записывается событие с ID 672 (аутентификация проведена успешно) (см. Экран 1). Поле User для этого события (и всех аналогичных событий категории Audit account logon event) не содержит реального имени пользователя; поле всегда читается как SYSTEM. Следует обратить внимание на поля User Name и Supplied Realm Name, которые отображают имя пользователя и его DNS-суффикс. При создании учетной записи можно использовать полное DNS-имя или корневое имя дерева домена в формате domain\username. Поле User с ID выводит то же имя в стиле NT (т. е. NetBIOS имя домена, отделенное от имени пользователя знаком «обратный слеш»). Поле Service Name указывает имя службы, на доступ к которой контроллер домена выдал билет. Если это самое первое обращение рабочей станции к контроллеру, то в поле находится имя службы krbtgt (т. е. квитанция Kerberos).

Поле Client Address указывает IP-адрес станции, с которой пользователь пытался зарегистрироваться в домене. Все события Kerberos, включая неудачные попытки подключения, содержат этот IP-адрес. Эта информация бесценна. В NT можно узнать имя системы, осуществлявшей неудачные попытки подключения, но нельзя определить, из каких сегментов сети предпринимались эти попытки. Преимущество Windows 2000 состоит не только в централизации ведения журналов на контроллерах доменов, но и в том, что можно определить, откуда пытались подключиться к домену.

Существуют и другие примеры события с ID 672, когда компьютеру необходима авторизация в домене. Обычно это происходит в момент загрузки рабочей станции или перезагрузки сервера. Компьютер должен пройти авторизацию на контроллере домена, прежде чем он получит доступ к данным групповой политики или сможет зарегистрировать свое доменное имя. В этом случае поля User Name и User с ID содержат имя компьютера, как показано на Экране 2. К имени компьютера добавлен знак $, что отличает его от имени пользователя.

Событие с ID 672 позволяет контролировать первичные подключения к домену при помощи процедуры получения билета TGT, а событие с ID 673 контролирует доступ к сетевым службам при помощи процедуры получения билета доступа к службе. Например, если пользователь отображает диск на каталог файлового сервера или подключается к другим ресурсам удаленной системы (например, реестру, файлу журнала, SAM), то система запрашивает билет доступа к службе, и на контроллере домена генерируется событие с ID 673.

Windows 2000 генерирует событие с ID 673 еще в нескольких случаях. Во-первых, это событие часто имеет место при взаимодействии между системами; оно легко узнаваемо, так как в поле User Name помещается имя компьютера. Примером может служить ситуация, когда станция подключается к контроллеру домена для получения информации о групповой политике.

Важно понять, как связаны между собой события с ID 672 и с ID 673. Выдача контроллером билета TGT (событие с ID 672) еще не означает, что пользователю разрешен доступ к какой-либо системе; TGT подтверждает подлинность учетной записи пользователя и дает возможность его последующей авторизации при запросе билета доступа к службам (событие с ID 673) для подключения к различным системам.

Послав запрос на билет TGT, компьютер пользователя сразу запрашивает билет доступа к службе, чтобы пользователь мог работать на данной машине. Экран 3 отображает фрагмент журнала безопасности, показывающий, что событие с ID 673 следует сразу за событием с ID 672. На Экране 4 приведены все поля события с ID 673. Просмотрев поля User Name, Service Name и Service с ID, можно сделать вывод, что пользователь Maggie зарегистрировалась на станции W2KPRO-LEFT. Поля User Domain и Service с ID содержат информацию о том, что и пользователь и компьютер принадлежат домену MTG.LOCAL.

Экран 3. Просмотр порядка появления событий.

На Экране 5 приведен еще один пример события с ID 673. В этом примере пользователь Maggie подключилась к удаленной системе TECRA с рабочей станции W2KPRO-LEFT. Имя удаленной системы TECRA показывают поля Service Name и Service с ID, но откуда известно имя рабочей станции W2KPRO-LEFT? Ответ подскажет значение поля Client Address: 10.0.0.81. Известно, что первое событие с ID 673, следующее за ID 672, всегда означает подключение пользователя к своей рабочей станции. Поскольку Maggie запрашивала билет TGT (событие с ID 672) с адреса 10.0.0.81, а затем билет доступа к службе (событие с ID 673) для подключения к W2KPRO-LEFT, значит, 10.0.0.81 является IP-адресом станции W2KPRO-LEFT. Последующие события с ID 673 (такие, как на Экране 5) показывают, что Maggie подключилась к ресурсам другой системы с того же самого адреса (т. е. 10.0.0.81).

Для предотвращения атак Kerberos ограничивает срок действия билета, полученного от контроллера домена. Если время истекает, а пользователь все еще подключен к ресурсам, то Windows 2000 автоматически запрашивает контроллер домена и обновляет билет. При обновлении билета в журнал записывается событие с ID 674.

Аудит событий Kerberos

Рассмотрим, какие типы событий записываются в журнал Windows 2000 при неудачных попытках аутентификации. Если во время регистрации с консоли рабочей станции вводится подлинное имя пользователя, но неверный пароль, то контроллер домена записывает в журнал событие с ID 675 (ошибка предварительной аутентификации) с кодом ошибки 24 (Failure Code 24) (см. Экран 6). Это очень важное сообщение, так как оно позволяет обнаруживать попытки подключения с неверными паролями. В сообщении указывается не только имя пользователя и имя домена, но и IP-адрес станции, с которой осуществлялась попытка несанкционированного доступа. Это огромный шаг вперед по сравнению с Win-dows NT, где в журнал записывались только имя пользователя и домен. Событие с ID 675 записывается еще и в том случае, если пользователь зарегистрировался на станции с одним именем, а затем пытался подключиться к серверу с другим. Например, он мог попробовать подключиться к сетевому диску от имени другого пользователя.

Иногда ошибка при регистрации в домене происходит не из-за неправильно введенного пароля, а из-за случайной опечатки при вводе имени пользователя или попытке подбора чужого имени. В этом случае (неправильное имя пользователя) Win-dows 2000 регистрирует событие с ID 676 с кодом ошибки 6. Это еще одно преимущество по сравнению с NT, где невозможно отличить отказ в регистрации из-за неверно введенного пароля от отказа из-за неверно введенного имени. Windows 2000 использует сообщение с ID 676 с различными кодами ошибок для контроля еще нескольких типов ошибок регистрации. Код ошибки 12 указывает на ошибку, возникающую при попытке регистрации в системе в часы, когда данному пользователю работать не разрешается. Код ошибки 23 означает, что срок действия пароля пользователя истек. Код ошибки 18 указывает на блокирование учетной записи в результате неудачных попыток подключения пользователя, завершения срока действия учетной записи или запрета администратора. Код ошибки 37 сообщает о том, что время на рабочей станции не синхронизировано со временем на контроллере домена и отличается на величину большую, чем это допустимо.

Бывают ситуации, когда пользователь получает от контроллера домена билет TGT, но не может получить билет доступа к службе. В этом случае Windows 2000 записывает событие с ID 677 (запрос на получение билета доступа к службе не удовлетворен) с тем или иным кодом ошибки, в зависимости от ситуации. Например, если пользователь со станции Windows 2000 Pro пытается подключиться к серверу NT, то в журнал записывается сообщение с ID 677 и кодом ошибки 7. На Экране 7 видно, что пользователь, зарегистрировавшийся на станции Windows 2000 Pro (IP-адрес 10.0.0.81) с именем Administrator, подключил сетевой диск сервера NT (т. е. Kramer), входящего в домен Windows 2000 (т. е. MTG.LOCAL). Сначала рабочая станция направила запрос контроллеру домена для получения билета Kerberos. Этот запрос не был удовлетворен, так как NT сервер не поддерживает протокол Kerberos. Поэтому в журнал контроллера записано сообщение с ID 677 с кодом 7. Эта ошибка не оказывает влияния на доступ пользователя к ресурсам, так как станция немедленно возвращается к использованию протокола NTLM.

События NTLM

После того как контроллер домена успешно аутентифицировал пользователя, в журнал записывается событие с ID 680. Подобно событию Kerberos с ID 673, в котором указывается имя пользователя и IP-адрес станции, в событии с ID 680 указывается имя пользователя и имя станции, откуда поступил запрос на подключение (см. Экран 8). Так как NTLM может функционировать поверх TCP/IP, NetBEUI и IPX, то Windows 2000 записывает в журнал имя системы, а не ее IP-адрес.

Если аутентификация NTLM по каким-то причинам не может быть выполнена, то контроллер записывает в журнал событие с ID 681, как показано на Экране 9. О причинах неудачи можно судить по описанию кодов ошибок (см. Таблицу 1).

Новая категория аудита, Audit ac-count logon events, реализованная в Windows 2000, обеспечивает гораздо большую степень централизации аудита подключений пользователей. В системе появилась возможность отличать ошибки подключения, произошедшие из-за неверного ввода имени пользователя, от ошибок из-за ввода неверного пароля, а также вычислять по IP-адресу расположение станции-нарушителя. Тем не менее следует постоянно просматривать в журналах безопасности события категории Audit logon events («аудит подключений к системе»). Дело в том, что злоумышленники могут попытаться подключиться к системе, используя локальную учетную запись SAM, такую, как встроенная запись Administrator. Контроллер домена не фиксирует атаки, в которых используются локальные учетные записи. Просматривая события Audit logon events и Audit account logon events, можно следить за подключениями к рабочим станциям, серверам и контроллерам домена. В следующей статье из этой серии я расскажу о других категориях аудита, которые были изменены в Windows 2000.

Рэнди Франклин Смит – президент компании Monterey Technology Group, занимающейся обучением и консалтингом в области защиты Windows NT. Связаться с ним можно по адресу: rsmith@montereytechgroup.com.

________________________________________

В предыдущих выпусках

Это вторая статья Рэнди Франклина Смита из серии, посвященной журналу безопасности Windows 2000. Информацию о журнале безопасности Windows NT можно получить в предыдущей серии статей этого автора. Ниже приведен список статей обеих серий. Сами статьи можно найти на Web-сайте Windows 2000 Magazine по адресу: http://www.win2000mag.com.

Статьи, посвященные журналу безопасности Windows 2000

«Контроль событий регистрации в Windows 2000» – http://www.osp.ru/win2000/worknt/2001/03/302.htm

Статьи, посвященные журналу безопасности Windows NT

«Анализируем журнал безопасности Windows NT» – Журнал Windows 2000 Magazine, №03/2000

«Контроль использования административных привилегий» – Журнал Windows 2000 Magazine, №04/2000

«Инструменты для работы с журналами безопасности» – Журнал Windows 2000 Magazine, №06/2000

________________________________________

Экран 1. Событие с ID 672 аутентификации пользователя.

Event Type: Success Audit

Event Source: Security

Event Category: Account Logon

Event ID: 672

Date: 9/15/2000

Time: 5:46:42 AM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

Authentication Ticket Granted:

User Name: Maggie

Supplied Realm Name: MTG

User ID: MTG\maggie

Service Name: krbtgt

Service ID: MTG\krbtgt

Ticket Options: 0x40810010

Ticket Encryption Type: 0x17

Pre-Authentication Type: 2

Client Address: 10.0.0.81

назад

________________________________________

Экран 2. Событие с ID 672 аутентификации системы.

Event Type: Success Audit

Event Source: Security

Event Category: Account Logon

Event ID: 672

Date: 9/14/2000

Time: 7:19:41 PM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

Authentication Ticket Granted:

User Name: W2KPRO-LEFT$

Supplied Realm Name: MTG.LOCAL

User ID: MTG\W2KPRO-LEFT$

Service Name: krbtgt

Service ID: MTG\krbtgt

Ticket Options: 0x40810010

Ticket Encryption Type: 0x17

Pre-Authentication Type: 2

Client Address: 10.0.0.81

назад

________________________________________

Экран 4. Событие с ID 673 регистрации рабочей станции.

Event Type: Success Audit

Event Source: Security

Event Category: Account Logon

Event ID: 673

Date: 9/15/2000

Time: 5:46:42 AM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

Service Ticket Granted:

User Name: Maggie

User Domain: MTG.LOCAL

Service Name: W2KPRO-LEFT$

Service ID: MTG\W2KPRO-LEFT$

Ticket Options: 0x40810010

Ticket Encryption Type: 0x17

Client Address: 10.0.0.81

назад

________________________________________

Экран 5. Событие с ID 673 соединения с сервером.

Event Type: Success Audit

Event Source: Security

Event Category: Account Logon

Event ID: 673

Date: 9/15/2000

Time: 5:46:42 AM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

Service Ticket Granted:

User Name: Maggie

User Domain: MTG.LOCAL

Service Name: TECRA$

Service ID: MTG\TECRA$

Ticket Options: 0x40810010

Ticket Encryption Type: 0x17

Client Address: 10.0.0.81

назад

________________________________________

Экран 6. Событие с ID 675 с кодом ошибки 24.

Event Type: Failure Audit

Event Source: Security

Event Category: Account Logon

Event ID: 675

Date: 10/10/2000

Time: 8:06:48 AM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

Pre-authentication failed:

User Name: Administrator

User ID: MTG\administrator

Service Name: krbtgt/MTG

Pre-Authentication Type: 0x2

Failure Code: 24

Client Address: 10.0.0.81

назад

________________________________________

Экран 7. Событие с ID 677 с кодом ошибки 7.

Event Type: Failure Audit

Event Source: Security

Event Category: Account Logon

Event ID: 677

Date: 10/10/2000

Time: 10:40:48 AM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

Service Ticket Request Failed:

User Name: Administrator

User Domain: MTG.LOCAL

Service Name: HOST/Kramer

Ticket Options: 0x40810010

Failure Code: 7

Client Address: 10.0.0.81

назад

________________________________________

Экран 8. Событие с ID 680.

Event Type: Success Audit

Event Source: Security

Event Category: Account Logon

Event ID: 680

Date: 10/10/2000

Time: 11:21:22 AM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

Account Used for Logon by: MICROSOFT _AUTHENTICATION _PACKAGE_V1_0

Account Name: Administrator

Workstation: \\KRAMER

назад

________________________________________

Экран 9. Событие с ID 681.

Event Type: Failure Audit

Event Source: Security

Event Category: Account Logon

Event ID: 681

Date: 10/10/2000

Time: 11:31:42 AM

User: NT AUTHORITY\SYSTEM

Computer: TECRA

Description:

The logon to account: Administrator

by: MICROSOFT _AUTHENTICATION _PACKAGE

_V1_0 from workstation: KRAMER

failed. The error code was: 3221225578

назад

________________________________________

Таблица 1. Коды ошибок события с ID 681.

Код ошибки Причина отказа в доступе

3221225572 Указанное имя не существует.

3221225578 Правильно указано имя пользователя, но пароль неверен.

3221226036 Пользователь заблокирован.

3221225586 Учетная запись деактивирована.

3221225583 Попытка регистрации в системе в часы, не разрешенные для данного пользователя.

3221225584 Попытка регистрации на рабочей станции, не предусмотренные для работы данного пользователя.

3221225875 Срок действия учетной записи пользователя истек.

3221225585 Попытка входа с просроченным паролем.

3221226020 Попытка входа при помощи учетной записи пользователя, для которой администратор установил требование заменить пароль при следующем входе в систему (User must change password at next logon option).

назад

Аудит доступа к объектам

Windows IT Pro :: Безопасность

Контроль использования файлов, принтеров, реестра и других объектов

Категория аудита Audit object access (аудит доступа к объектам) Windows 2000 – важный источник информации о действиях пользователей сети на уровне операционной системы. С помощью этой категории можно определить источник, время и метод доступа к файлам, папкам, разделам реестра и принтерам. Связав события доступа к объектам с соответствующими событиями регистрации или выполнения процессов, можно выяснить конкретные детали сеанса, в ходе которого была сделана попытка доступа, или узнать, из какого приложения пользователь пытался открыть объект.

Контроль на двух уровнях

Чтобы следить за доступом к объектам, необходимо организовать аудит Windows 2000 как на уровне системы, так и на уровне объектов. Сначала следует активизировать категорию Audit object access для успешных и неудачных событий. (Подробнее о том, как использовать системную политику аудита, рассказано в статье «Контроль событий регистрации в Windows 2000». Полный список статей этого автора о журналах безопасности Windows 2000 и Windows NT приведен во врезке «В предыдущих выпусках» – прим. ред.) Затем необходимо обеспечить аудит контролируемого объекта. Каждый объект имеет два ACL (список управления доступом): разграничительный ACL (DACL) и системный ACL (SACL).

Экран 1. Упрощенный вид DACL объекта.

Список DACL. В списке DACL перечислены пользователи, имеющие право доступа к объекту, и способы доступа. (Часто вместо DACL используется термин ACL.) Чтобы открыть DACL объекта из Windows Explorer (для папок и файлов) или в окне Printers (для принтеров), следует щелкнуть на объекте правой кнопкой мыши, выбрать пункт Properties и перейти к закладке Security (см Экран 1). На этой закладке дан упрощенный вид списка DACL, т. е. показаны разрешения только для одного пользователя или группы. Чтобы просмотреть полный список DACL, нужно щелкнуть на кнопке Advanced. Откроется диалоговое окно Access Control Settings объекта, показанное на Экране 2.

Экран 2. Полный список DACL-объекта.

Список SACL. В списке SACL перечислены действия над объектом, подлежащие аудиту Windows 2000. SACL объекта состоит из элементов управления доступом (ACE). Элемент ACE точно определяет типы доступа, регистрируемые в журнале безопасности Windows 2000, когда конкретный пользователь или группа обращается к объекту. Специальный флаг каждого ACE показывает, к успешным или неудачным попыткам доступа относится данный элемент. Чтобы обратиться к SACL объекта, следует открыть диалоговое окно Access Control Settings и перейти к закладке Auditing. Каждый элемент в разделе Auditing Entries – это ACE. Из приведенного на Экране 3 списка SACL для файла примера (payroll.xls) видно, что Windows 2000 будет проверять успешные попытки записи и неудачные попытки чтения, предпринятые членами группы Everyone.

Экран 3. SACL объекта.

Контроль попыток доступа к объекту

Windows 2000 производит аудит доступа в тот момент, когда пользователь пытается получить доступ к объекту через прикладную программу. Когда пользователь обращается к объекту из приложения, программа запрашивает у Windows 2000 дескриптор (handle) объекта. С помощью дескриптора приложение выполняет операции над объектом. Прежде чем предоставить дескриптор, Windows 2000 сопоставляет DACL объекта с учетной записью пользователя, запустившего прикладную программу, и типами доступа (например, запись или чтение), запрошенными приложением. Затем Windows 2000 определяет, предусмотрена ли системной политикой аудита запись результатов этого сравнения в журнал. Например, если попытка доступа неудачна, система выясняет, активизирована ли политика аудита для регистрации неудачных обращений к объектам.

Если системной политикой аудита предусмотрена запись результата в журнал, то Windows 2000 обрабатывает SACL объекта. Система исследует каждый элемент ACE, имеющий отношение к результату, и определяет, какие из элементов идентифицируют учетную запись пользователя, запустившего приложение, и все группы, к которым он принадлежит. Затем Windows 2000 исследует типы доступа, указанные в этих ACE. Если хотя бы один тип доступа в ACE совпадает с любым из типов доступа, запрошенных приложением, то Windows 2000 генерирует событие с ID 560 «объект открыт» с соответствующим типом события (Failure Audit или Success Audit). В оснастке Event Viewer консоли Microsoft Management Console (MMC) сообщения о неудачном завершении какой-либо операции отмечены пиктограммой замка, а записи об успешном завершении операции – изображением ключа.

Предположим, что пользователь Гарольд работает с Microsoft Excel и пытается открыть файл payroll.xls. Excel запрашивает у Windows 2000 дескриптор для payroll.xls. Windows 2000 сравнивает DACL файла с учетной записью Гарольда и запросом на чтение, поступившим от Excel; согласно DACL, у Гарольда нет права на чтение payroll.xls. Как показано на Экране 2, доступ к payroll.xls имеют только Administrators и группа HR, а Гарольд не является членом ни одной из этих групп. Windows 2000 выясняет, что системной политикой аудита предусмотрена регистрация неудачных попыток обращения к объекту, поэтому она просматривает SACL файла payroll.xls и исследует каждый элемент ACE, контролирующий неудачные попытки доступа. Windows 2000 определяет, какие из этих элементов ACE указывают на учетную запись Гарольда или группу, к которой он принадлежит. Как показано на Экране 3, SACL объекта содержит ACE, который относит неудавшуюся операцию чтения к группе Everyone, поэтому Windows 2000 регистрирует событие с ID 560 (см. Экран 4).

Экран 4. Событие с ID 560 неудачной попытки доступа.

Предположим, что пользователь Салли также пытается открыть файл payroll.xls из Excel. Поскольку Салли является членом группы HR, она имеет право выполнять операции чтения и записи в файле payroll.xls. Системная политика аудита настроена на регистрацию успешных попыток доступа к объектам, и SACL файла содержит ACE, относящийся к успешным операциям записи и группе Everyone, поэтому Windows 2000 регистрирует событие с ID 560 (см. Экран 5).

Экран 5. Событие с ID 560 успешного доступа.

Разобраться в полях события с ID 560 нетрудно. Значение параметра Object Server всегда Security. В поле Object Type идентифицируется объект аудита – файл, папка, раздел реестра, принтер или служба. Windows 2000 заполняет поле New Handle ID лишь в том случае, если доступ к объекту был предоставлен. Если пользователь не имеет соответствующих полномочий, то доступ не предоставляется, и Windows 2000 не создает ID дескриптора. Operation ID – просто число, которое увеличивается на единицу для каждой операции, выполняемой в Active Directory (AD).

Теоретически, с помощью поля Process ID можно вычислить приложение, через которое пользователь открыл объект. Однако соответствующее событие с ID 592 (новый процесс), генерируемое категорией Audit process tracking, показывает ID процесса в другом формате, нежели все остальные события Windows 2000. По некоторым сведениям, разработчики Microsoft устранят эту проблему в версиях Windows XP и Windows Server – известных под названием Whistler. Для событий, отображающих непрямой доступ к объектам, Process ID идентифицирует серверное приложение, а не клиентскую программу, через которую пользователь открыл объект. Если пользователь открывает файл в каталоге общего доступа, то Process ID указывает на процесс System как на программу, открывшую объект. Чтобы проверить эту информацию, можно открыть Task Manager, перейти к закладке Processes и посмотреть идентификатор процесса в столбце PID.

Поля Primary User Name и Primary Domain идентифицируют учетную запись пользователя, напрямую обратившегося к объекту. Когда пользователь обращается к объекту со своего локального компьютера через настольное приложение, такое, как Microsoft Word или Excel, то Primary User Name и Primary Domain показывают учетную запись компьютера, а поля Client User Name и Client Domain – учетную запись пользователя. Например, на Экране 6 показано событие с ID 560, которое было зарегистрировано, когда пользователь Джон подключился к сетевому диску на файл-сервере Tecra и открыл документ budget.doc. Тогда в поле Primary User Name стоит имя TECRA$, соответствующее учетной записи файл-сервера в домене. Client User Name идентифицирует Джона как пользователя, работающего на клиентской стороне.

Экран 6. Событие с ID 560 непрямого доступа.

Поля Primary Logon ID и Client Logon ID содержат идентификатор logon ID, присваиваемый при регистрации с учетной записью пользователя, обратившегося к объекту. Чтобы определить, в каком сеансе был произведен доступ, следует посмотреть на событие с ID 540 (удаленная регистрация) или с ID 528 (все другие виды регистрации) с этим идентификатором (подробнее эти события описаны в статье «Контроль событий регистрации в Windows 2000».) Если пользователь напрямую открывает объект на своей локальной машине, то Primary Logon ID события с ID 560 соответствует Logon ID события с ID 528, зафиксированного Windows 2000 при регистрации пользователя в системе; поле Client Logon ID остается пустым. Если пользователь обращается к файлу на удаленной машине, то поле Primary Logon ID события с ID 560 идентифицирует сеанс, связанный с учетной записью локального компьютера, а поле Client Logon ID события с ID 528 соответствует Primary Logon ID.

В поле Accesses указаны типы доступа, запрошенные приложением. Одни типы доступа специфичны для определенного класса объектов, другие применимы к любому объекту. В Таблице 1 перечислены и описаны самые распространенные типы доступа.

Когда пользователь открывает файл или папку, в поле Accesses отмечаются предоставленные пользователю типы доступа, специфичные для данной папки или файла. Эти типы доступа соответствуют специальным разрешениям, приведенным в DACL файла. Параметры ReadAttributes и WriteAttributes указывают, что пользователь открыл файл с возможностью изменения его свойств (только чтение, архивный, скрытый, системный). ReadEA и WriteEA применяются к расширенным атрибутам файла, определяемым конкретными приложениями. Чтобы увидеть расширенные атрибуты файла, нужно открыть Windows Explorer и щелкнуть на файле правой кнопкой мыши. Выбрав Properties, следует перейти к закладке Custom, а затем к закладке Summary.

Тип AppendData означает, что пользователь имеет право добавить данные в открытый файл. ReadData и WriteData означают, что пользователь, открывший файл, имеет возможность прочитать или изменить его данные. Если задан режим аудита запуска исполняемых файлов, то Windows 2000 регистрирует доступ типа Execute при каждом запуске программы.

Те же типы доступа – с небольшими отличиями – используются Windows 2000 для контроля работы с папками. AppendData указывает, что пользователь создал в папке подпапку. Windows 2000 регистрирует тип WriteData, если в папке создается новый файл. Чтобы определить имя нового файла или подпапки, нужно посмотреть на последующее событие с ID 560, соответствующее новому дочернему объекту. Windows 2000 регистрирует тип ReadData, если пользователь просматривает содержимое папки (например, командой Dir или через Windows Explorer).

Завершение работы с объектом

Когда пользователь открывает объект из приложения, Windows 2000 регистрирует событие с ID 560, а при закрытии объекта операционная система регистрирует событие с ID 562 (дескриптор закрыт). Поля события с ID 562 частично совпадают с полями события с ID 560.

Экран 7. Событие с ID 562.

Следует обратить внимание на поле New Handle ID события с ID 560 (см. Экран 5) и поле Handle ID события с ID 562 (см. Экран 7). Windows 2000 генерирует различные Handle ID для каждого открытого объекта. Таким образом, связав событие с ID 560 и событие с ID 562 с одинаковыми Hand-le ID, можно определить, как долго объект оставался открытым. Из оснастки Event Viewer следует открыть событие с ID 560 и запомнить Handle ID события. Затем нужно щелкнуть правой кнопкой мыши на журнале Security и выбрать функции View, Find. В поле Event ID следует ввести значение 562, а в поле Description – значение Handle ID. Если Event Viewer показывает сначала новые объекты, то следует изменить направление поиска на Up, а затем щелкнуть Find Next.

Не только файлы

Категория Audit object class используется не только для контроля доступа к файлам. Например, с помощью программы regedt32 можно запустить аудит разделов реестра и затем контролировать доступ к разделам и элементам реестра. Элементы реестра не имеют собственных списков DACL и SACL; как и операции управления доступом, операции аудита проводятся через родительский раздел реестра. Windows 2000 регистрирует типы доступа, соответствующие разрешениям в списке DACL раздела, и описывает разрешения, указанные в событии с ID 560. Если обращение к разделу реестра вызывает событие с ID 560, то Windows 2000 указывает в поле Object Type значение Key. Значение в поле Object Name начинается с \REGISTRY, за которым следует ветвь и остальной путь к разделу. Например, подраздел HKEY_LOCAL_MACHI-NE\SOFTWARE\Acme отображается как \REGISTRY\MACHINE\SOFT-WARE\Acme.

Из меню Settings, Printers можно получить доступ к спискам SACL принтеров и реестра. Для этого достаточно выполнить те же операции, что и при доступе к SACL файла или папки, но отправной точкой будет служить не Windows Explorer, а меню Settings, Printers.

В статье Microsoft «Monitoring and Auditing for End Systems» (http://www.microsoft.com/technet/ security/monito.asp) говорится, что можно выполнять аудит системных служб, но в действительности это не так. Даже если в SACL службы режим аудита включен (с помощью политик Group Policy через ComputerConfiguration, Windows Settings, Security Settings, System Services), Windows 2000 не заносит в журнал безопасности сведений о запуске, остановке и отключении службы. Идентификаторы событий документированы для некоторых других операций (например, удаления объекта), но этот механизм пока не функционирует.

Наследование SACL

В Windows 2000 схема наследования SACL повторяет схему DACL. По умолчанию, элементы SACL автоматически переходят от родительских папок и разделов реестра к дочерним объектам. Например, если разрешить аудит неудачных операций записи в папку, то все файлы и подпапки наследуют этот элемент SACL. Существует несколько уровней настройки наследования SACL.

Дочерний уровень. Чтобы блокировать передачу элементов родительского SACL дочернему объекту, следует открыть окно Access Control Settings (параметры управления доступом) дочернего объекта, перейти к закладке Auditing и снять флажок Allow inheritable auditing entries from parent to propagate to this object. Затем нужно щелкнуть OK или Apply. Если к моменту сброса флажка какие-то наследуемые элементы SACL уже были переданы объекту-потомку, Windows 2000 потребует подтвердить необходимость их удаления или создать их копии без наследования.

Экран 8. Отмена блокировки наследования в дочерних объектах.

Родительский уровень. Чтобы разблокировать наследование в дочерних объектах, следует открыть диалоговое окно Access Control Settings родительского объекта, показанное на Экране 8, перейти к закладке Auditing и установить флажок Reset auditing on all child objects and enable propagation of inheritable auditing entries. После щелчка на кнопке OK или Apply операционная система отменяет аудит на всех дочерних объектах и сбрасывает флажок, чтобы администратор мог выборочно блокировать наследование на дочерних объектах. Данная функция сброса полезна, если администратор не знает, какой режим наследования установлен в системе, и хочет начать все сначала.

Можно также контролировать глубину наследования и указать последний дочерний объект, на который распространяется действие каждого элемента SACL. Чтобы отредактировать отдельный элемент SACL, нужно открыть диалоговое окно Access Control Settings родительского объекта, перейти к закладке Auditing, выбрать элемент и открыть окно Auditing Entry щелчком на кнопке View/Edit, как показано на Экране 9. В данном диалоговом окне предусмотрено два способа реализации наследования дочерними объектами. Раскрывающийся список Apply onto определяет типы объектов, которым передается запись об аудите. По умолчанию из списка выбирается значение This folder, subfolders and files (данная папка, подпапки и файлы), но пользователь может выбрать любое сочетание этих объектов. (На Экране 9 выбран режим аудита неудачных операций чтения только файлов, но не папок.) С помощью флажка Apply these auditing entries to objects and/or containers within this container можно определить, передаст ли Windows 2000 запись объектам, расположенным непосредственно в папке, или рекурсивно распространит эту запись на все дочерние уровни ниже данной точки.

Экран 9. Редактирование отдельных элементов SACL.

Как лучше провести аудит

Какую стратегию избрать для аудита объектов? Во-первых, если требуется проверить определенный каталог или раздел реестра на нескольких машинах, нужно использовать групповые политики. Например, чтобы исследовать неудачные попытки записи в каталоге \%systemroot% на всех компьютерах домена, следует открыть оснастку MMC Active Directory Users and Computers и щелкнуть правой кнопкой мыши на корневом домене. Затем, выбрав Properties, необходимо перейти к закладке Group Policy. Отметив пункт Default Domain Policy Group Object (GPO), следует щелкнуть на кнопке Edit и пройти по Computer Configuration, Windows Settings, Security Settings, File System. Щелкнув правой кнопкой мыши на File System, нужно выбрать пункт Add File. Затем введите с клавиатуры

%systemroot%

и щелкните OK. На экране появится диалоговое окно разрешений, похожее на то, которое показано на Экране 1. Чтобы запустить процесс аудит объекта, следует повторить описанную ранее последовательность действий. При этом нужно внимательно отнестись к определению области аудита. Не рекомендуется ограничивать круг проверяемых лиц, так как взломщики часто используют чужие пароли. Поэтому в списке управления следует указать аудитом группу Everyone, чтобы охватить всех пользователей. Однако желательно ограничить подлежащие аудиту типы доступа и объекты. В процессе аудита объектов генерируется большой объем данных. Чтобы журнал безопасности не наполнялся бесполезными сведениями, лучше остановиться на небольшом числе типов доступа к немногим объектам.

Неопытным администраторам может показаться, что на самом деле активность системы не столь велика, как можно предположить исходя из событий Audit object access. Следует помнить, что Windows 2000 не выполняет аудит собственно операций (например, чтения и записи) над объектами; вместо этого проверяются запросы на доступ к объектам, поступающие из приложений. Поэтому в поле Accesses события с ID 560 указывается только тип доступа, который мог получить пользователь, но не сам факт выполнения пользователем каких-либо операций. Проблема усугубляется прикладными программами, которые автоматически запрашивают все типы доступа, независимо от того, нужны ли они пользователю. Представители Microsoft заявляют, что в конечном итоге в Windows 2000 может быть реализован аудит действительных операций, а не возможностей доступа.

С помощью категории Audit object access можно решить ряд трудных задач: например, выяснить, имели ли место попытки несанкционированного доступа к данным и кто мог изменить тот или иной файл. Несмотря на трудности анализа избыточных данных журнала, эта категория занимает достойное место в арсенале администратора.

Анализируем журнал безопасности Windows NT

Windows IT Pro :: Безопасность

Журнал безопасности Security Log может использоваться для отслеживания (аудита) большинства действий пользователей в системе. Существует три основные категории такого аудита — это аудит сеансов работы пользователей, аудит доступа к объектам системы и аудит выполняющихся задач. Эти категории дают основную информацию при наблюдении за действиями пользователей. Системная политика аудита настраивается в меню Policies-Audit-Audit Policy, вызываемом из программы User Manager (см. Экран 1). Данное диалоговое окно позволяет выбрать, какие из семи категорий фиксировать в локальном журнале безопасности, а какие нет.

Сеансы работы пользователей

Многие администраторы просматривают журнал безопасности Windows NT и видят события входа пользователей в систему и выхода из нее, однако часто не могут правильно оценить увиденное. Здесь следует обращать внимание на отдельные параметры событий. Так, событие успешной регистрации пользователя в системе имеет номер (ID) 528 (см. Рисунок 1). При отказе в регистрации пользователя фиксируется событие с другим номером, который зависит от причины отказа. Полный список событий можно найти в документе Microsoft «Описание событий аутентификации» (см. http://support.microsoft.com/support/kb/articles/q174/0/74.asp). Событие с номером 538 означает завершение сеанса, начало которого зафиксировано событием 528. Событие номер 528 имеет несколько очень важных дополнительных параметров. Имя пользователя и домен определяют вошедшего в систему пользователя или то, чья учетная запись была при этом задействована. Номер сеанса пользователя Logon ID — это уникальный для системы код, присваиваемый любому активному сеансу работы пользователя с системой. Именно он будет записан в событии завершения сеанса. Это позволяет определить общее время работы пользователя при анализе событий 528 и 538 с одним и тем же номером сеанса.

Событие входа в систему также фиксирует информацию о типе входа Logon Type, т. е. то, как пользователь вошел в систему. Тип входа 2 соответствует интерактивному входу с консоли, например, с помощью монитора и клавиатуры. Если пользователь подключается к диску на другом компьютере или как-либо еще использует сетевой ресурс, то выполняется сетевой вход с типом 3. Так, если был зафиксирован тип входа 2, то кто-то вошел в систему с локальной консоли именно этого компьютера, а если тип 3, значит, кто-то подключился к системе по сети. Тип входа 5 фиксируется при запуске службы с указанием конкретной учетной записи пользователя. При использовании планировщика задач производства независимых компаний, например Argent Queue Manager компании Argent Software, система фиксирует событие номер 528 с типом входа 4, что соответствует заданию на выполнение командного файла. При разблокировании рабочей станции записывается событие с типом входа 7.

Фиксируются также все неудачные попытки входа в систему Logon Failure. При этом чаще всего записывается системное событие 529, соответствующее указанию неверного имени пользователя или пароля — Unknown user name or bad password.

ЭКРАН 2. Выбор рабочих станций, с которых пользователь имеет право войти в систему.

Если учетная запись пользователя недоступна или заблокирована, то попытка входа отвергается, и записывается событие с номером соответственно 531 или 539. Событие номер 530 указывает, что пользователь пытался войти в систему в недозволенное ему время или день недели. Если учетная запись пользователя просрочена или устарел пароль, то фиксируется соответственно событие 532 или 535. Если пользователь ограничен входом лишь на некоторые рабочие станции (см. Экран 2), а он пытается войти с другого компьютера, то запишется событие номер 533. Можно ограничить права пользователя на выполнение определенных типов входа в различные системы. Если пользователь, которому запрещен доступ к какому-то компьютеру по сети, все же пытается обратиться к его ресурсу или реестру, то он получит отказ, а в журнал безопасности запишется событие с номером 534. Такое же событие будет зафиксировано при попытке пользователя войти в систему с консоли, если это ему запрещено. При попытке запустить службу с использованием учетной записи пользователя, не имеющей права на запуск служб (права Logon as a service), также будет зафиксировано событие номер 534. Кроме того, событие 534 запишется и при попытке запуска задания с исполнением командного файла от имени учетной записи без права Logon as a batch job. При всех других отказах в аутентификации фиксируется событие с номером 537, т. е. An unexpected error occurred during logon — отказ по неизвестной причине. Тип входа фиксируется при всех попытках входа в систему, независимо от их результата. Более подробную информацию можно найти в документе Microsoft «Аудит аутентификации пользователей» (см. http://support.microsoft.com/support/kb/articles/q174/0/73.asp).

Аутентификация в Windows NT имеет распределенную природу. Особенно ярко это проявляется при слежении за входом в систему и выходом из нее. Зачастую аудит на рабочей станции, имеющей учетную запись в домене, воспринимается уже как «вход в домен», вместо настоящего момента входа в домен или же входа на контроллер домена с использованием учетной записи домена. Аудит на рабочей станции означает лишь регистрацию на рабочей станции. Но поскольку используется учетная запись домена, сама рабочая станция не может аутентифицировать пользователя. Рабочая станция лишь посылает сведения о пользователе на контроллер домена по протоколу NTLM (NT LAN Manager). Контроллер домена проверяет правильность пароля и сразу же забывает о пользователе. Сеанс работы пользователя поддерживает сама рабочая станция до самого момента выхода из системы. Разумеется, именно рабочая станция и записывает в свой журнал системы безопасности информацию о сессии пользователя.

Для получения общей картины работы пользователей домена зачастую можно обойтись без анализа журналов безопасности на всех без исключения рабочих станциях. Дело в том, что сразу же после успешного входа пользователя обычно выполняется автоматическое подключение сетевых дисков, расположенных на файл-серверах. Именно журналы безопасности файл-серверов и следует просматривать, отслеживая события входа в систему с типом 3. Из-за отсутствия централизованной фиксации входов в систему для домена бывает трудно отследить попытки несанкционированного доступа. Однако, хотя контроллеры домена и не фиксируют все неудавшиеся попытки входа, они записывают все блокировки учетной записи (событие номер 644), которые являются следствием нескольких безуспешных попыток входа подряд. Подробнее о блокировках учетных записей рассказано в документе Microsoft «События при блокировках учетных записей хранятся в журнале безопасности контроллера домена» (см. http://support.microsoft.com/support/kb/articles/q182/9/18.asp).

Необходимо отслеживать использование локальных учетных записей на отдельных системах. Входящие в домен рабочие станции и обычные серверы аутентифицируют пользователей на контроллерах доменов, а также ведут собственные локальные базы пользователей (SAM). И пользователи, и взломщики могут задействовать эти локальные учетные записи, чтобы попытаться войти в систему локально или через сеть. Во всех системах существует встроенная административная учетная запись Administrator. О том, как предотвратить нежелательные попытки ее использования, рассказано в мартовском номере Windows NT Magazine/RE в статье Франклина Р. Смита «Защитим права администратора!».

Для эффективного наблюдения за сеансами работы пользователей нужно хорошо знать, что и где проверять. Для отслеживания входа в систему в первую очередь следует просматривать журналы безопасности на рабочих станциях и простых серверах и искать в них события с номерами 528 и 538. Возможные попытки незаконного проникновения в систему отслеживаются среди событий с номерами от 529 до 537, а также 539 на всех потенциально доступных для нападения компьютерах.

Доступ к объектам системы

Аудит доступа к объектам включает в себя всего три события, однако он очень важен, поскольку позволяет отслеживать обращения к любым объектам, включая каталоги, файлы, принтеры и ключи реестра. Для использования перечисленных возможностей необходимо включить опцию регистрации доступа к объектам в меню настройки аудита системы, а также указать все объекты, доступ к которым требуется регистрировать. Список регистрируемых действий для объекта очень напоминает список прав доступа к этому объекту (ACL). В таком списке указаны пользователи и их действия, подлежащие регистрации.

Аудит доступа к объектам ведется в журнале событий, а не в журнале транзакций. Поэтому Windows NT не фиксирует, что именно сделал пользователь с объектом, а указывает только тип доступа к данному объекту. Так, например, можно проследить, что пользователь Иванов открыл файл Зарплата.xls для чтения, записи, выполнения и удаления, однако совершенно невозможно выяснить, внес ли он какие-то изменения, а если да, то какие именно. К тому же при аудите доступа к объектам в журнал может быть записано неоправданно много событий. Так, при активизации двойным щелчком текстового файла из программы Windows Explorer происходит запуск программы WordPad. При этом фиксируется более 20 событий, связанных с доступом к данному файлу и к каталогу, где он находится.

Аудит объектов обычно используется применительно к обычным приложениям, которые работают с отдельными файлами, например к приложениям из комплекта Microsoft Office. Специальные клиент-серверные приложения, такие, как SAP, работают с таблицами, расположенными в нескольких больших файлах базы данных SQL Server. Аудит таких файлов обычно сводится к записи одного события при запуске информационной службы и одного — при ее остановке. При этом не остается сведений о том, какой пользователь выполнял те или иные транзакции или в каких таблицах он менял данные. Эту информацию могут сохранять только сами приложения. Зато аудит таких монолитных файлов помогает выяснить, не пытался ли кто-то заменить файлы базы данных в тот момент, когда SQL Server был остановлен. Это вполне возможно, а перезапущенная прикладная служба не способна заметить подмену.

Windows IT Pro :: Безопасность

РИСУНОК 2. Событие номер 560.

Основные два события аудита доступа к объектам: object opened и handle closed. Первое фиксирует открытие объекта (номер 560) , а второе — его закрытие (событие 562). Это взаимодополняющие друг друга события, подобные событиям входа и выхода из системы. Успешное событие номер 560 (см. Рисунок 2) записывает информацию об открытом объекте, а также имя пользователя и название приложения, которое воспользовалось объектом, тип доступа и дескриптор Handle ID.

Handle ID является уникальным кодом для контроля операционной системы за каждым объектом. Он напоминает описанный выше номер сессии пользователя. Найдя пару событий открытия и закрытия (560 и 562) с одним и тем же значением Handle ID, можно выяснить время работы пользователя с данным объектом. Вместе с этим дескриптором событие номер 560 записывает и номер сессии пользователя (см. Рисунок 2), что позволяет выяснить, в какой именно сессии тот обращался к объекту.

События хранят информацию о двух пользователях — об основном и о клиенте. При открытии файла на локальном компьютере с помощью обычного приложения, такого, как Microsoft Word, существенна только информация об основном пользователе. Однако при доступе к объекту из клиент-серверных приложений, которые разграничивают доступ к данным на основе базы пользователей системы, фиксируются оба типа пользователей: основной — соответствует учетной записи клиент-серверного приложения, а клиентский — соответствует пользователю, от имени которого работает сервер. Типичным примером является доступ к файловым ресурсам сервера. Так, при доступе к файлу на другом компьютере через сеть служба Workstation обращающегося к файлу компьютера соединяется со службой Server компьютера с предоставляемым ресурсом, при этом происходит тип 3 входа в систему. Перед обработкой любого запроса сервер аутентифицирует пользователя и записывает события доступа к объекту с указанием основного пользователя и клиента. В этом случае основным пользователем будет SYSTEM, поскольку именно под данной учетной записью запускается служба Server. Информация о клиенте соответствует имени пользователя, которое применялось для доступа к ресурсу; обычно это одна из учетных записей пользователей домена.

Поле типа доступа Accesses в событии номер 560 хранит вид использованного метода доступа к объекту. Значения этого поля соответствуют возможным типам полномочий доступа к объектам ACL. Так, при редактировании текстового файла в редакторе WordPad Windows NT фиксирует событие 560 с типом доступа для чтения ReadData, записи WriteData и добавления AppendData.

Событие 560 также сохраняет информацию о номере процесса Process ID. Этот номер позволяет определить, какая именно программа обратилась к объекту. Например, можно точно выяснить, использовалось ли при редактировании текстового файла приложение Word, WordPad или Notepad. Однако это при условии, что редактировался локальный файл. Если же пользователь обращался к объекту через сеть, фиксируется номер процесса, соответствующий серверному приложению.

Третьим важным событием в категории аудита объектов является событие номер 564, удаление объекта — object deleted. Оно записывает только дескриптор и номер процесса. Чтобы разобраться, какой именно объект и каким пользователем был удален, необходимо отыскать по значению Handle ID соответствующее событие 560 открытия объекта. В событии номер 560 есть вся необходимая информация о пользователе, так что событие 564 удаления объекта следует связывать именно с ним.

Аудит и анализ доступа к объектам представляется очень мощным средством. Однако анализ — процесс весьма трудоемкий, а аудит может снизить быстродействие системы при активном использовании и большом количестве регистрируемых объектов. Не следует злоупотреблять этим типом аудита. Кроме защиты особо важных ресурсов он часто используется службой безопасности предприятия для сбора сведений о неблагонадежных пользователях. Известны случаи, когда аудит ставился на специально подбрасываемые пользователям файлы типа Зарплата.xls только лишь с целью выявить потенциальных злоумышленников. Подобный подход требует строгой проработки. Ну и, конечно, не надо забывать включать аудит доступа к объектам системы в приложении User Manager на той системе, где эти объекты находятся, а не только на рабочей станции пользователя.

Аудит выполняющихся задач

Эта категория аудита в приложении User Manager называется аудитом выполняющихся задач — process tracking, а в документации по Windows NT и в программе Event Viewer используется термин «детальный аудит» — detailed tracking. Как бы то ни было, данная категория позволяет проследить за тем, какие именно программы были запущены на рабочей станции и какие программы выполнялись на сервере. В этой категории также существуют два основных события — создание нового процесса, событие номер 592, и завершение процесса, событие номер 593. Найдя пару событий 592 и 593, имеющих один и тот же номер процесса Process ID, можно определить общее время работы того или иного приложения. Поле названия исполнительного модуля Image File Name хранит имя файла, соответствующего приложению. Так, при запуске WordPad это поле будет содержать значение WORDPAD.EXE (см. Рисунок 3). К сожалению, событие не записывает полный путь, и судить о точном размещении исполняемого файла нельзя. В поле имени пользователя User Name хранится информация о том, кто запустил приложение. Кроме того, по значению поля номера сеанса Logon ID пользователя можно отыскать соответствующее событие номер 528 и выяснить все подробности о сеансе, в котором запускалось приложение. С помощью поля номера запустившего приложение процесса Creator Process ID можно найти соответствующее событие номер 592, из которого выяснить, какая программа инициировала запуск нового процесса.

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

Аудит сеансов работы пользователей, аудит доступа к объектам системы и аудит выполняющихся задач являются тремя важнейшими категориями в журнале безопасности Windows NT. Можно связать сеансы работы пользователей, процессы и доступ к объектам и построить точную картину деятельности пользователей (см. Рисунок 4). К сожалению, Event Viewer не способен фильтровать события по значениям их параметров, так что использовать номера Logon ID, Process ID и Handle ID весьма трудно. Однако можно применить функцию поиска по значению параметра и вручную составить необходимые цепочки событий. Можно также воспользоваться другими программами обработки журнала безопасности Windows NT, которые позволяют отфильтровывать события по различным критериям.

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

Управление системой безопасности SQL Server 2005

В SQL Server все данные БД содержатся в объекте Database (база данных). Каждый такой объект состоит из объектов Schema (схема), которые содержат таблицы, индексы, представления и др. объекты, составляющие БД. То есть, схемой называется часть БД, принадлежащая определенному пользователю. (В предыдущих версиях SQL Server понятие схемы не использовалось, однако аналогичную роль выполняло понятие владельца.)

В SQL Server применяются такие понятия как участник безопасности и защищаемый объект.
Участником безопасности (security principal) называется сущность, которая может запросить ресурс сервера, базы данных или схемы. Например, это учетные записи, роли. Участник безопасности управляется на трех уровнях: Windows, SQL Server и БД.
Участникам безопасности могут быть выданы разрешения на защищаемые объекты (securable object, securables). Тремя защищаемыми объектами верхнего уровня являются сервер, БД и схема. Каждый из них также содержит защищаемые объекты, которые, в свою очередь, имеют другие защищаемые объекты. Такие иерархии объектов называются области действия (scopes). Таким образом, основными областями действия в SQL Server являются сервер, БД и схема.
Для каждого защищаемого объекта в SQL Server 2005 определен набор разрешений, которые могут быть даны участнику безопасности.


13.1. Учетные записи
Наряду со своими учетными записями, SQL Server может использовать учетные записи Windows. Если на сервере настроен смешанный режим аутентификации, существует возможность использовать оба типа учетных записей. В противном случае используются только учетные записи Windows.

Просмотр и редактирование учетных записей
Просмотр и редактирование существующих учетных записей можно произвести в SQL Management Studio:
• В панели Обозреватель объектов открыть узел Безопасность, затем узел Имена входа. Откроется список учетных записей.
• Для просмотра свойств учетных записей вызвать окно свойств (например, через контекстное меню) определенной учетной записи.

Окно свойств имеет пять страниц:
Общие – предоставляет общие параметры конфигурации учетной записи, включая режим аутентификации, БД и язык по умолчанию.
Серверные роли – приводит список ролей сервера, в которых состоит данная учетная запись (о ролях – далее).
Сопоставление пользователей – отображает список баз данных, доступных учетной записи и позволяет управлять (для каждой БД в отдельности) схемой по умолчанию, сопоставленным пользователем и назначенными ролями БД.
Защищаемые объекты – показывает текущие разрешения на объекты учетной записи и предоставляет возможность управлять ими (о разрешениях – далее).
Состояние – отображает параметры, показывающие, разрешено ли данной учетной записи подключаться к ядру БД, а также позволяющие ее временно отключить.

Задание 1. Просмотрите свойства учетной записи Student.


Просмотреть информацию об учетной записи можно и средствами языка Transact-SQL. Для этого используется хранимая процедура sp_helplogins:

sp_helplogins [ [ @LoginNamePattern = ] ‘имя_учетной_записи’ ]

Например, чтобы просмотреть информацию об учетной записи Student, используется следующая конструкция:
EXEC sp_helplogins 'Student'

Создание учетных записей
Создать учетную запись можно также в SQL Management Studio:
• В панели Обозреватель объектов открыть узел Безопасность.
• Затем через контекстное меню узла Имена входа выбрать пункт Создать имя входа…
В открывшемся окне необходимо задать все параметры новой учетной записи.

Задание 2. Создайте новую учетную запись NewStudent с паролем ‘1’. Выберите аутентификацию SQL Server. По умолчанию установите свою базу данных и русский язык.

Учетную запись можно создать и средствами языка Transact-SQL командой CREATE LOGIN.


13.2. Роли
Каждой учетной записи присваивается определенная роль. Доступны два типа ролей: роли сервера и роли БД.

Роли сервера устанавливаются на уровне сервера и являются предопределенными, т.е. их разрешения влияют на весь сервер и набор разрешений нельзя изменить.
Роли сервера (в порядке увеличения полномочий):
Bulkadmin – для учетных записей, производящих операции массового копирования в БД. Члены этой роли могут выполнять инструкции BULK INSERT.
Dbcreator – для пользователей, создающих, изменяющих, удаляющих и восстанавливающих БД из резервной копии.
Diskadmin – для пользователей, производящих управление дисковыми файлами.
Processadmin - для пользователей, контролирующих процессы SQL Server, которые могут также завершать процессы.
Securityadmin - для пользователей, управляющих учетными записями, создающих разрешения и читающих журнал ошибок, которые могут также переустанавливать пароли.
Serveradmin - для пользователей, устанавливающих параметры конфигурации, применяемые ко всему серверу, которые могут также завершать работу сервера.
Setupadmin - для пользователей, управляющих связанными серверами и контролирующих процедуры запуска.
Sysadmin - для пользователей, которым необходим полный контроль над SQL Server и установленными БД. Члены этой роли могут выполнять любые действия в SQL Server.

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

SELECT * FROM sys.login_token

Задание 3. Просмотрите роли сервера, в которых состоит пользователь Student.


На уровне БД поддерживается три типа ролей:
• Стандартные пользовательские роли БД. Позволяют определить набор уникальных разрешений. С помощью этих ролей можно логически группировать пользователей, и затем назначать разрешения только ролям, а не каждому пользователю отдельно. Например, можно создать роль Users, которая обладает только разрешениями на выборку, вставку и обновление в определенных таблицах БД.
• Пользовательские роли приложений. Позволяют создавать защищенные паролем роли для определенных приложений. Стандартные роли БД или другие типы ролей не могут быть включены в роли приложения.
• Встроенные (предопределенные) роли БД. Они не могут быть изменены. Один пользователь может быть членом нескольких ролей. Имеются следующие встроенные роли:
Public – роль по умолчанию для всех пользователей БД. Предоставляет минимальные разрешения. Любые другие роли расширяет этот набор разрешений.
Db_accessadmin – возможность добавлять или удалять других пользователей.
Db_backupoperator – возможность резервного копирования.
Db_datereader – просмотр и выборка данных в БД.
Db_datawriter – добавление или изменение данных в БД.
Db_ddladmin– выполнение задач, для которых необходимо использование языка определения данных SQL Server.
Db_denydatereader – для запрещения некоторым пользователям доступа к данным в БД.
Db_denydatewriter – для запрещения некоторым пользователям изменения данных в БД.
Db_securityadmin – для управления ролями, разрешениями на объекты и правами владения объектами.
Db_owner – полный контроль над всеми аспектами функционирования БД: назначение разрешений, изменение параметров БД, выполнение операций по обслуживанию БД, удаление БД.
Встроенным ролям предоставляется конкретный набор разрешений (можно найти в справке).

Просмотреть роли определенной базы данных можно в SQL Management Studio: в панели Обозреватель объектов в определенной базе данных открыть узел Безопасность, затем узел Роли и Роли базы данных. Откроется список ролей БД.

Задание 4. Просмотрите роли базы данных AdventureWorksDW.

Назначение ролей отдельной учетной записи
В SQL Management Studio через свойства учетной записи на странице Сопоставление пользователей выбираются базы данных и для каждой из них указываются роли (путем установки флажков).

Задание 5. Для новой учетной записи NewStudent установите следующие роли на использование баз данных: для БД master – минимальные разрешения; для AdventureWorksDW – разрешение на просмотр и выборку данных; для Вашей БД – полный контроль над БД.

Назначение ролей нескольким учетным записям одновременно
Назначить роли для определенной базы данных также можно через SQL Management Studio:
• В панели Обозреватель объектов в базе данных открыть узел Безопасность, затем узел Роли и Роли базы данных. Откроется список ролей текущей БД.
• Двойным щелчком мыши по определенной роли вызвать окно Свойства ролей базы данных.
• Чтобы включить в роль новых членов, щелкнуть по кнопке Добавить….
• В открывшемся окне ввести имена пользователей, которые нужно добавить к этой роли (можно несколько имен через точку с запятой). Для выбора имен можно воспользоваться кнопкой Обзор.

Задание 6. Для Вашей базы данных добавьте в роль Db_datereader нового пользователя.

Создание стандартных ролей БД
Через SQL Management Studio:
• В панели Обозреватель объектов в базе данных открыть узел Безопасность.
• Затем в контекстном меню узла Роли выбрать команду Создать и Создать роль базы данных…. Откроется окно Роль базы данных - создание.
• На странице Общие этого окна ввести имя роли БД (лучше назначать короткое, но информативное имя, например, Normal Users, Editors и т.п.).
• По умолчанию владельцем роли является пользователь dbo. Можно указать другого владельца, выбрав его в окне, открываемом кнопкой справа от поля Владелец.
• На странице Защищаемые объекты добавить (с помощью кнопки Добавить…) объекты и разрешения для них.

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


13.3. Разрешения
Для каждого защищаемого объекта в SQL Server 2005 определен набор разрешений, которые могут быть даны участнику безопасности (например, учетной записи или роли).
Эти разрешения начинаются с ключевого слова или слов, определяющих предоставляемые права. Например, ключевое слово ALTER ANY предоставляет разрешение на создание, изменение, удаление объектов указанной группы. Например, предоставление участнику безопасности разрешения ALTER ANY SCHEMA для базы данных дает ему возможность создавать, изменять или удалять любую схему в БД. А разрешение ALTER ANY LOGIN для сервера дает возможность изменять или удалять любую учетную запись на этом экземпляре сервера.
Другие примеры ключевых слов разрешений: CREATE, DELETE, REFERENCES (возможность ссылаться на объект), EXECUTE (возможность выполнения объекта) и др.

Просмотр разрешений
Просмотреть разрешения на защищаемые объекты можно функциями:
sys.fn_builtin_permissions ( ) – для просмотра встроенных разрешений,
has_perms_by_name ( ) – для просмотра действующих разрешений.

Синтаксис функции sys.fn_builtin_permissions ( ):

sys.fn_builtin_permissions ( { DEFAULT  NULL  ‘класс_защищаемых_объектов’ } )

Значения параметра класс_защищаемых_объектов могут быть следующими:
APPLICATION ROLE, ASSEMBLY, ASSYMMETRIC KEY, CERTIFICATE, CONTACT, DATABASE, ENDPOINT, FULLTEXT CATALOG, LOGIN, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVER, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
При использовании параметров DEFAULT, NULL возвращается полный список встроенных разрешений.

Например, для просмотра всех возможных разрешений на все объекты базы данных используется следующий запрос:

SELECT * FROM sys.fn_builtin_permissions (DEFAULT)

Задание 8.
а) Просмотрите все разрешения на все объекты базы данных AdventureWorksDW.
b) Просмотрите разрешения на класс объектов LOGIN базы данных AdventureWorksDW.

Можно просмотреть список классов объектов, на которые предоставляется определенное разрешение. Для этого в приведенную конструкцию добавляется условие WHERE.
Например, чтобы просмотреть классы объектов, для которых имеется разрешение CREATE TABLE, используется следующий запрос:

SELECT * FROM sys.fn_builtin_permissions (DEFAULT)
WHERE permission_name='CREATE TABLE'

Задание 9. Просмотрите классы объектов, для которых имеется разрешение SELECT.

Синтаксис функции has_perms_by_name ( ):
has_perms_by_name ( ‘защищаемый_объект’,
‘класс_защищаемых_объектов’,
‘имя_разрешения’ )
Параметр защищаемый_объект содержит имя защищаемого объекта или NULL, если защищаемым объектом является сам сервер. Например, объектом может быть определенная база данных.
Параметр класс_защищаемых_объектов - имя класса защищаемых объектов или NULL, если защищаемым объектом является сам сервер. Например, классом может быть ‘DATABASE’ – база данных.
Параметр имя_разрешения – имя проверяемого разрешения, отличное от NULL.

Эта функция возвращает логическое значение 1 (true) или 0 (false), обозначающее наличие или отсутствие проверяемого разрешения на указанных объектах.

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

SELECT has_perms_by_name (NULL, NULL, 'permission_name')

Задание 10.
а) Просмотрите, имеет ли текущий пользователь разрешение VIEW SERVER STATE на сервере.
b) Просмотрите, имеет ли текущий пользователь разрешения в базе данных AdventureWorksDW. (Примечание: для определения любых разрешений в качестве имени разрешения указывается ‘ANY’)

Общие сведения об управлении разрешениями
Владелец базы данных, а также члены группы sysadmin и роли securityadmin могут назначить разрешения БД. При работе с разрешениями применяются три основные инструкции:
GRANT (Предоставить разрешение) – предоставляет разрешение на проведение действий. При использовании ролей разрешение наследуют все члены роли.
REVOKE (Отменить разрешение) – отменяет разрешение, ранее предоставленное инструкцией GRANT, но явно не запрещает пользователю или роли выполнение какого-либо действия. Пользователь или роль может унаследовать разрешение на это действие через членство в другой роли.
DENY (Отклонить разрешение) – явным образом запрещает проведение каких-либо действий и не допускает унаследования разрешения пользователем или ролью. Эта инструкция имеет приоритет над всеми разрешениями, выданными с помощью инструкции GRANT.

Назначение разрешений БД
Для этого в SQL Management Studio нужно вызвать свойства определенной базы данных, и в окне свойств на странице Разрешения выбрать пользователя или роль и отметить разрешения флажком. Можно добавить пользователя или роль кнопкой Добавить….
Чтобы назначить для всех пользователей разрешения по умолчанию, нужно выдать разрешения роли public.

Управлять разрешениями можно и с помощью языка Transact-SQL.

Задание 11. Для своей базы данных назначьте разрешения по умолчанию для всех пользователей.

Назначение разрешений для отдельного пользователя на несколько объектов
Разрешение на объекты применяется к таблицам, представлениям и хранимым процедурам. Наиболее часто используются разрешения SELECT, INSERT, UPDATE и DELETE для таблиц и представлений, и EXECUTE для хранимых процедур.
Для назначения разрешений для пользователя на объекты в SQL Management Studio нужно в узле определенной базы данных открыть окно конкретного пользователя (Безопасность – Пользователи).
Затем на странице Защищаемые объекты добавить (с помощью кнопки Добавить…) объекты и разрешения для них. (Аналогично действовали при создании стандартных ролей БД).

Задание 12. Для своей базы данных для пользователя Student назначьте разрешения на удаление для таблиц Заказы и Заказчики.

Назначение разрешений на отдельный объект для нескольких пользователей
Для этого в SQL Management Studio нужно выбрать узел объектов, с которыми будете работать (например, таблицы, представления или хранимые процедуры), и вызвать свойства конкретного объекта (таблицы, представления или хранимой процедуры).
В окне свойств на странице Разрешения можно выбрать нескольких пользователей и назначить им разрешения на этот объект.

Задание 13. Для таблицы Сотрудники своей базы данных для всех доступных пользователей назначьте разрешение на обновление данных.

Удобный интернет магазин бытовой техники - обширный каталог товаров, демократичные цены.
Очень интересный сайт недвижимость в Болгарии цены - все об актуальных ценах на недвижимость в Болгарии.
Профессиональная разработка сайтов любой сложности: от визитки до портала - все для вас!