Как стать автором
Обновить

Комментарии 50

Может быть коммент глупый, но не проще ли поставить звёздочку в поле "Имя ПК", как обязательный пункт заведения тикета? Ну и знак вопроса, который подскажет, где посмотреть подобную инфу.
тикет не обязательно может быть связан с пк...(принтер\сканер\тсд и т.п), поэтому он не обязателен для заполнения в нашем случае.он у нас есть… но он чаще всего пуст:(
На компы можно принудительно вынести на рабочий стол имя машины. На принтеры/сканеры/торговые автоматы и прочее сделать единообразную табличку, на которой находится вся информация. Жирным можно выделить, что нужно переписать пользователю, для заполнения тикета. Если это очень сложно, пусть хотя бы указывают физическое расположение принтера, на 3-ем этаже у столовой…
На всех рабочих станциях в центре рабочего стола указано имя пк, имя учетной записи и ip адрес. Но пользователи в упор это не видят, а замечают только после звонка по телефону и просьбе прочитать эти данные :)
у вас большая миграция юзеров по ПК?
Наша система SD сама указывает/предлагает_выбрать актив который закреплен за юзером.
у нас часть сотрудников работает по графику 2/2 + десяток терминальных серверов, работающих в кластере. поэтому закрепление пк за юзером не прокатит. ну это опять же в нашем конкретном случае
подскажите, какой у вас Service Desk?
1С:ITIL
А контролер домена не имеет в логах информации откуда происходит вход в систему? Возможно лучше анализировать логи на контролере домена?
Вопрос номер два вход систему приостанавливается на время работы вашей программы? Может ли так случится что вход систему будет «тормозить» из-за того что ваша программа работает долго?
Нет, вход в систему не тормозит потому, что программа запускается после того как пользователь загрузился под своей учетной записью. Это было протестировано мной
Извиняюсь, промахнулся по ссылке «ответить»
Нет, вход в систему не тормозит потому, что программа запускается после того как пользователь загрузился под своей учетной записью. Это было протестировано мной
Способ не надежен из-за крайне простой подделки инсерта. Вы фактически всем пользователям подарили доступ на инсерт в бд. А может и не только на него, если права пользователя настроены не верно в бд.
Приложение конектится под служебной учетной записью к серверу, у самих пользователей нет прав на запись/чтение из данной бд. На самих пк у пользователй права так же ограничены.
Какая разница? Вы дали в пользовательские руки приложение имеющее учетную запись на доступ в БД. Так что считайте что у пользователя есть учетка для выполнения ровно тех действий в бд, к которым есть права у данной служебной записи.
Не совсем понятны ваши опасения.Пользователям нельзя вообще давать в руки приложения? Используются самописные приложения для тсд и проблем не было
Объясняю на примере описанного выше приложения.
Исходя из описания — приложение конектится напрямую в сервер БД от имени некой учетной записи (внутри приложения вшито или в нетлогон прописано в «запуск от имени»?)
В обоих случаях пользователь получает доступ к учетной записи, которая имеет права на совершение вышеописанного инсерта в БД.
Далее рассмотрим 3 варианта:
1. Данная учетная запись настроена верно и разрешает только инсерт и только в эту таблицу.
Тогда злоумышленник сможет только подделывать данные. Забивая всякой херней таблицу (включая запись дезинформации о других пользователях в сети)
2. Данная учетная запись настроена не верно, и имеет еще кучу разных прав в БД (если сильно повезет, то делит или запись/чтение других таблиц в БД). В этом случае вы злоумышленнику подарили возможность сделать все вышеописанное с информацией в БД сервере.
3. Данная учетная запись настроена вообще не верно, и не дай бог имеет права sa. Тогда вы подарили злоумышленнику не только данные в БД, но и весь БД сервер.
вариант 1, но мне было бы интересно на это посмотреть, я себе это не представляю сейчас в таком варианте
Поверьте — это делается элементарно. Хотя первый вариант разумеется наименьшая из возможных бед, которая могла бы получится.
Подумайте сами логически. Приложение запускается на компе пользователя. Значит это приложение в момент запуска должно обладать информацией для конекта в БД. И данную информацию без труда можно получить.
Кстати если авторизация в БД по доменной учетке идет (той самой служебной), то тогда проверяйте какие права в домене имеет эта учетка, т.к. она потенциально есть у любого пользователя в сети.
Чувствуется у вас профессиональный интерес к ИБ :)
Вы же читали историю про хакера и небезопасные солонки-перечницы?

