Каталог решений - Информирование об утечке базы 1С

Информирование об утечке базы 1С

Информирование об утечке базы 1С

В наличии

Когда работаешь в крупном холдинге, количество сотрудников, имеющих доступ к базам 1С неизменно растет.
Рано или поздно появится задача по контролю утечки баз 1С.
Конечно мы применим все меры по предотвращению утечки баз, но и информирование о случаях утечки тоже не повредит.

Категория:

Описание

Идея "собирать статистику" сама по себе не нова, вот и я решил аналогичным способом реализовать ее, «заразив» все свои базы 1С процедурой «ПроверитьМестоЗапуска1С()»

Вызов этой процедуры можно спрятать куда угодно, хоть в одно из часто выполняемых Регламентных заданий, хоть среди других таких процедур в общем модуле центра мониторинга. Конечно выбрать нужно место такое, которое как можно реже обновляется. Я банально вызываю ее из процедур «ПриНачалеРаботыСистемы()» в модуле приложения (управляемого/обычного).  

Смысл идеи моего «трояна» заключалась в том, что если 1С запущена на компьютере с названием, отличным от названия нашего RDP сервера, то 1С сформирует файл со сведениями из окружения запуска и передает его на наш дежурный FTP сервер. Кстати способов передать файл с данными множество, я использовал FTP, поскольку у меня уже был поднят FTP сервер, хотя можно использовать и HTTPсоединение.

Поскольку в коде в открытом виде будет написан пароль для FTP соединения,  создаем изолированную папку FTP для этого пользователя и создаем авто перенос  уже переданных на FTP файлов в недоступное место. Это уже задача для системного администратора.

И так сама процедура:
 

Процедура ПроверитьМестоЗапуска1С()
   // Вся процедура выполняется только, если 1С запущена не на «вашем» сервере.
   // Конечно, можно использовать другие признаки опознавания работы с базой 1С не внутри вашей сети. 
    Если ИмяКомпьютера()<>"Name_YOU_Server_RDP" Тогда

	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
	Текст =  Новый ТекстовыйДокумент;
	//Сведения из окружения 1С, их сбор происходит незаметно для пользователя.
	Текст.ДобавитьСтроку(ПолучитьЗаголовокСистемы());
	Текст.ДобавитьСтроку(ИмяКомпьютера());
	Текст.ДобавитьСтроку(ИмяПользователя());
	Текст.ДобавитьСтроку(ПолноеИмяПользователя());
	Текст.ДобавитьСтроку(КаталогВременныхФайлов());
	Текст.ДобавитьСтроку(СтрокаСоединенияИнформационнойБазы());
	Текст.ДобавитьСтроку(ФОРМАТ(ТекущаяДата(),"ДЛФ=DT"));
	Текст.Записать(ИмяВременногоФайла, КодировкаТекста.OEM);
	Текст=Неопределено;

	//Эти сведения собираются с использованием командной строки, их сбор происходит с появлением черного окошка командной строки на 4 секунды.
	КомандаСистемы("set >> "+ИмяВременногоФайла);  //Переменные окружения иногда могут многое сказать о владельце компьютера
	КомандаСистемы("tracert -d -h 3 -w 1000 -4 ya.ru >> "+ИмяВременногоФайла);  //Это самая долгая операция, но зато позволяет узнать внешний IP адрес места, где запустили нашу 1С.

	//Передаем сведения по FTP
	АдресСайта = "You_Ftp_server.ru" ;
	Порт = 21;
	Логин = " YouFTPUser";
	Пароль = " YouFTPPassword";
	ИмяКаталога = "/";
	FTPСоединение = Новый FTPСоединение(АдресСайта,Порт,Логин,Пароль,,Истина,5);
	FTPСоединение.УстановитьТекущийКаталог(ИмяКаталога);
	FTPСоединение.Записать(ИмяВременногоФайла,ИмяКомпьютера()+"_"+ФОРМАТ(ТекущаяДата(),"ДФ=yyyyMMdd")+".txt");
	FTPСоединение=Неопределено;

    КонецЕсли;
	
КонецПроцедуры

Ну вот и готов еще один способ информирования об утечки информации.

has been added to your cart:
Оформление заказа