全部产品
Search
文档中心

云安全中心:应用防护

更新时间:Mar 13, 2024

应用防护功能基于RASP(Runtime Application Self-Protection)技术,通过在应用运行时检测攻击并进行应用保护,为应用提供安全防御。您无需修改代码,只需在主机或容器环境的应用中安装RASP探针,即可为应用提供强大的安全防护能力,并抵御绝大部分未知漏洞所使用的攻击手法。本文介绍如何使用应用防护功能。

功能原理

应用防护使用RASP技术,在应用程序内部通过钩子(Hook)关键函数,实时监测应用在运行时与其他系统的交互过程。当应用出现可疑行为时,应用防护会根据当前上下文环境识别并阻断攻击,有效地为您主机上的Web业务进程提供应用漏洞、0day漏洞和内存马攻击等防护能力。应用防护目前仅支持接入Java应用。支持在安装了云安全中心客户端的阿里云服务器、第三方厂商云服务器和线下IDC服务器中使用。

image

RASP探针兼容性说明

应用防护仅支持防护满足以下条件的Web业务进程,即只支持在满足以下条件的业务进程中安装RASP探针。

  • JDK:JDK 6及以上版本。

  • 中间件:对中间件类型和版本无特定要求,包括Tomcat、SpringBoot、Jboss、WildFly、Jetty、Resin、Weblogic、Websphere、Liberty、Netty、GlassFish、国产中间件等。

  • 操作系统:Linux、Windows、macOS。

接入方式说明

RASP支持自动接入和手动接入方式,您可以根据下表的说明选择合适的方式接入应用防护。

接入方式

特点

应用场景

自动接入主机和容器

无需手动部署和重启应用。

未自动接入过其他应用分组且操作系统为64位的服务器可以选择自动接入方式。

说明

如果您主机中的部分应用进程已自动接入指定应用分组,现需要将该主机中的应用重新接入另一个应用分组,您可以在移除已接入的应用后,再为该主机开启自动接入。

手动接入主机

需手动部署并重启应用。

  • 如果您主机中的部分应用进程已自动接入指定应用分组,需要将该主机中未接入防护的应用进程接入其他应用分组,或者您的业务使用的框架为:JIRA、Confluence、WebLogic、WebSphere,您需要使用手动接入方式。

  • 如果需要将同一服务器接入多个应用分组时,您需要使用手动接入方式。

手动接入容器

检测攻击类型

下表介绍应用防护可检测的攻击类型及相关防护建议。

攻击类型

说明

防护建议

JNI注入

JNI注入是一种通用的RASP(Runtime Application Self-Protection)绕过手段。当攻击者拿到代码执行权限后,可以通过Java Native函数去调用外部的恶意动态链接库,从而绕过Java层的安全防护,并隐匿具体的恶意行为。

您的服务器可能存在代码执行漏洞,请检查漏洞的位置并限制执行代码的功能。

SQL注入

SQL注入手段通过把SQL命令插入到页面请求或Web表单的查询字符串中,以达到欺骗服务器执行指定SQL语句的目的。它可以通过在Web表单中输入SQL语句,得到存在安全漏洞的网站上的数据。

SQL注入是由拼接SQL语句引起的。请尽可能使用预编译来处理传入的参数,或通过白名单和黑名单来限制拼接参数。

XXE

指XML外部实体注入漏洞(XML External Entity Injection)。当XML文件在引用外部实体时,通过构造恶意内容,可以导致任意文件读取,命令执行和内网攻击等不良后果。

请检查应用程序在解析XML时是否需要加载外部实体。如果不需要,请在XML解析配置中禁用外部实体。

恶意DNS查询

恶意DNS查询存在多种利用方式。攻击者极有可能通过DNS协议来突破内网的网络限制,从而将敏感信息带出内网,也可能通过DNS协议去探测内网系统是否存在SSRF、JNDI注入等漏洞。

恶意DNS查询是由服务器向用户控制的参数发送请求所引起的。请检查参数并通过白名单进行限制。

恶意反射调用

RASP自保护模块,禁止攻击者通过反射的方式去修改运行时RASP的相关数据。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

恶意外链

SSRF(Server-side request forgery)服务器端请求伪造漏洞指的是攻击者通过构造由服务端发起的请求,对网站内部系统进行攻击。

SSRF是由服务器向用户传入的参数发送请求所引起的。请检查参数并通过白名单进行限制。

恶意文件读写

