Erlang Port Mapper Daemon — демон, работающий как сервер имён. Нужен для связки логической адресации по имени и физической — по номеру порта.
Когда нода Эрланга запускается, она имеет имя и получает адрес от ядра ОС хоста. Эти имя и адрес отправляются демону epmd, работающему на локальном хосте. В среде TCP/IP, которую как правило использует epmd, адрес состоит из IP-адреса и номера порта. Задача epmd — отслеживать, какое имя узла по какому адресу прослушивается, то есть сопоставлять имена узлов с адресами компьютеров.
По умолчанию EPMD слушает на порте 4369.
Предполагается, что EPMD доступен только из надёжной сети. Открытый в интернет EPMD не является сам по себе источником опасности. Однако так делать не рекомендуется, чтобы злоумышленники не имели возможность закрепиться в Системе. Её лучше всего прятать за брандмауэром и надлежащей конфигурацией сети.
Проверить, доступен ли порт дистрибуции Эрланга из интернета, можно с помощью утилиты nmap. Если работает распределённый Эрланг, тогда отображаются открытые ноды:
nmap -A -sT -p 4369 [Наш публичный IP]
PORT STATE SERVICE VERSION
4369/tcp open epmd Erlang Port Mapper Daemon
| epmd-info:
| epmd_port: 4369
| nodes:
|_ ejabberd: 46187
Мы можем просто запустить оболочку (без ключей -sname или -name), и тогда даже на локальном хосте не увидим открытого порта (потому что его нет):
nmap -A -sT -p 4369 127.0.0.1
PORT STATE SERVICE VERSION
4369/tcp closed epmd
Не была задокументирована ни одна более-менее значимая интернет-атака на Эрланг-систему, однако теоретическая вероятность этому есть. Файл cookie не является надёжным механизмом аутентификации. Это, скорее, механизм для предотвращения случайных соединений. Этот файл можно угадать или получить каким-то иным способом. Если вкупе с этим будет ещё открыт EPMD, это сильно облегчит злоумышленникам задачу.
epmd в документации по Erlang Run-Time System Application (ERTS).
Про риск открытого в интернете EPMD.
Copyright © 2024-2025 Алексей Карманов