Что такого плохого могут сделать сотрудники, подделав имя компа, с которого открыли тикет?
Как вы могли прочитать в статье — указанная программа не имя компа с которого тикет открывается пишет. А записывает при каждой авторизации пользователя на компе инфу в БД. Это означает, что даже при первом варианте прав на учетке mssql — мы можем дискредитировать систему логов просто набив туда не верных данных. К примеру указать, что Вася Пупкин на самом деле авторизован не на PC, а совсем на другом компе. Или просто заполнить вымышленными данными. Для того чтобы придумать более серьезный вариант атаки необходимо больше знаний о сети и настройках GPO.
Однозначно могу сказать одно, указанный метод крайне не безопасен в использовании.
да, но что такого плохого может произойти, если в БД появится левая инфа?

Конечно пароль на эту базу не должен совпадать с другими паролями и не должен давать доступа к другим базам на том же сервере.

Но в остальном…

В солонки тоже можно яду насыпать.
Может вы и правы, но пока мне это кажется незначительной угрозой.
Для бизнес-процессов компании — например, выход техника по тикету на другое рабочее место (в зависимости от компании, это может быть как один корпус, так и другой конец города). Ну а с технической точки зрения — уязвимость в программе несёт потенциальные проблемы, в частности необращение внимания на эту же проблему в будущих программах, где это может быть критичнее.
И вы начали описывать анекдот про солонки.
Катастрофы не произойдёт, если кто-то решит поиграть в хакера и угробит поиск компьютеров, просто хелпдекс станет работать как раньше. А вот огрести такой шутник может по самое небалуйся.
Используем возможность пользователя изменять отдельные поля своей учетки. Написан скрипт, отрабатывает по групповой политике при логоне, пишет имя компа в поле comment учетной записи пользователя. Можно внести изменения в схему, добавить специальное поле и писать туда. Ищется в стандартной консоли вот так screen.barsuki.cc/pictures/user1/2014-10-16_17-53-41_9289k928rz8e.png
хороший способ. но девочкам в хелпдеске проще и быстрее в браузере набрать фио, чем консолью пользоваться
Дык можно в браузере выводить нужные поля из AD.
Дмитрий, не поделитесь скриптом?
Именно для решения этой задачи, начал как то писать небольшую утилиту на C#, которая переросла потом в небольшой центр управления и работы инженера хелпдеск, пользователи привязаны либо к ПК, либо к ТК, поэтому в поле comments в AD для УЗ машинки прописан либо логин, либо фио пользователя, списки с поиском и автодополнением ПК->User, User->ПК, после чего отображается почта юзера, номер телефона и вся информация что есть о нем и тачке, плюс быстрей кнопки взаимодействия, подключение через помощник, rdp, vnc, локальные диски, выполнение файлов, удаленная консоль, установка ПО и прочее.
Только сегодня решал обратную задачу — смотрел, кто залогинен на компьютере. Будь я системным администратором, я бы не стал заморачиваться с программой. Батник, который пишет файл с %computername% — %username% в сетевую шару и обработчик, который читает эту шару и запихивает данные в базу (элементарный джоб).
Ну или, если есть необходимость обеспечить надежность данных, чтобы кто угодно не мог подменить данные, писать в шару %computername%, а в обработчике считывать имя пользователя с помощью PsLoggedOn.
на повершеле все проще
я бы сделал немного по другому.

небольшое приложение на десктопе, локальное приложение не под юзерской и не под доменно админской учёткой, собирающее нужные евенты в логах — логин, логофф, смена айпишника там. и периодически отправляющее эти данные по впн на сервер каким-нить http-post ('json')
второе — зачем апач под виндой, если есть IIS и зачем php5.2 если есть php для iis. если уже Вы так любите php?
хотя, как админ и программер на C# + asp.net mvc могу подумать и над такой задачей для общего развития.
Первое, что пришло в голову — это создать bat файл с sqlcmd, но для каждой версии Windows нужна своя версия утилиты sqlcmd. Неудобно, и мы не стали копать глубже.