Java提供RandomAccessFile,用于文件读写操作。当使用该Class进行文件读写的时候,如果未对文件路径、文件内容进行限制,攻击者可能读取到系统敏感文件,也可能上传木马文件。

请检查文件读取和上传是否正常。如果出现异常,请检查函数代码,并通过黑名单进行限制。

恶意文件上传

对于网站提供的文件上传功能,如果未对上传文件的类型进行限制,攻击者可能通过上传木马文件来获取服务器的更大权限,从而造成严重危害。

请限制上传文件的类型,禁止上传具有执行权限的文件,如JSP。

命令执行

命令执行漏洞是指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令。

通常远程命令执行是由Web Shell或服务器的危险代码引起的。请检查命令执行的位置。如果是Web Shell,请及时删除。如果是服务器的正常功能,则可以通过白名单限制执行的命令。

目录遍历

网站自身的配置缺陷可能会使得网站目录被任意浏览,导致隐私信息泄露。攻击者可以利用该信息对网站进行攻击。

请检查目录遍历操作是否正常。如果异常,请检查函数的代码,并通过黑名单对相关命令(如“./”和“../”)进行限制。

内存马注入

内存马是一种新兴的木马技术,攻击者通过一些特殊的技术手段将木马注入到内存中,可以有效绕过WAF和主机防御的检测。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

任意文件读取

对于网站提供的文件下载和读取功能,如果是直接通过绝对路径或目录穿越符对文件进行读取和下载,没有相关文件路径的限制,那么,攻击者就可以利用这种方式获取敏感信息,对服务器进行攻击。

请检查文件读取操作是否正常。如果异常,请检查函数的代码,并使用黑名单对传入参数(如“./”和“../”)进行限制。

线程注入

线程注入是一种通用的RASP绕过手段。当攻击者拿到代码执行权限后,可以通过新建线程的方式使RASP丢失掉运行环境的上下文,从而影响RASP的防御能力。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

恶意Attach

Attach API是Java提供的动态修改字节码技术,该功能可以实现动态修改运行时应用的字节码。很多攻击者通过该手法进行Agent型内存马的注入,具有较高的欺骗性。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

JNDI注入

当应用进行JNDI查询的时候,若查询的URL可以由攻击者控制,则攻击者可以用服务器去查询恶意的链接使得服务器加载一些恶意class,实现任意代码执行。

  • 若该漏洞源于第三方组件,请及时进行组件版本升级。

  • 若为自写JNDI查询代码,请对查询的URL进行限制,禁止一些危险协议的查询。

危险协议使用

若服务端进行访问的URL用户端可控,而应用本身又未对该URL的协议进行限制,那么攻击者可能通过file、netdoc等危险协议对服务器上的敏感文件进行读取。

请对URL可以访问的协议进行限制。

反序列化攻击

Java反序列是指把字符序列恢复为Java对象的过程,在对象生成过程中,若该对象包含一些危险度较高的代码,则攻击者可能通过控制生成对象的成员变量在对象进行反序列化的时候实现一些恶意攻击。

  • 及时升级存在漏洞的组件版本。

  • 若官方还未提供漏洞修复的组件版本,请暂时关闭该功能。

任意文件删除

对于网站提供的文件删除功能,文件删除的接口如果没有对文件路径进行限制,攻击者就可以通过绝对路径或目录穿越符对任意文件进行删除操作,从而对服务器进行攻击。

请检查文件删除操作是否正常。如果异常,请检查函数的代码,并使用黑名单对传入参数(如“./”和“../”)进行限制。

表达式注入

表达式组件提供了十分丰富的功能,支持在运行时查询和处理数据等,但很多表达式组件也提供了函数调用等权限较高的功能,如果未对这些功能做限制,而攻击者又能够控制表达式执行的内容,那么攻击者将很有可能通过表达式执行任意代码。

请对进入表达式的内容进行严格限制,禁止大部分Java函数的调用。若是第三方组件漏洞导致,请及时升级组件版本。

引擎注入

Java提供较多的第三方引擎组件(如rhino、Nashorn等JS引擎,velocity、freemarker等模板引擎),这些引擎通常提供了函数调用等权限较高的功能,如果对这些功能未作限制,而攻击者又能够控制引擎执行的内容,那么攻击者将很有可能通过引擎执行任意代码。

请对进入引擎文件的内容进行严格限制,禁止大部分Java函数的调用。若是第三方组件漏洞导致,请及时升级组件版本。

恶意Beans绑定

Java存在一些框架支持对应用运行时Beans的参数绑定,如果未对绑定Beans的类型进行限制,攻击者就可以通过对一些敏感Beans值的修改,破坏应用的运行,甚至造成执行任意代码。

