其他配置选项
通用配置
以下配置支持云端下发,也支持单机修改。若开启远程管理,单机配置不会加载;如果没有开启,Java 版本单机配置修改后立即生效,PHP 大部分情况下会立即生效。
目前配置路径如下:
- PHP 版本:
<openrasp_rootdir>/conf/openrasp.yml - Java 版本:
<app_home>/rasp/conf/openrasp.yml
若配置修改后没有生效,请检查日志里是否有 yaml语法错误异常
- PHP日志:
rasp.log以及error_log ini配置的文件名 - Java日志:
rasp.log
插件相关
| 参数值 | 说明 | 默认值 |
|---|---|---|
| plugin.timeout.millis | 对于单个检测算法, JS 插件超时时间 (毫秒) |
100 |
| plugin.maxstack | 插件获取堆栈的最大深度 | 100 |
| plugin.filter | 针对文件访问hook点,是否开启过滤机制。 若开启,当目标文件不存在,将不进入检测插件。 支持 directory, readFile, rename, include 四个 hook 点 |
true |
| body.maxbytes | 最多读取 POST body 的前多少字节 | 4096 |
| lru.maxsize | 插件检测结果为ignore时,我们会缓存检测结果。 再次遇到相同的行为参数,将不会进行检测。 LRU只对数据库、文件操作生效,所有检测点共享一个LRU。 |
1024 |
| ognl.expression.minlength | 为了减少OGNL检测的性能损耗, 当OGNL语句达到这个长度才调用插件 |
30 |
文件日志相关
| 参数值 | 说明 | 默认值 |
|---|---|---|
| log.maxstack | 报警日志记录的最大堆栈深度(v1.2开始废弃) | 50 |
| log.maxburst | 每个进程/线程每分钟最大日志条数 | 100 |
| log.maxbackup | 日志最大备份天数 | 30 |
syslog 日志相关
syslog.facility 的值请参考 What are Syslog Facilities and Levels,比如 7 表示 news 类型。另外,由于报警日志大小超过 1KB,所以我们仅支持 TCP 方式推送报警。
| 参数值 | 说明 | 默认值 |
|---|---|---|
| syslog.enable | 是否开启 syslog | false |
| syslog.url | 服务器地址,如 tcp://ip:port | (空) |
| syslog.tag | tag 值 | OpenRASP |
| syslog.facility | facility 值 | 1 |
| syslog.connection_timeout | 连接超时时间 (毫秒) | 50 |
| syslog.read_timeout | 读超时时间 (毫秒) | 10 |
| syslog.reconnect_interval | 重连时间间隔 (秒) | 300 |
拦截相关
| 参数值 | 说明 | 默认值 |
|---|---|---|
| block.status_code | 拦截攻击后,将状态码设置为这个值 | 302 |
| block.redirect_url | 拦截攻击后,跳转到这个URL,并根据模板设置 request_id 参数 | https://rasp.baidu.com/blocked/?request_id=%request_id% |
| block.content_json | 拦截攻击后,若期望响应类型为JSON,则根据此模板显示内容 | {"error":true, "reason": "Request blocked by OpenRASP", "request_id": "%request_id%"} |
| block.content_xml | 拦截攻击后,若期望响应类型为XML,则根据此模板显示内容 | <?xml version="1.0"?> <doc> <error>true</error> <reason>Request blocked by OpenRASP</reason><request_id>%request_id%</request_id> </doc> |
| block.content.html | 拦截攻击后,若期望响应类型为其他情况,则根据此模板显示内容 | </script><script> location.href= "https://rasp.baidu.com/blocked2/?request_id=%request_id%" </script> |
熔断配置
注意: 目前仅 Java 服务器支持熔断,PHP 暂不支持
| 参数值 | 说明 | 默认值 |
|---|---|---|
| cpu.usage.enable | 是否开启熔断支持 | false |
| cpu.usage.interval | 每隔多少秒采集一次CPU占用率 配置范围是 1-1800 |
5 |
| cpu.usage.percent | 当单核CPU占用率超过这个数值,关闭所有防护。 配置范围是 30-90 |
90 |
其他配置
| 参数值 | 说明 | 默认值 |
|---|---|---|
| dependency_check.enable | 是否采集依赖库 | true |
| request.param_encoding | 仅Java支持,设置 Form 参数的编码格式。设置后,可在用户解析参数之前按照该编码提前获取用户输入,如 UTF-8 |
(空) |
| clientip.header | 从指定的 HTTP header 里获取客户端真实IP,并记录到报警日志的 client_ip 字段里。注意: 本配置区分大小写。 | ClientIP |
| inject.urlprefix | 对于以下URL,修改响应并注入HTML | (空) |
| debug.level | debug 等级,0为关闭 debug 模式 | 0 |
| decompile.enable | 是否开启反汇编功能。 开启后可获取源代码,但是会非常消耗性能 |
0 |
| offline_hosts.cleanup.interval | 清理离线时间间隔超过几天以上的主机。1以上的值表示开启 | 0 |
PHP 版本独立配置
以下配置无法云端下发,需要放在 php.ini 里,修改后重启PHP服务器生效。
| 参数值 | 说明 | 默认值 |
|---|---|---|
| openrasp.root_dir | openrasp 根目录,存放插件、日志 | (空) |
| openrasp.locale | 配置的语言类型 | (空) |
| openrasp.heartbeat_interval | 心跳间隔,单位秒 | 180 |
| openrasp.backend_url | 云控后台 URL 地址 | (空) |
| openrasp.app_id | 云控通信使用的 app_id 值 | (空) |
| openrasp.rasp_id | 自定义的 RASP ID,如果空就计算一个 | (空) |
| openrasp.app_secret | 云控通信使用的 app_secret 值 | (空) |
| openrasp.remote_management_enable | 是否开启远程管理功能 | false |
Java 版本独立配置
单机版文件监控相关设置,监控范围是配置文件以及插件目录 (要求客户端版本 >= 1.3.6)
| 参数值 | 说明 | 默认值 |
|---|---|---|
| file_monitor.mode | 单机版文件目录监控机制,重启生效。 jnotify: 使用 jnotify 监控目录变更 scan: 定期扫描目录变更 disable: 关闭插件更新机制 |
scan |
| file_monitor.interval | 在定期扫描模式下,多久扫描一次目录(秒) | 3 |
以下配置虽然还是在 openrasp.yml 里,但是无法云端下发,且修改后需要重启服务器生效。
| 参数值 | 说明 | 默认值 |
|---|---|---|
| cloud.backend_url | 云控后台 URL 地址 | (空) |
| cloud.app_id | 云控通信使用的 app_id 值 | (空) |
| cloud.app_secret | 云控通信使用的 app_secret 值 | (空) |
| cloud.enable | 是否开启远程管理功能 | false |
| cloud.heartbeat_interval | 心跳间隔,单位秒 | 180 |
| hooks.ignore | 默认开启全部 hook 点,有不需要的可在这里关闭,逗号分隔 | (空) |
| rasp.id | 自定义的 RASP ID,如果空就计算一个 | (空) |
hooks.ignore 全部可选值
其中 http_output 为HTML注入功能,其他的都比较好理解。修改后需要重启 Java 应用服务器。
hooks.ignore=sql,sqlPrepared,directory,request,readFile,writeFile,fileUpload,command,xxe,ognl,deserialization,include,ssrf,http_output,webdav,sqlSlowQuery,rename,dubboRequest
若要禁用所有 hook 点,可直接使用 hooks.ignore=all 配置。
V8 通用
提高内存 (1.2.2 之后无需修改)
当在标准输出或者插件日志里看到如下内容时候,可以考虑提高内存占用:
- [libopenrasp_v8_java.so+0xb4f142] v8::base::OS::Abort()+0x12
- Allocation failed - JavaScript heap out of memory
e.g 将老生代内存设置为20MB,新生代2MB:
export OPENRASP_V8_OPTIONS="--max-old-space-size=20 --max-semi-space-size=2"
对于 Tomcat 这样具有启动脚本的服务器,在启动脚本最前面加上即可
#!/bin/sh
export OPENRASP_V8_OPTIONS="--max-old-space-size=20 --max-semi-space-size=2"
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
对于 SpringBoot 这样直接使用 java 命令启动的服务器,在启动之前设置下环境变量即可
export OPENRASP_V8_OPTIONS="--max-old-space-size=20 --max-semi-space-size=2"
java -jar XXX.jar [其他参数]
注意: 设置后需要重启 Java、PHP 进程生效。