雷池WAF+Modsecurity安装防护及系统加固

君衍.

  • 一、雷池WAF
    • 1、什么是雷池
    • 2、什么是WAF
    • 3、雷池的功能
    • 4、WAF部署架构
    • 5、整体检测流程
  • 二、雷池WAF环境依赖
    • 1、查看本地CPU架构
    • 2、Docker安装
      • 2.1 卸载旧版本
      • 2.2 安装yum-utils工具包
      • 2.3 设置镜像仓库
      • 2.4 安装docker
      • 2.5 启动docker并查看版本
    • 3、Docker Compose安装
      • 3.1 卸载旧版本
      • 3.2 下载文件并移至bin目录
      • 3.3 添加执行权限
      • 3.4 查看版本
  • 三、雷池WAF安装配置
    • 1、Nginx更改端口
    • 2、自动安装雷池WAF
    • 3、初始化账户并登录
    • 4、配置防护站点
    • 5、防护测试
    • 6、拦截效果
  • 四、系统加固
    • 1、iptables放通端口
    • 2、iptables拦截IP
  • 五、深度防御实现
    • 1、配置雷池上游服务器地址
    • 2、设置云服务器安全组规则
    • 3、iptables制定策略
  • 六、遇到的问题及解决
    • 1、nginx: [alert] kill(30127, 1) failed (3: No such process)
    • 2、nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)
    • 3、雷池常见问题排查

本文继上篇环境: 腾讯云服务器+Nginx+ModSecurity+XSS(CentOS7)靶场搭建的一个传统WAF环境,之后,再此基础上使用雷池WAF二次进行应用层防护,及使用iptables代替防火墙来进行系统加固。
在这里插入图片描述

上篇文章地址: Modsecurity安装+Nginx+腾讯云CentOS+XSS-Labs靶场+WAF规则
这里介绍下我的思路,为了凸显雷池WAF的优势以及区别,设计两个端口来进行区分,将8080端口设置为nginx服务的端口地址,使用雷池WAF监听80端口,配置上游服务器为源站8080端口。而8080端口源站我们已经使用modsecurity进行了防御。所以,之后我们可以使用payload来进行两端测试,80端口为雷池WAF防护地址,8080端口为modsecurity防护地址。当然,80端口为WAF+Modsecurity双层防御来应对网络中复杂流量以及报文。而判断雷池与modsecurity差别则可进行日志审计或者进行测试观察,同时modsecurity拦截直接状态码403回显,而雷池WAF拦截则是没有响应报文。(当然了,也可以不对外暴露8080端口,只能使用80端口进行访问,之后雷池对流量进行检测,抛给源站,源站上又配置了modsecurity进行校验,从而使系统更加安全,在文章最后介绍如何使用户只能通过80端口访问。)
在这里插入图片描述
选择雷池也有部分原因为雷池社区版免费,以及modsecurity开源,可供学习研究。
在这里插入图片描述

一、雷池WAF

1、什么是雷池

雷池(SafeLine)是一种Web应用防火墙(Web Application Firewall),其名称来源于其开发者长亭科技。WAF通常被用于保护Web应用程序免受各种网络攻击,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。它位于Web应用程序前面,监控和过滤进入应用程序的HTTP流量,以识别和阻止恶意的HTTP请求。
雷池技术体系知识库

  • 雷池语义分析算法
  • 雷池技术架构

2、什么是WAF

WAF是Web Application Firewall(Web应用防火墙)的缩写。它是一种专门用于保护Web应用程序免受各种网络攻击的安全设备或服务。
WAF 的作用和功能:

  • 过滤恶意流量:WAF位于Web应用程序前面,监控所有进入应用程序的HTTP/HTTPS流量。它能够识别和过滤掉包含恶意代码或攻击特征的请求,如SQL注入、跨站脚本(XSS)、跨站请
  • 实时监控和分析:WAF实时地分析流量,监控潜在的安全威胁,并根据预定义的规则或策略采取相应的防御措施,比如阻止恶意请求或者记录日志供进一步审计。
  • 安全策略:管理员可以根据具体的应用需求配置和实施多种安全策略。这些策略包括防止公开漏洞的利用、防御未知的威胁以及应对已知的攻击模式。
  • 日志和报告:WAF通常会记录所有的HTTP/HTTPS流量,包括允许和拒绝的请求,以及详细的安全事件日志。这些日志可以用于安全审计、调查事件和性能优化。
  • 缓解DDoS攻击:某些WAF还具备抵御分布式拒绝服务(DDoS)攻击的能力,通过流量限制、IP黑名单等方式来减轻对服务器的压力。
  • 自动化和智能防护:现代的WAF通常支持自动化配置和智能学习,能够识别新型的攻击模式并自动适应防御策略,减少对管理员的依赖。
  • 性能优化:为了不影响Web应用程序的正常运行,WAF会采用各种技术手段来优化性能,如请求缓存、延迟加载等。