请对可以绑定的Beans的类型进行限制,禁止对类似于Class、Classloader类型的Beans值进行修改。若是第三方组件漏洞导致,请及时升级组件版本。

恶意类加载

现阶段,很多0day、WebShell的利用均依赖于恶意类的加载,一旦恶意类加载成功,攻击者便可以通过恶意类的初始化来取得代码执行权限,从而进行一系列的恶意操作。

  • 若恶意类的加载是通过WebShell控制,请及时删除WebShell。

  • 若恶意类的加载是框架导致,请及时升级框架版本。

JSTL任意文件包含

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。当用户可控参数被直接拼接到JSTL标签中而未对该参数进行任何限制的情况下,攻击者可以构造特殊的攻击脚本造成任意文件读取、SSRF的攻击。

尽可能不要将用户可控参数直接拼接到JSTL标签上,如果必须这样做,请对该参数的内容进行严格的白名单控制。

弱点检测类型

弱点类型

风险等级

说明

修复建议

不安全的Fastjson配置

高危

应用的Fastjson开启了反序列化功能,该功能可能被攻击者利用,造成远程命令执行。如非必要,请关闭该功能。

请将Fastjson的safemode设置为true,或将autotype设置为false。

不安全的log4j配置

高危

您的log4j组件开启了lookup功能,攻击者可能通过该功能进行JNDI注入,从而造成远程代码执行漏洞。

请升级log4j到最新版本,或删除Jar包中的org/apache/logging/log4j/core/lookup/JndiLookup.class文件。

不安全的启动参数

高危

当攻击者可以访问到JDWP调试端口的时候,可以通过该功能执行任意代码,造成远程代码执行。

如无特殊场景,请及时关闭JDWP端口或者避免将JDWP端口暴露在公网,谨防长期运行的应用开启了JDWP端口。

Shiro弱密钥

高危

Shiro应用使用了较弱的加密密钥,攻击者可能通过破解密钥,进一步进行反序列化攻击,从而造成远程代码执行。

请及时修改应用中的Shiro加密密钥。

不安全的JMX配置

中危

开启了JMX的远程链接,且在认证方面存在风险,攻击者可能会远程连接应用的JMX服务并造成命令执行风险。

请关闭JMX服务的远程连接,或者请使用较为安全的认证口令。

不安全的Rhino配置

中危

Rhino框架中包含了危险的properties,攻击者可能通过这些properties进行远程代码执行攻击。

先升级rhnio到最新版本,然后使用SafeStandardObjects定义rhino的上下文,防止JavaScript引擎调用Java代码。

下面是使用SafeStandardObjects定义Rhino上下文的示例:

    Context ctx = Context.enter();
//  Scriptable scope = ctx.initStandardObjects(); // 不安全的写法
    Scriptable scope = ctx.initSafeStandardObjects(); // 安全写法
    ctx.setOptimizationLevel(-1);
    String str = "var test={};";
    str += "test.call=function(){return 'Successful!';};";
    str += "java.lang.System.out.println(test.call())";
    try {
        //传入并执行javascript代码
        ctx.evaluateString(scope, str, "", 1, null);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        Context.exit();
    }

不安全的Spring配置

中危

Spring Actuator模块开启了部分端点:heapDump、env、restart、refresh、trace、jolokia、h2-console等,可能造成敏感信息泄露或者远程代码执行漏洞。

如无特殊场景,请关闭对应功能。

脆弱的登录凭证

中危

应用在登录口令安全性较弱,攻击者可能通过爆破弱口令登录您的系统,从而获取敏感信息甚至服务器权限。

请及时修改该应用的密码为复杂密码。

不安全的JNDI配置

低危

您的应用存在不安全的useCodebaseOnly/rmi-trustURLCodebase/ldap-trustURLCodebase参数设置,可能存在JNDI注入风险。

请将JDK升级到最新版本,如果无法升级,在应用启动的时候添加启动参数如下:

-Djava.rmi.server.useCodebaseOnly=true -Dcom.sun.jndi.rmi.object.trustURLCodebase=false -Dcom.sun.jndi.ldap.object.trustURLCodebase=false

不安全的XML实体配置

低危

XML解析外部实体功能已开启,这可能导致您的应用遭受XXE攻击。

如果无特殊场景,请勿使用外部实体。

数据库弱口令

低危

应用连接数据库时使用弱口令,攻击者可能通过该弱口令连接您的数据库造成敏感信息泄露或远程命令执行。

