The RabbitMQ management interface is a browser-based dashboard and HTTP API that gives you visibility into your message broker: queue depths, connection counts, user accounts, and node health. It’s configured for local development by default, not production. Exposing it without checking a handful of settings can hand an attacker full control of your broker.
What the RabbitMQ Management Interface Actually Exposes
Anyone who can reach the management port and log in sees everything: all virtual hosts, queues, exchanges, bindings, message rates, and connected clients. They can also purge queues, publish messages, delete exchanges, and add or remove user accounts.
The interface sits on top of an HTTP API served by the RabbitMQ management plugin, which means an attacker doesn’t need a browser. They can script requests against the API directly. Automated credential stuffing or configuration changes are straightforward once they have a working login.
Is the Management Plugin Enabled by Default?
The management plugin, called rabbitmq_management, is not enabled in a standard RabbitMQ installation. You enable it deliberately with:
rabbitmq-plugins enable rabbitmq_management
The moment it’s enabled, RabbitMQ opens port 15672 and starts serving the UI and API.
The exception is Docker. The official image tagged rabbitmq:management ships with the plugin already active. If you ran a container using that tag, the management interface is running. You may not have intended that.
Default Credentials: Change These First
RabbitMQ changed its management plugin port from 55672 to 15672 in version 3.3.0, released April 2014. The intent was to reduce exposure. It didn’t fix the underlying problem. In a 2015 scan of over 16 million IP addresses, documented in a Tufts University computer security project, servers were still found running on the old port 55672, some with default admin credentials still in place. That was nearly 18 months after the version that changed the port had shipped.
That same 2015 scan found 32 publicly reachable RabbitMQ servers and gained full admin access to two of them using only the default guest:guest credentials. The research is a decade old. The pattern it documents is not.
RabbitMQ ships with a default account: username guest, password guest, with full administrator access. By default, this account can only connect from localhost, which limits the immediate risk on a bare-metal install.
That restriction disappears in two common situations. If loopback_users is set to an empty list in rabbitmq.conf, the guest account becomes reachable from any network address. If the management UI is placed behind a reverse proxy, requests from the proxy arrive at RabbitMQ as local connections, bypassing the loopback restriction entirely.
The fix is straightforward: delete the guest account using rabbitmqctl delete_user guest, create a named administrator account with a strong password, and confirm no other accounts carry weak credentials.
Port 15672 and Network Access Control
The management UI and API listen on port 15672 over plain HTTP by default. When TLS is configured, the HTTPS listener uses port 15671. Without a firewall rule or network policy, any host that can route to your RabbitMQ server can reach port 15672.
Restrict access to port 15672 to specific IP ranges or subnets. If the management UI needs to be reached remotely, place it behind a reverse proxy and enforce TLS. Plain HTTP on this port means credentials and queue data travel unencrypted. Enabling TLS requires a valid certificate and adds some operational overhead. On any network with more than one person, it’s the only way to protect credentials in transit.
Docker-Specific Risks
Running docker run -p 15672:15672 rabbitmq:management binds the management port to all host interfaces by default, not just localhost. That means it’s reachable from outside the container host without any additional configuration.
Set RABBITMQ_DEFAULT_USER and RABBITMQ_DEFAULT_PASS as environment variables in every Docker deployment rather than relying on the guest default. If the management UI is only needed locally, bind to the loopback address: -p 127.0.0.1:15672:15672.
User Roles and the Principle of Least Privilege
RabbitMQ has five built-in user tags that control what an authenticated user can see and do inside the management interface:
- none: no management access
- management: read-only view of virtual hosts the user has access to
- policymaker: can set and clear policies
- monitoring: read-only visibility of all nodes and cluster statistics, without configuration access
- administrator: full access to all settings, users, and virtual hosts
Operations staff who need to watch queue depths and connection counts should get the monitoring tag, not administrator. Giving everyone administrator access because it’s easier is a misconfiguration that turns up repeatedly in inherited RabbitMQ deployments.
Scope virtual host permissions at the same time. A user with the management tag but broad virtual host access can still read more queue data than their role requires.
Pre-Exposure Security Checklist
Check each of these before the management interface faces any network traffic:
- Confirm the management plugin is intentionally enabled, not accidentally inherited from a Docker image tag.
- Delete or disable the guest account.
- Set strong, unique passwords for all administrator accounts.
- Restrict port 15672 at the firewall or network policy level to known IP ranges.
- Enable TLS on the management listener before allowing any remote access.
- Review user tags and assign the minimum role each person’s job requires.
- Scope virtual host permissions to match each user’s actual access needs.
- In a cluster, apply all of the above to every node. Each node runs its own management listener.
A managed RabbitMQ service handles several of these defaults on your behalf. If your team doesn’t have the time to maintain the configuration across deployments, that’s a reasonable reason to consider one.
Frequently Asked Questions
Is the RabbitMQ management interface enabled by default?
No. The rabbitmq_management plugin must be explicitly enabled on a standard install. The exception is the official rabbitmq:management Docker image, which ships with the plugin already active.
What port does the RabbitMQ management interface use?
Port 15672 for HTTP. Port 15671 when TLS is configured. Both ports need to be controlled at the network level.
What are the default RabbitMQ management credentials?
Username guest, password guest. Delete this account before exposing the interface to any network.
How do I check if the RabbitMQ management interface is exposed to the internet?
Run a port scan against your server’s public IP targeting port 15672. If the port responds, the interface is reachable. Apply a firewall rule to restrict access immediately.
How do I disable the RabbitMQ management interface?
Run rabbitmq-plugins disable rabbitmq_management. This closes port 15672 and removes the UI and API. Consider whether the plugin needs to be enabled in production at all if you’re not actively using it.

William Bashir is the owner of Web App Test, a premier cybersecurity blog dedicated to providing the latest information and insights in the field. With a mission to deliver top-notch articles from industry-leading cybersecurity journalists, Web App Test serves as a one-stop destination for comprehensive cybersecurity guidance.
