My knowledge base

Показаны сообщения с ярлыком Windows. Показать все сообщения
Показаны сообщения с ярлыком Windows. Показать все сообщения

четверг, 26 июля 2012 г.

Счётчики производительности MS SQL

Некоторые приложения начинают тупить (в т.ч. глюки в интерфейсе) из-за того, что с базой данных что-то не так. Как понять что с БД что-то не то? В Microsof SQL и Windows уже есть отличные счётчики по измерению различных параметров. Надо толmrj создатьь из набор и включить наблюдение. Конечно, надо уметь интерпретировать полученные результаты, но зачастую это несложно: узкое место обнаруживается в "железе" либо в дисковой подсистеме, либо в ОЗУ.  Внизу пример счётчиков и пример файла с оценкой производительности.

Счётчики производительности MS SQL:

\SQLServer:BufferManager\Buffercachehitratio
(процент запросов на получение страницы, которые
Выполняются без обращения к жесткому диску).
\SQLServer:BufferManager\Pagereads/sec
(среднее число страниц в секунду, которое SQL-сервер
Читает с дисковой системы).
\SQLServer:SQLStatistics\BatchRequests/sec
(среднее число пакетных запросов в секунду).
\SQLServer:SQLStatistics\SQLRe-Compilations/sec
(среднее число рекомпиляций в секунду).
\Process(sqlservr)\%ProcessorTime
(утилизация процессоров, создаваемая процессом SQL-сервер).
\Process(sqlagent)\%ProcessorTime
(утилизация процессоров, создаваемая процессом SQL-агент).
\SQLServer:Locks(_Total)\AverageWaitTime(ms)
(среднее время ожидания выполнения запросов блокировки).
\SQLServer:Locks(_Total)\LockWaitTime(ms)
(общее время ожидания выполнения запросов блокировки).

ОС надо тоже смотреть:

Memory:Available Bytes
Memory: Pages/sec
Paging File(_Total)\% Usage
Processor(_Total)\% Processor Time
Cache\Data Map Hits %
PhysicalDisk(_Total) % Disk Read Time
PhysicalDisk(_Total) % Disk Write Time

А вот и пример:
МоёМесто.ruПример отчёта оценки производительности MS SQL (580 Kb)

пятница, 13 июля 2012 г.

Проблема Windows для разделения прав пользователей

Вот представьте себе такую задачу. Вам нужно считать конфигурацию операционной системы, скажем для контроля настроек. Поскольку это сбор, т.е. чтение информации, вы скорее всего захотите сделать это без прав администратора, чтобы не напрягать владельца ОС (чтобы ничего не сломалось). Получится ли считать всю информацию о настройках Windows без прав администратора? Неа, не получиться. На Unix\Linux получиться - там есть механизм разделения полномочий RBAC. Для на счёт Windows поддержка Microsoft отвечает: "by design, что вы хотите от системы, спроектированной 20 лет назад". Тогда ведь о безопасности особо не пеклись.

Lsa*InformationPolicy APIs were never designed (almost 20 years ago)
for remoting, and were designed to require administrative rights.  These APIs manage the policy that the security subsystem enforces and it’s easy to effectively make someone an admin via policy, without regards to group membership.”, т.е. с точки зрения архитектуры системы аудита подразумевается локальное использование и права администратора.

«Some parts of security policy can be delegated on certain releases,
e.g. with auditpol.exe you can set the DACL on audit policy and delegate it to others; or you can assign SeSecurityPrivilege.», т.е. можно использовать возможность делегирования полномочий через auditpol.exe (DACL на политики аудитора) или назначение привилегии SeSecurityPrivilege.

Ссылка на документацию по LSA: Managing Policy Information
  (“The LSA
provides functions that administrators can use to query and set global policy
information for the local computer and the domain”) и Security Management
  (“The LSA
Policy API, the Password Filter API, the Safer API, and the Service Security
Attachments API are intended for use by developers of applications that enable
administrators to manage and secure their systems”). Т.е код, который
использует LSA функции, должен выполняться в контексте учетной записи
администратора.