Хватило бы скрипта на VBScript и драйвера ODBC.
да, именно этот вариант мне подсказали уже после того, как решение было реализовано на Delphi
А почему буква «С» на картинке вылезла за пределы белого листа? :-)
Может стоило сделать так:
Имя компа автоматически подставляется то, с которого открыли портал хелп-деска, с возможностью указать другое — на случай, если «меня вася из нашего отдела попросил написать...»
тоже не понял, почему нельзя эти поля заполнять автоматически по умолчанию.
я так же не понимаю почему нельзя было это сделать при внедрении системы
Если сеть в АДу — куда проще скриптом писать в описание компьютера ФИО последнего залогиневвшегося на него юзера, опять же из АДа.

Как-то так, например
Set objSysInfo = CreateObject("ADSystemInfo")

Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)

strMessage =  objUser.displayName

objComputer.Description = strMessage
objComputer.SetInfo

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objRegistry = GetObject _
    ("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "System\CurrentControlSet\Services\lanmanserver\parameters"
strValueName = "srvcomment"
strDescription = objUser.CN
objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strDescription

Wscript.Quit
Эх… когда-то, во времена ХР описание компа было видно в «сетевом окружении».
Теперь оно видно… никому?
Ну, не рядовому пользователю-точно.
Ну нет, иметь историю пересадок иногда очень полезно. Плюс на компе может навернуться этот самый lanmanserver и он выпадет из сетевого окружения.
Скажите, пожалуйста, зачем вы замазали ip-адреса 192-й сети?
Изящный, но велосипед: субд, экзешник в логонскрипте — слишком много всего, что вызывает вопросы с точки зрения change management и требует дополнительного обслуживания.
Keep It Simple :) Логонскрипт с записью требуемых данных в поле объекта AD (комментарий к пользователю или описание компьютера) гораздо более нативен по отношению к системе. Если хочется веб-интерфейс — можете искать своим приложением по активной директории, никто не запрещает. С точки зрения удобства интерфейса — проще всем сотрудникам техподдержки развернуть оснастку ADU&C (через нее еще и пароли можно забывчивым пользователям сбрасывать) с соответствующими правами по отношению к AD.
Cyrill
Конечно, это велосипед (:, конечно могут быть и есть другие решения данного вопроса.
Но, нам очень хотелось веб и не очень хотелось лезть в AD, т.к нет понимания какая будет нагрузка и скорость работы, если 7-10 человек будет пользоваться одновременно сервисом.
+ в БД хранятся исторические данные, а это бывает очень нужно в различных ситуациях
Простите, нагрузка и скорость работы чего? AD? Их личного опыта — домен на 20000+ пользователей и примерно столько же машин, государственной развертки, 6 контроллеров домена с репликацией. Все, что вам требуется, работает как положено.
Скорость работы веб интерфейса.
Длительность выполнения одного и того же mssql запроса из менеджмент студиии и из php сильно различается. Железо для поддержки 20к пользователей и для 1.5к, думаю, так же отличается.
Когда у меня возник подобный интерес — «кто где логинился?», я решил её за несколько минут дополнительной строкой в логон-скрипт вида:
echo %username% at %computername% in %date% %time% >> \\server\share\report\lastlogon.txt

Да, согласен, не модно, ни БД ни развесистых скриптов, однако задачу решает полностью.
Ротация тоже отсутствует :)

keep it simple
У нас похоже, только на каждый логон создаётся свой файл:
tasklist > \\server\logon\%username%_%computername%.txt

После чего в любой момент можно делать такие запросы:
dir /o:d \\server\logon\ | find "логин пользователя или имя ПК или дата авторизации" /I

При этом можно повторно фильтровать уже отфильтрованные данные (второй третий… find). Можно сделать готовый cmd с этими командами и быстро вызывать его:
userfind.cmd p.ivanov
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации