Linux系统安全:从面临的攻击和风险到安全加固、安全维护策略(文末有福利)

1. Linux面临的攻击与风险

1.1. Linux系统架构

在这里插入图片描述

Linux系统架构解读:

  • 用户之间隔离
  • 内核态与用户态之间隔离
  • 用户进程一般以低权限用户运行
  • 系统服务一般以特权服务运行
  • 用户态通过系统调用进入内核态
  • 内核对系统资源进行管理和分配

1.2. Linux系统常见安全威胁

1.2.1. 远端网络攻击

  • 用户仿冒攻击:通过伪造用户ID,暴力破解用户密码,登录系统提供的网络服务
  • 网络DOS攻击:被远程用户进行拒绝服务攻击,如SYN Flood攻击
  • 网络服务/进程攻击:对外开放了网络端口的业务进程存在缺陷可被远端攻击

1.2.2. 本地进程攻击

  • 业务进程被攻击:攻击者利用业务进程的缺陷进行攻击,导致正常业务进程无法正常工作
  • 内核被攻击:内核运行在特权态,攻击者利用内核漏洞进行攻击,从而提权
  • 系统服务被攻击:系统服务一般运行在高权限,攻击者利用系统服务的缺陷进行提权,从而对系统进行更大的破坏,如获取系统关键信息,篡改系统文件

1.2.3. 近端物理攻击

  • 镜像篡改攻击:设备加载的固件被替换或篡改,导致运行恶意系统
  • 物理端口被攻击:利用系统的串口等物理端口进行攻击,绕过登录或导致系统无法正常工作,或泄露系统关键信息

1.3. 攻击的常用步骤

踩点–>扫描–>攻击–>提权–>消除日志或植入后门

  • 踩点:信息搜集、端口扫描
  • 扫描:漏洞扫描、利用已知漏洞、不安全配置,弱密码/口令
  • 攻击:暴力破解、定向挖掘目标的未知漏洞
  • 提权:利用系统弱点进行提权
  • 消除日志:篡改日志,隐藏踪迹
  • 植入后门:植入木马,持续控制

以上攻击步骤与2009年 Lockheed Martin 公司提出的杀链(Kill Chain)理论很相似。杀链其实就是攻击者进行网络攻击时所采取的步骤(1侦察 -> 2武器化 -> 3交付 -> 4利用 -> 5安装 -> 6命令和控制 -> 7针对目标的活动)。若要了解更多杀链理论可以参阅博主文章《「 网络安全常用术语解读 」杀链Kill Chain详解》。

1.4. 应对攻击常用的防御手段

  • 针对踩点:屏蔽系统敏感信息
  • 针对扫描、攻击:服务安全:关闭非必要端口,对网络进行隔离,使用安全协议; 系统漏洞防御机制;最小化安装;保持系统更新;认证与鉴权
  • 针对提权:文件访问控制;最小化授权;应用隔离机制
  • 针对消除日志、植入后门:安全维护

2. 防御系统信息泄露

2.1. Linux系统信息泄露的风险

  • 网络服务暴露系统详细信息
  • 网络协议栈暴露系统信息
  • 系统配置文件默认提供内核版本信息
  • 通过google、shodan等搜索引擎可获取大量信息,比如,通过goole获取目标系统的操作系统及版本信息
  • 内核接口泄露地址布局等信息
  • 登录打印泄露系统信息,如 cat /etc/issue.net telnet 10.67.188.34

Shodan是世界上第一个用于互联网连接设备的搜索引擎。了解互联网智能如何帮助攻击者做出更好的决策。

2.2. 通过端口扫描获取目标信息

攻击者使用端口扫描工具Nmap可获取系统对外提供的网络服务、操作系统版本等详细信息

2.3. 通过Banner隐藏系统信息

修改系统的issue、issue.net文件内容:
echo "Authorized uses only." >/etc/issue.net
修改OpenSSH的banner信息
etc/ssh/sshd_config中配置Banner /etc/issue.net

