详解Linux系统安全:多人共用服务器,如何防止别人干“坏事”?

「Linux 底层原理」理解进程内存布局,掌握程序动态 本文节选自达人课《攻克 Linux 系统编程》 你写了一个多进程模型的服务器,但总感觉新进程启动地不干净,有时会有些父进程的东西掺和到子进程里来。 可如果让父进程在启动子进程之前做更多的计算,或者单纯多等一会,这种情况发生的概率便大大减少了,该系统的行为让人有点捉摸不透,其背后的原因是什么呢? 简单来讲,进程就是运行中的程序。更进一步,在用户空间中,进程是加载器根据程序头提供的信息将程序加载到... 阅读详情

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等

本文就讨论一下 Linux 系统和应用安全。我们知道,在开发一个应用的过程中,需要涉及代码、操作系统、网络和数据库等多个方面。所以,只是了解代码安全肯定是不够的,我们还需要了解常见的基础环境和工具中的安全机制,学会通过正确地配置这些安全机制,来提升安全保障。

谈到 Linux,我相信你每天都在使用 Linux 进行各种开发和运维操作。但是,大多数情况下,公司不会给每一个员工分配专有的 Linux 服务器,而是多个开发和运维共用一台 Linux服务器。那么,其他员工在使用 Linux 服务器的时候,会不会对我们自己的数据和进程产生影响呢?另外,我在 Web 安全中讲过,黑客可以通过很多漏洞控制 Linux 服务器,那我们又该如何避免和控制黑客的破坏呢?

一、如何理解Linux中的安全模型?

要解决这些安全问题,我们首先要了解一个安全模型,Linux 的安全模型。

我们先来看一下 Linux 的构成,Linux 可以分为内核层和用户层。用户层通过内核层提供的操作接口,来执行各类任务。

内核层提供的权限划分、进程隔离和内存保护的安全功能,是用户层的安全基础。一旦内核安全被突破(比如黑客能够修改内核逻辑),黑客就可以任意地变更权限、操作进程和获取内存了。这个时候,任何用户层的安全措施都是没有意义的。

既然 Linux 的内核安全这么重要,那我们是不是要在防护上付出大量的精力呢?事实上,正如我们不需要在开发应用时(尤其是使用 Java 这类相对高层的语言时),过多地关心操作系统相关的内容一样,我们在考虑 Linux 安全时,也不需要过多地考虑内核的安全,更多的是要考虑用户层的安全。所以,对于 Linux 内核层的安全,我们只需要按照插件漏洞的防护方法,确保使用官方的镜像并保持更新就足够了。

既然,使用最多的是用户层,那我们就来看一下,用户层的操作都有什么。

在 Linux 中,用户层的所有操作,都可以抽象为“主体 -> 请求 -> 客体”这么一个流程。比如,“打开 /etc/passwd”这一操作的主体是实际的用户,请求是读,客体是/etc/passwd 这个文件。

在这个过程中,Linux 内核安全提供了基于权限的访问控制,确保数据不被其他操作获取。Linux 用户层则需要确保权限的正确配置,这就是我开篇提到的,如何保证多人安全地共用服务器的关键,也是本文需要关注的重点内容。

二、黄金法则是如何在Linux系统中应用的?

现在我们知道了,Linux 系统安全防护的核心是正确配置用户层权限。那接下来,我们就从黄金法则的认证、授权和审计这三个方面来看一下,Linux 系统是如何进行权限配置的,这其中,又有哪些值得我们重点关注的安全选项。

1.Linux中的认证机制

Linux 系统是一个支持多用户的操作系统,它通过普通的文本文件来保存和管理用户信息。这其中,有 2 个比较关键的文件:/etc/passwd和/etc/shadow。

我们知道,在 Linux 中,/etc/passwd是全局可读的,不具备保密性。因此,/etc/passwd不会直接存储密码,而是用 x 来进行占位。那实际的用户密码信息,就会存储到仅 ROOT 可读的/etc/shadow中。

