为 ONLYOFFICE 文档配置 IP 过滤器

548 阅读2分钟

我们可以为 ONLYOFFICE 文档配置 IP 过滤。

IP 过滤条件设置位于 ONLYOFFICE 文档的配置文件中:/etc/onlyoffice/documentserver/default.json。大概是这样的:

"ipfilter": {
"rules": [
{
"address": "ip_address",
"allowed": true
},
{
"address": "*",
"allowed": false
}
],
"useforrequest": false,
"errorcode": 403
}

如果您在 default.json 文件中更改了参数,那么在 ONLYOFFICE 文档更新或 Docker 容器重启后,所有更改都将丢失。为确保更新后您的变更仍可生效,请对 /etc/onlyoffice/documentserver/local.json 文件进行编辑 。编辑过程中需保持代码结构不变。

一条规则由两部分组成:主机名称与 allowed 规则本身(包含 true 和 false 值)。默认情况下,规则的形式是:address * allowed true。

您可按照以下方式声明地址:

  • X.X.X.X 格式的 ipv4 地址。
  • xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx 格式的 ipv6 地址。
  • DNS 名称。

此外还可以使用 * 通配符来代表重复任意次数的任意字符。

首先,系统将检查链接中的主机名是否是 DNS 地址,如果其不符合任何规则的话,则将通过名称查找 IP 地址并再一次进行检查。

重要

如果 "useforrequest": true,则必须将 address 参数指定为 IP 地址而不是 DNS 名称。

"useforrequest": true/false

默认情况下 useforrequest 参数将被设为 false,此时只会对以参数形式传入 ONLYOFFICE 文档的文本 URL 进行检查,如:

如果将 useforrequest 设为 true(不推荐),则将额外对以下 http 请求中的客户端 IP 地址进行检查:

  • coauthoring/CommandService.ashx
  • ConvertService.ashx
  • converter
  • FileUploader.ashx
  • healthcheck
  • docbuilder
  • info/info.json
  • internal/cluster/inactive
  • hosting/discovery
  • hosting/capabilities
  • lool/convert-to/:format?
  • dummyCallback

对于此类请求可返回错误。相关错误代码可在 errorcode 参数中进行声明。

重要仅会对 ONLYOFFICE 文档具有访问权限(包含 x-forwarded 标头)的存储位置 IP 地址进行检查。

例如,如果 ONLYOFFICE 文档与测试用例安装在了同一台机器上,那么客户端的 IP 地址就会与内部网络的地址相同,导致 ONLYOFFICE 文档无法获知客户端的主机位置。此类情形中将无法在 address 字段中使用 DNS 名称。我们的建议是保留该设置的默认值并在代理层面进行检查工作。