请及时更改应用连接数据库的密码为复杂密码。

前提条件

  • 已购买足够的应用防护授权数。具体操作,请参见购买云安全中心

  • 服务器上的云安全中心Agent为在线状态。

    您可以在资产中心 > 主机资产页面的服务器页签通过服务器客户端列图标的状态判断Agent是否在线,image..png图标表示在线。如果Agent离线,处理方法请参见客户端离线排查

  • 如果是以RAM用户身份使用应用防护功能,请确保RAM用户拥有AliyunYundunWAFFullAccessAliyunYundunSASFullAccess权限策略。授权的具体操作,请参见为RAM用户授权

步骤一:接入应用防护

在使用应用防护功能前,您需要先新建应用分组,再将需要防护的业务进程接入应用防护中。

  1. 登录云安全中心控制台。在控制台左上角,选择需防护资产所在的区域:中国全球(不含中国)

  2. 在左侧导航栏,选择防护配置 > 应用防护

  3. 应用配置页签,单击新建应用分组

  4. 新建应用分组向导页面,输入要新建的应用分组名称和备注信息,然后单击下一步

    建议您根据需要防护的Web业务进程设置应用分组名称,应用分组名称不可重复。完成该操作后,云安全中心会创建一个应用分组。

  5. 自动/手动接入应用防护向导页面,选择自动接入或手动接入方式接入应用防护。

    (推荐)自动接入主机和容器

    自动接入是指在应用程序运行时,使用JVM Attach能力将应用防护功能集成到应用程序中。该方式可以在应用程序运行时动态地加载和卸载应用防护功能,无需重启应用进程,可以保障业务的连续性。

    在主机、容器或JVM资源使用量超过一定阈值时,为了保证应用防护功能的正常运行,自动安装方式会不予安装RASP探针,直到降到阈值以下才会继续安装RASP探针。停止安装的具体阈值如下:

    • 主机或容器CPU占用超过98%,或剩余内存不足200 MB时,不予安装RASP探针。

    • JVM堆内存剩余不足150 MB,元数据空间不足5 MB,不予安装RASP探针。

    重要
    • 建议首次自动接入时避开业务高峰期。

    • 自动接入服务器时,仅支持选择未自动接入过其他应用分组且操作系统为64位的主机。

    • 一台主机仅支持自动接入到一个应用分组中,不支持同时自动接入多个应用分组。

    • 已通过手动接入方式接入的主机,可以开启自动接入。当您卸载了手动接入的RASP探针后,应用防护会为您重新自动接入。

    1. 单击选择资产接入应用防护,在选择资产对话框选择需要接入的资产,并单击确定

      当您选择接入的主机后,应用防护功能会自动识别并接入防护主机上的Java服务进程(包括容器环境),无需重启进程。最多支持同时选择100台服务器。

      说明

      选中服务器后,确定按钮变为同步中,表示云安全中心正在将选中的服务器加载到选中列表。

    2. 根据需要接入的服务器数量,参考下述说明操作。

      • 仅需接入一台服务器时,打开该服务器应用防护列的开关,待RASP探针安装完成后,单击下一步

        自动接入控制台截图

      • 需要接入多台服务器时,选中需要接入的服务器,单击批量防护,然后单击下一步

        批量防护一次最多支持选择100台服务器。

    为单台服务器打开应用防护开关或者选中多台服务器并单击批量防护后,云安全中心会自动识别并接入防护主机上的Java进程(应用防护开关显示安装中),根据您的网络环境不同此过程可能会持续约10分钟。如果您的主机中有多个启动状态的Java进程,云安全中心会同时接入这些进程。接入成功后,应用防护列的开关为打开状态,您可以在应用防护接入状态列查看应用实例的接入状态。以下是应用防护接入状态的说明:

    • 未接入:表示该服务器未开启应用防护开关。

    • 接入失败:表示该服务器所有应用都接入失败。

    • 部分接入:表示该服务器应用部分接入成功,部分接入失败。

    • 全部接入:表示该服务器所有应用已接入应用防护。

      说明

      如果服务器上不存在可接入的进程,或者所属业务进程不在支持范围内,此时接入详情列表为空,控制台也会展示全部接入状态。如果后续该服务器上出现可接入的进程可自动接入应用防护。

    操作列单击详情,可以查看已接入的Java进程状态。

    接入详情

    手动接入主机

    单击手动接入页签,按照主机接入指南子页签的接入步骤,安装RASP探针,再重启应用。单击下一步

    重启应用时,您需要根据应用运行环境进行相关部署。下表以部署应用的JVM参数为例介绍重启应用时的运行环境部署。如果遇到需要配置的中间件不在列表的情况,在配置参数时,您需要使用主机接入指南页签展示的应用ID替换{appId}。应用ID的位置如下图所示。应用ID位置

    运行环境

    参数配置说明

    Tomcat(Linux)

    在<Tomcat安装目录>/bin/setenv.sh文件中添加以下内容。

    export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"

    如果您的<Tomcat安装目录>/bin/目录下没有setenv.sh配置文件,请在<Tomcat安装目录>/bin/目录下创建该文件。

    Tomcat(Windows)

    在<Tomcat安装目录>\bin\setenv.bat文件中添加以下内容。

    set CATALINA_OPTS=%CATALINA_OPTS% "-javaagent:C:\Program Files (x86)\Alibaba\Aegis\rasp\apps\{appId}\rasp.jar" 

    如果您的<Tomcat安装目录>\bin\目录下没有setenv.bat配置文件,请在<Tomcat安装目录>\bin\下创建该文件。

    Jetty

    在{JETTY_HOME}/start.ini配置文件中添加以下配置。

    --exec -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar

    Spring Boot

    启动Spring Boot进程时,在启动命令后加上-javaagent参数。

    java -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar

    例如,您在启动Spring Boot进程时修改前的命令为:

    java -jar app.jar

    需要安装RASP探针时启动Spring Boot进程执行的命令为:

    java -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar -jar app.jar

    JBoss或WildFly

    • Standalone模式

      打开<Jboss安装目录>/bin/standalone.sh,在# Display our environment下面添加以下内容:

      JAVA_OPTS="${JAVA_OPTS} -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"
    • Domain模式

      打开<Jboss安装目录>/domain/configuration/domain.xml文件,找到<server-groups>标签,在需要安装RASP探针的<server-group>标签中找到<jvm>标签并添加以下内容:

      <jvm-options>
         <option value="-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"/>
      </jvm-options>

    Liberty

    在<Liberty安装目录>/${server.config.dir}路径下(默认路径为:/opt/ibm/wlp/usr/servers/defaultServer/jvm.options),创建或修改jvm.options文件 ,在文件中添加以下内容:

    -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar

    Resin

    • Resin3

      在<Resin安装目录>/conf/resin.conf路径下,找到 <server-default> 标签下的 <jvm-arg>标签,在下面添加以下内容:

      <jvm-arg>-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar</jvm-arg>
    • Resin4

      在<Resin安装目录>/conf/cluster-default.xml路径下,找到<server-default>标签下的<jvm-arg-line>标签,在下面添加以下内容:

      <jvm-arg>-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar</jvm-arg>

    您也可以在推送记录页签,单击推送RASP探针,为应用所在的主机或容器推送并安装RASP探针。

    如果不需要云安全中心的应用防护功能防护主机或容器环境上的业务进程,您可以单击卸载指南页签,按照页面提供的操作步骤卸载RASP探针。

    手动接入容器

    单击手动接入页签,按照容器接入指南子页签的接入步骤,安装RASP探针,再重启容器。单击下一步

    重启容器时,您需要根据容器的运行环境进行相关部署。下表以部署应用的JVM参数为例介绍重启容器时的运行环境部署。如果遇到需要配置的中间件不在列表中的情况,在配置参数时,您需要使用容器接入指南页签展示的Dmanager.key值替换{manager.key}

    运行环境

    参数配置说明

    SpringBoot

    在镜像打包时安装RASP探针,您需要在Dockerfile上修改启动参数。启动应用的命令修改如下:

    修改前:

    CMD ["java","-jar","/app.jar"]

    修改后:

    CMD ["java","-javaagent:/rasp/rasp.jar","-Dmanager.key={manager.key}","-jar","/app.jar"]

    Tomcat

    • 在镜像打包时安装RASP探针,您需要在Dockerfile中添加以下内容。

      ENV JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"
    • 在容器启动时安装RASP探针,您需要在启动时添加以下参数。

      docker --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"

    例如,您的容器启动命令为docker -itd --name=test -P 镜像名,您需要在启动容器时安装RASP探针,则执行的命令需要修改为docker -itd --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}" --name=test -P 镜像名

    Weblogic

    您也可以在推送记录页签,单击推送RASP探针,为应用所在的主机或容器推送并安装RASP探针。

  6. 观察告警无误设置“防护”模式向导页面,设置防护策略,单击确定

    重要

    默认防护模式为监控模式,建议您先使用监控模式2~5天,如果在此期间未出现误告警您可以将防护模式修改为防护。如果出现误告警,您可以通过配置白名单规则,屏蔽产生误拦截的检测类型。具体操作,请参见配置白名单

    配置项

    说明

    应用分组名称

    展示应用分组的名称,在此处不支持修改。

    防护模式

    选择应用分组的防护模式,可选项:

    • 监控:只监控攻击行为,不影响应用运行。检测到攻击行为时,会产生处理方式为监控的告警。

    • 防护:监控并阻断攻击行为,同时也会对应用实例的一些高危操作进行监控。阻断攻击行为的同时,会产生处理方式为阻断的告警。

    • 禁用:关闭当前应用分组内应用实例的防护功能,不检测也不阻断任何攻击行为。

    检测超时时间

    攻击检测的最大时间,输入范围为1~60,000毫秒,默认设置为300毫秒。若攻击检测超过设置的时间,即使未完成检测逻辑也会继续执行原始业务逻辑。如无特殊原因,建议使用默认值。

    源IP判断方式

    选择默认,系统会根据常规的源IP header值获取源IP。常规的源IP包括:X-Real-IP、True-Client-IP、X-Forwarded-For。

    选择取自定义header的值,系统会优先根据自定义的header值获取源IP。如果自定义header值未命中,则默认规则生效。

    检测类型

    检测攻击的分类,建议使用默认配置(即全选)。更多信息,请参见检测攻击类型

