某项目生产环境扫描出漏洞,共两类:
1、RocketMQ可视化管理控制台未授权访问
2、Spring Boot Actuator 配置接口对外开放
问题处理:
1、RocketMQ可视化管理控制台未授权访问
现象:RecketMQ可视化控制台可以直接登录
修复方式:
1).增加加密文件plain_acl.yml,放置在conf目录下
globalWhiteRemoteAddresses:
#- 127.0.0.1
accounts:
- accessKey: RocketMQ
secretKey: 12345678
whiteRemoteAddress:
admin: false
defaultTopicPerm: DENY
defaultGroupPerm: SUB
topicPerms:
- topicA=DENY
- topicB=PUB|SUB
- topicC=SUB
groupPerms:
# the group should convert to retry topic
- groupA=DENY
- groupB=PUB|SUB
- groupC=SUB
- accessKey: rocketmq2
secretKey: yuanian_ecs_mq
whiteRemoteAddress:
# if it is admin, it could access all resources
admin: true
defaultTopicPerm: SUB|PUB
defaultGroupPerm: SUB|PUB
2).修改broker.conf文件增加
#该项配置是开启acl安全认证配置,开启后,需要注意rocketmq_console与项目服务的配置,否则会导致MQ访问鉴权失败,默认不开启。
aclEnable=true
3).修改docker-compose文件
根据下图 修改增加两行配置
#broker添加如下
- ./conf/plain_acl.yml:/opt/conf/plain_acl.yml
#console添加如下
MQ_CAL_OPT: --rocketmq.config.loginRequired=false --rocketmq.config.loginName=loginName --rocketmq.config.password=password --rocketmq.config.accessKey=rocketmq2 --rocketmq.config.secretKey=yuanian_ecs_mq
4).需要在应用的application-xxx.yml中增加配置
根据预算项目的情况需要修改console、mr、mdd下的yml文件:
#是否启用安全链接,和accessKey、secretKey配套使用,根据MQ部署情况配置accessKey用户名secretKey密码
aclEnable: false
accessKey:
secretKey:
示例如下:
调整配置后,重启服务,验证结果如下:
结论:感觉处理的方式就是想展现的内容进行了加密处理。
2、Spring Boot Actuator 配置接口对外开放
现象:浏览器可以直接打开:http://ip:port/console/actuator/env 会直接暴露信息,截图如下:
修复方式:
修改对应服务的yml配置文件:
include: "*" 改为 include: health,prometheus
修改前的配置如下:
management:
health:
redis:
enabled: true
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
修改后如下:
management:
health:
redis:
enabled: true
endpoints:
web:
exposure:
include: health,prometheus
endpoint:
health:
show-details: ALWAYS
修改后,重启服务即可,验证结果如下:登录之前的地址http://ip:port/console/actuator/env
关于Spring boot actuator端点启用和暴露,可以参考: