При переносе баз данных 1С на арендованные серверы и их публикации через веб-серверы (для работы тонкого или веб-клиента) часто возникает серьезная проблема безопасности. Любой человек, знающий адрес публикации, логин и пароль (которые можно подобрать методом перебора), может подключиться к рабочей базе со своего домашнего компьютера в любое время суток. Ответ технических специалистов арендодателя в стиле «ограничить доступ по IP нельзя — так не бывает» является в корне неверным.
В этой статье мы подробно разберем, как защитить вашу базу 1С, опубликованную на веб-сервере, и перечислим все возможные способы ограничения доступа: от простых настроек веб-сервера до создания защищенных каналов связи.
Если база опубликована для работы через тонкий клиент, подключение происходит по протоколу HTTP/HTTPS. Это значит, что запросы обрабатывает веб-сервер. Мы можем настроить веб-сервер так, чтобы он принимал запросы только с определенных IP-адресов (например, статического IP-адреса вашего офиса).
Для веб-сервера Apache:
Ограничение настраивается в конфигурационном файле публикации (обычно это файл default.vrd или файл конфигурации хоста httpd.conf / файл .htaccess в папке публикации). Рассмотрим пример конфигурации для Apache версии 2.4, где доступ разрешен только для конкретного внешнего IP-адреса офиса (например, 203.0.113.50):
<Directory "C:/inetpub/wwwroot/my_1c_base">
Options None
AllowOverride None
Require all denied
# Разрешаем доступ только с IP-адреса офиса
Require ip 203.0.113.50
</Directory>
При такой настройке любой пользователь, пытающийся зайти в 1С с постороннего IP-адреса, получит ошибку HTTP 403 (Forbidden), а база 1С даже не начнет загружаться.
Для веб-сервера IIS (Internet Information Services):
В Windows Server управление доступом по IP выполняется еще проще через графический интерфейс:
Самым надежным и профессиональным решением является полное закрытие портов веб-сервера (80 и 443) от внешнего интернета. Вместо публикации базы «на весь мир» настраивается виртуальная частная сеть (VPN).
Рассмотрим по шагам, как работает эта схема:
WireGuard или классического OpenVPN).http://10.8.0.1/my_1c_base).Этот способ полностью решает проблему безопасности: злоумышленник не сможет даже просканировать порты веб-сервера 1С.
Если у вас нет доступа к администрированию веб-сервера, или администраторы арендодателя отказываются помогать, вы можете ограничить работу пользователей программным путем в самой 1С. Для этого используется процедура ПередНачаломРаботыСистемы в модуле управляемого приложения.
Рассмотрим пример кода, который ограничивает запуск программы в нерабочее время (например, запрещает вход с 20:00 до 08:00):
Процедура ПередНачаломРаботыСистемы(Отказ)
// Ограничение по времени работы
ТекущееВремя = РабочаяДата();
ЧасСтрока = Формат(ТекущаяДата(), "ДФ=Ч");
ТекущийЧас = Число(ЧасСтрока);
Если (ТекущийЧас < 8) Или (ТекущийЧас >= 20) Тогда
Предупреждение("Внимание! Доступ к информационной базе в нерабочее время (с 20:00 до 08:00) заблокирован.");
Отказ = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
Также в этом обработчике можно проверять имя компьютера пользователя. Если имя компьютера не соответствует офисному шаблону (или не находится в списке разрешенных), транзакция запуска будет отменена:
// Пример проверки имени компьютера
ИмяКомпьютераКлиента = ВРег(ИмяКомпьютера());
Если Найти(ИмяКомпьютераКлиента, "OFFICE-") = 0 Тогда
Предупреждение("Запуск программы разрешен только с офисных компьютеров!");
Отказ = Истина;
Возврат;
EndIf;
Важно: Программные ограничения в 1С работают на прикладном уровне. Они не защищают веб-сервер от атак перебора паролей (brute force), но гарантируют, что рядовой сотрудник не сможет работать с данными дома на личном ноутбуке.
Этот способ идеально подходит, если у сотрудников динамические IP-адреса, из-за чего обычную фильтрацию по IP настроить невозможно, а разворачивать VPN слишком трудоемко.
Мы можем настроить веб-сервер так, чтобы он требовал от клиента специальный цифровой SSL-сертификат:
Проанализировав ситуацию, мы можем дать четкие рекомендации по общению с арендодателем сервера:
ПередНачаломРаботыСистемы.