通过在PHP应用中集成RASP(Runtime Application Self-Protection)探针,应用防护能够实时监测并抵御恶意行为和安全威胁,确保应用持续稳定运行。本文介绍首次将PHP应用接入应用防护的具体操作步骤。
支持范围
应用防护仅支持防护满足以下条件的PHP进程,即仅支持在同时满足以下条件的PHP业务进程中安装RASP探针。
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 及以上。
接入说明
接入流程
接入方式说明
RASP支持自动接入和手动接入方式,您可以根据下表的说明选择合适的接入方式。
接入方式 | 说明 | 应用场景 |
自动接入 | 以服务器为单位进行接入,应用防护功能会自动识别并接入防护主机上的PHP服务进程(包括容器环境),无需重启进程。 |
说明 如果您服务器中的部分应用进程已自动接入指定应用分组,现需要将该主机中的应用进程重新接入另一个应用分组,您可以先为该服务器关闭应用防护,即从当前应用分组移除该服务器,再在新的应用分组开启自动接入。 |
手动接入 | 以应用进程为单位进行接入,需手动部署并重启应用。 |
|
前提条件
1. 新建应用分组
登录云安全中心控制台。
在左侧导航栏,选择 。在控制台左上角,选择需防护资产所在的区域:中国或全球(不含中国)。
在应用配置页签,单击新建应用分组。
在新建应用分组向导页面,输入要新建的应用分组名称,选择应用语言(PHP)和备注信息,然后单击下一步。
建议您根据需要防护的Web业务进程设置应用分组名称,应用分组名称不可重复。应用语言选择后不支持修改。
完成该操作后,云安全中心会创建一个应用分组。
2. 自动接入或手动接入
自动接入
注意事项
建议首次自动接入时避开业务高峰期和网关型业务进程,分批次灰度执行并观察业务监控指标。
一台主机仅支持自动接入到一个应用分组中,不支持同时自动接入多个应用分组。自动接入服务器时,仅支持选择未自动接入过其他应用分组且操作系统为64位的主机。
已通过手动接入方式接入的主机,可以开启自动接入。当您卸载了手动接入的RASP探针后,应用防护会为您重新自动接入该应用进程。
操作步骤
(可选)在自动/手动接入应用防护向导页面自动接入页签,单击接入黑名单或接入白名单,设置需要自动接入的进程。
通过设置黑名单或白名单,您可以定义自动接入的进程范围。具体操作,请参见新增白名单或黑名单。
在自动/手动接入应用防护向导页面自动接入页签,单击选择资产接入应用防护。
在选择资产面板,选择需要接入的资产后,单击确定。
执行该步骤后,应用防护功能会自动识别并接入所选主机上的PHP服务进程(包括容器环境),无需您手动重启进程。最多支持同时选择50台服务器。
根据您的网络环境不同接入防护的过程可能会持续约10分钟。如果您的主机中有多个运行状态的PHP进程,云安全中心会同时接入满足接入规则的进程。
查看应用进程接入状态。
您可以在应用防护接入状态列查看应用实例的接入状态。以下是应用防护接入状态的说明:
未接入:表示当前服务器RASP安装成功,暂无符合接入规则的进程。
接入失败:表示该服务器所有支持防护的应用都接入失败。
部分接入:表示该服务器支持防护的应用部分接入成功,部分接入失败。
全部接入:表示该服务器支持防护的PHP应用均已接入应用防护,或者该服务器上无可接入的进程。
说明应用防护接入状态显示为未接入时,表示服务器上不存在可接入的进程,或者所属业务进程不在支持范围内,此时接入详情列表为空。如果后续该服务器上出现可接入的进程可自动接入应用防护。
在操作列单击详情,可以查看已接入的PHP进程状态。
说明如果您已为应用分组配置接入规则,命中接入黑名单的规则和未命中接入白名单规则的进程会被跳过接入。
手动接入
您可以参考下述步骤手动将主机或容器中的PHP应用接入应用防护。关于如何选择一键下推送安装或自定义下载安装的说明如下:
一键推送安装:您已明确需要接入的服务器和应用范围时,可以直接使用该方式,完成安装包的推送。
自定义下载安装:如果需要其他人员协助安装RASP探针,您可以使用该方式下载安装包,并将安装包分发给其他人员进行安装部署。
接入主机(一键推送安装)
在自动/手动接入应用防护向导页面手动接入页签的主机接入指南子页签,选择应用的PHP版本和一键推送安装,单击一键推送。
说明PHP版本选择要和业务中的实际PHP版本相符,否则会导致RASP探针加载失败。
在推送RASP探针对话框,选择需推送探针的服务器,并单击确定。
在推送记录子页签,等待对应服务器状态变更为已推送。
在主机接入指南子页签,根据应用运行环境类型参考控制台或下述步骤在应用服务器中修改
php.ini
配置文件。执行下述命令打开php.ini 文件。
说明当前步骤使用的编辑器为nano。
php.ini
文件的位置与安装形式和发行版本有关,大部分CentOS位置为:/etc/php.ini
,PHP-FPM可能会有独立的配置文件。以RHEL、CentOS、Fedora操作系统为例,
php.ini
文件的默认位置为:/etc/php.ini
,打开上述操作系统下php.ini文件的命令如下所示。请根据您的具体环境调整下述命令中的路径。
sudo nano /etc/php.ini
在
php.ini
文件末尾或适当的[Extensions]
段落下,添加以下内容。您需要使用控制台主机接入指南页签展示的应用ID替换下表中的
{appId}
。应用ID的位置如下图所示。[alirasp] extension=/usr/local/aegis/rasp/apps/{appId}/php-7.0/alirasp.so alirasp.root_dir=/usr/local/aegis/rasp/apps/{appId}/php-7.0
保存并关闭
php.ini
文件。如果您使用的是nano编辑器,可以通过按
Ctrl + X
,然后按Y
确认保存,最后按Enter
退出。
重启您的应用,重启后RASP可立即生效。
说明以下命令仅供参考。具体需要重启的服务取决于实际环境中安装的服务。
Nginx服务重启命令
sudo systemctl restart nginx
Apache服务重启命令
sudo systemctl restart apache2
或
sudo systemctl restart httpd
接入主机(自定义下载安装)
在自动/手动接入应用防护向导页面手动接入页签的主机接入指南子页签,选择应用的PHP版本和自定义下载安装,单击RASP安装包右侧的下载。
说明PHP版本选择要和业务中的实际PHP版本相符,否则会导致RASP探针加载失败。
将下载的RASP安装包上传到服务器上,并执行下述命令解压该安装包。
user.path为RASP安装包在服务器上的存储路径。
unzip <安装包名称> -d <user.path>
根据应用运行环境类型参考控制台或下述步骤在应用服务器中修改
php.ini
配置文件。执行下述命令打开php.ini 文件。
说明当前步骤使用的编辑器为nano。
php.ini
文件通常位于/etc/php/7.0/fpm/php.ini
或/etc/php/7.0/apache2/php.ini
。请根据您的具体环境调整下述命令中的路径。
sudo nano /etc/php/7.0/fpm/php.ini
或
sudo nano /etc/php/7.0/apache2/php.ini
在
php.ini
文件末尾或适当的[Extensions]
段落下,添加以下内容。将下述代码块中的<user.path>替换为安装包解压后的目录。
[alirasp] extension=<user.path>/alirasp.so alirasp.root_dir=<user.path>
说明请检查并确保解压的目录及其父目录,以及目录中的文件对 PHP 的 worker 启动用户有可读取和可进入的权限。
保存并关闭
php.ini
文件。如果您使用的是nano编辑器,可以通过按
Ctrl + X
,然后按Y
确认保存,最后按Enter
退出。
重启您的应用,重启后RASP可立即生效。
说明以下命令仅供参考。具体需要重启的服务取决于实际环境中安装的服务。
Nginx服务重启命令
sudo systemctl restart nginx
Apache服务重启命令
sudo systemctl restart apache2
或
sudo systemctl restart httpd
接入容器(一键推送安装)
在自动/手动接入应用防护向导页面手动接入页签的容器接入指南子页签,选择应用的PHP版本和一键推送安装,单击一键推送。
说明PHP版本选择要和业务中的实际PHP版本相符,否则会导致RASP探针加载失败。
在推送RASP探针对话框,选择需推送探针的服务器,并单击确定。
在推送记录子页签,等待对应服务器状态变更为已推送。
在容器接入指南子页签,参考控制台说明或下述步骤部署探针。
方法一:写入Dockerfile方式
执行下述命令进入Dockerfile所在目录,并创建rasp目录。
cd <Dockerfile所在目录> mkdir rasp
执行下述命令将推送到服务器上的RASP文件拷贝到新创建的rasp目录下。
您可以在云安全中心控制台容器接入指南页签下,获取应用分组ID的值。
cp -r /usr/local/aegis/rasp/apps/<应用分组ID>/php-7.0/* ./rasp
修改Dockerfile文件,将下载好的 rasp 安装包打包到容器镜像中。Dockerfile文件需要添加的内容如下。
COPY rasp /rasp/
说明您需要赋予指定用户读取和执行/rasp/目录以及目录下文件的权限。
在Dockerfile中修改PHP的
php.ini
配置并添加 RASP扩展,内容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重新生成镜像,并启动容器。
方法二:数据卷挂载方式
执行下述命令在创建容器时将服务器上的rasp目录挂载到容器指定目录。
docker run -itd --privileged=true -v /usr/local/aegis/rasp/apps/<应用分组ID>/php-7.0:/rasp/ 镜像ID
在Dockerfile中修改PHP的
php.ini
配置并添加 RASP扩展,内容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重新生成镜像,并启动容器。
接入容器(自定义下载安装)
在自动/手动接入应用防护向导页面手动接入页签的容器接入指南子页签,选择应用的PHP版本和自定义下载安装,单击RASP安装包右侧的下载。
说明PHP版本选择要和业务中的实际PHP版本相符,否则会导致RASP探针加载失败。
在容器接入指南子页签,根据应用运行环境类型参考控制台或下述步骤部署探针。
方法一:写入Dockerfile方式
执行下述命令进入Dockerfile所在目录。
cd <Dockerfile所在目录>
将下载的RASP安装包上传到Dockerfile所在目录下,并执行下述命令解压RASP安装包到该目录。
unzip <安装包名称> -d.
说明安装包解压完成后会直接生成一个名称为rasp的目录。
修改Dockerfile文件,将下载好的 rasp 安装包打包到容器镜像中。Dockerfile文件需要添加的内容如下。
COPY rasp /rasp/
说明您需要赋予指定用户读取和执行/rasp/目录以及目录下文件的权限。
在Dockerfile中修改PHP的
php.ini
配置并添加 RASP扩展,内容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重新生成镜像,并启动容器。
方法二:数据卷挂载方式
将下载的RASP安装包上传到服务器上,并执行下述命令解压该安装包。
user.path为RASP安装包在服务器上的存储路径。
unzip <安装包名称> -d <user.path>
执行下述命令在创建容器时将服务器上的rasp目录挂载到容器指定目录。
docker run -itd -v /{user.path}/rasp:/rasp/ 镜像ID
在Dockerfile中修改PHP的
php.ini
配置并添加 RASP扩展,内容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重新生成镜像,并启动容器。
3. 设置防护策略
在观察告警无误设置“防护”模式向导页面,设置防护策略,单击确定。
默认防护模式为监控模式,建议您先使用监控模式2~5天,如果在此期间未出现误告警您可以将防护模式修改为防护。如果出现误告警,您可以通过配置白名单规则,屏蔽产生误拦截的检测类型。具体操作,请参见将告警加入白名单。
分类 | 配置项 | 说明 |
防护策略 | 应用分组名称 | 展示应用分组的名称,在此处不支持修改。 |
防护状态 | 选择是否为当前应用分组开启或关闭防护,默认开启。关闭后应用防护不检测也不阻断任何攻击行为。 | |
防护模式 | 选择应用分组的防护模式,可选项:
| |
防护策略组 | 默认的防护策略组是日常运行组。您可以在下拉列表中选择其他防护策略组。防护策略组的更多信息,请参见防护策略管理。 | |
检测类型 | 展示已选择的防护策略组支持的检测类型。 | |
常用配置 | 检测超时时间 | 攻击检测的最大时间,输入范围为1~60,000毫秒,默认设置为300毫秒。若攻击检测超过设置的时间,即使未完成检测逻辑也会继续执行原始业务逻辑。如无特殊原因,建议使用默认值。 |
源IP判断方式 |
| |
运行时熔断配置 | 开启该功能后,当服务器或进程的资源占用率超过CPU或内存任一熔断值时,RASP的实时防护能力将自动停止。当服务器或进程资源占用率低于设置的所有熔断值时,RASP的防护能力会自动恢复。 该功能可以保障业务在高峰情况下稳定运行,默认为关闭状态。如果您的应用为对性能敏感的计算型业务,可以开启该功能。配置说明如下:
重要
|
4. 验证应用接入情况
如果应用进程的PID展示在应用分组的已授权实例列表中,则说明该应用已正常接入应用防护。参考以下步骤可查看已接入的应用列表。
在应用防护页面的应用配置页签,单击目标应用分组已授权进程列下的数字。
在进程详情面板,查看已接入的应用列表。
如果目标服务器的应用进程PID在应用列表中,则表示该应用已成功接入应用防护。