actuator防止外部访问漏洞修复

解决办法适用于2.x springboot版本

注意:actuator默认开启的,默认开启是有漏洞的。

法零:和网站设置不同端口,不映射到外面,并修改路径
法一:禁用所有http接口,将配置改成:management.endpoints.web.exposure.exclude=*
法二:引入spring-boot-starter-security依赖,增加安全认证
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
配置增加

# actuator是否需要安全保证配置
management:
  security:
    enabled: true
  endpoints:
    web:
      exposure:
        include: "*"
# actuator登录认证配置
spring:
  security:
    user:
      name: admin${random.int}
      password: ${random.value}
代码增加 打印认证的用户和密码

@Component
public class MyApplicationRunner implements ApplicationRunner {

    private static final Logger LOGGER = LoggerFactory.getLogger(MyApplicationRunner.class);

    @Autowired
    private SecurityProperties securityProperties;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        LOGGER.info("actuator user name:{}, password:{}", securityProperties.getUser().getName(), securityProperties.getUser().getPassword());
        // todo 存到redis或者其他
    }
}
ActuatorSecurity认证类

import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
            .anyRequest().authenticated().and().httpBasic();
    }

}
启动&测试
http://localhost:8088/actuator/beans

SpringBoot Actuator是一个用于监控和管理SpringBoot应用的组件,它可以为应用提供生产级别的监控和管理功能。在某些版本的SpringBoot Actuator中,存在一个未授权访问漏洞,这个漏洞允许未经授权的用户访问敏感的Actuator端点,可能会泄露应用的内部信息或允许攻击者执行某些破坏性操作。 修复漏洞通常包括以下几个步骤: 1. 更新SpringBoot版本:确保你的SpringBoot应用使用的是最新版本,因为SpringBoot团队会定期修复已知的安全漏洞访问SpringBoot官方文档或仓库,查看最新的版本信息并更新你的项目依赖。 2. 配置访问控制:对于敏感的Actuator端点,你应该配置访问控制,只允许授权用户访问。可以通过修改application.properties或application.yml配置文件来实现。 例如,在application.properties中设置访问控制如下: ``` management.endpoints.web.exposure.include=health,info management.endpoints.web.exposure.exclude=* ``` 上述配置表示只暴露`health`和`info`端点,而其他所有端点默认是不暴露的。 3. 使用安全框架进行访问控制:如果你的应用需要更细粒度的访问控制,你可以利用Spring Security等安全框架,为不同的Actuator端点设置不同的安全策略。例如,只有具有特定角色的用户才能访问特定端点。 4. 定期审核依赖库:定期使用依赖检查工具(如OWASP Dependency-Check)来分析你的项目依赖,确保没有使用到含有已知安全漏洞的库。 5. 关注安全更新:关注SpringBoot官方发布的信息,一旦有新的安全漏洞被发现,及时进行修复和更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值