3、雷池的功能

便捷性

  • 采用容器化部署,一条命令即可完成安装,0 成本上手
  • 安全配置开箱即用,无需人工维护,可实现安全躺平式管理

安全性

  • 首创业内领先的智能语义分析算法,精准检测、低误报、难绕过
  • 语义分析算法无规则,面对未知特征的 0day 攻击不再手足无措

高性能

  • 无规则引擎,线性安全检测算法,平均请求检测延迟在 1 毫秒级别
  • 并发能力强,单核轻松检测 2000+ TPS,只要硬件足够强,可支撑的流量规模无上限

高可用

  • 流量处理引擎基于 Nginx 开发,性能与稳定性均可得到保障
  • 内置完善的健康检查机制,服务可用性高达 99.99%

4、WAF部署架构

一般外部用户发出请求,经过网络最终传递到网站服务器。
在这里插入图片描述
此时,若外部用户中存在恶意用户,那么由恶意用户发出的攻击请求也会经过网络最终传递到网站服务器。
在这里插入图片描述
社区版雷池以反向代理方式接入,优先于网站服务器接收流量,对流量中的攻击行为进行检测和清洗,将清洗过后的流量转发给网站服务器。

5、整体检测流程

在这里插入图片描述

二、雷池WAF环境依赖

安装雷池前请确保你的系统环境符合以下要求:

  • 操作系统:Linux
  • CPU 指令架构:x86_64
  • CPU 指令架构:支持 ssse3 指令集
  • 软件依赖:Docker 20.10.14 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘

1、查看本地CPU架构

  • 查看指令架构
uname -m

在这里插入图片描述

  • 查看CPU信息
cat /proc/cpuinfo| grep "processor"

在这里插入图片描述

  • 查看CPU是或否支持ssse3指令集
lscpu | grep ssse3

在这里插入图片描述

2、Docker安装

这里需要注意的是我这里Linux使用的是CentOS7系统,所以之后的环境安装需要注意命令是否需要更改。(由于篇幅限制,这里我不具体介绍安装过程的描述)
Ubuntu操作系统安装docker详见:Ubuntu22.04安装docker

2.1 卸载旧版本

yum remove docker \
                   docker-client \
                   docker-client-latest \
                   docker-common \
                   docker-latest \
                   docker-latest-logrotate \
                   docker-logrotate \
                   docker-engine

这里之前没有安装可以忽略不用卸载,不知道是否有安装可以执行,回显处出没找到即可。
在这里插入图片描述

2.2 安装yum-utils工具包

yum install -y yum-utils

在这里插入图片描述

2.3 设置镜像仓库

这里使用阿里云镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

在这里插入图片描述

2.4 安装docker

yum install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

2.5 启动docker并查看版本

systemctl start docker
docker version

在这里插入图片描述
至此,CentOS操作系统安装docker即可完成。其他操作系统Ubuntu可见博客:Ubuntu22.04安装docker

3、Docker Compose安装

3.1 卸载旧版本

rm /usr/local/bin/docker-compose

这里直接删除旧版本目录即可,如果没有安装过可以忽略,不清楚则可执行,显示没有这个目录即可。

3.2 下载文件并移至bin目录

curl -L https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

这里可能会特别慢,我当时的解决方式是直接在windows下下载完成,使用ftp完成文件上传至bin目录下即可。

3.3 添加执行权限

chmod +x /usr/local/bin/docker-compose

3.4 查看版本

在这里插入图片描述
以上即可将雷池WAF所需的依赖环境安装完成,以及其硬件需求需要注意。