2.4. 隐藏系统网络协议栈信息

通过ICMP报文可获取子网信息,可执行如下命令防御

iptables -A INPUT -p icmp --icmp-type address-mask-request -j DROP
iptables -A OUTPUT -p icmp --icmp-type address-mask-reply -j DROP

通过ICMP报文获取目标系统时间戳信息(可用来猜测随机数),可执行如下命令防御

iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP
iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP

2.5. 隐藏内核地址布局信息

特权态地址存在泄露风险,系统中的普通用户通过查看内核导出的接口,可获取内核地址布局信息,内核地址布局信息被用户态获取,可使 KASLR 失效。

内核地址信息需要保护,防止普通用户通过 dmesg 、串口打印等手段获取,绕过 KASLR
使用 sysctl 设置 kernel.kptr_restrict 值为 1,禁止用户态低权限用户查看内核打印的地址。

3. 对系统加固以防御远程攻击

3.1. 服务安全

3.1.1. 关闭非必要端口

每个对外监听的网络端口,对攻击者而言都是一个攻击入口,可使用端口查询命令( netstat、lsof 等)审视系统所有监听端口的合理性,使用 iptables 对系统中不对外暴露的端口进行过滤,命令如下

iptalbes -A INPUT -p tcp --dport XXX -j DROP
iptalbes -A INPUT -p udp --dport XXX -j DROP

3.1.2. 对网络进行隔离

  • 对于第三方组件监听的端口,可使用 iptables 对端口进行过滤
  • 当系统同时连接多个网段时,应对网段进行隔离,以减少攻击面
  • 业务进程须绑定固定的IP地址,防止监听所有的IP地址0.0.0.0
  • 不对外提供服务的端口,应仅在本地监听127.x.x.x

3.1.3. 使用安全协议

  • 使用明文通信协议存在通信内容被嗅探的风险
  • 推荐使用安全协议的开源组件,开源的组件风险更容易发现和修复
  • 自研服务应使用加密协议,且要对传输进行加密

3.2. 系统漏洞防御机制

3.2.1. 栈保护

攻击者利用堆栈溢出漏洞时,通常会覆盖函数的返回地址,以控制程序执行流:

  • gcc编译时使用-fstack-protector-strong选项(使用-all选项也可以,但会影响性能和程序包大小)
  • 在函数的栈缓冲区(buffer)和控制信息(RBP)间插入一个canary字段,当缓冲区溢出时,在返回地址被覆盖前canary字段会先被覆盖。通过检查canary字段的值是否被修改,就可以判断是否发生了溢出攻击。
    在这里插入图片描述

3.2.2. 地址随机化ASLR

  • 用户态地址随机化ASLR

    • 将进程的某些内存空间地址进行随机化来增大攻击者预测目的地址的难度
    • 通过sysctl来对kernel.randomize_va_space进行设置,设置为2,可获得最大的随机化能力
    • gcc编译程序时加入"-fPIE -pie"选项开启PIE,实现代码段和数据段的随机化
  • 内核地址随机化KALSR

    • 将内核镜像的基地进行随机化偏移
    • 每次启动后的内核地址随机
    • 增加攻击者对漏洞进行利用的难度

3.2.3. 堆栈不可执行NX(DEP)

攻击者发现目标系统的漏洞后,通常会尝试将恶意代码注入到可控的数据区。
NX(No-excute)通过将数据区所在内存页标识为不可执行,当程序溢出成功并跳转到注入的代码时,由于数据区不可执行,此时CPU就会抛出异常,而不执行恶意指令。
可通过如下命令对程序开启或关闭DEP保护:

gcc -z,noexecstack 开启NX保护
gcc -z,execstack 禁止NX保护

3.2.4. 控制流完整性CFI

随着攻击技术发展,主流漏洞利用方式转变为代码重用攻击,ROP是Androd的主要ROOT工具。CFI(Controle Flow Integrite)是防御代码重用攻击的主流方案,早在 2005 年 Micosoft 就提出此概念,其核心思想是对所有程序跳转做校验,跳转包括间接函数调用,函数返回(加上函数头签名)。

