Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
Привет тебе общественный разум. Итак, исходная стойка: 1. Microsoft SQL Server 2014 (SP3) (KB4022619) - 12.0.6024.0 (X64) Sep 7 2018 01:37:51 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 2. Служба SQL запущена под его штатной, локальной, учетной записью - [NT Service\MSSQL$DVLSRV] 3. Машина, на которой находится сам SQL - в домене. 4. В этом домене есть вторая машина, где работает ещё один SQL-сервер. 5. На второй машине делается бэкап рабочей базы компании (она там одна - и база и компания) и складывается в определенный каталог на локальном диске второго компьютера 6. Локальный каталог проброшен посредством mklink /D со второй машины на локальный диск первой машины. Теперь, собственно суть. Предполагается, что копия базы будет браться из этого проброшенного каталога, разворачиваться на SQL первой машины, проходить некоторую пост-обработку и предоставляться заказчику. И всё бы ничего, но встретился неожиданный затык - xp_cmdshell. То ли я некорректно, что-то делаю, то ли я слишком большие надежды на него возлагаю. Но затык происходит ещё на самом первом этапе - чтения содержимого прилинкованного каталога на первой машине. Стоит запустить SQL службу от доменного админа, как всё прекрасно читается в каталоге. Но мы же лёгких путей не ищем. Поэтому: 1. Создана доменная учётка с минимальными правами (MyDomain\SBO) 2. Этой учётке на второй машине даны права на чтение и просмотр содержимого каталога, куда складываются копии базы 3. Создан мандат (credential) ##xp_cmdshell_proxy_account## с учеткой MyDomain\SBO 4. Учетке дан логин на первом сервере SQL и права на EXECUTE и CONTROL SERVER. Включена в группу public И вот, под этой учеткой я выполняю контрольный код, чтобы понять - под кем же я сейчас буду просматривать каталог: Код: sql 1. 2. 3. 4. И я вижу, что cmdshell выполняется от имени: [NT Service\MSSQL$DVLSRV] Какого чёрта? Ведь в документации написано, что прокси на cmdshell используется у учетки, которая не включена в группу sysadmins. Что я не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2019, 15:49 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
IKSparrowКакого чёрта? Ведь в документации написано, что прокси на cmdshell используется у учетки, которая не включена в группу sysadmins. Что я не так делаю? там еще написано, что или сисадмин, или имеет контрол сервер. вот отберите контрол сервер и просто дайте exec на xp_cmdshell. и сразу под прокси полезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2019, 15:54 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
Yasha123, Код: sql 1. 2. 3. 4. 5. 6. Увы, опять: [NT Service\MSSQL$DVLSRV] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2019, 15:57 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
BOLNow non-administrators can launch operating system processes with xp_cmdshell and those processes run with the permissions of the proxy account that you have configured. Users with CONTROL SERVER permission (members of the sysadmin fixed server role) will continue to receive the permissions of the SQL Server service account for child processes that are launched by xp_cmdshell. xp_cmdshell (Transact-SQL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2019, 15:57 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
Yasha123, Так, поправочка: Снял принудительно флажок CONTROL SERVER у MyDomain\SBO и теперь стало выдаваться: Msg 15121, Level 16, State 200, Procedure xp_cmdshell, Line 14 An error occurred during the execution of xp_cmdshell. A call to 'LogonUserW' failed with error code: '1385'. Это уже проблема, что обозначенный пользователь должен иметь право входить службой на локальный комп. Спасибо! Пойду дальше ковырять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2019, 16:02 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
IKSparrowYasha123, Код: sql 1. 2. 3. 4. 5. 6. Увы, опять: [NT Service\MSSQL$DVLSRV] для начала не DENY, а REVOKE. и потом, у вас учетка явно sysadmin: вы ей не дали exec на xp_cmdshell, а она продолжает процедуру выполнять. покажите Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2019, 16:02 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
ок, уже неактуально. одновременно запостили. тем не менее, отбирает выданное REVOKE, а не DENY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2019, 16:06 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
IKSparrow, как-то Вы с подвыподвертом всё делаете. Эта задача решается утилитой SQLCMD и пакетным файлом и не со стороны SQL сервера, а со стороны операционной системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2019, 15:35 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
Так, у меня тут другая беда. Прокси работает и отлично. Но. Возникает противоречие условий. Прокси работает только для пользователя у которого нет ролей SYSADMIN и CONTROL SERVER Файл может бэкапа может прочитать только такой пользователь (под учеткой прокси). А восстановить базу из бэкапа может пользователь только с двумя вышеупомянутыми ролями. Тупик. Какие варианты есть по выходу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2019, 16:26 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
IKSparrowТак, у меня тут другая беда. Прокси работает и отлично. Но. Возникает противоречие условий. Прокси работает только для пользователя у которого нет ролей SYSADMIN и CONTROL SERVER Файл может бэкапа может прочитать только такой пользователь (под учеткой прокси). А восстановить базу из бэкапа может пользователь только с двумя вышеупомянутыми ролями. Тупик. Какие варианты есть по выходу? Пользователь, обрезанный в правах, читает самый свежий файл бэкапа из многих. Копирует с сервера по сети на целевой сервер. Сверяет контрольные суммы на скопированный файл и на тот файл, который остался лежать на сервере (причину, по которой желательно это делать, озвучивать не стану, у Вас ведь не ZFS/BTRFS с checksum для файлов). И запускает процедуру, которую для него написал sysadmin (execute as), которая читает локальный файл бэкапа и делает рестор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2019, 16:30 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
IKSparrow2. Служба SQL запущена под его штатной, локальной, учетной записью - [NT Service\MSSQL$DVLSRV] 3. Машина, на которой находится сам SQL - в домене. 4. В этом домене есть вторая машина, где работает ещё один SQL-сервер. IKSparrow Стоит запустить SQL службу от доменного админа, как всё прекрасно читается в каталоге. Но мы же лёгких путей не ищем. План действий: 1. Перевести работу всех служб MSSQL на доменных ПК и серверах на использование специальной доменной учетной записи, которая не является локальным администратором, нигде вообще. 2. Найти и уволить за служебное несоответствие и саботаж того персонажа, который не признает легких путей и заставляет оставлять MSSQL службы работать под локальными учетными записями. 3. Переделать схему работы на стандартную по отрасли. Чтобы вновь нанятый DBA не вырывал себе остатки пейсов с криком "я не понимаю, как вы тут все сделали". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2019, 16:37 |
|
||
|
Моя борьба с xp_cmdshell - никак не могу заставить работать прокси.
|
|||
|---|---|---|---|
|
#18+
IKSparrowА восстановить базу из бэкапа может пользователь только с двумя вышеупомянутыми ролями. https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-2017 If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database (for the FROM DATABASE_SNAPSHOT option, the database always exists). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2019, 17:26 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=118&tid=1688449]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 318ms |

| 0 / 0 |