安装雷池前请确保你的系统环境符合以下要求:

  • 操作系统:Linux
  • CPU 指令架构:x86_64
  • CPU 指令架构:支持 ssse3 指令集
  • 软件依赖:Docker 20.10.14 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘

三、雷池WAF安装配置

本篇采用的WAF安装方式是直接在本地服务器上部署,与后端服务器部署在一台主机上。当然,这里其实不建议这么配置的如果是在真实的生产环境下,这种对于单机的负载要求更高,设备宕机概率大,同时故障排查困难,生产环境下建议在单独的服务器上部署雷池。

1、Nginx更改端口

首先,我依旧说明下我目前的环境,当前的环境是上一篇文章的环境,使用了nginx作为中间件,同时nginx监听的端口为80端口。而雷池的防护站点配置,配置需要监听80端口,HTTP的默认端口,当然,如果你要让雷池监听别的端口,那么访问站点时,后面自然需要跟上雷池防护的端口,所以这里我决定更改Nginx的监听端口,更改为8080,让雷池去监听80端口,8080端口让modsecurity防护,从而也有个测试的平台也就是8080端口来测试哪些payload是雷池可以防住而modsecurity防不住的,以上便是的大体的思路。
下面我们更改Nginx监听端口:

  • 1、为了方便之后的nginx执行,首先配置环境变量:
vim /etc/profile
# 文件末尾加上以下两个
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
# 保存退出
source /etc/profile

以上一个是Nginx的家目录,一个是可执行文件目录需要配置正确。
在这里插入图片描述

  • 2、将Nginx的服务关闭,使用命令:
nginx -s stop
netstat -ntlp # 查看端口状态

在这里插入图片描述
这里我们可以看到80端口已经不再被监听。

  • 3、下面我们去Nginx的配置文件里面监听端口更改为8080:
vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

  • 4、重启nginx服务:
nginx -s reload
netstat -ntlp

在这里插入图片描述
重启之后查看nginx监听端口为8080,即可更换完毕。(同时需要注意,有防火墙的话需要将8080端口全部放开,我这里在腾讯云防火墙以及本机防火墙都已开放8080端口。)
当然,这里可能会发生报错,所以我在文章最后有两个报错内容以及解决方式供大家参考。

2、自动安装雷池WAF

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

在这里插入图片描述
安装完毕后,会看到进行雷池控制台的方式,也可看到这里端口是9443默认端口控制。所以我们只需在ip地址后加上9443即可访问到控制台,这里仍需注意,9443端口是否被开放(防火墙以及云自带防火墙)。

3、初始化账户并登录

这里直接访问9443端口即可看到需要登录界面,所以需要重新初始化管理账户。

docker exec safeline-mgt resetadmin

这里即可输出账号密码,使用系统生成的账户密码即可登录控制台。

[SafeLine] Initial username:admin
[SafeLine] Initial password:**********
[SafeLine] Done

在这里插入图片描述

4、配置防护站点

这里防护站点配置在域名处可以配置自己服务器的IP地址或者域名,都可,端口这里我是计划了让雷池监听80端口,上游服务器也就是源站,这里我就是ip地址加上8080的nginx端口从而完成流量的转发以及响应,接着提交即可。
在这里插入图片描述
下面配置完之后,就可访问自己的服务器地址或者域名,80端口进行测试访问,然后等待片刻观察流量是否经过雷池,如果经过雷池,那么雷池上会有请求流量的显示,以及nginx访问日志里面访问的IP地址也是自身服务器进行访问,因为这里雷池做了转发,搞了SNAT,从而看不到源地址。

5、防护测试

这里可以自行测试,也可使用官方提供的测试,看防护效果。这里主要是手动模拟攻击。

以 https://chaitin.com 为例,然后尝试访问来模拟黑客攻击。
用你的网站地址替换下方的 https://chaitin.com/

  • 模拟 SQL 注入攻击: https://chaitin.com/?id=1+and+1=2+union+select+1
  • 模拟 XSS 攻击: https://chaitin.com/?id=<img+src=x+οnerrοr=alert()>
  • 模拟路径穿越攻击: https://chaitin.com/?id=…/…/…/…/etc/passwd
  • 模拟代码注入攻击: https://chaitin.com/?id=phpinfo();system(‘id’)
  • 模拟 XXE 攻击: https://chaitin.com/?id=<?xml+version="1.0"?><!DOCTYPE+foo+SYSTEM+“”>

