Как безопасно выставить базу 1С в интернет для обмена через HTTP-сервисы?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разберем частую ситуацию: у нас есть локальная файловая база 1С, в которой разработаны HTTP-сервисы для обмена данными с мобильным клиентом. При тестировании в локальной сети все работает отлично, но возникает необходимость дать доступ мобильному приложению из любой точки мира через интернет. При этом открывать всю внутреннюю сеть наружу совершенно не хочется из соображений безопасности. Давайте подробно рассмотрим, как правильно и безопасно решить эту задачу.

Выбор и настройка веб-сервера

Для публикации HTTP-сервисов платформы 1С нам потребуется веб-сервер. Официально 1С поддерживает два основных варианта:

  1. Apache — кроссплатформенный и популярный веб-сервер, который легко настраивается как на Windows, так и на Linux.
  2. IIS (Internet Information Services) — встроенный веб-сервер от Microsoft. Если ваша серверная машина работает под управлением Windows, использование IIS часто оказывается более удобным и стабильным решением.

Проанализируем архитектуру для повышения безопасности. Хорошей практикой является использование Nginx в качестве обратного прокси-сервера (reverse proxy). Сам по себе сервер 1С напрямую с Nginx не работает, но мы можем поставить Nginx «перед» Apache или IIS. В такой схеме Nginx принимает весь входящий трафик из интернета, фильтрует его, обрабатывает SSL-сертификаты и только проверенные запросы передает на локальный сервер 1С. Это создает дополнительный, очень надежный контур защиты.

Настройка маршрутизации: проброс портов (Port Forwarding)

Чтобы запросы из мобильной сети попадали на наш веб-сервер, настроим маршрутизацию на роутере. Нам потребуется статический («белый») IP-адрес от провайдера.

Рассмотрим по шагам настройку проброса портов:

  1. Заходим в настройки маршрутизатора (роутера).
  2. Находим раздел NAT / Port Forwarding.
  3. Пробрасываем внешний порт (например, стандартный 443 для HTTPS или любой нестандартный внешний порт) на внутренний IP-адрес машины, где установлен веб-сервер (Apache, IIS или Nginx).

Важно: Если вы пробрасываете только порт веб-сервера на конкретную машину, то доступ из интернета будет открыт исключительно к веб-серверу, а не ко всей локальной сети. Защита внутренней сети при этом не страдает.

Ограничение доступа на уровне 1С (настройка файла default.vrd)

Даже если злоумышленник узнает ваш внешний IP-адрес и порт, мы должны быть уверены, что он не получит доступ к данным или интерфейсу программы. Для этого правильно настроим параметры публикации в конфигураторе.

При публикации базы на веб-сервере 1С формирует конфигурационный файл default.vrd. Чтобы максимально обезопасить систему, выполним следующие действия:

  1. Открываем окно публикации веб-клиента в Конфигураторе.
  2. Обязательно снимаем галочки с пунктов «Публиковать веб-клиент» и «Публиковать стандартный интерфейс OData». Если мобильному приложению они не нужны, они не должны быть доступны извне.
  3. Переходим на вкладку HTTP-сервисов и оставляем флажок только напротив того сервиса (или сервисов), который используется для интеграции с мобильным клиентом.

Таким образом, внешние запросы смогут обращаться только к строго определенным методам HTTP-сервиса, а открыть саму базу через браузер будет невозможно.

Обязательное использование HTTPS (SSL)

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

Более того, современные мобильные операционные системы (Android и iOS) на уровне ядра блокируют незашифрованный HTTP-трафик внутри мобильных приложений.

Обязательно настроим SSL-сертификат. Можно использовать бесплатные сертификаты (например, от Let's Encrypt). Они легко обновляются и поддерживаются всеми устройствами. Самоподписанные сертификаты использовать можно, но это потребует ручной установки корневого сертификата на каждое мобильное устройство, что крайне неудобно на практике.

Специфика работы с файловой базой данных

Так как в нашем случае используется файловая база (файл 1Cv8.1CD), разберем технические нюансы, с которыми мы столкнемся:

Проверка идемпотентности при мобильном обмене

При передаче данных через мобильную сеть (3G, LTE) связь часто обрывается. Посмотрим на классическую проблему: мобильный клиент отправляет POST-запрос в 1С на создание заказа. 1С заказ создает, но при отправке ответа связь обрывается. Мобильное приложение думает, что произошла ошибка, и отправляет запрос повторно. В итоге в 1С создаются дубли.

Чтобы этого избежать, в коде HTTP-сервиса обязательно реализуем механизм идемпотентности. Мобильное приложение должно генерировать уникальный идентификатор запроса (например, GUID) и передавать его в заголовках. На стороне 1С мы проверяем: если запрос с таким идентификатором уже успешно обработан, мы не создаем документ заново, а просто возвращаем успешный ответ.

Альтернативный подход: использование VPN

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

Отличным решением будет развертывание VPN-сервера (например, WireGuard, OpenVPN или IPsec).

  1. Мы настраиваем VPN-клиент на рабочих смартфонах сотрудников.
  2. При запуске приложения или фоновом обмене телефон устанавливает защищенный туннель с офисом.
  3. Устройство получает внутренний IP-адрес и обращается к веб-серверу по его локальному адресу.

В этой архитектуре никакие порты наружу (кроме порта самого VPN) открывать не нужно. База 1С остается полностью скрытой от внешнего мира, что является самым безопасным решением для корпоративного сегмента.

← На главную