步骤二:查看应用分析数据

应用进程接入应用防护功能后,您可以在应用分析页签查看应用行为、应用接入、最新攻击告警等统计数据,来了解应用的攻防详情。

  1. 登录云安全中心控制台。在控制台左上角,选择需防护资产所在的区域:中国全球(不含中国)

  2. 在左侧导航栏,选择防护配置 > 应用防护

  3. 应用分析页签,查看应用行为、应用接入、攻击告警等的统计数据。

    image.png

    模块

    说明

    应用行为分析(图示①)

    展示最近7天内应用自身行为(非工具行为)相关统计数据:

    • 总请求次数:应用进程接入应用防护功能后,云安全中心应用防护功能监控到的应用请求总次数。

    • 总阻断次数:云安全中心应用防护功能阻断的攻击次数。

    • 总监控次数:云安全中心应用防护功能监控的攻击次数。

    应用接入统计(图示②)

    展示应用接入相关统计数据:

    • 应用分组:当前阿里云账号下创建的应用分组总数量。

    • 接入实例:已接入应用防护功能的应用进程数量。

    • 已授权实例:已占用应用防护授权数并且应用防护功能正常的应用进程数量。

    • 剩余授权数:未使用的应用防护授权数。

    弱点检测数据(图示③)

    展示弱点检测功能检测到的弱点总数、不同风险等级的弱点数量、弱点检测趋势和弱点类型分布。您可以在单击弱点检测页签,查看检测出的弱点类型详情。

    最新攻击告警(图示④)

    展示最近7天产生的攻击告警列表。如需查看更多攻击告警信息,您可以单击查看详情前往攻击告警页签,查看所有的攻击告警列表。

    Top 10 被攻击服务器名称Top 10 攻击源IP(图示⑤)

    展示最近7天被攻击次数最多的10个服务器,或攻击次数最多的10个攻击源IP。

    攻击类型分布(图示⑥)

    展示最近7天攻击次数最多的5个攻击类型及其分布情况。单击查看详情可以查看各类型攻击的具体数量和占总攻击的百分比。

    攻击防护趋势(图示⑦)

    展示最近7天内监控或阻断请求的具体数量以及危险级别分布(高危、中危、低危)。