不出意外的话,这些攻击都将被雷池拦截,如下图所示。
在这里插入图片描述

6、拦截效果

在这里插入图片描述
这里是使用开源WAF测试工具测出来的结果,具体可以自行使用https://github.com/chaitin/blazehttp去搭建,然后测试,我参考以上结果,使用Modsecurity-L4贴合了源站,雷池为二次防护对于80端口来说,可以看到modsecurity的检出率还是很高的,而雷池免费版的检出率一般,但是误报率相对低很多,所以二者搭配使用,达成联动,效果之后可以自行测试。
下面是我最近几天使用雷池的拦截情况:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上可以看到效果还是很好的,这里防护强度使用的高强度(推荐高强度)。
在这里插入图片描述

四、系统加固

1、iptables放通端口

本篇我使用的防火墙为iptables,所以这里包含了去放通8080端口以及9443端口,步骤:

  1. 检查iptables的状态,使用命令 iptables -L -n
  2. 添加开放端口的规则,使用命令 iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT,例如,要开放80端口,使用命令 iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  3. 保存配置,使用命令 service iptables saveiptables-save > /etc/iptables.rules
  4. 重启防火墙,使用命令 service iptables restart
  5. 查看状态,使用命令 service iptables status

2、iptables拦截IP

iptables -A INPUT -s IP地址 -j DROP
service iptables save
systemctl restart iptables
iptables -nvxL --line

在这里插入图片描述

以上便是我对于几个IP地址封禁的策略查看,可以看到对于45.148.10.174的IP地址发的包已经拦截了。

五、深度防御实现

在这里插入图片描述
这里使用modsecurity与雷池WAF联动的效果,配合iptables对外部端口的控制从而实现更加安全的防护。之所以使用双WAF进行联动,是因为经过雷池官方提供的自动化WAF检测工具最终的数据产出对比可以看到,modsecurity的检出率也就是拦截数量还是很高的,但是误报太多,同时没有图形化界面,对运维以及流量审计有一定的难度。所以配合误报率低的雷池WAF,拥有图形化界面,从而更加便捷的让用户看到拦截程度以及拦截的攻击类型等等。

1、配置雷池上游服务器地址

在这里插入图片描述
这里我们将上游服务器设置为127.0.0.1,设置为本机,之后我们将除了127.0.0.1的流量屏蔽掉。

2、设置云服务器安全组规则

在这里插入图片描述
这里我们只设置来源为127.0.0.1的IP地址访问8080端口是允许的就成。

3、iptables制定策略

这里由于我之前放开了对8080端口的限制,所以:

[root@VM-8-11-centos ~]# iptables -nxvL --line

在这里插入图片描述
可以看到,这里8080端口对所有IP地址都没有进行限制,下面我们设置规则,只有127.0.0.1的IP地址可以进行访问。

[root@VM-8-11-centos ~]# iptables -A INPUT -i lo -p tcp --dport 8080 -s 127.0.0.1 -j ACCEPT
[root@VM-8-11-centos ~]# iptables -A INPUT -i lo -p tcp --dport 8080 -j DROP
[root@VM-8-11-centos ~]# iptables -D INPUT 2

下面对以上命令进行解读:

iptables -A INPUT -i lo -p tcp --dport 8080 -s 127.0.0.1 -j ACCEPT
  • -A INPUT: 将规则添加到INPUT链(即入站流量)。
  • -i lo: 匹配本地回环接口(lo)。
  • -p tcp: 指定协议为TCP。
  • –dport 8080: 指定目标端口为8080。
  • -s 127.0.0.1: 指定源IP地址为127.0.0.1。
  • -j ACCEPT: 如果匹配,则接受连接。
iptables -A INPUT -i lo -p tcp --dport 8080 -j DROP

这个命令则代表,如果IP地址不是127.0.0.1,那么直接丢掉(与上一条配合使用,也就是如果上一条规则没有被匹配,那么匹配这个也就是直接丢掉)。

iptables -D INPUT 2

这条命令则代表删掉规则2,因为我端口放通在规则num=2,这里删掉。

六、遇到的问题及解决