3.2.5. 面向返回的编程ROP

面向返回的编程(Return-oriented Programming,ROP)是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。

3.3. 最小化安装

系统若安装了大量的冗余软件包,将会扩大系统的攻击面
非业务所需的网络服务会打开新的端口
多余的系统服务会以高权限运行,提高本地攻击的风险
系统上的开发 、调试工具给本地攻击者带来极大便利

常见的开发调试工具
gcc/gdb/objdump/strace等
Linux内核的源码 和KO编译环境
常见的网络嗅探工具
tcpdump/、tshark、wireshark

3.4. 保持系统更新

漏洞SLA周期
高危:<=3个月
中危:<=6个月
低危:在下个维护版本修复

3.5. 认证与鉴权

3.5.1. 避免root直接用于远程登录

编辑 openssh 服务配置文件 sshd_conifg , 查找 PermitRootLogin 配置项,将设置为No

3.5.2. PAM机制

PAM是Linux上的可插拨认证模块机制,通过提供一些动态链接库和一套统一的api,将系统提供的服务和该服务的认证方式分开,使得系统管理呐可以根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段

PAM的验证类别

  • auth 主要验证用户的身份
  • acccount 主要验证用户是否具备正确的权限
  • password 修改口令的验证(如口令的合法性)
  • session 会话期间对用户的管理和环境的配置

常用的PAM模块

  • 使用pam_pwhistory禁用历史密码
  • 使用pam_tally2对登录尝试次数进行限制
  • 使用pam_cracklib对口令复杂度检查

3.5.3. 口令有效期

长期使用同一个口令会增加被破解的可能,Shadow套件对口令的时效配置文件是/etc/login.defs,通过以下配置项对密码的时间限制进行设置:

PASS_MAX_DAYS 90
PASS_MIN_DAYS 00
PASS_WARN_AGE 30
PASS_MIN_LEN 6

用户口令遗忘后,管理员将用户口令重置,用户重置第一次登录系统时必须修改口令,以保证口令不被扩散。
passwd -e <用户名>

4. 对系统加固以防御本地攻击

4.1. 文件访问控制

4.1.1. 分区挂载安全

对于可插拔的存储设备,上面可能会存在设备文件、具有SUID权限的文件,当这些存储设备被挂载到系统后,将带来极大安全隐患。
使用安全挂载选项,去除外部设备中的特殊文件:

  • nosuid:表示分区的二进制文件的setuid权限不生效
  • noexec:表示分区不能包含可执行的二进制文件
  • nodev:表示分区不能包含特殊设备(软链接指向本地设备文件)

4.1.2. 文件的访问权限

4.1.2.1. umask

umask(默认文件权限666,文件夹777) 为用户创建权限掩码,是创建文件或文件夹时默认权限的基础,用户在创建时,文件的默认权限-掩码的权限就是文件的实际权限。
举例,umask 为 022 时:

  • 文件权限:666-022=644
  • 文件夹权限:777-022=755

如何设置Umask
用户可在命令行下执行umask命令,修改默认umask,如umask 077,要全局生效,可以将umask写在/etc/profile中。

4.1.2.2. setuid

具备setuid位的文件,在运行时的权限为文件owner的权限,使用find / -type f -perm /4000 -0 -perm /2000查找具有 setuid 权限的文件。

全局可写目录是攻击者放置恶意程序的首先目标,主要安全风险如下:

  • 全局可写目录下的文件,是文件替换攻击的高发区
  • 全局可写目录防止与独立分区,并设置 noexec,nosuid 等挂载权限
  • 全局可写目录(如 /tmp)的常用保护手段:
    • 设置目录粘滞位:使用chmod +t /dir,则dir目录下的文件只有文件owner才能删除
    • 软件链接保护:c通过sysctl设置fs.protected_symlinks值为1,只有目标文件的Owner与软件链接的Owner一样时,才能通过软链接访问目标文件
    • 硬链接保护:sysctl设置fs.protected_hardlinks值为1,阻止无权限的用户创建文件的硬链接
