Публикация баз данных 1С:Предприятие на веб-сервере IIS c защитой SSL и аутентификацией по паролю

  • Автор:

1cv8-IIS-SSL-Basic-000.pngПри развертывании комплекса 1С:Предприятие на платформе Windows для веб-публикации информационных баз часто используют IIS (Internet Information Services). Это вполне оправданное решение, позволяющее обойтись только штатными средствами платформы Windows без установки дополнительного софта. В данной статье мы не только рассмотрим процесс публикации различных информационных баз на веб-сервере IIS, но и настроим их работу по защищенному протоколу HTTPS с сертификатами Let's Encrypt, а также добавим дополнительную парольную защиту.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Установка сервера IIS для работы с платформой 1С:Предприятие

Данная инструкция будет актуальна для Windows Server 2012 R2, 2016, 2019 и 2022.

Прежде всего установим роль веб-сервера, для этого откроем Мастер добавления ролей и компонентов и на странице Роли сервера выберем Веб-сервер (IIS):

1cv8-IIS-SSL-Basic-001.pngЗатем на странице Службы ролей в группе Безопасность выбираем Обычная проверка подлинности:

1cv8-IIS-SSL-Basic-002.pngА в разделе Разработка приложений включаем Расширения ISAPI и Фильтры ISAPI:

1cv8-IIS-SSL-Basic-003.pngВсе остальное оставляем по умолчанию и завершаем установку роли.

Сразу скажем пару слов по поводу выбранного метода аутентификации: простая проверка подлинности, она же Basic предусматривает передачу учетных данных открытым текстом, что может насторожить внимательного читателя. Данный выбор обусловлен тем, что платформа 1С:Предприятие не поддерживает иных методов аутентификации. Но следует учесть, что данный метод будет использоваться совместно с TLS-защитой и учетные данные, хоть и открытым текстом, но будут передаваться внутри зашифрованной сессии, так что о безопасности такого решения можно не беспокоиться.

Следующим шагом установим платформу 1С, из компонентов выбираем 1С:Предприятие 8 и Модули расширения веб-сервера:

1cv8-IIS-SSL-Basic-004.pngОтдельного лицензирования данная установка 1С не требует (за некоторыми исключениями, которых коснемся позднее).

Публикация клиент-серверной базы 1С:Предприятие

Существует два пути публикации информационной базы: через конфигуратор и при помощи утилиты webinst. Начнем с Конфигуратора, откройте нужную информационную базу в этом режиме и перейдите в Администрирование - Публикация на веб-сервере. В строке Веб-сервер выберите Internet Information Services, поля Имя и Каталог будут заполнены автоматически, при необходимости можете изменить их значения.

Теперь что касается параметров публикации, если вам нужен только доступ в информационную базу, то достаточно оставить Публиковать доступ для клиентских приложений, все остальное следует отключить, что позволит упросить публикацию и сузить периметр возможной атаки. Общее правило одно: не нужно - не публикуйте.

1cv8-IIS-SSL-Basic-005.pngАльтернативой является использование утилиты webinst, она входит в состав платформы и находится в папке bin установленной версии 1С:Предприятие. Для публикации на IIS используйте следующую команду (выполнять с правами администратора):

webinst -publish -iis -wsdir hrm-1 -dir "c:\inetpub\hrm-1" -connstr "Srvr=SRV-1C;Ref=HRM-1;"

Разберем ключи:

  • publish - публикация базы
  • iis - использование веб-сервера IIS
  • wsdir - виртуальный каталог, аналог поля Имя в конфигураторе, по сути, представляет имя публикации
  • dir - каталог с физическим расположением публикации, должен находится в c:\inetpub
  • connstr - строка подключения к базе, в нашем случае это сервер SRV-1C и база HRM-1

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

Сразу предвидим вопрос: а зачем использовать webinst если есть конфигуратор? Ответ прост - интерактивный запуск базы в конфигураторе требует клиентскую лицензию, webinst - нет.

Публикация файловой базы 1С:Предприятие

Обязательное условие публикации - каталог с информационной базы должен располагаться на веб-сервере. Следующим шагом нужно дать веб-серверу необходимые разрешения на доступ к базе. Для этого в свойствах каталога информационный базы добавляем для пользователя IUSR и группы IIS_IUSRS права Чтение и выполнение и Изменение:

1cv8-IIS-SSL-Basic-006.pngПубликация через конфигуратор осуществляется также, как и для клиент-серверной версии, а команда webinst будет отличаться строкой подключения:

webinst -publish -iis -wsdir hrm-2 -dir "c:\inetpub\hrm-2" -connstr "File=""C:\1C_Bases\HRM-2"";"

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

Получение сертификата Let's Encrypt и настройка защищенного соединения

Существует несколько способов работы с сертификатами Let's Encrypt на платформе Windows c веб-сервером IIS, мы будем использовать Windows ACME Simple (WACS), откуда нам потребуется скачать архив win-acme.vX.X.X.XXXX.x64.trimmed.zip. Содержимое которого следует поместить в С:\inetpub\letsencrypt.

Но не будем спешить получать сертификат, а сначала выполним некоторые подготовительные действия. Для работы с Let's Encrypt нам понадобится доменное имя, которое должно указывать на внешний IP-адрес вашего веб-сервера. В нашем примере мы будем использовать служебный поддомен tech.host31.ru. Также помните, что изменения в системе DNS распространяются не мгновенно, а в течении некоторого времени, которое зависит от значения TTL-записи, поэтому вносите изменения в DNS заранее.

