Я пытаюсь защитить установку RabbitMQ и не знаю, как защитить порт Erlang EPMD. У меня есть только одна машина, на которой что-то запущено, поэтому я бы хотел, чтобы она слушала только устройство с обратной связью. За документы, Я добавил:
ERL_EPMD_ADDRESS=127.0.0.1
к /etc/rabbitmq/rabbitmq-env.conf
, но это не имеет никакого эффекта, поскольку порт все еще открыт в nmap
из удаленной системы.
Есть ли способ заблокировать этот порт, который я не буду использовать?
Этот порт уже защищен. Доступ к этому порту контролируется файлом cookie, который в основном представляет собой ключ разработчика, уникальный для данного конкретного сервера и создается во время установки. Вероятно, он находится в /var/lib/rabbitmq/.erlang.cookie, хотя дистрибутив может изменить это местоположение. Вы заметите, что файл cookie доступен для чтения только root.
Если удаленный узел (другой сервер) или локальный узел (другой экземпляр Erlang на этом сервере) хочет связаться с вашим сервером RabbitMQ, они должны предоставить cookie при общении через EPMD, иначе запросы будут проигнорированы.
Если вы следуете лучшим практикам RabbitMQ, то у вас будет RabbitMQ, работающий на собственном сервере, и два или три других сервера RabbitMQ сгруппированы вместе с ним. В этом контексте «кластеризованный» означает совместное использование одного и того же файла cookie и обмен данными через один и тот же порт EPMD. Блокировать этот порт - плохо.
Однако, как правило, хорошо иметь периметр вокруг кластера, который управляется брандмауэром, так что порт EPMD можно использовать только изнутри периметра. Это означает, что блокировка выполняется на устройстве брандмауэра, или сервере, действующем как брандмауэр, или брандмауэре EC2 или аналогичном.