在/etc/shadow中,除了加密后的密码,也保存了诸如密码有效天数、失效多少天告警之类的密码管理策略。我们可以通过 Chage 命令来对密码管理策略进行修改,比如,通过下面的 Chage 命令,就可以强制 Test 用户在 60 天内必须对密码进行修改。通过这样的方式,就可以降低密码泄漏的可能性了。

chage-M60test

因为认证这个功能是由 Linux 内核来提供的,所以在用户层,我们需要关心的安全问题,就是弱密码导致的身份信息泄漏。为了解决这个问题,在/etc/shadow中,我们可以制定适当的密码策略。除此之外,我们也可以通过John the Ripper,使用已知的弱密码库,来对 Linux 中的弱密码进行检测。下面的命令,就是使用 John the Ripper 检测弱密码。

unshadow/etc/passwd/etc/shadow>mypasswd
johnmypasswd
john--showmypassw

2.Linux中的授权机制

在“黄金法则”中,认证只是第一步,它提供了一个可信的身份标识。有了这个身份标识之后,就需要通过授权,来限制用户能够发起的请求了。

在 Linux 中,客体只有文件和目录两种,针对这两种类型的客体,Linux 都定义了读、写和执行这三种权限。你可以通过我总结的这张对比表格看到,文件和目录在这三种权限上的区别。

除此之外,Linux 还提供了一些额外的权限标签,来进行更细粒度地权限控制。

比如,Linux 提供了文件属性的概念,来对文件设置更多的保护。通过chattr +i/etc/passwd可以防止文件被任何用户修改。

Linux 还提供了“粘滞位”的功能,主要用来防止用户随意操作其他用户的文件。比如chmod +t /tmp可以阻止删除 /tmp 目录下其他用户的文件。

这些都是 Linux 在授权中的自我保护机制,那我们能在这个过程中进行怎样的防护呢?

前面,我们一直在强调,Linux 系统面临的安全威胁其实就是权限问题。也就是说,要么就是敏感文件的权限配置不当,导致这些文件可以被额外的用户访问或执行;要么就是应用存在漏洞或密码泄漏,导致低权限用户可以获得更高的权限。

要解决权限问题,我们就要实践最小权限原则。

我们先来看一个 Linux 系统安全中最普遍的问题:滥用 ROOT。很多人在登录 Linux 系统后,第一个命令就是通过 su 来获取 ROOT 的 Shell 环境,这样我们就不需要在每次操作的时候,通过 sudo 来临时提升至 ROOT 权限。

但是,这里你需要注意一点,在 ROOT 的 Shell 环境中,启动的所有进程也都具备 ROOT权限。如果启动的是一个立即返回的进程,如 CAT,不会有太多问题,但如果是一个长期运行的进程,就很容易产生权限的滥用。

比如,当你以 ROOT 的身份启动 Redis 或者 MySQL 等存储工具时,如果这时有其他用户连入 Redis 或者 MySQL,那他们也能间接地获取 ROOT 的权限。在大部分服务器入侵的场景中,黑客都是通过这些具备 ROOT 权限的进程漏洞,来实现权限提升的。

因此,在运行任何长驻进程时,我们都需要谨记“最小权限”原则。也就是说,我们可以根据要执行的操作等级,配置“最小权限”来启动常驻进程。比如,如果只是在 Redis 和MySQL 这样的数据库中进行文件读写操作,根本不需要 ROOT 这种最高等级的权限。

因此,“最小权限”原则在 Linux 系统中的应用是非常重要的。那你可能会问了,Linux 系统中的操作那么多,每个操作都需要自己进行权限配置吗?当然不是,我们常常会使用一些已知的工具,来实现“最小权限”启动长驻进程的功能,而你需要做的,就是正确地启动或者配置这些工具。

比如说,我们可以通过 mysqld 启动 MySQL 服务,mysqld 会将 MySQL 的进程分配到“mysql”这个用户,并在 ROOT 下建立守护进程。具体的效果如下:

