1. 修改默认凭据
RabbitMQ默认用户为guest,默认密码为guest,且默认仅允许从localhost访问(RabbitMQ 3.3.0及以上版本)。为避免未授权访问,需创建新用户并删除默认用户:
rabbitmqctl add_user <username> <password>(如rabbitmqctl add_user admin admin123);rabbitmqctl delete_user guest;rabbitmqctl set_user_tags <username> administrator(administrator为超级管理员角色,拥有管理控制台完全访问权限)。2. 加强权限控制
通过虚拟主机(Virtual Host)隔离不同用户/环境的资源,结合精细化权限分配限制用户操作:
rabbitmqctl add_vhost <vhost_name>(如rabbitmqctl add_vhost my_vhost);rabbitmqctl set_permissions -p <vhost_name> <username> "<conf_regex>" "<write_regex>" "<read_regex>"。<conf_regex>为配置权限正则(如^my_queue.*表示允许配置以my_queue开头的队列)、<write_regex>为写权限正则(如.*表示允许向所有队列发送消息)、<read_regex>为读权限正则(如^my_queue.*表示允许从以my_queue开头的队列获取消息)。3. 启用TLS/SSL加密通信
通过TLS/SSL加密RabbitMQ客户端与服务端之间的通信,防止数据明文传输:
ca_cert.pem、server_cert.pem、server_key.pem);/etc/rabbitmq/rabbitmq.conf.d/ssl.conf,添加以下内容:listeners.ssl.default = 5671 ssl_options.cacertfile = /etc/rabbitmq/ca_cert.pem ssl_options.certfile = /etc/rabbitmq/server_cert.pem ssl_options.keyfile = /etc/rabbitmq/server_key.pem ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = true sudo systemctl restart rabbitmq-server;sudo ufw allow 5671/tcp。4. 配置管理插件安全策略
启用Web管理界面(rabbitmq_management插件)后,需限制访问来源IP,防止外部未授权访问:
rabbitmq-plugins enable rabbitmq_management;/etc/rabbitmq/rabbitmq.conf),添加以下内容限制IP访问:management.listener.port = 15672 management.listener.ip = 127.0.0.1 # 仅允许本地访问 # 或允许多个IP(如公司内网) # management.listener.ip = 192.168.1.0/24,10.0.0.1 sudo systemctl restart rabbitmq-server。5. 实施监控与日志分析
通过监控工具实时跟踪RabbitMQ状态,通过日志识别可疑行为:
rabbitmq-plugins enable rabbitmq_prometheus(Prometheus插件);/var/log/rabbitmq/rabbitmq.log,关注异常连接、权限拒绝、队列创建等事件。6. 设置系统资源使用上限
通过限制RabbitMQ进程的系统资源(如文件描述符数量),防止资源耗尽导致服务崩溃:
/etc/security/limits.conf,添加以下内容:rabbitmq soft nofile 65536 rabbitmq hard nofile 65536 /etc/systemd/system/rabbitmq-server.service.d/override.conf(若不存在则创建),添加以下内容:[Service] LimitNOFILE=65536 sudo systemctl daemon-reload sudo systemctl restart rabbitmq-server ```。 7. 持续更新软件版本
保持RabbitMQ及其依赖的Erlang/OTP平台为最新版本,及时安装官方发布的安全补丁,修复已知漏洞:
sudo apt update && sudo apt upgrade rabbitmq-server erlang;