Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Реализация системы безопасности в ПО на основе AD

Ответить
Настройки темы
Win32 API - Реализация системы безопасности в ПО на основе AD

Новый участник


Сообщения: 45
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте, коллеги!
Вот стоит такая задача: в собственном ПО предусмотреть защиту некоторых функций на основе безопасности Windows (в частном случае используем Active Directory)

Поясню. Есть комп-р включенный в домен с AD. Комп-р сугубо уникальный, на котором реализован автологон польз-ля USER (AD пользователь) и под этим польз-лем запускается некоторая самописаная программа. В программе реализована функция мониторинга некоторого процесса и изменения параметров работы некоторой установки. Нужно сделать так, чтобы при нажатии кнопки "Изменить параметр" программа запросила имя и пароль польз-ля (из AD или локального Windows) и если ему разрешено, то дает окно изменения. Если нет - то пинает его и продолжает работу в режиме мониторинга. Сейчас сделано так, что индикатором разрешенности изменения параметров установки является наличие польз-ля в некоторой группе польз-лей из AD. Программисты реализовали проверку так: при воде имени и пароля программа пытается сделать логон с такими аттрибутами, и если удачно, то читает список групп залогиневшегося поль-ля, и если там есть "нужная группа", то дает изменить параметры установки.

Но вот проблема. В связи с необходимостью внедрить систему безопасности, на этом комп-ре применены групповые политики, разрешающие логон только польз-лю USER и админам. И теперь, при вводе имени и пароля при попытке сменить параметр установки программка отпинывает всех, даже если и пользователь все ввел правильно. Разрешить этим "продвинутым" польз-лям логон нельзя: они автоматичски получают возможность входить на этом комп-ре с консоли под своими учетками, а должно быть токо от имени польз-ля USER.

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

Отправлено: 15:21, 26-07-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


не совсем уверен, но что если попробовать запускать программу через планировщик от имени требуемого пользователя? В таком случае не надо будет делать дополнительную проверку на принадлежность пользователя к определенной группе?
Цитата pypyrin:
при воде имени и пароля программа пытается сделать логон с такими аттрибутами, и если удачно, то читает список »
логон куда пытается сделать программа? Как реализована проверка и попытка входа? Тут уже желательно видеть код, как это работает.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 16:28, 26-07-2011 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 45
Благодарности: 2

Профиль | Отправить PM | Цитировать


вы не поняли меня наверное
мне нужно чтобы программа запускалась от USER, а вот перед использованием некоторых ее функций необходимо убедится, что человек за консолью комп-ра именно тот, которому можно эти функции делать. Не любой оператор имеет право их выполнить. Программка работает в режиме мониторинга круглосуточно, а вот если надо чего подправить, то токо технолог. Технолог подходит, жмет кнопку "Изменить параметры", выводится диалог "введите имя и пароль" и он вводит свои учетные атрибуты, логин и пароль. Например vasya 123. Программа выполняет логон в AD с использванием vasya 123, и если все ок, то берет список груп, куда входит vasya. Если он входит в группу GOD то ему можно менять параметры.

Проблема в том, что групповыми политиками польз-лю vasya запрещено выполнять ЛОГОН на этом комп-ре, токо автологон польз-ля USER. Поэтому такая проверка всегда неОК, и параметры нельзя сменить. Разрешить vasya логиниться на этот комп-р с консоли не представляется возможным - политика безопасности предприятия.

Логон пытается сделать в домен (AD). Ну какбудто вы входитев систему при включении комп-ра. Код не могу пока предоставить, попробую позже.

Отправлено: 16:51, 26-07-2011 | #3


Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


Хотите самый просто способ решения проблемы? Если программа хранит данные в БД, то проще всего завести там таблицу с зашифрованным именем\паролем, и сверять введенные данные с ними, а не с AD. Либо на сервере в закрытом для чтения доступе положить определенный файл, хоть txt, хоть xml, неважно, и сверять с ними.
Либо давай разбираться с политиками домена, правда это уже маленько в другом форуме надо бы делать, но, если что, вынесем в отдельную тему.
Цитата pypyrin:
групповыми политиками польз-лю vasya запрещено выполнять ЛОГОН на этом комп-ре »
Ну так мы и не пытаемся сделать вход на комп, мы пытаемся пробиться на контроллер домена.
ПРоверь ка одно предположение:
1. Зайти как обычно на машину под USER.
2. Из командной строки набери net use. Посмотри, есть ли там строка соединения с контроллером домена.
3. Если она есть и ей присвоена какая либо буква, набери net use буква: /d
Если буквы нет, а есть просто строка, набери net use \\server_name\share /d
4. ПОсле этого попробуй в своей программе "изменить параметры"

