Брандмауэр и сервер 1С:Предприятие 8.3: через какие порты идёт трафик и как их пропустить
Содержание
Для сервера 1С:Предприятие 8.3 откройте входящие TCP-порты 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560–1591 (рабочие процессы). Это минимум, без которого клиенты в локальной сети не подключатся к базе. Остальные порты нужны по ситуации: 1545 для сервера администрирования RAS, 1433 или 5432 для СУБД, 475 для сетевого ключа HASP, 80/443 для веб-публикации.
Важно различать, кому нужен порт. Клиентам достаточно портов кластера. Порт СУБД нужен только серверу 1С, а порт RAS — только администратору. Чем уже правило, тем меньше поверхность атаки.
Как клиент 1С соединяется с сервером
Порядок соединения объясняет, почему одного порта мало. Толстый или тонкий клиент проходит три шага:
- Обращается к агенту сервера (
ragent) или сразу к менеджеру кластера (rmngr) по адресу из списка баз, напримерsrv-1cилиsrv-1c:1541. - Менеджер кластера находит информационную базу и выбирает рабочий процесс, который будет обслуживать сеанс.
- Клиенту возвращается адрес и порт рабочего процесса (
rphost) из диапазона, и дальше весь обмен данными идёт уже с ним.
Отсюда главный практический вывод. Если брандмауэр пропускает 1540 и 1541, но режет диапазон 1560–1591, клиент «стучится», получает адрес рабочего процесса и не может к нему подключиться. Ошибка выглядит как обрыв соединения или долгое зависание при входе в базу.
Вторая особенность — имена хостов. Менеджер кластера сообщает клиенту адрес рабочего процесса по имени сервера, как он записан в кластере. Если рабочее место не может разрешить это имя через DNS, соединение не установится даже при открытых портах.
Клиенты 1С не ходят напрямую к СУБД. В клиент-серверном варианте с SQL Server или PostgreSQL общается только сервер 1С. Порт базы данных на рабочие места открывать не нужно, и делать этого не стоит.
Порты кластера серверов 1С:Предприятие
Номера по умолчанию задаются при установке службы. Их можно поменять, но стандартная схема у всех одна.
| Порт / диапазон | Протокол | Компонент | Кто подключается |
|---|---|---|---|
| 1540 | TCP | Агент сервера ragent | Клиенты, консоль администрирования, другие серверы кластера |
| 1541 | TCP | Менеджер кластера rmngr | Клиенты, рабочие серверы кластера |
| 1560–1591 | TCP | Рабочие процессы rphost и служебные соединения | Клиенты, другие серверы кластера |
| 1545 | TCP | Сервер администрирования ras | Утилита rac, сторонние консоли |
| 1550 | TCP | Сервер отладки dbgs (отладка по HTTP) | Конфигуратор разработчика, EDT |
Несколько уточнений по таблице:
- 🔹 1540 — точка входа для консоли «Администрирование серверов 1С Предприятия». Через агент консоль видит кластеры и их состав.
- 🔹 1541 — основной порт кластера. Его же указывают в адресе базы, если кластер работает не на стандартных портах:
Srvr="srv-1c:2541". - 🔹 1560–1591 — 32 порта. Диапазон задают в свойствах рабочего сервера, а не кластера: в консоли откройте
Кластеры → <кластер> → Рабочие серверы → <сервер> → Свойства, поле с диапазонами IP-портов. - 🔹 1545 нужен только тому, кто управляет кластером через
racили веб-консоли. Пользователям его открывать не нужно. - 🔹 1550 открывают на время отладки на сервере, и только для машин разработчиков.
Если на одной машине несколько кластеров или версий
Два сервера 1С на одном компьютере не могут занять одни и те же порты. Второй экземпляр поднимают со сдвигом, обычно на тысячу: агент 2540, менеджер 2541, диапазон 2560–2591. Номера задаются параметрами запуска службы агента:
"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -port 2540 -regport 2541 -range 2560:2591 -d "C:\Program Files\1cv8\srvinfo2"
Номер версии в пути подставьте свой. Для каждого экземпляра нужен свой каталог srvinfo, иначе службы начнут делить реестр кластера.
Смена портов агента требует перезапуска службы — все пользователи этого сервера будут отключены. Делайте это вне рабочего времени и предупредите людей заранее.
Порты СУБД: SQL Server и PostgreSQL
Порт базы данных открывают только между сервером 1С и сервером СУБД. Если оба крутятся на одной машине, правило в брандмауэре для СУБД вообще не требуется: соединение идёт через локальный интерфейс.
| СУБД | Порт по умолчанию | Что ещё учесть |
|---|---|---|
| Microsoft SQL Server, экземпляр по умолчанию | 1433 TCP | Протокол TCP/IP должен быть включён в SQL Server Configuration Manager |
| Microsoft SQL Server, именованный экземпляр | динамический TCP + 1434 UDP | Служба SQL Server Browser сообщает порт экземпляра; надёжнее закрепить статический порт |
| PostgreSQL | 5432 TCP | Нужны listen_addresses в postgresql.conf и разрешение в pg_hba.conf |
Закрепить порт именованного экземпляра SQL Server
Именованный экземпляр по умолчанию слушает случайный порт, и после перезапуска тот может поменяться. Правило в брандмауэре такой порт не удержит.
- Откройте SQL Server Configuration Manager.
- Перейдите в
SQL Server Network Configuration → Protocols for <имя экземпляра> → TCP/IP. - На вкладке IP Addresses, в блоке IPAll, очистите поле TCP Dynamic Ports и впишите номер в TCP Port, например
1433или14330. - Перезапустите службу SQL Server. На это время база будет недоступна, а сеансы 1С оборвутся.
В строке подключения базы в консоли кластера сервер СУБД тогда указывают с портом через запятую: sql-srv,14330.
Разрешить внешние подключения к PostgreSQL
PostgreSQL из коробки часто слушает только localhost. Если СУБД на отдельном сервере, правьте два файла:
# postgresql.conf
listen_addresses = '*'
port = 5432
# pg_hba.conf — разрешить подключения только с сервера 1С
host all all 192.168.10.20/32 md5
Вместо md5 в свежих сборках обычно стоит scram-sha-256 — оставьте метод, который уже указан в файле. Адрес 192.168.10.20 замените на IP вашего сервера 1С. После изменения listen_addresses нужен перезапуск PostgreSQL, для pg_hba.conf достаточно перечитать конфигурацию.
Прочие порты: ключи защиты, веб-публикация, файловые базы
Сервер кластера — не единственное, что ходит по сети в инфраструктуре 1С.
- 🔑 475 TCP/UDP — менеджер лицензий для сетевых аппаратных ключей HASP. Клиенты ищут ключ широковещательным запросом по UDP. Если сеть сегментирована, адрес сервера с ключом прописывают в файле
nethasp.iniна клиентах. - 🔑 1947 TCP — служба Sentinel License Manager. Через этот порт открывается её веб-интерфейс
http://localhost:1947. - 🌐 80 и 443 TCP — веб-сервер (IIS или Apache) с опубликованной базой. Нужен для веб-клиента, тонкого клиента по HTTP, мобильных приложений и HTTP-сервисов.
- 📁 445 TCP — общий доступ к файлам SMB. Он нужен, только если база файловая и лежит в сетевой папке. Для клиент-серверной базы на рабочих местах этот порт ни при чём.
Программные лицензии 1С проверяются сервером 1С у себя локально, отдельного порта для них не нужно. Для получения и активации лицензии через интернет нужен исходящий доступ по HTTPS.
Не публикуйте порты 1540–1591 в интернет пробросом на роутере. Для удалённых сотрудников используйте VPN или веб-публикацию за HTTPS. Сервер 1С с открытым агентом снаружи — прямая дорога к подбору паролей и перехвату администрирования кластера.
Правила брандмауэра в Windows Server
В Windows Server 2016 и новее правила удобнее всего добавлять из командной строки. Запускайте консоль от имени администратора.
PowerShell
# Сервер 1С: агент, менеджер кластера, рабочие процессы
New-NetFirewallRule -DisplayName "1C Server 8.3" -Direction Inbound -Protocol TCP -LocalPort 1540,1541,1560-1591 -Action Allow -Profile Domain,Private
# Сервер администрирования RAS — только с машины администратора
New-NetFirewallRule -DisplayName "1C RAS" -Direction Inbound -Protocol TCP -LocalPort 1545 -RemoteAddress 192.168.10.5 -Action Allow
netsh (подойдёт и для bat-файла)
netsh advfirewall firewall add rule name="1C Server 8.3" dir=in action=allow protocol=TCP localport=1540-1541,1560-1591
netsh advfirewall firewall add rule name="MS SQL 1433" dir=in action=allow protocol=TCP localport=1433 remoteip=192.168.10.20
Второе правило ставится на сервере СУБД и пропускает только сервер 1С.
Через графический интерфейс
- Откройте Монитор брандмауэра Защитника Windows в режиме повышенной безопасности (
wf.msc). - Слева выберите Правила для входящих подключений, справа — Создать правило.
- Тип правила — Для порта, протокол TCP, определённые локальные порты:
1540-1541, 1560-1591. - Действие — Разрешить подключение, профили — Доменный и Частный.
- Задайте понятное имя, например «1С Сервер 8.3».
Если сервер в домене, проверьте, к какому профилю отнесён сетевой адаптер. Правило только для профиля «Доменный» не сработает, когда Windows посчитала сеть «Общедоступной».
Правила для Linux: firewalld, iptables, ufw
Набор портов на Linux тот же самый. Отличается только инструмент.
firewalld (RHEL, РЕД ОС, Альт, CentOS)
sudo firewall-cmd --permanent --add-port=1540-1541/tcp
sudo firewall-cmd --permanent --add-port=1560-1591/tcp
sudo firewall-cmd --permanent --add-port=1545/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
Последняя команда показывает, что правила применились.
iptables
sudo iptables -A INPUT -p tcp -m multiport --dports 1540,1541,1560:1591 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5432 -s 192.168.10.20 -j ACCEPT
Правила iptables живут до перезагрузки. Сохраните их тем способом, который принят в вашем дистрибутиве: пакет iptables-persistent в Debian и Ubuntu (netfilter-persistent save), либо iptables-save в файл, который читается при старте.
ufw (Ubuntu, Debian)
sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp
sudo ufw allow from 192.168.10.20 to any port 5432 proto tcp
sudo ufw status numbered
В ufw диапазон пишется через двоеточие и обязательно с протоколом — без /tcp команда выдаст ошибку.
На Linux порты сервера 1С меняются теми же ключами -port, -regport, -range в параметрах запуска ragent. Где они записаны, зависит от способа установки: в юните systemd или в файле настроек службы. Найдите строку запуска командой systemctl cat с именем вашей службы 1С.
Проверка доступности портов
Правило создано — теперь проверьте его с клиентской машины, а не с самого сервера. Локально порт открыт всегда, брандмауэр на входящие изнутри не влияет.
Слушает ли сервер нужный порт
Сначала убедитесь, что служба 1С вообще запущена и заняла порты.
netstat -ano | findstr ":1540 :1541"
sudo ss -tlnp | grep -E ':(1540|1541|15[6-9][0-9])'
Если строк нет, дело не в брандмауэре: служба не стартовала или работает на других портах.
Доступен ли порт с рабочего места
Test-NetConnection srv-1c -Port 1541
Test-NetConnection srv-1c -Port 1560
В выводе смотрите строку TcpTestSucceeded : True. На Linux-клиенте то же самое делает nc -zv srv-1c 1541.
Проверяйте не только 1540 и 1541, но и пару портов из диапазона. Рабочий процесс занимает первые свободные номера, поэтому обычно отвечает 1560 и несколько следующих.
Частые ошибки при настройке портов
- ❌ Открыли только 1541. Клиент найдёт кластер, но не дойдёт до рабочего процесса. Диапазон обязателен.
- ❌ Сузили диапазон до пары портов. При нескольких рабочих процессах и служебных соединениях их не хватит. Оставляйте не меньше стандартных 32.
- ❌ Поменяли диапазон в консоли, а правило брандмауэра оставили старым. Правило должно совпадать с тем, что записано в свойствах рабочего сервера.
- ❌ Открыли 1433 или 5432 для всей сети. Порт СУБД нужен только серверу 1С — ограничьте правило его адресом.
- ❌ Проверили порт с самого сервера. Такой тест ничего не говорит о брандмауэре — проверяйте с клиента.
- ❌ Забыли про антивирус с сетевым экраном. Встроенный файрвол ESET, Kaspersky и подобных работает поверх Windows Firewall, и правило нужно продублировать в нём.