Nexus版本升级到3.1.7解决3.0.2版本漏洞

一、背景

  • 未经身份验证的攻击者可以在服务器上注入和执行可能影响机密性,完整性和可用性的代码。Sonatype已经意识到僵尸网络利用了之前宣布的安全漏洞,并建议立即升级受影响的NXRM 3.x实例。(NXRM 2.x实例不受影响)。

二、方案概述

受影响的版本:Nexus Repository Manager 3.x OSS / Pro版本,包括3.14.0

已修复版本:Nexus Repository Manager OSS / Pro 3.15.0版

未经身份验证的用户可以以可以在主机系统上执行任意代码和程序的方式来创建请求。截至2019年6月12日,Sonatype已经意识到这个漏洞的漏洞已被添加到僵尸网络的库中。Sonatype通过添加必要的访问控制以及禁用通过此路径执行任意Java代码的能力来缓解此问题。 由于已识别的漏洞允许未经身份验证的攻击者在主机系统上运行任意代码或程序,因此 Sonatype强烈建议将所有NXRM实例升级到 3.15 或更高版本

三、详细设计

3.1 安装高版本nexus

3.1.1 下载

官网地址:http://uee.me/aRBrc

https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.17.0-01-unix.tar.gz (注意:经测试浏览器不能下载,需要用迅雷下载)

3.1.2 解压

复制安装包到/opt,进入目录解压 tar -zxvf nexus-3.17.0-01-unix.tar.gz

nexus-3.17.0-01(Nexus运行所需要的文件,如运行脚本,依赖jar包等)

sonatype-work(该目录包含Nexus生成的配置文件、日志文件、仓库文件等)

3.2 升级

3.2.1 升级之前

在从3.0.2升级到3.1.x之前,需要熟悉3.1.x的新磁盘布局。它由一个sonatype-work包含嵌套nexus3目录的文件夹组成, 其中包含您的所有内容和配置。不要修改您的nexus-defaults.properties文件。而是在修改3.1.0版本后文件sonatype-work创建nexus.properties。

3.2.2 升级步骤

  1. 下载并解压缩适用于您的操作系统的3.1.0 的分发存档。

  2. 停止运行存储库管理器的3.0.2版。

  3. 手动将备份内容备份$3.0.2-02/data到另一个位置。

  4. 复制或移动内容,$3.0.2-02/data使其覆盖/sonatype-work/nexus3/3.1.0中的内容。

  5. 在3.1.0中创建一个nexus.properties文件 /sonatype-work/nexus3/etc。

  6. 复制的内容$3.0.2-02/etc/org.sonatype.nexus.cfg来$3.1.0-04/../sonatype-work/nexus3/etc/nexus.properties。

  7. 删除任何提及nexus-edition或nexus-features在3.1.0数据目录中,即 $3.1.0-04/../sonatype-work/nexus3/etc/nexus.properties。

  8. 在$3.1.0-04/../sonatype-work/nexus3/etc/nexus.properties替换每个${karaf.etc}与${jetty.etc}在nexus-args财产。E. g。nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml。

  9. 如果已进行自定义$3.0.2-02/etc/,则需要手动将这些更改重新应用到3.1.0-04。 使用脚本nexus-3.1.0-04/bin/或您的服务启动Nexus 。

3.2.3 修改端口

更改/sonatype-work/nexus3/etc/nexus.properties里边的application-port=8081。

3.2.4 设置开机自启

ln -s ln -s /opt/nexus-3.17.0-01/bin/nexus /etc/init.d/nexus3.17 /etc/init.d/nexus3.17

chkconfig --add nexus3.17

chkconfig nexus3.17 on

3.2.6 nexus 切换用户

su nexus

3.2.6 nexus启动停止命令

打开目录:/opt/nexus-3.17.0-01/bin 进入bin目录下

./nexus start  # 启动

./nexus stop   # 停止

./nexus status # 查看状态

默认监听端口为8081,默认管理员用户为您提供完全控制权并使用用户名 admin ,初始密码可以在启动后admin.password在sonatype-work/nexus3/admin.password目录中的文件中

参考:How to Upgrade Nexus Repository Manager 3.0.2 to 3.1.0 or Later

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Cloud Gateway 3.1.7版本中,自定义负载均衡策略可以通过实现`org.springframework.cloud.gateway.loadbalancer.LoadBalancer`接口来实现,该接口定义了选择服务实例的方法。 以下是一个示例,展示了如何定义一个基于特定请求头的自定义负载均衡策略: ```java public class CustomLoadBalancer implements LoadBalancer<ServiceInstance> { private final String headerName; public CustomLoadBalancer(String headerName) { this.headerName = headerName; } @Override public ServiceInstance choose(Object key) { if (key instanceof ServerWebExchange) { ServerWebExchange exchange = (ServerWebExchange) key; Object headerValue = exchange.getRequest().getHeaders().getFirst(headerName); String serviceName = "my-service"; // 根据请求头的值选择服务实例 ServiceInstance serviceInstance = ...; return serviceInstance; } return null; } } ``` 在上面的示例中,`CustomLoadBalancer`实现了`LoadBalancer`接口,并基于特定的请求头选择服务实例。 然后,你需要创建一个`org.springframework.cloud.gateway.filter.factory.rewrite.RewriteFunction`实例,用于将服务的URI重写为负载均衡的服务实例地址。最后,你需要将这个自定义的负载均衡策略应用到Spring Cloud Gateway的路由规则中。 以下是一个完整的示例,展示了如何定义和应用自定义的负载均衡策略: ```java @Bean public LoadBalancer<ServiceInstance> customLoadBalancer() { return new CustomLoadBalancer("my-header"); } @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder, LoadBalancer<ServiceInstance> customLoadBalancer) { return builder.routes() .route(r -> r.path("/my-service/**") .uri("http://my-service") .id("my-route") .filter(new CustomLoadBalancerGatewayFilterFactory(customLoadBalancer))) .build(); } public class CustomLoadBalancerGatewayFilterFactory extends AbstractGatewayFilterFactory<CustomLoadBalancerGatewayFilterFactory.Config> { private final LoadBalancer<ServiceInstance> loadBalancer; public CustomLoadBalancerGatewayFilterFactory(LoadBalancer<ServiceInstance> loadBalancer) { super(Config.class); this.loadBalancer = loadBalancer; } @Override public GatewayFilter apply(Config config) { RewriteFunction<String, String> rewriteFunction = uri -> { // 将URI重写为负载均衡的服务实例地址 ServiceInstance serviceInstance = loadBalancer.choose(ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR).block(); return "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + uri; }; return new RewritePathGatewayFilterFactory().apply(new RewritePathGatewayFilterFactory.Config().setRewriteFunction(rewriteFunction)); } public static class Config { // 配置属性 } } ``` 在上面的示例中,`customLoadBalancer`方法定义了自定义的负载均衡策略`CustomLoadBalancer`。`customRouteLocator`方法创建了一个路由规则,将请求路径`/my-service/**`映射到`http://my-service`服务上,并使用自定义负载均衡策略。`CustomLoadBalancerGatewayFilterFactory`则将自定义负载均衡策略应用到路由规则中,并将服务的URI重写为负载均衡的服务实例地址。最后,你可以在路由规则中使用`CustomLoadBalancerGatewayFilterFactory`来定义自定义的负载均衡策略。 ```yaml spring: cloud: gateway: discovery: locator: enabled: false routes: - id: my-route uri: http://my-service predicates: - Path=/my-service/** filters: - CustomLoadBalancer=my-header ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值