Если не поможет, попробуй просто в командной строке набрать команду
net use \\имя_контроллера\сетевая_папка /user:домен\имя_пользователя *
На запрос ввода пароля введи пароль пользователя. Сообщи о результате.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 08:00, 27-07-2011 | #4

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Если так настроено, что runas не запустится от нужного пользователя, то не стоит мучиться. Пользователю нужно разрешить локальный вход. Если запустится, то есть функция CreateProcessAsUser, которую runas и пользует.

Отправлено: 22:01, 27-07-2011 | #5


Новый участник


Сообщения: 45
Благодарности: 2

Профиль | Отправить PM | Цитировать


да как же вам объяснить то

не нужно ничего запускать
уже все запущено, программа работает... и в процессе своей работы, при доступе к некоторым своим функциям (открывает очень секретные свои настройки например) должна проверить, а человек, который это хочет сделать, имеет ли на то разрешение?

для этого хочется использовать безопасность на основе Windows. кончно, можно сделатьтабличку в БД, там завести еще своих пользователей с паролями, но это плохо! у меня уже у некоторых людей по 4-5 паролей и логинов от разных программ причем все они работают в одном домене! этоже нонсенс! у человека есть один пароль на вход в систему, и этого должно быть вполне достаточно! как на доступ к БД (Майкрософт SQL сервер) так и для работы с защищёнными функциями всех саомописанных приложений!

т.е. программа сейчас написана так, что проверка на вшивость (на доступ к этим самым защищенным функциям) реализован через функцию LogonUser(), а ведь скорее всего можно не так. ведь нужно всего лишь проверить имя и пароль, без логона.

Отправлено: 14:04, 29-07-2011 | #6


Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


Цитата pypyrin:
а ведь скорее всего можно не так. ведь нужно всего лишь проверить имя и пароль, без логона. »
Цитата Delirium:
net use \\имя_контроллера\сетевая_папка /user:домен\имя_пользователя *
На запрос ввода пароля введи пароль пользователя. Сообщи о результате.
------- »
Где ответ на этот вопрос?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 15:33, 29-07-2011 | #7


Новый участник


Сообщения: 45
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Delirium:
net use \\имя_контроллера\сетевая_папка /user:домен\имя_пользователя *
На запрос ввода пароля введи пароль пользователя. Сообщи о результате. »
Ответа нету, т.к. проверить нет возможности. На тех компьютерах, которых нужно проверять, пользователю недоступно НИЧЕГО. Работа в режиме "киоск", имеется несколько ярлыков на столе - их и пользуй. Можно конечно все включить и всячески извернуться, но это не наш метод

В любом случае проблему я как бы решил
Поскольку в программе для проверки использовалась функция
Код: Выделить весь код
BOOL LogonUser(
__in      LPTSTR lpszUsername,
__in_opt  LPTSTR lpszDomain,
__in_opt  LPTSTR lpszPassword,
__in      DWORD dwLogonType,
__in      DWORD dwLogonProvider,
__out     PHANDLE phToken  );
но нерадивые программисты не очень хотели разбираться чего как, то просто взяв пример некий они использовали в качестве dwLogonType [in] значение LOGON32_LOGON_INTERACTIVE. Поэтому и всё и не работало. Эксперимент с другими значениями этого параметра показал, что прекрасно работает сетевой вход, а именно LOGON32_LOGON_NETWORK. На том и остановился.

Однако терзают меня смутные сомнения

Спасибо всем за терпение и помощь!

Отправлено: 15:05, 09-08-2011 | #8


Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


Всегда приятно, когда проблема решена своими силами

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 16:01, 14-08-2011 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Реализация системы безопасности в ПО на основе AD

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Неплохие результаты тестов 3DMark системы на основе AMD A8-3850 OSZone News Новости железа 16 16-06-2011 20:21
Разное - [решено] Сборка Barebone-системы на основе Shuttle SA76G2 NuLLBoyZ Прочее железо 3 21-04-2010 11:33
Доступ - Предупреждение системы безопасности angry_dog Microsoft Windows 7 1 30-03-2010 22:21
Доступ - [решено] Предупреждение системы безопасности Rulezzz2 Microsoft Windows 7 1 03-03-2010 10:16
Вопрос - политика безопасности системы svz1979 Защита компьютерных систем 1 29-11-2009 14:18




 
Переход