通过在应用中集成RASP(Runtime Application Self-Protection)技术,应用防护能够实时监测并抵御恶意行为和安全威胁,确保应用持续稳定运行。本文介绍首次将应用接入应用防护的具体操作步骤。
RASP探针说明
支持防护的Java进程
JDK支持范围:支持JDK 6及以上版本,不支持JDK 13和14,不支持JDK 8中的1.8.0_40及以下版本。
中间件支持范围:对中间件类型和版本无特定要求,包括Tomcat、SpringBoot、Jboss、WildFly、Jetty、Resin、Weblogic、Websphere、Liberty、Netty、GlassFish、国产中间件等。
操作系统支持:Linux(64位)、Windows(64位)。
支持防护的PHP进程
PHP版本支持范围: 7.0 ~ 8.3 版本,同时支持线程安全(ts,Thread Safe)和非线程安全(nts,Non-Thread Safe)版本。
SAPI(Server Application Programming Interface)支持范围:PHP-FPM(FastCGI Process Manager)和Apache PHP模块。
操作系统支持:仅支持Linux x86架构(64位)。
系统库依赖:glibc 2.14 及以上、libstdc++ 3.4.19 及以上。
资源使用量阈值说明
在主机、容器或JVM资源使用量超过一定阈值时,为了保证应用防护功能的正常运行,自动接入方式会暂停接入RASP探针,直到降到阈值以下才会继续安装RASP探针;手动接入方式无此限制。停止安装探针的具体阈值如下:
主机或容器CPU占用超过98%,或剩余内存不足200 MB。
JVM堆内存剩余不足150 MB,元数据空间不足5 MB。
前提条件
需接入应用所在服务器的云安全中心客户端为在线状态。
您可以登录云安全中心控制台在资产中心 > 主机资产页面的服务器页签通过服务器客户端列图标的状态判断客户端是否在线,
图标表示在线。如果客户端离线,处理方法请参见客户端离线排查。如果是以RAM用户身份使用应用防护功能,请确保RAM用户拥有AliyunYundunWAFFullAccess、AliyunYundunSASFullAccess权限策略。授权的具体操作,请参见为RAM用户授权。
步骤一:查看哪些应用可以接入
由于应用进程是动态变化的,在购买应用防护授权数后,您可以参考下述步骤查看支持接入RASP进行防护的Java和PHP应用进程列表。
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)。
在左侧导航栏,选择。
在防护统计区域,单击立即扫描。
单击立即扫描后,云安全中心客户端将会对您资产中进程信息进行采集。
说明包年包月服务:免费版、仅采购增值服务版、防病毒版和高级版每天仅支持执行一次立即扫描操作。企业版和旗舰版用户可不限次执行扫描。
按量付费服务:
开通主机及容器安全功能,每天可不限次执行立即扫描操作,仅支持扫描绑定了防护等级:主机全面防护或主机及容器全面防护的服务器。
未开通主机及容器安全功能,每天仅可执行一次扫描。
查看您资产中存在的应用进程数量,您可以单击数字查看应用进程列表。应用进程列表提供了支持接入应用防护的应用进程所在服务器信息、进程名、PID(进程标识符)和启动参数。
重要防护一个应用进程需消耗一个应用防护授权数。进程数量是动态变化的,此处采集的数据是执行扫描的时刻状态为启动中的进程。您可以根据这里的数量,预估需要购买的应用防护授权数。
如果您之前执行过扫描操作,系统将自动保存并展示7天内的扫描数据。超过7天的扫描数据将自动被清理。执行扫描后,采集到的服务器最新数据将覆盖之前已有的服务器数据。