4.1.2.3. 应用MAC机制

DAC(自主访问控制机制)

  • 根据运行时的身份决定访问权限
  • 文件目录的rwx权限划分太简单
  • root身份运行的程序具有最高权限,无法限制

MAC(强制访问控制机制)

  • 进程需要先通过DAC权限检查,并通过MAC权限检查后,才能访问所需资源
  • 所有访问控制是基于策略设定的,普通用户无权更改
  • MAC相对DAC不是替换,而是增加了一层控制
  • 常用的MAC有SELinux(如rehat)、AppArmor(ubuntu)

4.2. 最小化授权

4.2.1. 避免使用root运行应用

使用root运行应用存在极大风险,若存在堆栈溢出漏洞,攻击者可获取管理员权限。

4.2.2. 通过capability进行授权

Linux提供了38个权能(capability),可对特权进行分隔以降低安全风险:

  • 对二进制可执行文件添加权能,可赋予其运行实体对应的权限
  • 合理对进程进行capability授权,可避免setuid权限位的使用
  • 避免授予过大特权,如 CAP_SYS_ADMIN

命令举例:
添加cap后普通用户恢复ping的使用权限
set cap "cap_net_admin,cap_net_raw+ep" /bin/ping
查看ping命令的capablity
getcap /bin/ping
删除添加的所有capablities
setcap -r /bin/ping

4.2.3. 通过sudo进行授权

在·/etc/sudoer·文件中,配置普通用户可以特权执行的命令
配置格式:User Host=(Runas)[Tag:]Commands

配置举例:

test ALL=(ALL) NOPASSWD: /sbin/lspci
test用户执行lspci,提示无权限
test用户执行sudo lspci就OK

4.3. 应用隔离机制

攻击者发现目标进程漏洞后,在进行漏洞利用时,经常会通过调用 syscall 来达到特定目的,比如当攻击者劫持程序执行流后,可通过execve这样的syscall来执行命令。

seccomp 是内核中的系统调用过滤机制。正常情况下,程序可以使用所有的 syscall 。使用seccomp 可以在程序中禁用某些syscall,这样就算攻击者劫持了程序流也只能调用部分受限的 syscall,减少程序被攻击后的影响。

4.4. 防范物理攻击

4.4.1. 安全启动

对bootloader(如grub)的配置修改进行口令认证
在具备可信计算条件的硬件上实现安全启动

4.4.2. 防止物理端口绕过认证

  • 攻击者连接串口后,可以直接访问操作系统shell,可能导致敏感信息泄露,或破坏系统完整性
  • 外部面板不可见但板内的能对系统进行管理或调试的内部串口、内部网口必须有接入认证机制
  • 如不能提供接入认证机制,则必须禁用/删除该接口的管理、调试功能

5. Linux安全维护

5.1. 日志审计

5.1.1. 机制与工具

  • 系统日志syslog:传统的系统日志服务,记录系统中的各种信息,如程序通过syslog接口记录的日志,硬件信息等。常用的系统日志组件为:syslog-ng,rsyslog.
  • 内核审计 audit:记录内核信息,如系统调用,文件读写,权限变更等。相比用户态的syslog,audit能记录更多的内核细节,能实现更细粒度的审计。

5.1.2. 常用的日志事件

  • 登录失败
  • 用户与组的更改
  • 文件的未授权访问

5.1.3. 对日志的保护

  • 攻击者控制目标系统后,往往会对日志进行篡改,以掩盖入侵痕迹
  • 对日志文件设置严格的访问权限,防止普通用户查看和修改
  • 对日志设置轮转(logrotate)
  • 将日志发送到日志服务器

5.2. 使用配置审计工具扫描系统配置

审计对象包括:OS、DB、Webserver、Nginx、路由器等。

5.3. 使用Nessus审计系统安全

Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。对应渗透测试人员来说,Nessus是必不可少的工具之一。