root	2973530.00.01154321360?			S	Aug120:00/bin/sh/usr/
mysql	29755331.34.3112827565729572?	Sl	Aug1222593:40/usr/local/

类似的,当启动 Nginx 时,Nginx 会将 Worker 节点以 nobody 的用户身份来执行。具体的效果如下:

root	7083	0.0	0.0	610325324?	Ss	Aug12	0:01nginx:maste
nobody	331122	0.0	0.0	9076831776?	S	11:44	0:00nginx:worke
nobody	331123	0.0	0.0	9076832720?	S	11:44	0:00nginx:worke
nobody	331124	0.0	0.0	9076831776?	S	11:44	0:00nginx:worke

当然,也有一些工具不提供这类最小权限切换的功能,比如,在直接执行redis-server启动 Redis 的时候,就需要我们自己来对用户身份进行切换。那用户身份切换怎么做呢?

我们首先来看 Nginx 的例子,在启动 Nginx 的时候,Linux 提供了 nobody 这么一个用户的身份。实际上,任何人进入 Linux 系统首先获得的用户身份就是 nobody,然后再从nobody 进行登录,切换到其他正常用户身份上。

因此,nobody 通常拥有整个操作系统中最小的权限。所以,对于不提供最小权限切换功能的工具,我们就可以使用 nobody 的用户身份,来进行主动切换了。

在执行redis-server启动 Redis 的时候,我们就可以通过以下命令,以 nobody 的身份执行redis-server了(前提是,我们需要对日志和 PID 等目录进行适当配置,确保能够以 nobody 身份写入):

su-s/bin/redis-servernobody

这样一来,我们就能通过“最小权限”原则,提升 Linux 系统授权的安全性了。

3.Linux中的审计机制

我们在前面的课程中说过,“黄金法则”中的审计主要就是日志记录和分析。那么,Linux系统中的日志都有哪些呢?在 Linux 系统中,系统的日志信息通常存储在 /var/log 目录下,部分应用程序也会把相关日志记录到这个目录中。系统日志主要分为 3 类,用户登录日志、特殊事件日志和进程日志。

用户登录日志主要是/var/log/wtmp和/var/run/utmp,用来保存用户登录相关的信息。用户登录日志本身为二进制文件,我们无法直接通过文本方式查看,但是可以配合who/users/ac/last/lastlog这样的命令来获取。

特殊事件日志主要包括/var/log/secure和/var/log/message。其
中,/var/log/secure主要记录认证和授权相关的记录,如果有人试图爆破 SSH,我们就可以从这个日志中观察出来。/var/log/message由 syslogd 来维护,syslogd 这个守

护进程提供了一个记录特殊事件和消息的标准机制,其他应用可以通过这个守护进程来报告特殊的事件。

进程日志:当通过 accton 来进行系统进程管理时,会生成记录用户执行命令的 pacct 文件。

默认情况下,Linux 会通过 logrotate 对日志执行相应的保留策略(比如日志切割和旧日志删除等)。通过配置/etc/logrotate.conf可以对不同日志的保留策略进行修改。

那如何对日志进行监控呢?这里,我向你推荐 2 种常见的日志分析工具 ELK 和 Zabbix,你可以利用这些工具来监控 Linux 的安全日志。也就是说,我们可以通过在这些分析平台配置恰当的规则(如 SSH 登录尝试失败 3 次以上),来及时发现黑客的部分入侵尝试,迅速产生报警。然后,我们就可以针对具体的问题,进行人工复查了。

总结

Linux 系统安全可以说是“最小权限”原则的最佳实践平台,尤其是当存在多用户共同维护和使用一台服务器的时候,正确的配置权限将是一件很有挑战的工作。为此,我们必须严格限制 ROOT 权限的使用。同时,为了避免进程漏洞,适当的通过 iptables 进行访问限制,也能够起到不错的保护效果。

在 Linux 系统的自我保护基础之上,也有一些安全工具能够为系统提供额外的保护功能(如杀毒软件、HIDS 等),在后续的内容中,我们会深入讲解这些工具。