После того, как вы настроили DNS необходимо выполнить привязку публикации к доменному имени. Для этого откройте в IIS Сайты - Default Web Site и перейдите в раздел Привязки, где следует ввести выбранное доменное имя.

1cv8-IIS-SSL-Basic-007.pngТеперь перейдем в С:\inetpub\letsencrypt и запустим wasc.exe от имени администратора. Последовательно проходим по пунктам текстового меню, выбрав получение нового сертификата - N, для Default Web Site - 1 и всех его привязок - А.

1cv8-IIS-SSL-Basic-008.png

Далее принимаем правила пользования и указываем действительный почтовый адрес, затем переходим к получению сертификата:

1cv8-IIS-SSL-Basic-009.png

Если ваш сервер находится внутри периметра, то для получения и продления сертификата вы должны пробросить наружу как 80 порт (HTTP), так и 443 порт (HTTPS).

Утилита сама настроит IIS, в чем можно убедиться, снова зайдя в привязки Default Web Site:

1cv8-IIS-SSL-Basic-010.png

А также добавит в планировщик задание на продление сертификата:

1cv8-IIS-SSL-Basic-011.pngВ общем, нажал на кнопку - получил результат, теперь все вопросы с сертификатом будут решаться автоматически, а в случае каких-либо проблем вам придет уведомление на почту, которую вы указали при получении сертификата.

Перенаправление HTTP на HTTPS

Несмотря на то, что мы настроили защищенный протокол для нашей публикации, она остается доступна по незащищенному HTTP, поэтому следующим шагом следует настроить перенаправление всех HTTP запросов на HTTPS версию публикации. Для этого нам потребуется установить дополнительный модуль IIS URL Rewrite 2.1. После его установки обязательно закройте и снова откройте Диспетчер служб IIS, снова перейдите к Default Web Site и выберите Переопределение URL-адресов:

1cv8-IIS-SSL-Basic-012.png

Далее создаем новое пустое правило для входящего трафика. Начинаем заполнять поля:

  • Запрошенный URL-адрес - соответствует шаблону
  • Использование - Постановочные знаки
  • Шаблон - *
  • Не учитывать регистр - флаг установлен

В разделе Условия добавляем новое условие:

  • Ввод условия - {HTTPS}
  • Проверить, если входная строка - Соответствует шаблону
  • Шаблон - OFF
  • Не учитывать регистр - флаг установлен

1cv8-IIS-SSL-Basic-013.pngИ, наконец, в разделе Действие:

  • Тип действия - Перенаправление
  • URL-адрес перенаправления - https://{HTTP_HOST}{REQUEST_URI}
  • Добавить строку запроса - флаг снят
  • Тип перенаправления - Постоянное (301)

1cv8-IIS-SSL-Basic-014.png

Перезапускаем веб-сервер и убеждаемся, что даже при обращении по HTTP все запросы перенаправляются на защищенную версию публикации.

1cv8-IIS-SSL-Basic-015.pngОбратите внимание, что для подключения используется последняя версия протокола TLS 1.3, шифр AES 256 бит и совершенная прямая секретность на основе эллиптической кривой Curve25519, которая обеспечивается автоматически средствами IIS, ничего дополнительно настраивать не нужно.

Настройка дополнительной аутентификации по паролю

У нас нет основания сомневаться во встроенном механизме аутентификации 1С:Предприятия, во всяком случае в онлайн-сервисах дополнительной аутентификации не предусмотрено, но есть слабое место - пользователи. Во многих базах могут использоваться простые пароли или не использоваться вообще, часть таких паролей могут использоваться скриптами и средствами автоматизации, поэтому взять и установить сразу всем сложные пароли будет не так-то просто.

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

Прежде всего штатными средствами Windows создадим нового пользователя, в нашем случае 1c-www, установим ему сложный пароль и сделаем срок его действия неограниченным.

1cv8-IIS-SSL-Basic-016.pngЗатем добавим этого пользователя в группу IIS_IUSRS и сделаем ее единственной:

1cv8-IIS-SSL-Basic-017.pngТеперь самое время настроить аутентификацию, но есть одна особенность: эта настройка у IIS работает как на уровне сайта, так и на уровне опубликованного приложения, причем настройки приложения перекрывают настройки сайта. Поэтому, если мы настроим аутентификацию на уровне сайта, то вопреки нашим ожиданиям на уровне приложений она работать не будет, так как там остались свои настройки по умолчанию. Да, после Apache или NGINX это неожиданно, но IIS работает именно так.

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

1cv8-IIS-SSL-Basic-018.pngПовторяем данные действия для каждой публикации.

Теперь при попытке обратиться к нашей публикации мы увидим сначала окно дополнительной аутентификации:

1cv8-IIS-SSL-Basic-019.pngВ браузере мы можем запомнить пароль и клиент будет работать с 1С без дополнительных телодвижений, но форма аутентификации 1С останется надежно прикрыта от случайных посетителей и ботов.

Если мы используем тонкий клиент, то там также появится дополнительная форма аутентификации:

1cv8-IIS-SSL-Basic-020.png

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

/WSN 1c-www /WSP Pa$$w0rd_1

Где ключ /WSN определяет пользователя веб-сервера, а ключ /WSP - пароль.

1cv8-IIS-SSL-Basic-021.pngКак видим, настроить защищенный доступ к публикации 1С:Предприятие достаточно несложно, главное точно следовать нашей инструкции и стараться понимать, что именно и зачем вы делаете на каждом из шагов.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments