Мониторинг установки нового программного обеспечения на персональных компьютерах специалситов предприятия, с использованием Kaspersky Administration KIT
Ожидает приглашения
Исходные данные
У нас в организации, корпоративная сеть состоящая из 30 персональных компьютерах. Для централизованного администрирования антивирусной защиты организации мы используем Kaspersky Administration KIt. На каждом персональном компьютере установлены Антивирус Касперского и «Агент администрирования лаборатории Касперского».
Задача
Информирование администратора сети об установки программного обеспечения. Это поможет избежать несанкционированную установку. Автоматизация ведения журнала установленного программного обеспечения(ПО) на персональных компьютерах(ПК).
Анализ
Краткий принцип сбора и хранения информации Kaspersky Administration KIt таков: Kaspersky Administration KIt использует базу данных Microsoft SQL Server для хранения информации своей конфигурации, об антивирусной активности, о структуре сети и многое другое. Около 140 таблиц. Нас будет интересовать всего три таблицы, о которых я расскажу дальше. Агент администрирования лаборатории Касперского, установленные на каждом компьютере специалиста, собирает в реальном времени всю необходимую информацию и передает на сервер администрирования.
В БД нам интересны таблица hst_inventory_product — это своего рода номенклатура ПО, которое установлено либо было когда-то установлено в нашей организации. Пример одной строчки таблицы:
nID | strId | bIsMsi | wstrDisplayName | wstrDisplayVersion | wstrPublisher | ... | ... |
570 | DF635BCE8840F718166AFAF0797BAAC9 | True | 1С: Предприятие 8.2 Тонкий клиент (8.2.18.61) | 8.2.18.61 | 1C | ... | ... |
Следующая таблица Hosts содержит информацию об хостах(персональных компьютерах). Пример одной строчки таблицы:
nId | timeLastVisible | timeLastInfoUpdate | nGroupe | nNtDomain | strWinHostName | ... |
31 | 31.05.2013 7:23:37 | 31.05.2013 7:23:37 | 0 | 2 | WS0340122801 | ... |
Следующая таблица hst_inventory_hstprds это таблица в которой nHostId-это вторичный ключ поля nId таблицы Hosts. nProduct это вторичный ключ поля nId таблицы hst_inventory_product. Пример одной строчки таблицы:
nId | nHostId | nProduct | tmInstalDate | ... |
1838 | 1 | 26 | 23.11.2010 0:00:00 | ... |
Реализация
Для таблицы hst_inventory_hstprds создаем триггер.
ALTER TRIGGER [dbo].[inventory_new_inst]
ON [dbo].[hst_inventory_hstprds] FOR INSERT
as
BEGIN
insert into inventory_new_install
select inserted.nId from inserted
END
Таблица inventory_new_install это таблица с единственным столбцом nId являющаяся вторичным ключом поля nId таблицы hst_inventory_hstprds.
Теперь, как только на персональном компьютере произойдет установка программного обеспечения, Агент администрирования Kaspersky передаст соответствующую информацию на сервер администрирования. Сервер администрирования сохранит поступившие данные в БД. Как только на таблице hst_inventory_hstprds произойдет событие insert, запустится триггер inventory_new_inst, который добавит запись в таблицу inventory_new_install. Далее, следующим запросом мы получаем список установленного ПО.
SELECT inventory_new_install.nProduct ,Hosts.strWinHostName,
hst_inventory_products.wstrDisplayName,
hst_inventory_products.wstrDisplayVersion,
hst_inventory_hstprds.tmInstallDate,
hst_inventory_hstprds.wstrInstallDir
FROM hst_inventory_products
INNER JOIN hst_inventory_hstprds ON hst_inventory_products.nId = hst_inventory_hstprds.nProduct
INNER JOIN inventory_new_install ON hst_inventory_hstprds.nId=inventory_new_install.nProduct
LEFT OUTER JOIN Hosts ON hst_inventory_hstprds.nHostId=Hosts.nId
Тем самым, мы осуществили контроль установки ПО с занесением в БД. Далее, я создал простенький web интерфейс с возможностью просмотра установленного ПО по дате, по хостам. Так-как мне по работе необходимо вести журнал установленного ПО, мне пришлось создавать таблицу inventory_new_inst. Если вам, достаточно только оповещение об установленном ПО, можно в триггере вызывать процедуру отправки письма на электронный ящик администратора.