步骤二:购买应用防护授权数
您需要购买足够的应用防护授权数,才能将应用接入到应用防护中。在购买云安全中心时,选择需要的版本(任一版本)和应用防护授权数即可。具体操作,请参见购买云安全中心。
步骤三:接入应用防护
一、创建应用分组
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)。
在左侧导航栏,选择。
在应用配置页签,单击新建应用分组。
在新建应用分组向导页面,输入要新建的应用分组名称,选择应用语言(Java或PHP)和备注信息,然后单击下一步。
二、自动接入或手动接入
接入方式说明
Java
接入方式 | 说明 | 应用场景 |
自动接入 | 以服务器为单位进行接入,服务器接入后,在应用程序运行时,应用防护功能会使用JVM Attach能力自动识别并接入服务器中的Java进程(包括容器环境),将应用防护功能集成到应用程序中。 该方式可以在应用程序运行时动态地加载和卸载应用防护功能,无需重启应用进程,可以保障业务的连续性。 | 未自动接入过其他应用分组的服务器可以选择自动接入方式。 说明 如果您服务器中的部分应用进程已自动接入指定应用分组,现需要将该主机中的应用进程重新接入另一个应用分组,您可以先为该服务器关闭应用防护,即从当前应用分组移除该服务器,再在新的应用分组开启自动接入。 |
手动接入 | 以应用进程为单位进行接入,需手动部署并重启应用。 |
|
PHP
接入方式 | 说明 | 应用场景 |
自动接入 | 以服务器为单位进行接入,应用防护功能会自动识别并接入防护主机上的PHP服务进程(包括容器环境),无需重启进程。 |
说明 如果您服务器中的部分应用进程已自动接入指定应用分组,现需要将该主机中的应用进程重新接入另一个应用分组,您可以先为该服务器关闭应用防护,即从当前应用分组移除该服务器,再在新的应用分组开启自动接入。 |
手动接入 | 以应用进程为单位进行接入,需手动部署并重启应用。 |
|
自动接入
建议首次自动接入时避开业务高峰期和网关型业务进程,分批次灰度执行并观察业务监控指标。自动接入过程中RASP会对应用进程进行埋点(即插入监控或防护代码),该过程中产生的退优化现象可能会有半分钟的CPU占用升高,平均影响10~20s,大型应用的影响小概率为数分钟,接入完成后自动恢复正常。
一台主机仅支持自动接入到一个应用分组中,不支持同时自动接入多个应用分组。自动接入服务器时,仅支持选择未自动接入过其他应用分组且操作系统为64位的主机。
已通过手动接入方式接入的主机,可以开启自动接入。当您卸载了手动接入的RASP探针后,应用防护会为您重新自动接入该应用进程。
(可选)在自动/手动接入应用防护向导页面自动接入页签,单击接入黑名单或接入白名单,设置需要自动接入的进程。
通过设置黑名单或白名单,您可以定义自动接入的进程范围。具体操作,请参见新增白名单或黑名单。
在自动/手动接入应用防护向导页面自动接入页签,单击选择资产接入应用防护。
在选择资产面板,选择需要接入的资产后,单击确定。
执行该步骤后,应用防护功能会自动识别并接入所选主机上的Java服务进程(包括容器环境),无需重启进程。单次最多支持选择50台服务器。
根据您的网络环境不同接入防护的过程可能会持续约10分钟。如果您的主机中有多个运行状态的Java进程,云安全中心会同时接入满足接入规则的进程。
查看应用进程接入状态。
您可以在应用防护接入状态列查看应用实例的接入状态。以下是应用防护接入状态的说明:
未连接:表示该服务器未开启应用防护开关。
接入失败:表示该服务器所有支持防护的应用都接入失败。
部分接入:表示该服务器支持防护的应用部分接入成功,部分接入失败。
全部接入:表示该服务器支持防护的Java应用均已接入应用防护,或者该服务器上无可接入的进程。
说明应用防护接入状态显示为全部接入时,如果服务器上不存在可接入的进程,或者所属业务进程不在支持范围内,此时接入详情列表为空。如果后续该服务器上出现可接入的进程可自动接入应用防护。
在操作列单击详情,可以查看已接入的Java进程状态。
说明如果您已为应用分组配置接入规则,命中接入黑名单的规则和未命中接入白名单规则的进程会被跳过接入。