Ссылка на документацию по LSA: Managing Policy Information
  (“The LSA provides functions that administrators can use to query and set global policy information for the local computer and the domain”) и Security Management   (“The LSA Policy API, the Password Filter API, the Safer API, and the Service Security Attachments API are intended for use by developers of applications that enable administrators to manage and secure their systems”). Т.е код, который использует LSA функции, должен выполняться в контексте учетной записи администратора.


Единственное, что остается писать в Microsoft Connect просьбу когда-нибудь вспомнить о безопасности и принципе наименьших привилегий

Подробнее, что нельзя получить без прав админа:

четверг, 12 июля 2012 г.

Шифрование дисков общих ноутбуков

Вот есть ноутбуки для выездов: парочка на несколько человек. А ведь информацию на них надо защищать от утери, кражи и прочих неприятностей.  Первая мысль о TrueCrypt, но там нет поддержки токена, т.е. нет нормальной двухфакторной авторизации. Можно файлик ключевой на флешки закинуть, но это не круто. Да и с шифрованием системного диска проблемы есть. Единственным решением, где можно шифровать системный диск и использовать токен оказался Secret Disk от Aladdin. Там ещё можно купить корпоративное решение, чтобы у каждого пользователя был свой токен, а админ разрешает использовать этот токен для указанных ноутбуков. Но и здесь не всё гладко: Secret Disk только Windows поддерживает. Поэтому если используется несколько систем, то, наверное, лучше использовать TrueCrypt, но не хранить на системном диске ничего ценного.  

понедельник, 23 апреля 2012 г.

Windows Remote Management (WinRM) - обзор


