雷池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、雷池常见问题排查

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QueryClientProvider is not defined

QueryClientProvider is not defined 运行一个svelte的项目&#xff0c;报错如上&#xff0c;前后查找解决不了&#xff0c;然后没办法&#xff0c; 本来是用yarn 安装的依赖&#xff0c;改用npm install&#xff0c;再次运行就成功了

制氢厂氢气泄漏安全监测:氢气传感器守护“氢”安全

随着全球能源结构的转型和清洁能源的需求日益增长&#xff0c;氢能作为一种高效、清洁的能源载体&#xff0c;受到了广泛关注。制氢厂作为氢能产业的重要组成部分&#xff0c;其安全问题也日益凸显。在制氢过程中&#xff0c;氢气泄漏是潜在的安全隐患之一&#xff0c;因此&…

centos 安装zabbix 6.4.16 server client

Zabbix Server 采用源码包部署&#xff0c;数据库采用 MySQL8.0 版本&#xff0c;zabbix-web 使用 nginxphp 来实现。具体信息如下&#xff1a; 软件名 版本 安装方式 Zabbix Server 6.4.16 源码安装 Zabbix Agent 6.4.16 源码安装 MySQL 8.0.28 yum安装 Nginx 1.…

大数据学习之Clickhouse

Clickhouse-23.2.1.2537 学习 一、Clickhouse概述 clickhouse 官网网址&#xff1a;https://clickhouse.com/ ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 OLTP(联机事务处理系统)例如mysql等关系型数据库&#xff0c;在对于存储小数据量的时候&#xff…

基于IDEA调试模式与StopWatch工具类如何优雅实现Java代码执行时间检测统计

目录 1.1、前言1.2、开发环境1.3、传统方式实现1.4、优雅方式实现1.4.1、StopWatch工具简介1.4.2、实现步骤 1.1、前言 作为程序员在我们的日常编码过程中经常需要统计一段代码或者一个方法的执行时间&#xff0c;尤其是当以一个接口的执行响应时间比较长需要优化的时候&#x…

基于PHP技术的校园论坛设计的设计与实现08586

基于PHP技术的校园论坛设计的设计与实现 摘 要 本项目旨在基于PHP技术设计与实现一个校园论坛系统&#xff0c;以提供一个功能丰富、用户友好的交流平台。该论坛系统将包括用户注册与登录、帖子发布与回复、个人信息管理等基本功能&#xff0c;并结合社交化特点&#xff0c;增强…

Vulkan学习——渲染3D模型

摘要&#xff1a;本文简要描述了Vulkan渲染一个3D模型需要做的事情&#xff0c;不会对太细节的内容进行深究。   关键字&#xff1a;Vulkan,Render,3D 源码 1 简介 1.1 Vulkan简介 Vulkan是一个低开销、跨平台的二维、三维图形与计算的应用程序接口&#xff08;API&#x…

创意无界:探索国产创成式填充的无限潜力

在数字艺术与设计的世界中&#xff0c;创新技术不断涌现&#xff0c;而"创成式填充"无疑是其中的一颗璀璨新星。今天米兔要安利的这款国产ps插件-StartaAI拥有强大的AI功能&#xff0c;其AI扩图和局部重绘更是成为PS创成式填充的国产平替。 什么是创成式填充&#x…

PADS设置板框提示不闭合的解决办法

一般是选中join&#xff0c;提示不闭合&#xff0c;不能转成板框&#xff0c;其实直接点击close就好了&#xff0c;报错提示里就有提示&#xff0c;让用close命令试试

基于SpringBoot扶农助农政策管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

html页面可加密吗?

问&#xff1a;html页面可加密吗&#xff1f; 答&#xff1a;可以。 问&#xff1a;怎样加密&#xff1f; 答&#xff1a;看图&#xff1a;

VSCode无法识别 node、npm

一、前提 电脑新安装了node.js&#xff0c;在cmd查看node和npm版本没有问题&#xff0c;但是在VSCode无法识别 1.cmd查看版本&#xff1a; 2.VSCode报错信息&#xff1a; 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果…

面经-计算机基础

1.计算机⽹络 1.1 OSI与TCP/IP各层的结构与功能,都有哪些协议? 计算机网络体系结构 应⽤层 应⽤层 (application-layer &#xff09;的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。 应⽤层协议定 义的是应⽤进程&#xff08;进程&#xff1a;主机中正在运⾏的程序&…

redis,memcached,nginx网络组件

课程目标&#xff1a; 1.网络模块要处理哪些事情 2.reactor是怎么处理这些事情的 3.reactor怎么封装 4.网络模块与业务逻辑的关系 5.怎么优化reactor? io函数 函数调用 都有两个作用&#xff1a;io检测 是否就绪 io操作 1. int clientfd accept(listenfd, &addr, &l…

Eclipse配置Tomcat时无Apache选项问题

有可能你会遇到&#xff0c;安装最新版本Eclipse&#xff0c;但是 Window——Preferences——Servers——Runtime Environments。发现没有Apache选项。&#xff0c;这是因为&#xff0c;默认没有安装J2EE组件&#xff0c;我们可以通过手动安装&#xff0c;来解决这个问题。 一…

硬件实用技巧:cadence Aleego创建焊盘过程

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140110911 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

<电力行业> - 《第11课:配电(1)》

1 配电 配电&#xff08;power distribution&#xff09;是在电力系统中直接与用户相连并向用户分配电能的环节。配电系统由配电变电所、高压配电线路、配电变压器、低压配电线路以及相应的控制保护设备组成。 1.1 概念 配电系统是由多种配电设备&#xff08;或元件&#xf…

vue2中vuedraggable设置部分元素不可拖拽,不可移动

文章目录 前言1、版本2、vuedraggable页面的具体使用3.核心(1) move官网说明(2) 注意点&#xff1a;(3) onDraggableMove方法 总结 前言 需求&#xff1a;左边是复选框&#xff0c;右边是选中的数据&#xff0c;编辑传入的数据不可拖拽&#xff0c;不可移动&#xff08;其实还…

Datax快速使用之牛刀小试

前言 一次我发现业务他们在用 datax数据同步工具&#xff0c;我尤记得曾经 19 年使用过&#xff0c;并且基于当时的版本还修复了个 BUG并且做了数据同步管道的集成开发。没想到时间过的飞快&#xff0c;业务方基于海豚调度 2.0.6 的版本中有在使用&#xff0c;由于业务方还没有…

【启明智显活动分享】 启明与你,上海慕尼黑电子展不见不散!

启明与你&#xff0c;上海慕尼黑电子展不见不散&#xff01;&#x1f389; &#x1f50d; 展会现场&#xff0c;你将亲眼目睹RTOS、LINUX、Android全系列方案及产品的精彩展示。从经典到前沿&#xff0c;一站式满足你的技术探索需求。 &#x1f4a1; 更值得期待的是&#xff0…