只要目标IP,Nessus就可通过内置的NASL漏洞插件对目标进行扫描。主要支持OS、DB、Web应用和常用服务/协议等对象相关的弱密码、已知漏洞扫描及CIS Benchmark配置扫描,发现安全漏洞、风险。

5.4. 文件完整性

5.4.1. 常见的rootkit

攻击者控制目标系统后,为了达到持续控制和获取机密数据的目的,往往会在系统中植入后门,常称其为rootkit。
用户态rootkit

  • 替换系统的认证程序,如sshd/login/PAM中的认证模块;
  • 替换常用的状态查看工具如ls/ps/find/netstat等,隐藏恶意进程、端口及文件
  • 在cron等定时任务中周期运行恶意程序
  • 往运行中的进程注入恶意代码

内核态rootkit

  • 插入恶意KO,支持系统调用
  • 植入提权接口

5.4.2. 检测与度量

IMA(Intergrity Measurement Architecture,完整性度量框架)

  • 实现当应用程序运行、动态链接库加载、内核模块加载时,将文件做一次度量,并创建与维护的一个度量列表ML,将度量结果扩展到PCR寄存器;
  • TPM的PCR寄存器只支持重置与扩展,因此恶意代码无法进行任意的篡改。而在执行恶意的操作前,系统已经将恶意代码的度量值写入到PCR中,因此 恶意代码无法绕过度量机制 。

AIDE(Advanced Instruction Detection Enviroment,高级入侵检测环境)

  • 为系统文件生成初始的校验码(文档数据库),然后每次执行检查命令时,AIDE会将之前生成的校验码和当前文件的校验码进行对比,并且输出报告。

内核模块签名

  • KO编译时进行签名
  • KO插入内核时进行签名校验

6. 附:Linux系统安全入门学习资料

  • Linux操作系统安全(入门).pdf (访问密码: 6277)

  • Linux操作系统安全(进阶).pdf (访问密码: 6277)


推荐阅读

一、网络安全常用术语解读系列(持续更新中)

  • 「 网络安全常用术语解读 」杀链Kill Chain详解
  • 「 网络安常用全术语解读 」点击劫持Clickjacking详解
  • 「 网络安常用全术语解读 」悬空标记注入详解
  • 「 网络安常用全术语解读 」内容安全策略CSP详解
  • 「 网络安全常用术语解读 」同源策略SOP详解
  • 「 网络安常用全术语解读 」静态分析结果交换格式SARIF详解
  • 「 网络安全常用术语解读 」安全自动化协议SCAP详解
  • 「 网络安常用全术语解读 」通用平台枚举CPE详解
  • 「 网络安全常用术语解读 」通用缺陷枚举CWE详解
  • 「 网络安全常用术语解读 」通用漏洞披露CVE详解
  • 「 网络安全常用术语解读 」通用漏洞评分系统CVSS详解
  • 「 网络安全常用术语解读 」漏洞利用交换VEX详解
  • 「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐
  • 「 网络安全常用术语解读 」通用攻击模式枚举和分类CAPEC详解
  • 「 网络安全常用术语解读 」网络攻击者的战术、技术和常识知识库ATT&CK详解

二、典型安全漏洞系列(持续更新中)

  • 「 典型安全漏洞系列 」13.信息泄露漏洞
  • 「 典型安全漏洞系列 」12.OAuth 2.0身份验证漏洞
  • 「 典型安全漏洞系列 」11.身份验证漏洞详解
  • 「 典型安全漏洞系列 」10.跨域资源共享CORS漏洞详解
  • 「 典型安全漏洞系列 」09.权限提升漏洞详解
  • 「 典型安全漏洞系列 」08.文件上传漏洞详解
  • 「 典型安全漏洞系列 」07.OS命令注入详解
  • 「 典型安全漏洞系列 」06.路径遍历(Path Traversal)详解
  • 「 典型安全漏洞系列 」05.XML外部实体注入XXE详解
  • 「 典型安全漏洞系列 」04.服务器端请求伪造SSRF详解
  • 「 典型安全漏洞系列 」03.跨站请求伪造CSRF详解
  • 「 典型安全漏洞系列 」02.SQL注入详解
  • 「 典型安全漏洞系列 」01.跨站脚本攻击XSS详解

