Вводные
1. Выделенный сервер с подключением к интернет
2. Требуется организовать для 5 пользователей (небольшая организация)
2.1 сервер 1С
2.2 файловый сервер
2.3 Web socket сервер (1C сервер взаимодействия)
3. Подключение к сервисам должно быть защищенным, контролируемым, логируемым
3.1 Подключение будет как из локальной сети, так и из интернет
3.2 Подключение к базам 1С будет по протоколу HTTPS, используется только тонкий клиент
3.3 Подключение для редактирования конфигурации только одним пользователем по RDP.
4. Чтобы присутствовала возможность ограничивать/распределять нагрузку по сервисам.
5. Было лицензионно "чистым" и относительно дешевым
6. Чтобы базовые вещи мог сделать "не сильно продвинутый" админ или "продвинутый" пользователь.
Описание общее, если нужно уточнить информацию (примеры конфигураций, скриншоты), то пишите в комментарии, по возможность дополню статью.
Общая схема
Виртуализация
Смешивать все сервисы в одной ОС возможно, но на мой взгляд не нужно. Для разделения использую виртуализацию в частности ESXi, в ограничения лицензии по железу ПК выделенный под сервер как правило вписывается. Лицензия на ESXi бесплатна, но обновления на него нужно устанавливать вручную (после установки из основного дистрибутива), в гугле ищется по "установить обновления esxi".
"Почему не HyperV или KVM?", проще устанавливается, есть достаточно удобный web интерфейс из коробки, удобно управлять виртуальными сетями.
Организация сети
Исхожу что в сервере есть минимум один физический интерфейс и он подключен в internet, возможно есть второй с подключением к LAN.
На уровне гипервизора организую виртуальную подсети
1. для серверов
2. с подключением к интернет
3. с подключением к LAN
Между собой сети связываю через роутер с firewall. Из сети интернет в "для серверов" проброс портов делаю только для сервисов с белыми IP, например виртуальные АТС (Манго, МТС и подобное). Для организации использую pfSense https://www.pfsense.org/. Из преимуществ web интерфейс, удобство работы с VPN.
Использую DNS имена для обращения к сервисам, обычно у компании есть сайт, соответственно публичное доменное имя. Локальная сеть выходит в интернет через роутер и пользуется локальным DNS сервером, для внешних пользователей DNS "пробрасывается" с помощью настроек VPN и для адресов компании пользуется локальным сервером.
Для подключения пользователей использую OpenVPN по протоколу UDP с PKI, если "по простому", то при обращении к серверу без ключа доступа на запрос ответа не будет, это препятствует сканированию и анализу открытых портов.
Сертификаты доступа для пользователей генерируются при создании пользователей в pfSense, конфигурационный файл для клиента формируется с помощью доп пакета OpenVPN Client Export Package. При компроментации сертификат можно отозвать что не позволит с ним подключится к системе. Пользователи имеют доступ только до сервера, друг друга не видят (настройка по умолчанию). На клиент можно передать DNS подсеть и нужные маршруты до сереверов в зоне VNet_srv. Преимущество перед PPtP VPN, то что не маршрутизирует весь поток через сервер VPN, только сети указанные в настройках.
Файловый сервер
Использую Open-E DSS V7 SOHO https://www.open-e.pro/open-e-sravnenie-joviandss-dss-v7-i-dss-soho/, лицензия бесплатна с ограниченим до 4ТБ. Web админ панель. Из важных для меня плюсов, одну и туже папку можно опубликовать по SMB, FTP, NFS. На нем размещаю общую папку и папку для томов хранения прикрепленных файлов из 1С. Т.к. 1С не умеет использовать для сетевых папок авторизацию, то папка просто срывается.
Резервное копирование файлов реализовано через rclone, статья по настройке //infostart.ru/public/1183106/, скрипт запускается на сервере 1С.
Сервер 1С
Организовываю на Windows 10 и MSSQL Express. Серверный вариант windows относительно дорог и относительно win10 и в данном контексте преимуществ не имеет. У MSSQL Express основное ограничение на размер БД в 10ГБ, при адекватной записи/размещении данных и периодической подрезке этого хватает.
Разворачивать на Linux смысла особого нет, потому что диагностировать ошибку/восстановить работоспособность сложнее чем на win, разница в стоимости по лицензиям 10 тыс. руб. при проблемах бизнесу дороже выйдет.
Публикация баз 1C по HTTP
В качестве локального web сервера использую apache 2.4 no ssl, рабочие msi сборки (которые видит конфигуратор) беру с https://www.anindya.com/.
Для организации доступа по HTTPS создаю отдельную виртуальную машину с ubuntu + nginx. SSL ключи использую LetsEncrypt, инструкция по получению https://www.digitalocean.com/community/tutorials/nginx-let-s-encrypt-ubuntu-18-04-ru. С помощью nginx получается гибко распределять HTTP запросы фильтруя по доменному имени, директории, источникам запросов. Пример: для одной базы опубликован HTTP сервис с авторизацией в конфиг файле и для этой же базы нужно опубликовать тонкий клиент. Решается c помощью фильтрации по IP
location / {
deny 192.168.0.15;
allow 192.168.0.0/24;
allow 2001:0ab3::/32;
deny all;
}
и перенаправлением на нужный URL
location / {
proxy_pass http://192.168.13.31;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
Резервное копирование баз 1С
Резервное копирование делаю в .dt, пользователям проще самим восстанавливать при необходимости. Для решения есть скрипты по powershell, пришел к тому что проще пользоваться GUI, при возможности использую EffectSaver(https://efsaver.ru/) лицензия стоит 2,5 тыс. руб. Бекап в локальную папку, дальше шифрование и отправка с помощью rclone.
Обслуживание баз
В MSSQL Express встроенный инструментарий регламентного обслуживания отключен. Можно использовать скрипты. При возможности использую QMB (http://qmbsql.ru/) для express бесплатен, одного плана обслуживания хватает. при желании с помощью него можно организовать бекам средствами SQL.
Итог
На основе набора приложений можно построить гибкую стабильную и безопасную систему для рабочей группы.
Стоимость лицензий без учета 1С 15 тыс. руб., что для малого бизнеса подъемная сумма.
Благодарю за внимание.