1、nginx: [alert] kill(30127, 1) failed (3: No such process)

在这里插入图片描述
解决问题的命令:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • /usr/local/nginx/sbin/nginx:这是nginx服务器的可执行文件路径。在大多数安装中,nginx可执行文件通常位于 /usr/local/nginx/sbin/nginx。这个路径指定了nginx服务器的实际二进制文件所在的目录。
  • -c /usr/local/nginx/conf/nginx.conf:这是nginx启动时指定的配置文件路径。在这里,-c 选项表示后面紧跟着nginx的配置文件路径。/usr/local/nginx/conf/nginx.conf 指定了nginx的主配置文件的位置。nginx在启动时需要加载这个配置文件来确定如何处理请求、监听端口、设定虚拟主机等等。

2、nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)

在这里插入图片描述

这里我们依旧使用上一个问题的命令即可看到生成了nginx.pid,如果再次nginx -s reload出现此报错,那么说明pid里面内容与端口的PID不对应。这里我们需要使用netstat -ntlp命令进行查看nginxPID,这里从截图可以看出来为5570,然后去nginx.pid里面将pid改为5570即可,再次重启即可没有此报错。

3、雷池常见问题排查

在这里插入图片描述
这里放上官方排查手册,涵盖面非常广,可以进行查阅:
常见故障排查手册

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/764597.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go使用grpc编辑器 windows

先看最后效果&#xff1a; 当我执行 protoc --go_out. proto.proto 会生成proto.pb.go文件&#xff0c;主要存储的是封装好的结构体 执行 protoc --go-grpc_out. proto.proto 会生成对应的方法 那么现在提供解决方案&#xff1a; https://github.com/protocolbuffers…

如何定制化 ListView 界面

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。 &#x1f60a; 座右铭&#xff1a;不…

计算机视觉概述

The main role of computer vision is to get information through input images. 1、Overview 计算机视觉中关于图像识别有四大类任务&#xff1a; &#xff08;1&#xff09;分类-Classification&#xff1a;解决“是什么&#xff1f;”的问题&#xff0c;即给定一张图片或…

echarts legend组件单独设置样式形状

为legend组件单独设置一个样式 //单独legend样式 const customLegend {name: test,// 设置文本为红色textStyle: {color: red} } legend: {data: [Email, Union Ads, Video Ads, Direct, Search Engine, customLegend ] }注意事项&#xff1a;series里面也必须配置与legend相对…

offer7.重建二叉树

根据二叉树的前序遍历和中序遍历重建二叉树 问题描述&#xff1a;输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如&#xff0c;输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3…

数采物联仪表识别软件使用说明_V5.1

用户手册 数采物联仪表识别软件使用说明 1.说明 1.1 识别主程序为CDialRecService.exe 1.2 支持多种类型的数字仪表识别。 1.3 支持手动框选和自动仪表区域识别框选2种模式。手动框选不需要训练,识别速度快,但是对仪表移动容错较差,必须保证摄像头和仪表的相对位置不变。自…

宠物洗澡机缺水提醒功能如何实现

如今随着养宠物的人越来越多&#xff0c;宠物用品也越来越多&#xff0c;宠物洗澡机也为养宠物的人带来很大方便&#xff0c;在宠物洗澡机内部通常会加一个缺液提醒功能&#xff0c;那么宠物洗澡机缺水提醒功能如何实现&#xff0c;其实只需加一个光电液位传感器即可。 光电液…

开放签电子签章,让签字有迹可循

开放签&#xff08;企业版&#xff09;V2.0.5版本上线后&#xff0c;系统支持一键查询电子文件的签署操作记录&#xff0c;支持一键生成详细的签署记录报告&#xff0c;详细请看下图&#xff1a; 1、操作记录详情&#xff1a; 从合同发起、填写、签署、撤销等环节全流程展示操…

Python学习篇:PyCharm的基本使用教程(二)

目录 1 前言 2 创建Python项目 3 创建Python文件 4 编写 Hello World 并运行 5 PyCharm界面简介 1 前言 PyCharm的使用贯穿整个Python的学习&#xff0c;所以单独拿出来出教程不合适&#xff0c;说多了对于新手来说也还是不明白&#xff0c;这里我们先从学习开始前大家需…