最后,我把本文的重点内容梳理了一个脑图。你可以用它来查漏补缺,也可以自己来梳理看看,加深印象。

Kali Linux SNMP扫描实战:onesixtyone、snmpwalk与snmpcheck工具详解 SNMP(简单网络管理协议)作为网络设备监控与管理的核心协议,其工作原理基于客户端-服务器模型,通过管理信息库(MIB)树状结构组织设备数据。该协议的技术价值在于实现网络设备的集中监控与配置,但默认或弱口令的社区字符串会带来严重安全风险,使其成为攻击者进行网络发现和信息收集的常见入口。在渗透测试与安全评估场景中,SNMP扫描是识别网络资产、探测配置漏洞的关键步骤。本文聚焦于Kali Linux环境下,利用onesixtyone、snmpwalk和snmpcheck等工具进行SNMP安全审计的实战流程,涵盖从 阅读详情

相关推荐

Arduino应用——PWM控制直流电机风扇

Arduino应用——PWM控制直流电机风扇PWM原理实验器件功能描述如何改变文本的样式插入链接与图片实现代码生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 最近在使用arduino UNO开发板完成课程小作业。其中一个要求设计一个电风扇控制系统,要求能够通过PWM调节风扇的转速。期间搜索了许多例程和方法,但受限于器件,效果不

hypecycle的博客 2万+

13 | Linux系统安全:多人共用服务器,如何防止别人干“坏事”?

从这一讲开始,我们讨论 Linux 系统和应用安全。我们知道,在开发一个应用的过程中,需要涉及代码、操作系统、网络和数据库等多个方面。所以,只是了解代码安全肯定是不够的,我们还需要了解常见的基础环境和工具中的安全机制,学会通过正确地配置这些安全机制,来提升安全保障。 谈到 Linux,我相信你每天都在使用 Linux 进行各种开发和运维操作。但是,大多数情况下,公司不会给每一个员工分配专有的 Linux 服务器,而是多个开发和运维共用一台 Linux 服务器。那么,其他员工在使用 Linux 服务器的时候.

9163

修改注册表导致开机时电脑显示“无法登陆到你的账户”的问题解决方案

1.问题描述:开机电脑显示“无法登陆到你的账户:通常可以通过从你的账户注销,然后重新登陆来解决问题,如果不立即注销,你创建的任何文件或进行的任何更改都将会丢失。” 2.问题原因:想要修改cmd中的用户名(红色部分),修改了注册表,重启时出现问题。 3.问题解决: win+R输入cmd,确定进入注册表界面,将下面的地址复制进地址栏(你也可以自己按目录查找),双击ProfileImage...

qq_33835957的博客 7万+

如何实现多人同时登录centos 7服务器并进行远程桌面,各个使用者互不影响

基本情况:博主是Ubuntu16.04 系统,远程桌面的服务器系统centos 7.参考:https://zhuanlan.zhihu.com/p/34940240有适当修改。Step 1: 在CentOs7上安装Tigervnc-server1. 安装Tigervnc-serverTigervnc-server is a program which executes an Xvnc server...

东南风的博客 1万+

无感健康监测的未来:毫米波雷达如何重新定义睡眠科技与居家养老

毫米波雷达技术正重新定义无感健康监测,特别是在睡眠科技与居家养老领域。通过精准监测呼吸、心率和体动,无需穿戴设备即可实现临床级精度。结合合宙Air700E开发板,构建了完整的远程看护解决方案,为老年人提供跌倒检测、异常报警等安全保障,同时保护用户隐私。

cake8的博客 567

轮式并联五连杆下肢机器人运动控制:从建模到强化学习仿真训练

本文提出了一种基于强化学习的轮式并联五连杆下肢机器人运动控制方法。首先建立了机器人的运动学和动力学模型,推导了正逆解公式,并构建了URDF模型。随后在PyBullet仿真环境中搭建了包含复杂地形的训练场景,设计了基于PPO算法的端到端控制策略,包含状态空间、动作空间和奖励函数的详细设计。通过多组仿真实验验证了该方法在台阶攀爬等任务中的有效性,为轮腿机器人运动控制提供了完整的可复现技术方案。