步骤三:查看告警事件

应用进程接入应用防护功能后,您可以参考以下步骤查看检测到的所有告警事件。

  1. 登录云安全中心控制台。在控制台左上角,选择需防护资产所在的区域:中国全球(不含中国)

  2. 在左侧导航栏,选择防护配置 > 应用防护

  3. 攻击告警页签,查看告警事件的相关信息。

    攻击告警页签以图表的形式展示接入应用防护后应用产生的行为以及应用受到攻击的统计情况。页面下方列表则展示了每一攻击行为的详细数据,包括攻击行为的类型、URL、行为数据以及该行为的处理方式等。

    • 查看应用行为统计

      应用行为统计区域展示经过应用防护检测的应用行为以及其对应的分类,包括正常行为和攻击行为。

    • 查看攻击统计

      攻击统计区域展示应用防护检测到的具有实际威胁的攻击次数以及其对应的攻击类型。

    • 查看攻击详情

      攻击详细列表展示每一个攻击行为的具体情况。您可以在列表中查看攻击行为产生的时间、攻击类型、行为数据、进程目录、URL和该行为的处理方式。您也可以单击目标告警操作列的查看,在详情面板查看目标攻击行为的详情,包括攻击详情、请求详情和服务器详情。

    image.png

步骤四:了解应用弱点