【论文阅读】XuanYuan: An AI-Native Database

XuanYuan: An AI-Native Database 这篇文章主要是讨论了AI4DB 和 DB4AI 集成的数据库架构&#xff0c;以此提出了AI原生的数据库&#xff0c;架构如下&#xff1a; 而具体发展阶段来说&#xff0c;AI原生数据库主要由五个阶段组成 第一阶段&#xff0c;AI建议型数据库&#xf…

MQ运行时遇到的问题

遇到的问题描述&#xff1a;我在绑定通道的时候发现了通道绑定失败&#xff0c; 原因&#xff1a; 在代码中我第一次创建交换机的时候类型的默认没有修改成topic类型的&#xff0c;导致后面的代码再去进行注册的时候并没有实现那个类型 解决&#xff1a; 更改代码&#xff0…

对不起,AI大模型不是风口

“我们正处在全新起点&#xff0c;这是一个以大模型为核心的人工智能新时代&#xff0c;大模型改变了人工智能&#xff0c;大模型即将改变世界。”——5月26日&#xff0c;百度创始人、董事长兼CEO李彦宏先生在2023中关村论坛发表了《大模型改变世界》演讲。 李彦宏指出&#…

S7---代码编译和固件下载

目录 1.代码下载 2. 工具安装 3.环境变量 4.驱动安装 5.代码编译 6.固件下载 S7和S7 Pro Gen 1音频平台 S7 Gen 1音频平台基于QCC722x蓝牙音频SoC&#xff0c;针对耳塞和其他便携式和可穿戴应用。 S7 Pro Gen 1音频平台基于QCC722x蓝牙音频SoC和QCP7321微电源Wi-Fi收发器…

Nacos2.3.x动态刷新不生效

1.日志分析 Ignore the empty nacos configuration and get it based on dataId[null.yaml] & group[DEFAULT_GROUP] Ignore the empty nacos configuration and get it based on dataId[null-local.yaml] & group[DEFAULT_GROUP] 从日志文件分析中可以得到 dataId[n…

TypeScript 中 const enum 和 enum 的核心区别在哪?日常开发应该使用哪个?

编译结果 enum 会生成一个对象&#xff0c;引用的地方保持对其引用 const enum 会擦除 enum 定义的代码&#xff0c;引用的地方会生成 inline code 使用enum&#xff1a; 使用const enum&#xff1a; PS&#xff1a;编译选项 preserveConstEnums 可以使 const enum 不去擦除 …

深度学习之半监督学习:一文梳理目标检测中的半监督学习策略

什么是半监督目标检测&#xff1f; 传统机器学习根据训练数据集中的标注情况&#xff0c;有着不同的场景&#xff0c;主要包括&#xff1a;监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性&#xff0c;在介绍半监督目标检测方法之前&#xff0c;我…

镜像私服Harbor 2.0安装-探索工厂模式:如何优化Harbor项目管理与API集成

文章目录 一、docker-compose1. 下载 Docker Compose&#xff1a;2.添加执行权限&#xff1a;3.验证安装 二、安装harbor 2.01.下载harbor离线包2. 根据需求配置 Harbor3.给harbor创建SSL证书4.预编译harbor5. 安装并启动 Harbor (必须到你安装的目录) 三、登录harbor的web页面…

哈尔滨如何选择合适的等保测评机构?

选择合适的等保测评机构确实需要细致考虑&#xff0c;您提到的八个方面已经非常全面&#xff0c;涵盖了资质、专业能力、服务质量和合规性等多个关键点。为了进一步确保所选机构的可靠性&#xff0c;还可以考虑以下几点&#xff1a; 1.技术创新与工具&#xff1a;了解测评机构是…

鸿蒙生态应用开发白皮书V3.0

来源&#xff1a;华为&#xff1a; 近期历史回顾&#xff1a;

红酒SPA:享受放松与奢华的很好结合

在繁忙的都市生活中&#xff0c;人们总是渴望找到一片宁静的天地&#xff0c;让疲惫的身心得到很好的放松。而红酒SPA&#xff0c;作为一种不同的放松方式&#xff0c;将红酒的浪漫与SPA的舒适整合&#xff0c;为现代人带来了一场奢华享受。 一、红酒的浪漫与SPA的舒适 红酒&a…