手动接入主机
在自动/手动接入应用防护向导页面手动接入页签,按照主机接入指南子页签的接入步骤,安装RASP探针,再重启应用。单击下一步。
重启应用前,您需要根据应用运行环境进行相关部署。下表以部署应用的JVM参数为例介绍重启应用时的运行环境部署。如果遇到需要配置的中间件不在列表的情况,在配置参数时,您需要使用主机接入指南页签展示的应用ID替换{appId}。应用ID的位置如下图所示:
运行环境 | 参数配置说明 |
Tomcat(Linux) | 在<Tomcat安装目录>/bin/setenv.sh文件中添加以下内容。 如果您的<Tomcat安装目录>/bin/目录下没有setenv.sh配置文件,请在<Tomcat安装目录>/bin/目录下创建该文件。 |
Tomcat(Windows) | 在<Tomcat安装目录>\bin\setenv.bat文件中添加以下内容。 如果您的<Tomcat安装目录>\bin\目录下没有setenv.bat配置文件,请在<Tomcat安装目录>\bin\下创建该文件。 |
Jetty | 在{JETTY_HOME}/start.ini配置文件中添加以下配置。 |
Spring Boot | 启动Spring Boot进程时,在启动命令后加上-javaagent参数。 例如,您在启动Spring Boot进程时修改前的命令为: 需要安装RASP探针时启动Spring Boot进程执行的命令为: 重要 -javaagent参数应始终放在-jar参数之前。 |
JBoss或WildFly |
|
Liberty | 在<Liberty安装目录>/${server.config.dir}路径下(默认路径为:/opt/ibm/wlp/usr/servers/defaultServer/jvm.options),创建或修改jvm.options文件 ,在文件中添加以下内容: |
Resin |
|
在本地重启需接入的应用。应用重启后RASP防护可立即生效。您可以在应用配置页面,查看该应用分组下接入实例列表。
手动接入容器(一键推送安装)
在手动接入页签的容器接入指南子页签,单击一键推送。
您也可以在推送记录页签,单击推送RASP探针,为应用所在的主机或容器推送并安装RASP探针。
在推送RASP探针对话框,选择需推送探针的服务器,并单击确定。
启动RASP探针。
方法一:写入Dockerfile方式
执行下述命令进入Dockerfile所在目录,并创建rasp目录。
cd <Dockerfile所在目录> mkdir rasp执行下述命令将推送到服务器上的RASP文件拷贝到新创建的rasp目录下。
您可以在云安全中心控制台容器接入指南页签下,获取应用分组ID的值。
cp -r /usr/local/aegis/rasp/apps/<应用分组ID>/* ./rasp修改Dockerfile文件,将下载好的 rasp 安装包打包到容器镜像中。Dockerfile文件需要添加的内容如下。
COPY rasp /rasp/重要您需要赋予指定用户读取和执行/rasp/目录以及目录下文件的权限。
通过Dockerfile 修改JVM启动参数,添加-javaagent:/rasp/rasp.jar。
您需要使用容器接入指南页签展示的
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目录挂载到容器指定目录。
docker run -itd --privileged=true -v /usr/local/aegis/rasp/apps/<应用分组ID>:/rasp/ 镜像ID执行下述命令进入容器。
docker exec -it <容器ID> /bin/bash在应用服务器的启动脚本中添加以下JVM参数以启动RASP探针。
您需要参考下述参数结合自己的业务环境进行配置。您需要使用容器接入指南页签展示的
Dmanager.key值替换下述{manager.key}。-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}
三、设置防护策略
在观察告警无误设置“防护”模式向导页面,设置防护策略,单击确定。
默认防护模式为监控模式,建议您先使用监控模式2~5天,如果在此期间未出现误告警您可以将防护模式修改为防护。如果出现误告警,您可以通过配置白名单规则,屏蔽产生误拦截的检测类型。具体操作,请参见将告警加入白名单。
分类 | 配置项 | 说明 |
防护策略 | 应用分组名称 | 展示应用分组的名称,在此处不支持修改。 |
防护状态 | 选择是否为当前应用分组开启或关闭防护,默认开启。关闭后应用防护不检测也不阻断任何攻击行为。 | |
防护模式 | 选择应用分组的防护模式,可选项:
| |
防护策略组 | 默认的防护策略组是日常运行组。您可以在下拉列表中选择其他防护策略组。防护策略组的更多信息,请参见防护策略管理。 | |
检测类型 | 展示已选择的防护策略组支持的检测类型。 | |
检测策略 | 弱点检测 | 选择是否为当前应用分组开启弱点检测。更多信息,请参见发现应用弱点。 说明 PHP应用不支持该功能。 |
内存马检测 | 选择是否为当前应用分组开启内存马检测。更多信息,请参见内存马防御。 说明 PHP应用不支持该功能。 | |
常用配置 | 检测超时时间 | 攻击检测的最大时间,输入范围为1~60,000毫秒,默认设置为300毫秒。若攻击检测超过设置的时间,即使未完成检测逻辑也会继续执行原始业务逻辑。如无特殊原因,建议使用默认值。 |
源IP判断方式 |
| |
运行时熔断配置 | 开启该功能后,当服务器或进程的资源占用率超过CPU或内存任一熔断值时,RASP的实时防护、内存马检测和弱点检测能力将自动停止。当服务器或进程资源占用率低于设置的所有熔断值时,RASP的防护能力会自动恢复。 该功能可以保障业务在高峰情况下稳定运行,默认为关闭状态。如果您的应用为对性能敏感的计算型业务,可以开启该功能。配置说明如下:
重要
|
步骤四:验证应用接入情况
如果应用进程的PID展示在应用分组的已授权实例列表中,则说明该应用已正常接入应用防护。参考以下步骤可查看已接入的应用列表。
在应用防护页面的应用配置页签,单击目标应用分组已授权进程列下的数字。
在实例详情面板,查看已接入的应用列表。
如果目标服务器的应用进程PID在应用列表中,则表示该应用已成功接入应用防护。

步骤五:管理防护策略组
为满足不同业务情况下的安全需求,应用防护功能对攻击检测规则的能力进行分级,提供了内置的防护策略组:业务优先组(默认宽松规则组)、正常运营组(默认标准规则组)和防护优先组(默认严格规则组)。
每个默认防护策略组内的规则检测模式均相同,例如默认业务优先组(默认宽松规则组)内所有攻击规则的检测模式均为宽松;您可以根据实际需要使用对应规则组,或自定义规则组。
检测模式说明
为了平衡不同业务场景下误报率和攻击防护强度,应用防护功能定义了多种检测模式:宽松、标准和严格。这三种模式的防护能力从低到高逐级递增,误报率也是从低到高。
宽松:只覆盖已知攻击特征,极少误报。
标准(默认):覆盖常见攻击特征,并具有部分泛化推理能力,适用于日常运维场景。
严格:支持识别更多隐蔽的攻击行为,适用于重保场景,但存在一定的误报风险。

新建防护策略组
在应用配置页签,单击页面右上角管理设置。
在管理设置面板防护策略管理页签,单击新建防护策略组。
在新建防护策略组面板,输入防护策略组名称,选择应用语言,并单击检测类型右侧的选择配置检测类型。
在选择检测类型面板,选中需要的检测类型,并设置检测模式,选择完成后,单击确定。
例如,在已有的告警中,您发现SQL注入误报较多,您可以将SQL注入检测项的检测模式修改为宽松。

相关操作
授权数管理
查看应用防护剩余授权数
防护一个应用进程实例会消耗一个授权数。在使用应用防护功能时,请确保您拥有充足的剩余授权数。购买应用防护授权数后,您可以在应用防护页面应用配置页签查看剩余授权数。

进行自动接入时,无法选择主机资产进行接入。
说明如果在自动接入的过程中授权数消耗完,应用进程可正常接入,但是超出授权数部分的进程实例状态为未授权。
使用手动接入方式可正常接入应用进程,但实例状态为未授权。未授权状态的实例没有受到防护。
扩充应用防护授权数
如果需要防护的应用实例数量大于剩余授权数,您需要在应用防护页面应用配置页签,单击剩余授权数右侧的升级,前往相应页面购买应用防护授权数。
修改应用分组的防护策略
您可以参考下述步骤修改应用分组的防护策略。
在应用防护页面的应用配置页签,单击目标应用分组操作列的防护策略。
在防护策略面板,修改防护状态、防护模式、防护策略组、检测策略和常用配置等信息。
单击确定。
(可选)在应用配置页签,参考下述说明进行批量操作。
修改为防护模式:选中目标应用分组,单击列表下方的全部防护,即可将选中应用分组的防护模式修改为防护。
修改为监控模式:选中目标应用分组,单击列表下方的全部监控,即可将选中应用分组的防护模式修改为监控。
禁用检测或防护:选中目标应用分组,单击列表下方的全部禁用,即可禁用选中的应用分组的防护能力。禁用会关闭当前应用分组内应用实例的防护功能,不检测也不阻断任何攻击行为。
启用检测或防护:选中目标应用分组,单击列表下方的全部启用,即可启用选中的应用分组。
关闭应用防护
关闭单个应用的防护
Java应用
在应用防护页面应用配置页签,单击目标应用分组操作列的接入管理,在接入管理面板,根据您的应用接入方式参考以下说明卸载RASP探针:
自动接入(云安全中心客户端在线):在自动接入页签,选中需要卸载实例的服务器,单击批量关闭防护。或单击操作列的卸载,卸载该服务器中的RASP探针。
重要如果不再需要防护指定服务器,您可以在确保该服务器已卸载RASP探针后,删除该服务器。
在自动接入页签,单击目标服务器操作列的删除,或选中多个服务器后单击批量删除,在该应用分组下删除服务器。
自动接入(云安全中心客户端离线):云安全中心客户端离线时,无法通过控制台自动卸载RASP探针,您需要参考以下步骤手动卸载RASP探针。
说明下述步骤以Linux操作系统为例进行说明。
在服务器的终端或命令行界面中执行
crontab -e。在定时任务列表中删除应用防护相关任务。应用防护相关任务如下所示。
* * * * * bash -c /usr/local/aegis/rasp/apps/664dd403cd24364f9e******/attach/runJavaFinder.sh http://update-vpc.aegis.aliyuncs.com/rasp/plugin/v1/error/report aa97bdc587ac7ab37028506359****** 6901ad53-a454-4681-afdb-c894d2******保存cron定时任务文件并退出。
使用编辑器
vi或vim,先按Esc键确保你处于正常模式,然后输入:wq并回车来保存并退出。使用编辑器nano,按
Ctrl+O来保存更改,然后按Ctrl+X退出。
在业务低峰时期重启进程。
重启进程后,RASP探针才会被卸载。
手动接入:如果需要为目标应用卸载RASP探针,您需要手动删除在接入指南中添加的JVM参数,然后重启相关应用,即可取消接入应用防护功能。
PHP应用
在应用防护页面应用配置页签,单击目标应用分组操作列的接入管理,在接入管理面板,根据您的应用接入方式参考以下说明卸载RASP探针:
自动接入(云安全中心客户端在线):在自动接入页签,选中需要卸载实例的服务器,单击批量关闭防护。或单击操作列的卸载,卸载该服务器中的RASP探针。
重要如果不再需要防护指定服务器,您可以在确保该服务器已卸载RASP探针后,删除该服务器。
在自动接入页签,单击目标服务器操作列的删除,或选中多个服务器后单击批量删除,在该应用分组下删除服务器。
自动接入(云安全中心客户端离线):云安全中心客户端离线时,无法通过控制台自动卸载RASP探针,您需要参考以下步骤手动卸载RASP探针。
说明下述步骤以Linux操作系统为例进行说明。
在服务器的终端或命令行界面中执行
crontab -e。在定时任务列表中删除应用防护相关任务。应用防护相关任务如下所示。
* * * * * bash -c /usr/local/aegis/rasp/apps/664dd403cd24364f9e******/attach/runPhpFinder.sh http://update-vpc.aegis.aliyuncs.com/rasp/plugin/v1/error/report aa97bdc587ac7ab37028506359****** 6901ad53-a454-4681-afdb-c894d2******保存cron定时任务文件并退出。
使用编辑器
vi或vim,先按Esc键确保你处于正常模式,然后输入:wq并回车来保存并退出。使用编辑器nano,按
Ctrl+O来保存更改,然后按Ctrl+X退出。
在业务低峰时期重启进程。
重启进程后,RASP探针才会被卸载。
手动接入:
如果需要为目标应用卸载RASP探针,您需要删除之前在接入指南中配置应用时添加的ini配置,删除的内容样例如下所示:
[alirasp] extension=/alirasp.so alirasp.root_dir=重启您的应用,重启后RASP防护即可关闭。
查看探针版本
在应用防护页面应用配置页签,单击目标应用分组接入实例列的数字,查看已接入的实例列表。如果应用实例RASP版本列右侧显示
图标,代表该应用实例安装的探针存在新版本,建议您重启应用来自动更新探针版本。

