Назад | Перейти на главную страницу

Безопасен ли RabbitMQ для публичного доступа недоверенных клиентов?

Я работаю над проектом, в котором будут ненадежные клиенты (потенциально 1000), все контактирующие с центральным сервером. Трафик сообщений будет низким, и каждый клиент будет невидим друг для друга (другими словами, они не должны иметь возможности разговаривать друг с другом или шпионить за каналами друг друга).

RabbitMQ, похоже, здесь отлично подходит. Он будет служить посредником между моим приложением и клиентами. Клиенты будут подключаться напрямую к RMQ, каждый со своей собственной отдельной очередью, а RMQ будет передавать сообщения между клиентами и моим сервером.

Итак, мой вопрос: Предполагая, что я все настроил (в основном) правильно (аутентификация, каждый клиент является отдельным пользователем, разрешения на очереди и т.д.), безопасен ли RabbitMQ для такого рода общедоступных приложений? Есть ли у кого-нибудь примеры подобной установки в дикой природе?

В качестве иллюстративного примера, nginx и sshd предназначены для публичного доступа, в то время как что-то вроде MongoDB - нет. Даже если я настрою отдельные имена пользователей и пароли на Mongo и установлю разрешения для отдельных коллекций, мне будет нелегко разрешить ненадежным клиентам подключаться к нему напрямую.

Мошеннические клиенты по-прежнему могут сломать кластер (сервер) RabbitMQ, даже если вы правильно установили все свои разрешения. Это может произойти, когда клиенты открывают много подключений.

Для защиты кластера от таких атак рекомендуется использовать какой-нибудь балансировщик нагрузки (например, Haproxy).