WinRM основан на стандартах Web Services for Management (службы для управления WS-Management).  Позволяет с помощью PowerShell 2.0 подключаться к удаленному компьютеру и запускать на нем команды. WinRM может разделять входящие соединения на порт 80 с компонентом IIS, который уже, возможно, работает с этим портом.
Поддержка:
Windows 7 и Windows 200R2 – изначально;
Window XP SP3, Windows Vista SP2, Windows Server 2003 SP2, Windows Server 2008 SP2 –
после установки обновления Windows Management Framework Core (http://support.microsoft.com/kb/968930).
Приложения Microsoft:
Sharepoint 2010, Exchange 2010, SQL Server 2008, Active Directory (2008R2), System Center Operations Manager 2007, Hyper-V и др.
Оборудование:
Intel  vPro …
 Преимущества:
  •  запросы HTTP легко пересылать через брандмауэр и прокси-серверы;
  • универсальность для приложений Microsoft (планируется поддержка всех серверных приложений Microsoft);
  • высокая функциональность;
  • установка настройка стандартными средствами Windows;
  • передаваемый трафик шифруется;
  • возможность выполнения блока сценариев на нескольких компьютерах;
  • возможность выполнения блока сценария в фоновом режиме;
  • планируемая поддержка PowerShell во всех серверных приложениях Microsoft.
Сравнение WinRM с другими механизмами удаленного доступа Microsoft:
 










 Разграничение прав:
  • использовать пользователя  с  минимально необходимыми правами:
добавить права пользователю можно с помощью скрипта:
Имеющиеся маски доступа:
2032127 {$AccessMask = "FullControl"}
1179785 {$AccessMask = "Read"}
1180063 {$AccessMask = "Read, Write"}
1179817 {$AccessMask = "ReadAndExecute"}
1610612736 {$AccessMask = "ReadAndExecuteExtended"}
1245631 {$AccessMask = "ReadAndExecute, Modify, Write"}
1180095 {$AccessMask = "ReadAndExecute, Write"}
268435456 {$AccessMask = "FullControl (Sub Only)"}
default {$AccessMask = $DACL.AccessMask}

Пример настройки PowerShell для SharePoint: http://technet.microsoft.com/ru-ru/library/ee806878.aspx
 
Настройка WinRM:
Комплексная настройка (служба, firewall, PowerShell) проводится одной командой: Enable-PSRemoting.

Дополнительные сведения по WinRM и PowerShell:
 

вторник, 20 марта 2012 г.

Сканирование Windows без прав администратора

Microsoft проектировало Windows давно и похоже не думало о принципе наименьших привилегий. Из-за полностью собрать информацию собрать информацию о системе, без административных привилегий не получится.
Нельзя делегировать пользователю такие привилегии:

                    I.            Информация о жестком диске ПК (чтение информации о жестком диске).
                  II.            Права пользователей (чтение списка пользователей с указанными привилегиями):
1.       доступ к диспетчеру учетных данных от имени доверенного вызывающего;
2.       изменение метки объекта;
3.       создание символических ссылок;
4.       увеличение рабочего набора процесса;
5.       доступ к компьютеру из сети (SeNetworkLogonRight);
6.       работа в режиме операционной системы (SeTcbPrivilege);
7.       настройка квот памяти для процесса (SeIncreaseQuotaPrivilege);
8.       разрешить локальный вход в систему (SeInteractiveLogonRight);
9.       архивирование файлов и каталогов (SeBackupPrivilege);
10.   обход перекрестной проверки (SeChangeNotifyPrivilege);
11.   изменение системного времени (SeSystemTimePrivilege);
12.   создание файла подкачки (SeCreatePagefilePrivilege);
13.   создание маркерного объекта (SeCreateTokenPrivilege);
14.   создание глобальных объектов (SeCreateGlobalPrivilege);
15.   создание постоянных объектов совместного использования (SeCreatePermanentPrivilege);
16.   отладка программ (SeDebugPrivilege);
17.   отказ в доступе к компьютеру из сети (SeDenyNetworkLogonRight);
18.   отклонить локальный вход (SeDenyInteractiveLogonRight);
19.   разрешение доверия к учетным записям и компьютеру при делегировании (SeEnableDelegationPrivilege);
20.   принудительное удаленное завершение (SeRemoteShutdownPrivilege);
21.   создание журналов безопасности (SeAuditPrivilege);
22.   имитация клиента после проверки подлинности (SeImpersonatePrivilege);
23.   увеличение приоритета выполнения (SeIncreaseBasePriorityPrivilege);
24.   загрузка и выгрузка драйверов устройств (SeLoadDriverPrivilege);
25.   закрепление страниц в памяти (SeLockMemoryPrivilege);
26.   вход в качестве пакетного задания (SeBatchLogonRight);
27.   вход в качестве службы (SeServiceLogonRight);
28.   управление аудитом и журналом безопасности (SeSecurityPrivilege);
29.   изменение параметров среды оборудования (SeSystemEnvironmentPrivilege);
30.   запуск операций по обслуживанию логических дисков (SeManageVolumePrivilege);
31.   профилирование одного процесса (SeProfileSingleProcessPrivilege);
32.   профилирование загруженности системы (SeSystemProfilePrivilege);
33.   извлечение компьютера из стыковочного узла (SeUndockPrivilege);
34.   замена маркера уровня процесса (SeAssignPrimaryTokenPrivilege);
35.   восстановление файлов и каталогов (SeRestorePrivilege);
36.   завершение работы системы (SeShutdownPrivilege);
37.   овладение файлами или иными объектами (SeTakeOwnershipPrivilege).
                III.            Политики аудита (чтение информации о статусе включения указанного аудита):
1.       аудит событий входа в систему;
2.       аудит управления учетными записями;
3.       аудит доступа к службе каталогов;
4.       аудит входа в систему;
5.       аудит доступа к объектам;
6.       аудит изменения политики;
7.       аудит использования привилегий;
8.       аудит отслеживания процессов;
9.       аудит системных событий.

В MS проблема описана, но реакции пока не видно:
For purposes of compliance and audit Windows we should use least privilege (read only). But Windows has the following problems:
1. Lsa*InformationPolicy APIs were never designed (almost 20 years ago)
for remoting, and were designed to require administrative rights. These APIs manage the policy that the security subsystem enforces and it’s easy to effectively make someone an admin via policy, without regards to group membership.
2.IF they can't impersonate an administrator, you won't be able to retrieve the logical disk information. The only way to retrieve the class is to be a member of the administrators group on the local machine, ordinary users cannot retrieve this information from WMI because of the low level API execution restrictions. Need to inform that it's confirmed that this a normal behavior due to a change in security change.
To summarize it shortly, the issue occurs because the above classes under the cover uses APIs which require elevated privileges. This is by design and very difficult to change the work around is to use administrator credentials when accessed remotely. As WMI is ment to be used by Administrators we run here in a limitation of WMI for Standard Users that can´t be changed.
In regards to accessing i.e. Win32_CDROMDrive, Win32_QuickFixEngineering or Win32_PageFileSettings, the WMI provider, servicing these two classes requires the use of the SetupDi APIs which do require Administrator or Administrator or INTERACTIVE_USER access. … and all changes via the APIs are restricted to Admins. This is basically dictated by the PNP manager for device and driver access in case of Win32_CDROMDrive.
Using an agent does not solve the problem.
This problem does not exist in *nix systems (have full RBAC). 


Обходным маневром является написание скрипта, который запускается с правами администратора (ИТ администратор запускает по расписанию или как сервис), и таким образом разделить ИТ и ИБ. Но это полумера.

Но большую часть информации собрать можно, например, через WMI. Вот описание настройки привилегий:
МоёМесто.ru WMI ACCESS for non admin user.pdf (17 Kb)
Есть классная утилита для настройки привилегий: SetACL, хотя ещё понадобиться скачать dcomperm с сайта Microsoft (входит в SDK).

Получится, что-то типа этого:
@ECHO OFF
REM Проверяем правильность введенных параметров
IF /i "%1" NEQ "set" IF /i "%1" NEQ "unset" GOTO ERR
IF "%2" EQU "" GOTO ERR2
IF "%3" NEQ "" GOTO ERR3
IF "%4" NEQ "" GOTO ERR3
REM Проверяем, что пользователь существует (в искомой строке важны пробелы)
net user | find /I " %2 " > nul
IF ERRORLEVEL 1 GOTO ERR4
IF /i "%1" EQU "unset" GOTO UNSET
REM Права на чтение всей ветки HKCU (официальная утилита от MS) Право на чтение HKLM есть у группы "Пользователи"
subinacl /subkeyreg HKEY_CURRENT_USER /grant=%2=r > nul 2>nul
ECHO reg OK
REM Полные права на папку %systemroot%\temp
subinacl /subdirectories %systemroot%\temp\* /grant=%computername%\%2%=F
ECHO TEMP folder OK
REM Права на DCOM (официальная утилита от MS): разрешить локальный и удаленный доступ
dcomperm -ma set %2 permit > nul
REM Права на DCOM (официальная утилита от MS): разрешить удаленный запуск и активацию
dcomperm -ml set %2 permit level:rl,ra > nul
ECHO DCOM OK
REM Права на удаленный доступ (чтение) к WMI Namespace (утилита от www.codeproject.com/KB/system/WmiSecurity.aspx)
wmiSecurity /C="%computername%" /A /N=Root/CIMV2 /M="%computername%\%2:REMOTEACCESS" /R > nul
ECHO WMI OK
GOTO EXIT
:UNSET
REM удаляем права на чтение ветки реестра HKCU
subinacl /subkeyreg HKEY_CURRENT_USER /revoke=%2 > nul
ECHO reg OK
REM удаляем права на папку
subinacl /subdirectories %systemroot%\temp\* /revoke=%computername%\%2%
ECHO TEMP folder OK
REM удаляем права на локальный и удаленный доступ DCOM
dcomperm -ma remove %2 > nul
REM удаляем права на удаленный запуск и активацию DCOM
dcomperm -ml remove %2 > nul
ECHO DCOM OK
REM должны удалить права на WMI Namespace - пока утилита этого сделать не может, надо удалять вручную
GOTO EXIT
:ERR
ECHO First parameter is incorrect. Enter SET or UNSET
GOTO EXIT
:ERR2
ECHO Enter user name
GOTO EXIT
:ERR3
ECHO Too many parameters
GOTO EXIT
:ERR4
ECHO User not found
GOTO EXIT
:EXIT


В этом скрипте wmisecurity и subinacl лучше заменить на SetACL.