Как ограничить доступ к серверной базе 1С по IP-адресу?

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

Задача по ограничению доступа к серверной базе 1С по IP-адресу является одной из ключевых для обеспечения безопасности данных и стабильной работы системы. Мы рассмотрим несколько эффективных подходов к решению этой проблемы, начиная от наиболее рекомендуемых методов и заканчивая альтернативными способами, которые могут быть полезны в специфических ситуациях.

Метод 1: Настройка файрвола (межсетевого экрана) на сервере 1С

Настройка файрвола на сервере, где установлен сервер 1С и СУБД (например, MS SQL Server), является основным, наиболее надежным и рекомендуемым способом ограничения доступа по IP-адресу. Этот метод позволяет контролировать, какие именно IP-адреса могут устанавливать соединения с портами, используемыми серверными компонентами 1С.

Прежде всего, давайте выясним, какие порты используют компоненты 1С Предприятия и СУБД для своей работы.

  1. Порты сервера 1С:Предприятия:
    • TCP 1540: Это основной порт агента сервера 1С. Все первоначальные подключения клиентов к кластеру серверов 1С устанавливаются именно через этот порт.
    • TCP 1541: Порт менеджера кластера 1С, используемый для управления кластером.
    • Диапазон TCP 1560-1591: Эти порты используются для рабочих процессов (rphost) кластера 1С. Каждый рабочий процесс занимает свой порт из этого диапазона. Если у вас большое количество баз или активных пользователей, может быть задействована значительная часть этого диапазона.
  2. Порты MS SQL Server (если используется):
    • TCP 1433: Стандартный порт для экземпляра MS SQL Server. Если ваш SQL Server настроен на использование статического порта, скорее всего, это будет 1433.
    • Динамические порты: В некоторых случаях SQL Server может использовать динамические порты. Если это так, мы можем настроить правила файрвола таким образом, чтобы разрешить подключения к исполняемому файлу sqlservr.exe вместо конкретного порта. Это более гибкий подход, но требует более внимательной настройки.

Пошаговая настройка файрвола Windows (концептуально):

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

  1. Откроем «Брандмауэр Защитника Windows в режиме повышенной безопасности». Это можно сделать через «Панель управления» -> «Администрирование» (где также выполняются операции по регистрации консоли кластера) -> «Брандмауэр Защитника Windows в режиме повышенной безопасности».
  2. В левой панели выберем «Правила для входящих подключений».
  3. В правой панели нажмем «Создать правило…».
  4. Тип правила: Выберем «Для порта» и нажмем «Далее».
  5. Протокол и порты:
    • Выберем протокол «TCP».
    • Укажем «Определенные локальные порты» и введем порты, используемые сервером 1С: 1540, 1541, 1560-1591.
    • Если используется SQL Server на статическом порту, то добавим и его порт: 1433. Нажмем «Далее».
  6. Действие: Выберем «Разрешить подключение» и нажмем «Далее».
  7. Профиль: Выберем профили, к которым будет применяться правило (например, «Доменный», «Частный», «Публичный»). Обычно для серверных подключений выбираются «Доменный» и «Частный». Нажмем «Далее».
  8. Имя и описание: Дадим правилу понятное имя, например, «Разрешить_1С_сервер_по_IP», и добавим описание. Нажмем «Готово».
  9. Ограничение по IP-адресам:
    • После создания правила, найдем его в списке, выберем и откроем его свойства (двойной клик или правая кнопка мыши -> «Свойства»).
    • Перейдем на вкладку «Область».
    • В секции «Удаленные IP-адреса» выберем «Указанные IP-адреса».
    • Нажмем «Добавить…» и введем IP-адреса или диапазоны IP-адресов компьютеров, с которых разрешен доступ к серверу 1С.
    • Например, если нам нужно разрешить доступ только с 192.168.1.10 и с подсети 192.168.10.0/24, мы добавим эти адреса.
    • Нажмем «ОК» для сохранения изменений.

Использование PowerShell для настройки файрвола:

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


# Разрешение входящих подключений для порта 1540 (Агент сервера 1С)
New-NetFirewallRule -DisplayName "1C_Server_Agent_1540_Inbound" `
    -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1540 `
    -RemoteAddress "192.168.1.10", "192.168.10.0/24" `
    -Profile Any -Enabled True

# Разрешение входящих подключений для порта 1541 (Менеджер кластера 1С)
New-NetFirewallRule -DisplayName "1C_Cluster_Manager_1541_Inbound" `
    -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1541 `
    -RemoteAddress "192.168.1.10", "192.168.10.0/24" `
    -Profile Any -Enabled True

