epmd

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, это сильно облегчит злоумышленникам задачу.

Документация

  1. epmd в документации по Erlang Run-Time System Application (ERTS).

  2. Про риск открытого в интернете EPMD.


Copyright © 2024-2025 Алексей Карманов