场景
公司安扫,发现很多项目有 Spring Boot Actuator未授权访问漏洞。
描述:
引入actuator的项目,很多路径未授权就可以访问。例如: /info、/beans等。
实际这些都不应开放,最对只开放个健康检查/health。
解决方案
方案一 配置健康检查
endpoints.enabled = false
endpoints.health.enabled = true
对,你没看错,就是这么简单。
遇到的问题
apollo配置了,服务也重启了,就是不生效。
为此差点怀疑人生,本地开了个项目,这么配置是没问题的。
说明apollo这么配置是不行的。
改为本地启动时加上参数(在jar前即可):
-Dendpoints.enabled=false -Dendpoints.health.enabled=true
如果在脚本中应该这样配:
--endpoints.enabled=false --endpoints.health.enabled=true
方案二 配置security(略)
其他
get请求访问不了、post请求却可以访问
那么把 endpoints.env.enabled 也设置为false吧,如果无效,就进一步细粒度设置下。
endpoints.env.enabled=false # 感觉这一个就行了
endpoints.env.post.enabled=false # 实际加的这个
endpoints.env.refresh.enabled=false # 实际加的这个
如果版本比较高,前面加个```management.`
management.endpoint.env.enabled=false # spring2.0版本以上用这个(也有说2.2.4版本以上,不管了,反正高版本就用这个)