三、CISSP考试通关笔记(已完结)

  • 「 CISSP学习笔记 」08. 安全运营
  • 「 CISSP学习笔记 」07. 安全评估与测试
  • 「 CISSP学习笔记 」6. 安全开发
  • 「 CISSP学习笔记 」5. 安全架构和工程
  • 「 CISSP学习笔记 」4. 身份和访问管理
  • 「 CISSP学习笔记 」3.通信与网络安全
  • 「 CISSP学习笔记 」2.资产安全
  • 「 CISSP学习笔记 」1.安全与风险管理
  • 「 CISSP学习笔记 」0.开篇
    在这里插入图片描述

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

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

相关文章

Qt/C++音视频开发71-指定mjpeg/h264格式采集本地摄像头/存储文件到mp4/设备推流/采集推流

一、前言 用ffmpeg采集本地摄像头&#xff0c;如果不指定格式的话&#xff0c;默认小分辨率比如640x480使用rawvideo格式&#xff0c;大分辨率比如1280x720使用mjpeg格式&#xff0c;当然前提是这个摄像头设备要支持这些格式。目前市面上有一些厂家做的本地设备支持264格式&am…

目标检测——YOLOv7算法解读

论文&#xff1a;YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors (2022.7.6) 作者&#xff1a;Chien-Yao Wang, Alexey Bochkovskiy, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2207.02696 代码&#xff1a;h…

C++_第八周做题总结

id:45 A.Equation(类与对象构造) 题目描述 建立一个类Equation&#xff0c;表达方程ax2bxc0。类中至少包含以下方法&#xff1a; 无参构造&#xff08;abc默认值为1.0、1.0、0&#xff09;与有参构造函数&#xff0c;用于初始化a、b、c的值&#xff1b; set方法&#xff0c;…

VS2019中配置C++ OpenCV 4.5.4完整指南

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

STM32标准库ADC和DMA知识点总结

目录 前言 一、ADC模数转换器 &#xff08;1&#xff09;AD单通道 &#xff08;2&#xff09;AD多通道 二、DMA原理和应用 &#xff08;1&#xff09;DMA数据转运&#xff08;内存到内存&#xff09; &#xff08;2&#xff09;DMAAD多同道&#xff08;外设到内存&#x…

24深圳杯数学建模挑战赛A题6页初步思路+参考论文+保姆级答疑!!!

问题1:单个残骸的精确位置定位 建立数学模型&#xff0c;分析如果要精准确定空中单个残骸发生音爆时的位置坐标&#xff08;经度、纬度、高程&#xff09;和时间&#xff0c;至少需要布置几台监测设备&#xff1f;假设某火箭一级残骸分离后&#xff0c;在落点附近布置了7台监测…

【热门话题】AI作画算法原理解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 AI作画算法原理解析AI作画算法概述基础原理&#xff1a;机器学习与深度学习卷积…

Bentley二次开发教程24-交互式类工具

交互式工具概念简述 本次内容主要涉及到交互式工具的使用&#xff0c;在MicroStation中&#xff0c;超过一半的功能都是以交互式工具的形式而存在的&#xff0c;因此交互式工具在MicroStation二次开发中便显得非常重要。当我们的鼠标或键盘在视图中产生交互操作时&#xff0c;…

黑马微服务课程2

课程地址&#xff1a;2024最新SpringCloud微服务开发与实战&#xff0c;java黑马商城项目微服务实战开发&#xff08;涵盖MybatisPlus、Docker、MQ、ES、Redis高级等&#xff09;_哔哩哔哩_bilibili 课程名称&#xff1a;2024最新SpringCloud微服务开发与实战&#xff0c;java…

