Сетевые порты сервера 1С:Предприятия 8.3 и правила фаервола без лишних дыр
Содержание
Для сервера 1С 8.3 с настройками по умолчанию на входящие соединения открывают TCP-порты 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560–1591 (рабочие процессы). Этого хватает, чтобы тонкий и толстый клиент подключились к базе. Порт СУБД (1433 для SQL Server, 5432 для PostgreSQL) открывают только между сервером 1С и сервером СУБД, а не для пользователей.
Остальные порты нужны по ситуации: 1545 для сервера администрирования RAS, 80/443 для веб-клиента и HTTP-сервисов, 475 для сетевого ключа HASP. Открывайте их только тем адресам, которым они действительно нужны.
Как клиент 1С находит сервер: цепочка соединений
Подключение к клиент-серверной базе идёт в несколько шагов, и каждому шагу нужен свой порт. Если понимать цепочку, по симптому сразу видно, какой порт закрыт.
- Клиент обращается к агенту сервера (
ragent) на порт 1540. Агент знает, какие кластеры есть на машине. - Агент отдаёт адрес менеджера кластера (
rmngr), клиент идёт к нему на 1541. - Менеджер кластера назначает клиенту рабочий процесс (
rphost) и сообщает его порт из диапазона 1560–1591. Дальше весь обмен данными идёт с рабочим процессом. - Рабочий процесс сам ходит в СУБД — клиент с базой данных напрямую не общается никогда.
Отсюда практический вывод: на компьютерах пользователей входящие порты открывать не нужно. Все правила настраиваются на сервере 1С и, если СУБД стоит отдельно, на сервере СУБД.
Менеджер кластера возвращает клиенту имя сервера, а не IP-адрес. Если клиент не может разрешить это имя через DNS, подключение обрывается даже при открытых портах. Это частая причина «порты открыты, а не работает».
Консоль администрирования серверов 1С тоже идёт через агент на порт 1540. Утилита rac работает иначе: она подключается к серверу администрирования RAS, о нём — ниже.
Порты кластера серверов 1С: агент, менеджер, рабочие процессы
Сводная таблица для одного кластера с параметрами по умолчанию:
| Порт / диапазон | Протокол | Процесс | Кто подключается |
|---|---|---|---|
| 1540 | TCP | ragent — агент сервера | клиенты, консоль администрирования, веб-сервер |
| 1541 | TCP | rmngr — менеджер кластера | клиенты, веб-сервер, другие серверы кластера |
| 1560–1591 | TCP | rphost и служебные соединения кластера | клиенты, веб-сервер, другие серверы кластера |
| 1545 | TCP | ras — сервер администрирования | утилита rac, сторонние консоли |
| 1550 | TCP | dbgs — сервер отладки по HTTP | Конфигуратор или EDT разработчика |
Все соединения 1С — TCP. UDP для работы кластера не используется (исключение — некоторые лицензионные менеджеры ключей и SQL Browser, о них ниже).
Где задаются номера портов
Порты агента и менеджера, а также диапазон задаются в командной строке службы агента. Посмотреть её можно в свойствах службы 1C:Enterprise 8.3 Server Agent (поле «Исполняемый файл»). Типичная строка выглядит так:
"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
-port— порт агента (1540);-regport— порт главного менеджера кластера (1541);-range— диапазон портов для рабочих процессов;-debug— включает отладку на сервере (в фаервол тогда добавляется порт отладки).
Диапазон портов задаётся и в свойствах рабочего сервера в консоли администрирования: раскройте кластер → Рабочие серверы → откройте сервер → вкладка с параметрами, поле диапазона IP-портов. Если вы сузили или сдвинули диапазон там, правила фаервола должны повторять именно его.
Сколько портов из диапазона реально занято
Каждый рабочий процесс занимает порт из диапазона, плюс порты нужны менеджерам кластера для служебного обмена. Диапазон 1560–1591 — это 32 порта. На сервере с 2–4 рабочими процессами хватает с запасом. Если в кластере много процессов и сервисов, диапазон расширяют, и тогда правило в фаерволе нужно поправить, иначе новые процессы будут недоступны клиентам.
Второй кластер или вторая версия платформы на одном сервере
На одной машине можно держать несколько агентов, например для тестовой и рабочей среды. Тогда второму агенту задают другие порты. Распространённая схема — сдвиг на тысячу:
- 2540 — агент;
- 2541 — менеджер кластера;
- 2560–2591 — рабочие процессы.
Для каждого такого набора в фаерволе заводится отдельное правило. Диапазоны разных агентов не должны пересекаться.
Кластер из нескольких серверов
Если в кластере два и больше рабочих серверов, они общаются между собой по тем же портам: 1540, 1541 и диапазону. Правила нужно открыть в обе стороны — на каждом сервере кластера для адресов остальных серверов.
Доступ к СУБД: порты SQL Server и PostgreSQL
Порт СУБД нужен только серверу 1С. Пользователи, веб-сервер и бухгалтер с ноутбука к нему не подключаются.
| СУБД | Порт по умолчанию | Протокол | Примечание |
|---|---|---|---|
| Microsoft SQL Server | 1433 | TCP | для экземпляра по умолчанию |
| SQL Server Browser | 1434 | UDP | нужен для именованных экземпляров с динамическим портом |
| PostgreSQL (в т. ч. сборки Postgres Pro и других поставщиков) | 5432 | TCP | меняется параметром port в postgresql.conf |
SQL Server: именованный экземпляр
Именованный экземпляр (например, SRV-SQL\BUH) по умолчанию получает динамический порт. Тогда сервер 1С сначала спрашивает у службы SQL Server Browser по UDP 1434, на каком порту живёт экземпляр. Для фаервола это неудобно: порт может смениться после перезапуска.
Надёжнее закрепить порт:
- Откройте SQL Server Configuration Manager.
- Раскройте сетевую конфигурацию SQL Server и протоколы нужного экземпляра.
- Откройте свойства протокола TCP/IP, вкладку с IP-адресами.
- В блоке
IPAllочистите поле динамических портов и укажите статический порт, например 1435. - Перезапустите службу SQL Server — подключённые пользователи 1С при этом потеряют соединение с базой, делайте это вне рабочего времени.
После этого в 1С в поле сервера баз данных можно указывать SRV-SQL,1435 (через запятую), и Browser не нужен.
PostgreSQL: порт и доступ по адресам
Для PostgreSQL открыть порт 5432 мало. Сам сервер пускает только адреса, перечисленные в файле pg_hba.conf, и слушает только интерфейсы из параметра listen_addresses в postgresql.conf. Пример строки pg_hba.conf, разрешающей доступ только серверу 1С с адресом 10.0.0.15:
host all all 10.0.0.15/32 md5
Изменение listen_addresses требует перезапуска службы PostgreSQL, правка pg_hba.conf — только перечитывания конфигурации.
Не разрешайте в pg_hba.conf и в фаерволе доступ к СУБД «со всей сети». Учётная запись, под которой 1С ходит в базу, обычно имеет полные права на все таблицы. Утечка её пароля при открытом порте — прямой доступ ко всей бухгалтерии в обход прав 1С.
Если 1С и СУБД стоят на одной машине, порт СУБД в фаерволе вообще можно не открывать: соединение идёт внутри сервера.
Веб-клиент и HTTP-сервисы: что открыть на веб-сервере
Веб-клиент, мобильный клиент, HTTP- и веб-сервисы, OData работают через веб-сервер (IIS или Apache) с модулем расширения 1С. Схема портов двухуровневая:
- пользователь → веб-сервер: TCP 443 (HTTPS) и, при необходимости, 80 для перенаправления на HTTPS;
- веб-сервер → сервер 1С: те же 1540, 1541 и 1560–1591, потому что модуль веб-сервера работает как обычный клиент кластера.
Если веб-сервер стоит в отдельной зоне (DMZ), правило на сервере 1С пишут только для адреса веб-сервера. Снаружи при этом виден только 443, а порты кластера в интернет не выходят.
Для файловой базы, опубликованной на веб-сервере, порты кластера не нужны. Веб-серверу нужен доступ к каталогу базы: если он лежит на другой машине — по SMB, порт 445, только внутри сети.
Публикация на 80 порту без шифрования передаёт логины и пароли пользователей 1С открытым текстом. Для доступа из интернета ставьте сертификат и оставляйте только HTTPS.
Лицензирование и дополнительные службы
Программные лицензии
Программные лицензии 1С 8.3 отдельного сетевого порта не требуют. Сервер получает лицензии через менеджер кластера, а клиенты — через сервер, по тем же портам кластера. Если в кластере включён сервис лицензирования, он работает внутри процесса менеджера кластера и тоже обходится портами 1541 и диапазона.
Проверить, кто какую лицензию занял, можно через rac:
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<uuid-кластера> --licenses
Аппаратные ключи HASP
Сетевой ключ защиты, вставленный в другой компьютер, раздаёт лицензии через HASP License Manager. Он работает на порту 475 (UDP и TCP). Клиенты и сервер 1С ищут ключ широковещательным запросом. Если в сети несколько сегментов, адрес менеджера ключей прописывают явно в файле nethasp.ini в каталоге conf платформы.
Пример фрагмента nethasp.ini:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 10.0.0.20
NH_USE_BROADCAST = Disabled
Отключённый широковещательный поиск ускоряет старт и избавляет от лишнего трафика.
Сервер администрирования RAS
Служба ras нужна для утилиты rac и сторонних консолей. По умолчанию слушает 1545 и сама подключается к агенту на 1540. Обычно её запускают на сервере 1С и обращаются к ней локально или с машины администратора. Открывать 1545 для всей сети незачем: правило — только для адресов администраторов.
Отладка на сервере
Если сервер запущен с ключом -debug и используется отладка по HTTP, разработчику нужен доступ к серверу отладки dbgs — по умолчанию 1550. На рабочем сервере отладку обычно держат выключенной, и порт не открывают.
Настройка брандмауэра Windows для сервера 1С
Правила можно создать мышкой в оснастке wf.msc (Монитор брандмауэра Защитника Windows в режиме повышенной безопасности), но быстрее и без ошибок — командой. Запустите PowerShell от имени администратора.
Правила через PowerShell
Минимальный набор для кластера с параметрами по умолчанию, доступ только из локальной сети 10.0.0.0/24:
New-NetFirewallRule -DisplayName "1C Server Agent and Cluster" -Direction Inbound -Protocol TCP -LocalPort 1540,1541,1560-1591 -RemoteAddress 10.0.0.0/24 -Action Allow
Сервер администрирования — только для двух машин администраторов:
New-NetFirewallRule -DisplayName "1C RAS" -Direction Inbound -Protocol TCP -LocalPort 1545 -RemoteAddress 10.0.0.5,10.0.0.6 -Action Allow
На сервере SQL Server — порт СУБД только для сервера 1С:
New-NetFirewallRule -DisplayName "MS SQL for 1C" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 10.0.0.15 -Action Allow
То же через netsh
На старых скриптах и в bat-файлах удобнее netsh:
netsh advfirewall firewall add rule name="1C Server" dir=in action=allow protocol=TCP localport=1540-1541,1560-1591 remoteip=10.0.0.0/24
Правила для сервера 1С на Linux
Если сервер 1С стоит на Linux, логика та же. Пример для ufw:
sudo ufw allow from 10.0.0.0/24 to any port 1540:1541 proto tcp
sudo ufw allow from 10.0.0.0/24 to any port 1560:1591 proto tcp
Для firewalld диапазон пишется через дефис: firewall-cmd --permanent --add-port=1560-1591/tcp, затем firewall-cmd --reload.
Принципы безопасности
- 🔒 Ограничивайте каждое правило по адресам источника (
-RemoteAddress,remoteip). Правило «любой адрес» оставляйте только для тестов. - 🌐 Не публикуйте 1540, 1541 и диапазон в интернет пробросом портов на роутере. Для удалённой работы — VPN, RDP через шлюз или веб-клиент по HTTPS.
- 🧩 Делайте отдельное правило на каждую роль: кластер, RAS, СУБД, веб. Так проще закрыть ненужное и понять, что открыто.
- 🗂 Задайте администратора кластера с паролем в консоли администрирования: открытый 1540 без него позволяет любому, кто видит порт, управлять кластером.
- 📝 Записывайте нестандартные порты в паспорт сервера: через год никто не вспомнит, почему диапазон 3560–3600.
Диагностика: порт открыт или нет
Проверять лучше с той машины, где проблема, — с компьютера пользователя или с веб-сервера.
Шаг 1. Слушает ли сервер нужные порты
На сервере 1С в командной строке:
netstat -ano | findstr ":1540 :1541 :156"
В выводе должны быть строки со статусом LISTENING. Последний столбец — PID процесса; по нему в диспетчере задач видно, ragent, rmngr это или rphost. Если 1541 не слушается, служба агента не запущена или кластер не создан.
Шаг 2. Доступен ли порт по сети
С клиентского компьютера в PowerShell:
Test-NetConnection srv-1c -Port 1541
TcpTestSucceeded : True — порт доступен. False при работающей службе — блокирует фаервол на сервере, на промежуточном маршрутизаторе или антивирус с сетевым экраном. Проверьте и 1540, и пару портов из диапазона, на которых netstat показал rphost.
Шаг 3. Разрешается ли имя сервера
nslookup srv-1c
ping srv-1c
Если имя не разрешается или разрешается в другой адрес (например, во внешний IP или адрес второй сетевой карты), поправьте DNS или добавьте запись в C:\Windows\System32\drivers\etc\hosts на клиенте.
Если после правки диапазона в свойствах рабочего сервера процессы не перешли на новые порты, понадобится перезапуск службы агента. Перезапуск обрывает все сеансы пользователей — предупредите людей и делайте это вне рабочего времени.
Частые вопросы
Нужно ли открывать порты на компьютерах пользователей?
Можно ли перенести 1С на нестандартные порты ради безопасности?
Какие порты нужны для файловой базы?
Сервер 1С и SQL на одной машине: что открывать?
Как узнать, какие порты использует уже установленный сервер?
-port, -regport, -range), диапазон в свойствах рабочего сервера в консоли и вывод netstat -ano на сервере.