# Разрешение входящих подключений для диапазона портов 1560-1591 (Рабочие процессы 1С)
New-NetFirewallRule -DisplayName "1C_Working_Processes_1560-1591_Inbound" `
    -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1560-1591 `
    -RemoteAddress "192.168.1.10", "192.168.10.0/24" `
    -Profile Any -Enabled True

# Если используется MS SQL Server на порту 1433
New-NetFirewallRule -DisplayName "MS_SQL_Server_1433_Inbound" `
    -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1433 `
    -RemoteAddress "192.168.1.10", "192.168.10.0/24" `
    -Profile Any -Enabled True

В этих примерах -RemoteAddress "192.168.1.10", "192.168.10.0/24" указывает на конкретные IP-адреса и подсети, с которых разрешен доступ. Мы должны заменить их на актуальные IP-адреса наших клиентских компьютеров.

Если SQL Server использует динамические порты, мы можем создать правило, разрешающее доступ к исполняемому файлу SQL Server:


New-NetFirewallRule -DisplayName "MS_SQL_Server_Executable_Inbound" `
    -Direction Inbound -Action Allow -Program "C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" `
    -RemoteAddress "192.168.1.10", "192.168.10.0/24" `
    -Profile Any -Enabled True

Мы должны убедиться, что путь к файлу sqlservr.exe указан верно для нашего экземпляра SQL Server.

Метод 2: Использование VPN для безопасного доступа

Одним из наиболее надежных и гибких способов обеспечить безопасный доступ к серверу 1С, особенно если у пользователей динамические IP-адреса или они работают удаленно, является использование виртуальной частной сети (VPN). Этот метод позволяет создать защищенный туннель между клиентским компьютером и корпоративной сетью, внутри которой находится сервер 1С.

Давайте рассмотрим, как VPN помогает в решении нашей задачи:

  1. Создание защищенного туннеля: Пользователь сначала подключается к VPN-серверу, устанавливая зашифрованное соединение. После успешной аутентификации в VPN пользователь получает внутренний IP-адрес из диапазона корпоративной сети.
  2. Контроль доступа по IP через VPN: После подключения к VPN, весь трафик от пользователя к серверу 1С будет идти уже изнутри корпоративной сети (или через VPN-шлюз). Это означает, что на файрволе сервера 1С мы можем разрешить доступ только с IP-адреса VPN-сервера или из диапазона IP-адресов, выдаваемых VPN-клиентам.
  3. Решение проблемы с динамическими IP: VPN идеально решает проблему динамических внешних IP-адресов пользователей. Независимо от того, какой внешний IP-адрес имеет пользователь, внутри VPN-туннеля он всегда будет иметь контролируемый внутренний IP-адрес.
  4. Рекомендации по развертыванию: Для максимальной безопасности рекомендуется разворачивать VPN-шлюз на отдельном сервере, желательно в демилитаризованной зоне (DMZ). Это изолирует VPN-сервер от основного сервера 1С, минимизируя риски в случае компрометации VPN-сервера.

Использование VPN добавляет уровень сложности в настройку инфраструктуры, но значительно повышает уровень безопасности и гибкости для удаленных пользователей.

Метод 3: Ограничение доступа для веб-публикаций 1С

Если мы используем базу 1С через веб-клиент или тонкий клиент по протоколам HTTP/HTTPS, то есть база опубликована на веб-сервере (например, Apache или IIS), у нас появляется возможность ограничить доступ по IP-адресам непосредственно на уровне веб-сервера. Этот подход дополняет файрвол на сервере 1С, добавляя еще один уровень контроля.

Давайте разберем, как это можно сделать на популярных веб-серверах:

  1. Для IIS (Internet Information Services):
    • Мы можем использовать встроенный модуль «Ограничения IP-адресов и доменов» (Domain Restrictions).
    • Откроем «Диспетчер служб IIS», выберем наш веб-сайт (или виртуальное приложение, где опубликована база 1С).
    • В секции «Безопасность» найдем «Ограничения IP-адресов и доменов».
    • Настроим «белый список» IP-адресов, явно разрешив доступ только с определенных IP или диапазонов. Все остальные запросы будут автоматически отклонены.
  2. Для Apache:
    • Мы можем использовать директивы в файле конфигурации веб-сервера (например, httpd.conf) или в файле .htaccess, расположенном в корневой директории веб-публикации.
    • Используем директивы Require ip для разрешения доступа только с определенных IP-адресов.
    • Пример в .htaccess:
      
      Order Deny,Allow
      Deny from All
      Allow from 192.168.1.10
      Allow from 192.168.10.0/24
      
      Мы должны заменить 192.168.1.10 и 192.168.10.0/24 на наши разрешенные IP-адреса или подсети.
  3. Облачные сервисы:
    • Некоторые облачные провайдеры, предоставляющие "Готовое облако 1С", предлагают собственные встроенные инструменты для ограничения доступа к веб-публикациям по IP-адресам. Это удобно, так как настройки производятся через личный кабинет провайдера.

Важный нюанс: Ограничение на уровне веб-сервера действует только для подключений по HTTP/HTTPS (веб-клиент, тонкий клиент). Если у нас также разрешены подключения через толстый клиент или тонкий клиент по TCP/IP напрямую к серверу 1С, нам все равно потребуется настроить файрвол на сервере 1С (как описано в Методе 1) для полного контроля.

Метод 4: Программное ограничение в конфигурации 1С (менее предпочтительный)

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

Давайте рассмотрим его суть и причины, по которым он не рекомендуется:

  1. Как это работает:
    • При запуске клиента 1С (обычно в модуле приложения или при начале работы системы) мы можем попытаться определить IP-адрес клиентского компьютера.
    • Если полученный IP-адрес не входит в список разрешенных, мы можем принудительно завершить работу системы, используя метод ЗавершитьРаботуСистемы().
  2. Определение IP-адреса:
    • Определить IP-адрес клиента средствами 1С не всегда тривиально. В клиент-серверном варианте 1С, код, исполняемый на клиенте, может получить локальный IP клиента. Код, исполняемый на сервере, может "видеть" IP-адрес клиентской машины только если она находится в той же локальной сети или нет промежуточных NAT. Если клиент подключается через терминальный сервер, то сервер 1С увидит IP-адрес терминального сервера, а не конечной клиентской машины.
    • Для получения IP-адреса клиента в управляемом приложении мы могли бы использовать внешние компоненты или вызывать методы COM-объектов, доступных на клиентской машине. Однако это усложняет развертывание и поддержку.
  3. Недостатки и причины нерекомендации:
    • Сложность реализации: Для надежного определения IP-адреса клиента в разных сценариях (локальная сеть, удаленный доступ, терминальный сервер) потребуется сложный код, который будет зависеть от инфраструктуры.
    • Легкость обхода: Более опытный пользователь или злоумышленник, имеющий доступ к клиентскому компьютеру, может попытаться модифицировать код 1С или подделать IP-адрес, чтобы обойти программные ограничения. Безопасность на уровне приложения всегда менее надежна, чем на уровне сетевой инфраструктуры.
    • Нагрузка на систему: Выполнение проверок IP-адресов при каждом запуске клиента или сеанса может создавать излишнюю нагрузку на сервер 1С, хоть и небольшую.
    • Нецелевое использование платформы: Платформа 1С предназначена для автоматизации бизнес-процессов, а не для функций сетевой безопасности, хотя существуют решения для внешнего управления сеансами. Такие задачи должны решаться на соответствующих уровнях инфраструктуры (файрвол, VPN, веб-сервер).

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

Метод 5: Использование средств администрирования 1С:Фреш

Для пользователей облачного сервиса "1С:Фреш" (и аналогичных облачных решений 1С) существуют специализированные инструменты для разграничения доступа, которые могут включать ограничение по IP-адресам. Этот функционал обычно интегрирован в личный кабинет пользователя сервиса или в средства администрирования облачной инфраструктуры.

Давайте посмотрим, что мы можем ожидать от такого функционала:

  1. Централизованное управление: Мы можем настраивать политики доступа через веб-интерфейс личного кабинета 1С:Фреш. Это удобно, так как не требует прямого доступа к серверам или настройки файрволов вручную.
  2. Политики доступа по IP: Обычно такой функционал позволяет создавать "белые списки" IP-адресов, с которых разрешен вход в программы 1С. Если попытка входа происходит с IP-адреса, не входящего в этот список, доступ будет автоматически заблокирован.
  3. Гибкие правила: Помимо IP-адресов, часто можно настроить и другие условия доступа, например, время работы сотрудников, используемые программы и т.д.

Этот метод применим только для пользователей, использующих "1С:Фреш" или другие облачные решения, где провайдер предоставляет такой функционал. Для локально развернутых систем он не актуален.

Работа с динамическими IP-адресами

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

  1. Почему динамические IP-адреса являются проблемой:
    • Если у пользователя домашний интернет, его внешний IP-адрес может меняться с определенной периодичностью (например, при перезагрузке роутера, истечении срока аренды DHCP-адреса или по решению провайдера).
    • В таком случае, если мы жестко пропишем в файрволе один IP-адрес, он рано или поздно станет неактуальным, и пользователь потеряет доступ к системе. Нам придется постоянно отслеживать изменения и обновлять правила файрвола.
  2. Решение с помощью VPN:
    • VPN (Виртуальная Частная Сеть) является наиболее элегантным и надежным решением этой проблемы.
    • При использовании VPN пользователь сначала устанавливает защищенное соединение с VPN-сервером. После успешной аутентификации VPN-сервер выдает пользователю внутренний IP-адрес из фиксированного, контролируемого нами диапазона.
    • Таким образом, сервер 1С "видит" подключение не от переменного внешнего IP-адреса пользователя, а от IP-адреса VPN-сервера или из внутреннего диапазона VPN.
    • Нам остается лишь настроить файрвол сервера 1С так, чтобы он разрешал подключения только с IP-адреса VPN-сервера или из этого внутреннего диапазона.
    • Это обеспечивает стабильный и безопасный доступ независимо от внешнего IP-адреса пользователя.
  3. Альтернативы (менее надежные/удобные):
    • Использование динамического DNS (DDNS) и скриптов: Теоретически можно использовать сервис DDNS, который обновляет доменное имя с текущим IP-адресом пользователя. Затем скрипт на сервере 1С мог бы периодически получать этот IP и обновлять правила файрвола. Однако это сложно в реализации, менее надежно и не рекомендуется для критически важных систем.
    • Ограничение по диапазонам провайдеров: Если все пользователи находятся в одном городе и пользуются услугами нескольких крупных провайдеров, можно попытаться разрешить целые диапазоны IP-адресов этих провайдеров. Но это слишком широко и не дает точного контроля.

Таким образом, для работы с динамическими IP-адресами пользователей мы настоятельно рекомендуем использовать VPN, так как это обеспечивает высокий уровень безопасности и удобства администрирования.

Дополнительные меры безопасности

Помимо ограничения доступа по IP-адресу, мы всегда должны рассматривать и другие методы повышения общей безопасности нашей системы 1С. Эти меры не являются прямым контролем IP, но существенно укрепляют защиту.

  1. Двухфакторная аутентификация (2FA):
    • 2FA (например, на базе аутентификации по JWT-токену) обеспечивает дополнительный уровень защиты, требуя от пользователя не только ввода пароля, но и предоставления второго фактора подтверждения.
    • Это может быть код из SMS, код из специального приложения-аутентификатора (например, Google Authenticator), подтверждение через электронную почту или использование аппаратных токенов.
    • Даже если злоумышленник узнает пароль пользователя, он не сможет войти в систему без второго фактора.
    • Реализация 2FA в 1С возможна либо через встроенные механизмы (если они есть в конфигурации, например, в 1С:ERP или 1С:Документооборот), либо через интеграцию с внешними системами аутентификации.
  2. Kerberos-аутентификация:
    • Для систем 1С, интегрированных с Active Directory, настройка Kerberos-аутентификации может обеспечить более надежную защиту и механизм единого входа (Single Sign-On).
    • Kerberos является более безопасным протоколом аутентификации по сравнению с NTLM и помогает предотвратить атаки типа "передача хеша" (Pass-the-Hash).
    • Настройка Kerberos требует знаний в области Active Directory и инфраструктуры сети, но значительно повышает уровень безопасности в доменной среде.
  3. Принцип минимальных привилегий:
    • Мы должны всегда следовать принципу предоставления пользователям и службам только тех минимально необходимых прав, которые требуются для выполнения их функций.
    • Например, учетная запись, под которой запускается сервер 1С, должна иметь только необходимые права на работу с СУБД и файловой системой, без избыточных административных привилегий.
  4. Регулярное обновление ПО:
    • Мы должны регулярно обновлять платформу 1С, конфигурацию, СУБД, операционную систему сервера и клиентских рабочих станций.
    • Обновления часто содержат исправления безопасности, устраняющие известные уязвимости.

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

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

← На главную