1. 修改默認憑據
RabbitMQ默認的guest用戶(密碼guest)僅允許本地訪問,且是攻擊者的常見目標。需創建新用戶并刪除默認用戶:
# 創建新用戶(替換為強密碼)
rabbitmqctl add_user myuser SecurePassword123!
# 賦予管理員權限(根據需求調整標簽,如"monitoring"僅監控)
rabbitmqctl set_user_tags myuser administrator
# 設置用戶權限(針對虛擬主機"/",允許配置、寫入、讀?。?/span>
rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*"
# 刪除默認用戶(可選但強烈推薦)
rabbitmqctl delete_user guest
2. 啟用管理插件并限制訪問
管理插件提供Web界面,需通過防火墻限制訪問IP,避免暴露在公網:
# 啟用管理插件(默認端口15672)
rabbitmq-plugins enable rabbitmq_management
# 僅允許特定IP訪問管理界面(如公司內網192.168.1.0/24)
rabbitmqctl set_parameter ip_filter {"ip_filter", [{"192.168.1.0/24", "allow"}, {"0.0.0.0/0", "deny"}]}
3. 配置防火墻規則
使用firewalld開放必要端口(AMQP默認5672、管理界面15672),拒絕其他流量:
# 開放端口(--permanent表示永久生效)
firewall-cmd --permanent --zone=public --add-port=5672/tcp # AMQP協議
firewall-cmd --permanent --zone=public --add-port=15672/tcp # 管理界面
# 重新加載防火墻配置
firewall-cmd --reload
4. 啟用SSL/TLS加密通信
加密客戶端與服務器之間的通信,防止數據泄露:
# 生成自簽名證書(生產環境建議使用CA簽發的證書)
openssl req -new -x509 -days 365 -nodes -out /etc/rabbitmq/ssl/rabbitmq.crt -keyout /etc/rabbitmq/ssl/rabbitmq.key
# 設置證書權限(僅RabbitMQ用戶可讀)
chown rabbitmq:rabbitmq /etc/rabbitmq/ssl/rabbitmq.*
chmod 600 /etc/rabbitmq/ssl/rabbitmq.*
# 修改配置文件(/etc/rabbitmq/rabbitmq.conf),添加SSL配置
echo """
listeners.ssl.default = 5671
ssl_options.cacertfile = /etc/rabbitmq/ssl/rabbitmq.crt
ssl_options.certfile = /etc/rabbitmq/ssl/rabbitmq.crt
ssl_options.keyfile = /etc/rabbitmq/ssl/rabbitmq.key
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = true
""" | sudo tee -a /etc/rabbitmq/rabbitmq.conf
# 重啟服務使配置生效
systemctl restart rabbitmq-server
5. 強化認證機制
避免使用弱密碼,啟用強認證(如LDAP集成,適用于企業環境):
# 啟用LDAP認證插件
rabbitmq-plugins enable rabbitmq_auth_backend_ldap
# 配置LDAP參數(示例,需根據實際LDAP服務器調整)
echo """
auth_backends.1 = ldap
ldap_server = ldap://ldap.example.com
ldap_port = 389
ldap_use_tls = false
ldap_username = cn=admin,dc=example,dc=com
ldap_password = admin_password
ldap_base = dc=example,dc=com
ldap_user_dn_pattern = cn=${username},ou=users,dc=example,dc=com
""" | sudo tee -a /etc/rabbitmq/rabbitmq.conf
# 重啟服務
systemctl restart rabbitmq-server
6. 實施最小權限原則
為用戶分配僅滿足需求的權限,避免過度授權:
# 創建僅能訪問特定虛擬主機(如"my_vhost")的用戶
rabbitmqctl add_user devuser DevPassword123!
rabbitmqctl set_permissions -p my_vhost devuser ".*" ".*" ".*" # 允許配置、寫入、讀取
rabbitmqctl set_user_tags devuser monitoring # 僅監控權限(無管理權)
7. 定期更新與補丁管理
保持RabbitMQ及依賴組件(如Erlang)為最新版本,修復已知漏洞:
# 更新RabbitMQ和Erlang
sudo yum update rabbitmq-server erlang -y
# 重啟服務應用更新
systemctl restart rabbitmq-server
8. 監控與日志記錄
啟用詳細日志并定期分析,及時發現異常行為:
# 修改日志級別(/etc/rabbitmq/rabbitmq.conf)
echo """
log.console.level = info
log.file.level = debug
log.file.rotation.date = $D0
log.file.rotation.size = 50MB
""" | sudo tee -a /etc/rabbitmq/rabbitmq.conf
# 重啟服務
systemctl restart rabbitmq-server
# 使用logrotate配置日志輪轉(/etc/logrotate.d/rabbitmq)
echo """
/var/log/rabbitmq/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 rabbitmq rabbitmq
}
""" | sudo tee -a /etc/logrotate.d/rabbitmq
通過以上步驟,可顯著提升RabbitMQ在CentOS環境中的安全性,防范未授權訪問、數據泄露等風險。需根據實際業務需求調整配置(如SSL證書路徑、LDAP服務器地址等)。