huanghm88的专栏 347

linux主机配置成供多人使用的服务器

使用本地linux主机配置成服务器 实验室有一台双路2080Ti主机,老板提出需求不放在超算中心,不使用学校分配的ip地址,能不能配成一台服务器主机。本着舍小家为大家的理念,打开我的google浏览器,终于让我找到了解决方法—SSH(source shell)。 SSH是一种是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境[1]。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接[2]。(来自维基百科)其实就是一种远程连接工具。 1.服务端包括:OpenSSH(提供S

hongyuge的博客 1692

23种设计模式-享元(Flyweight)设计模式

软考中级-软件设计师 享元设计模式

片言可决讼,半纸能缚龙 3223

linux单用户模式和多用户模式的区别,什么是Linux单用户模式?

一、Linux用户模式0:关机1:单用户模式2:无网络支持的多用户模式3:有网络支持的多用户模式4:保留,未使用5:有网络支持有X-Window支持的多用户模式6:重新引导系统,即重启二、单用户模式单用户模式(英语:Single user mode),是在类似在Linux系统上工作时的一种拥有超级用户权限的模式。通常在开机选单给予1或S参数能进入这个模式。这个模式只在面对主机实体时才有机会透过开机...

weixin_28725949的博客 3895

CONN工具箱分析fmri数据笔记1

前言一、安装二、预处理三、去噪 前言 CONN:functional connectivity toolbox,是基于MATLAB和SPM的一个对功能磁共振数据进行分析的一个工具箱。可以进行以下分析: Seed-based correlations (SBC), ROI-to-ROI correlations, graph analyses, Independent component analyses(group-ICA), Masked (ICA) Amplitude of Low-Frequency.

weixin_52073820的博客 6586

C#读取和写入excel表数据--手把手教详解

C#读写excel数据详解

如如水的博客 4055

保障Linux服务器安全:多人共用环境下的防护策略

作为系统管理员或运维人员,我们应该时刻保持警惕,不断学习和应用新的安全知识和技术,以确保服务器的安全和稳定运行。这有助于减少潜在的安全风险,因为攻击者即使获得了一个网络段的访问权限,也无法轻易访问其他网络段。:对所有服务器用户进行定期的安全培训,教育他们如何识别并应对潜在的安全威胁。:对于特别敏感或重要的服务,可以考虑实施更严格的网络隔离措施,如使用专用的物理网络或使用VPN等加密通信技术。:定期举办安全意识提升活动,如模拟攻击演练、安全知识竞赛等,以提高用户对安全问题的关注和应对能力。

让每一行代码都有改变世界的力量 1555

Android15音频进阶之音效配置与解析(一百三十一)

本篇目的:Android15音频进阶之音效配置与解析。

Android系统攻城狮 2147

Linux系统安全:多人共服务器,如何防止别人干坏事

提示:Linux系统和应用安全~多人共服务器,如何防止别人干坏事 多人共服务器,如何防止别人干坏事前言一、如何理解Linux中的安全模型二、黄金法则是如何在Linux系统应用的1.Linux中的认证机制2.Linux中的授权机制3.要解决权限问题,我们就要实践最小权限原则。总结 前言 我们知道,在开发一个应用的过程中,需要涉及代码、操作系统、网络和数据库等多个方面。所以,只是了解代码安全肯定是不够的,我们还需要了解常见的基础环境和工具中的安全机制,学会通过正确地配置这些安全机制,来提升安全保障。 谈到.

weixin_37689012的博客 440

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux mysql启动_linux系统安全,多人共用服务器,防止别人干‘坏事’

我们知道,在开发一个应用的过程中,需要涉及代码、操作系统、网络和数据库等多个方面。所以,只是了解代码安全肯定是不够的,我们还需要了解常见的基础环境和工具中的安全机制,学会通过正确地配置这些安全机制,来提升安全保障。谈到 Linux,我相信你每天都在使用 Linux 进行各种开发和运维操作。但是,大多数情况下,公司不会给每一个员工分配专有的 Linux 服务器,而是多个开发和运维共用一台 Linux...

weixin_39945523的博客 136

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使用sudo进入root权限,以及防止root密码被恶意篡改

一、前言 sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root用户的登陆和管理时间,提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。 而防止root用户密码被恶意更改,主要是用户基本上都是su - 切换到root,假如有很多人知道root账号和密码,那么就会出现很...

weixin_34049032的博客 2932

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux服务器限制ssh登录,查看登录日志

####转载地址:http://zfsn.iteye.com/blog/1224212 网络上的服务器很容易受到攻击,最惨的就是被人登录并拿到root权限。有几个简单的防御措施: 1. 修改ssh服务的默认端口。 ssh服务的默认端口是22,一般的恶意用户也往往扫描或尝试连接22端口。所以第一步就是修改这个默认端口 打开/etc/ssh/sshd_config,找到 Port 22

奋斗 2万+

安全攻防技能38讲

安全攻防技能30讲 · 课程目录 ▌开篇词 (1讲) 开篇词 | 别说你没被安全困扰过 ▌安全基础概念 (5讲) 01 | 安全的本质:数据被窃取后,你能意识到问题来源吗? 02 | 安全原则:我们应该如何上手解决安全问题? 03 | 密码学基础:如何让你的密码变得“不可见”? 04 | 身份认证:除了账号密码,我们还能怎么做身份认证? 05 | 访问控制:如何选取一个合适的数据保护方案? ▌Web安全 (7讲) 06 | XSS:当你“被发送”了一条微博时,到底发生了什么? 07 | SQL注入:明明设置

1万+

Linux服务器ssh登录,查看登录日志

  网络上的服务器很容易受到攻击,最惨的就是被人登录并拿到root权限。有几个简单的防御措施: 1. 修改ssh服务的默认端口。 ssh服务的默认端口是22,一般的恶意用户也往往扫描或尝试连接22端口。所以第一步就是修改这个默认端口 打开/etc/ssh/sshd_config,找到 Port 22 然后将22修改为其它没有被占用的端口,如1022。最好在1-1024之间,防止与用户进程端口冲...

lailaiquququ11的博客 7万+

安全基础二

想象一下,你是一个公司的内部员工(服务器),你有权访问公司内部的一些机密文件(内部资源),这些文件对外部的人(攻击者)是不可见的。某天,一个外部的陌生人(攻击者)让你帮忙发送一封信(请求)到一个特定地址(目标资源),你不知道这个地址的内容机密,你便照做了,结果他通过你的帮助(服务器)获得了机密文件。因此,你创建了一个权限受限的账户,只允许他访问和操作必要的文件,而不是所有的文件。想象一下,你家的前门有锁,只有你和家人有钥匙,但某个技工在修理时偷偷在后院的围墙上开了一个小门,这个门没有锁,只有他知道。

怨行客 686

Miniconda环境权限管理:多用户共享服务器配置建议

本文介绍在多用户服务器中如何通过Miniconda结合Linux权限机制实现安全高效的Python环境共享。核心方案为管理员统一安装Conda,划分公共与私有环境空间,利用组权限和setgid实现分层控制,避免依赖冲突与误操作,提升团队协作效率。

weixin_42452483的博客 393

【从零带你玩转Linux】Linux环境搭建

大家好啊🥳🥳🥳,本期将会给大家带来如何通过云服务器快速搭建一个Linux环境,再基于通过Xshell或者vscode连接到远程服务器,如果本期内容对大家有帮助的话,还不忘给一个大大的三连支持一下博主哦😘😘😘

泡泡牛奶的博客 2357
上一篇: 阿里架构师剖析:Redis常用数据类型对应的数据结构
下一篇: 阿里架构师细说分布式之集中式结构,愿下次面试不再有分布式
Java_Cappuccino
博客等级 码龄7年 17粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值