弱点检测功能支持检查应用运行时内部的不安全配置,包括Java主流框架的不当配置、应用和数据库弱口令等,帮助您发现应用内可被攻击者利用的薄弱点。仅支持检测,不支持一键修复,建议您根据弱点详情中的修复建议手动修改相关配置。支持的检测项详情,请参见弱点检测类型

应用进程接入应用防护功能后,且RASP版本不低于0.5.0时,支持弱点检测。您可以在应用配置页签,目标应用分组的实例详情面板,查看应用进程的RASP版本。如果RASP版本低于0.5.0,通过重启应用可以完成版本的自动升级。

您可以参考以下步骤查看应用弱点。

  1. 登录云安全中心控制台。在控制台左上角,选择需防护资产所在的区域:中国全球(不含中国)

  2. 在左侧导航栏,选择防护配置 > 应用防护

  3. 弱点检测页签,查看弱点数据总览、弱点检测趋势、弱点类型分布和弱点检测事件数量分布情况。

    image.png

  4. 弱点检测页签下方,查看存在弱点的应用列表。

    • 应用启动ID:在应用的一次启动周期中,该ID是唯一的,可以用来区分应用多次启动过程中产生的弱点。

    • 状态:表示该应用本次启动过程中发现的弱点的处理状态,存在未确认弱点时,状态为待确认;所有弱点均处理完时,状态为已确认。

  5. 单击目标应用启动ID左侧的image.png图标,查看检测出的弱点列表。单击目标弱点列表操作列的详情,可查看弱点详情。

    您可以根据弱点描述、修复建议和弱点位置等信息,确认弱点产生的原因,判断是否需要修复弱点。

    image.png

  6. 确认完是否修复弱点后,返回弱点列表。单击目标弱点操作列的修改风险状态,在修改风险状态对话框,设置弱点的风险状态和备注信息,单击确定

    支持修改的风险状态:

    • 待确认:无法确认如何处置弱点时,选择该状态。

    • 已确认:已确认弱点如何处理时,选择该状态。

    • 误报:检测到的弱点不存在或详细信息有误时,选择该状态。

    • 忽略:无需关注此弱点时,选择该状态。

更多功能

配置白名单

您可以通过配置白名单放行来自指定源IP的请求。针对满足规则的请求,云安全中心不会产生告警,也不会阻断对应的操作。

  1. 登录云安全中心控制台。在控制台左上角,选择需防护资产所在的区域:中国全球(不含中国)

  2. 在左侧导航栏,选择防护配置 > 应用防护

  3. 防护白名单页签,单击配置白名单

  4. 配置白名单面板,参考以下表格配置白名单规则。

    配置项

    描述

    规则名称

    输入白名单规则名称。

    攻击源IP列表

    设置需加白的攻击源IP列表。

    支持配置IP和IP网段,最多可以设置100个IP或IP网段。

    重要

    0.0.0.0/0表示放行所有IP地址的访问,请谨慎配置。

    请求路径

    配置需加白的IP可以访问应用实例的路径。支持使用以下方式配置:

    • 前缀匹配:放行来自指定IP地址且访问地址前缀满足此处设置条件的请求。配置示例:http://39.104.XX.XX:8080/

    • 后缀匹配:放行来自指定IP地址且访问地址后缀满足此处设置条件的请求。配置示例:/Vulns/file/io/read

    说明

    系统匹配时会忽略请求路径的查询字符串(QueryString)参数部分。例如,如果请求路径为http://127.0.XX.XX:8088/Vulns/file/io/read?path=/etc/passwd,系统进行匹配时会自动忽略问号(?)及其后面的部分,即忽略?path=/etc/passwd

    检测类型

    选择需要放行的检测类型。

  5. 单击下一步并选择生效的应用分组,然后单击确认

    配置完成后,该白名单规则会对生效的应用分组下所有在线状态的应用实例生效。

