При необходимости предоставить удаленным сотрудникам доступ к базе 1С, работающей на операционной системе Debian (в серверном варианте), многие системные администраторы сталкиваются с дилеммой. С одной стороны, хочется сделать это максимально быстро и просто, без лишней головной боли для пользователей. С другой стороны, безопасность корпоративных данных критически важна, особенно в условиях постоянной угрозы вирусов-шифровальщиков и хакерских атак.
Проброс стандартных портов 1С или СУБД напрямую в интернет — это самый опасный путь, который гарантированно приведет к компрометации сети. В этой статье мы подробно разберем, как правильно и безопасно опубликовать базу 1С наружу на Debian, начиная от классических проверенных методов и заканчивая современными технологиями беспарольного безопасного доступа.
Рассмотрим стандартную архитектуру 1С. Клиентское приложение общается с сервером по портам 1540, 1541, а также по динамическому диапазону 1560-1591. Если просто «прокинуть» эти порты на роутере во внешнюю сеть, ваш сервер моментально попадет в поле зрения автоматических сканеров уязвимостей.
Злоумышленники используют специализированное ПО для постоянного сканирования IP-адресов. Обнаружив открытые порты 1С или СУБД (например, PostgreSQL на порту 5432), они начинают подбор паролей (брутфорс) или пытаются эксплуатировать известные уязвимости платформы. Результатом может стать полная потеря данных, внедрение шифровальщика или кража конфиденциальной информации.
Самый простой и стандартный способ работы через тонкий клиент или веб-браузер — это публикация базы на веб-сервере. Для этого в операционной системе Debian используется связка Apache и модулей расширения веб-сервера 1С.
Разберем по шагам, как правильно выполнить эту процедуру:
sudo apt update
sudo apt install apache2 apache2-utils
1c-enterprise83-ws (модули расширения веб-сервера) и 1c-enterprise83-ws-nls (языковые ресурсы). Установка выполняется через утилиту dpkg:
sudo dpkg -i 1c-enterprise83-ws_*.deb 1c-enterprise83-ws-nls_*.deb
webinst, входящая в поставку 1С. Пример команды для публикации базы с именем «trade» в каталог веб-сервера:
sudo /opt/1C/v8.3/x86_64/webinst -apache24 -wsdir trade -dir /var/www/trade -conn "Srvr=localhost;Ref=trade;" -confPath /etc/apache2/apache2.conf
-wsdir указывает имя виртуального каталога в URL, а -conn задает строку соединения с сервером 1С.
sudo systemctl restart apache2
Важное предупреждение: Публиковать базу по обычному протоколу HTTP (порт 80) категорически запрещено! Все ваши пароли будут передаваться в открытом виде. Нам обязательно потребуется настроить шифрование HTTPS.
Чтобы защитить трафик от перехвата, необходимо использовать SSL/TLS-сертификат. Получить бесплатный и доверенный сертификат можно с помощью сервиса Let's Encrypt.
Рассмотрим, как настроить автоматическое получение и продление сертификата на Debian:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
Выставлять Apache напрямую в сеть — не самое лучшее решение с точки зрения безопасности и производительности. Более надежная схема — использование Nginx в качестве обратного прокси (Reverse Proxy).
В этой схеме Nginx принимает все запросы из интернета на порту 443 (HTTPS), занимается расшифровкой SSL-трафика, фильтрует подозрительную активность и передает «чистые» запросы локальному серверу Apache (который теперь слушает только внутренний адрес 127.0.0.1:8080).
Проанализируем пример настройки конфигурационного файла Nginx для защиты публикации 1С:
server {
listen 443 ssl http2;
server_name 1c.yourcompany.ru;
ssl_certificate /etc/letsencrypt/live/1c.yourcompany.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/1c.yourcompany.ru/privkey.pem;
# Ограничение размера передаваемого файла (важно для загрузки баз/отчетов)
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Настройки таймаутов для длительных запросов в 1С
proxy_connect_timeout 600s;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
Если удаленных сотрудников немного, а на сервере Debian уже запущен и опубликован наружу SSH-сервер, можно обойтись без развертывания веб-публикаций. Мы можем использовать безопасные шифрованные SSH-туннели.
Этот метод не требует открытия дополнительных портов на роутере, кроме стандартного порта SSH. Схема работы выглядит следующим образом:
1541) и указывает адрес назначения на сервере (Destination, например, localhost:1541).localhost, а весь трафик безопасно заворачивается внутрь SSH-сессии.Это отличный технический вариант, однако он требует предварительной настройки клиентских машин и обучения пользователей работе с консольным или графическим SSH-клиентом.
Бывают ситуации, когда удаленные компьютеры клиентов являются абсолютно неуправляемыми: на них нельзя зайти под правами администратора, невозможно настроить VPN-клиенты или объяснить пользователям, как запускать SSH-туннели. В таких случаях идеальным выходом будет технология Cloudflare Tunnel.
Выясним преимущества этого подхода:
cloudflared, который сам инициирует исходящее безопасное соединение с облаком Cloudflare.Если вы все же решили выставить базу 1С через веб-сервер наружу, обязательно примените следующие защитные меры:
1. Ограничение доступа в файле настроек публикации default.vrd.
При публикации базы создается конфигурационный файл default.vrd. Откроем его и проверим настройки безопасности. Убедитесь, что отключен режим отладки, если он не нужен для работы:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/trade"
ib="Srvr=localhost;Ref=trade;">
<ws enable="false"/>
<httpServices enable="false"/>
<standardOData enable="false"/>
</point>
Отключение неиспользуемых веб-служб и интерфейса OData значительно снижает площадь потенциальной атаки на вашу систему.
2. Использование утилиты Fail2ban.
Для предотвращения подбора паролей к веб-серверу или SSH на Debian обязательно установите демон fail2ban. Он анализирует лог-файлы веб-сервера и при обнаружении множественных ошибок авторизации с одного IP-адреса автоматически блокирует его на уровне сетевого экрана iptables.
3. Предварительная авторизация Basic Auth.
Настройте простейшую авторизацию на уровне самого веб-сервера Nginx или Apache. В этом случае при переходе по ссылке браузер сначала запросит логин и пароль веб-сервера. Сканирующие боты упрутся в закрытую дверь и даже не узнают, что за этой страницей скрывается форма авторизации 1С.
Опубликовать базу 1С на Debian наружу на короткий срок — задача выполнимая и безопасная, если подойти к ней с умом. Забудьте про прямой проброс портов 1С. Используйте публикацию через связку Nginx + Apache + HTTPS, либо воспользуйтесь возможностями беспарольных туннелей Cloudflare Zero Trust. Это убережет вашу компанию от шифровальщиков и обеспечит комфортную работу сотрудников из любой точки мира.