《A More Fine-Grained Aspect-Sentiment-Opinion Triplet Extraction Task》阅读笔记

一、论文简介 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;情感分析一直是一个热门的研究主题&#xff0c;它帮助机器理解文本中的情感倾向。随着技术的进步&#xff0c;研究者们不断推动情感分析向更细粒度的方向发展&#xff0c;即从简单的正负情感判断&#…

【VueUse】重新定义状态管理在 Vue 中的体验

在 Vue 生态系统中&#xff0c;状态管理一直是开发者们关注的焦点之一。而随着 VueUse 的出现&#xff0c;我们迎来了一种全新的方式来处理状态管理&#xff0c;它让我们能够以更简单、更灵活的方式来管理应用程序的状态。 在本文中我们将深入探讨 VueUse 中与状态管理相关的内…

StrongSORT——基于DeepSORT,提高多目标跟踪的准确性和鲁棒性

1、概述 1.1 DeepSORT DeepSORT算法是在SORT基础上发展起来的一种多目标跟踪算法。SORT算法结合了目标检测器和跟踪器&#xff0c;其中跟踪器的核心是卡尔曼滤波和匈牙利算法。 卡尔曼滤波用于预测目标在下一帧的位置和状态而匈牙利算法则用于将预测状态与实际检测结果进行最…

SpringCloud基础 Consul的引入

前言 首先是为什么引入consul这个组件 我们知道微服务分为很多个模块,这里模块中相互调用,我使用硬编码的模式是不好的 比如微服务模块需要更新的时候,我们使用硬编码的方式可能需要修改很多个地方 但是使用consul之后,就引入了注册中心,我们只需要将对应的服务注册为节点 这样…

android脱壳第二发:grpc-dumpdex加修复

上一篇我写的dex脱壳&#xff0c;写到银行类型的app的dex修复问题&#xff0c;因为dex中被抽取出来的函数的code_item_off 的偏移所在的内存&#xff0c;不在dex文件范围内&#xff0c;所以需要进行一定的修复&#xff0c;然后就停止了。本来不打算接着搞得&#xff0c;但是写了…

【论文阅读】EgoPCA: A New Framework for Egocentric Hand-Object Interaction

论文主要贡献 提出一种新的框架&#xff1a;Ego-HOI recognition by Probing, Curation and Adaption (EgoPCA)。构建了全面的预训练集&#xff0c;平衡的测试集&#xff0c;以及一个包含了微调策略的baseline。 在Ego-HOI达到了SOTA&#xff0c;并且建立了有效的机制方法。 …

【后端】git与python的结合使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、git介绍二、git常见使用三、git与python的结合使用四、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发…

【OceanBase系列】—— 常用运维操作(备忘)

作者简介&#xff1a; 花名&#xff1a;绪宁&#xff0c;OceanBase 数据库解决方案架构师 创建租户 方法一&#xff1a;OCP 创建 确认可分配资源 具体可以分配多少内存&#xff0c;可以通过【资源管理】查看各节点的剩余资源 2. 新建租户 3. 填写租户信息 zone 优先级主要是 p…

STM32玩转物联网实战篇:5.ESP8266 WIFI模块MQTT通信示例详解

1、准备开发板 开发板功能区分布图 开发板俯视图 2、实验讲解 在之前的章节中&#xff0c;已经讲解过了MQTT的通讯原理和组包过程&#xff0c;现在开始手把手的教大家用代码来实现连接MQTT平台以及数据的交互&#xff0c;实际上这篇文章已经拖更接近两年了&#xff0c;非常…

《QT实用小工具·三十九》仿 Windows10 画图3D 的颜色选择器, 但更加强大

1、概述 源码放在文章末尾 该项目实现了仿 Windows10 画图3D 的颜色选择器&#xff0c;功能更加丰富更加强大。 项目部分代码如下所示&#xff1a; import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import QtGraphicalEffects 1.15Item {id…

【leetcode面试经典150题】72. 从前序与中序遍历序列构造二叉树(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…