管理剩余授权数

  • 查看应用防护剩余授权数

    每防护一个应用实例会消耗一个授权数。在使用应用防护功能时,请确保您拥有充足的剩余授权数。购买应用防护授权数后,您可以在应用防护页面应用配置页签查看剩余授权数。image.png

  • 扩充应用防护授权数

    如果需要防护的应用实例数量大于剩余授权数,您需要在应用防护页面应用配置页签,单击剩余授权数右侧的升级,前往相应页面购买应用防护授权数。

管理接入实例

创建应用分组后,您可以参考以下操作管理应用分组的实例。

  • 查看已授权实例列表

    应用防护页面应用配置页签,单击目标应用分组已授权实例列的数字,查看已授权实例列表。

  • 查看接入实例列表

    应用防护页面应用配置页签,单击目标应用分组接入实例列的数字,查看已接入的实例列表。如果应用实例RASP版本列右侧显示image.png图标,代表该应用实例安装的探针存在新版本,建议您重启应用来自动更新探针版本。image.png

    不同状态实例的具体含义如下:

    • 在线已授权:该实例被正常防护中。

    • 在线未授权:由于应用防护授权数不足,该实例虽已成功接入但未受到防护。您可以单击剩余授权数右侧的升级购买充足的应用防护授权数。

    • 离线:该实例未接入应用防护。

  • 接入实例

    应用防护页面应用配置页签,单击目标应用分组操作列的接入管理,在接入管理面板,通过自动接入或手动接入方式将应用接入应用防护。自动接入页签中,仅展示该应用分组下选择过的服务器列表。

  • 移除实例

    应用防护页面应用配置页签,单击目标应用分组操作列的接入管理,在接入管理面板,根据您的应用接入方式参考以下说明卸载RASP探针:

    • 自动接入:在自动接入页签,选中需要卸载实例的服务器,单击批量关闭防护。或关闭应用防护列的开关,卸载该服务器中的RASP探针。

      重要

      如果无需再防护指定服务器,您可以在确保该服务器的应用防护开关为关闭状态时,删除该服务器。

      自动接入页签,单击目标服务器操作列的删除,或选中多个服务器后单击批量删除,在该应用分组下删除服务器。

    • 手动接入:如果需要为目标应用卸载RASP探针,您需要手动删除在接入指南中添加的JVM参数,然后重启相关应用,即可取消接入应用防护功能。

编辑防护策略

应用防护页面应用配置页签,单击目标应用分组操作列的防护策略,在防护策略面板,修改防护模式、检测超时时间等配置。

删除应用分组

重要

删除应用分组后,对该分组下所有实例的防护都会失效。请您在确认无需使用该应用分组下的所有RASP探针时,再执行删除操作。

在删除应用分组前,您需要确认当前应用分组下不存在已授权实例,或自动接入中所有服务器的应用防护开关均为关闭状态。

应用防护页面的应用配置页签,单击目标应用分组操作列的删除,并在提示对话框中单击确定删除

常见问题

应用防护支持接入哪些类型的应用?

应用防护功能目前仅支持接入Java应用。

应用防护对应用运行是否存在影响?

应用防护自身对性能、兼容性和稳定性有良好的控制,对应用运行的影响几乎可以忽略不计。实际测试中,CPU的额外开销小于1%,内存开销小于30 MB,应用延迟(RT)小于1毫秒。此外,应用防护还提供监控、防护和禁用三种防护模式,还提供软熔断逃生机制等功能,最大限度降低对应用运行的干扰。

接入应用防护后应如何进行应用防护?

理论上来说,应用防护检测到的攻击是能够实际产生安全威胁的行为,相比基于流量特征的传统检测技术而言,误报率较低,所以对应用防护功能所检测到的攻击,必须引起重视。在接入应用防护后,应用防护对攻击的默认防护模式为监控。在应用稳定运行后,您可切换为防护模式。

为什么攻击统计中没有攻击数据?

没有攻击数据可能存在以下两种原因:

  • 目标应用没有完成接入。您可以重新将应用进程接入RASP。具体操作,请参见步骤一:接入应用防护

  • 没有产生真实有效的攻击行为。与传统防火墙不同,应用防护仅记录真实有效的攻击。传统防火墙会在检测到报文中存在恶意攻击特征时进行上报。但存在恶意特征不代表攻击有效,例如利用PHP漏洞的攻击请求在Java环境中则没有意义。若产生真实有效的攻击,一般表明攻击者已成功突破外层防御,可以打入应用内部环境并执行危险动作。您的应用可能不会存在大量真实有效的攻击,但发生时请务必引起重视,及时拦截或者修复相关安全漏洞。