Link Search Menu Expand Document Documentation Menu

API 限速

API 限流通常用于限制用户在特定时间内可以发出的 API 调用次数,从而帮助管理 API 流量速率。出于安全目的,限流功能通过限制失败的登录尝试,可以防御拒绝服务(DoS)攻击或旨在通过试错获取访问权限的重复登录尝试。

您可以选择为安全插件配置用户名限流、IP 地址限流或两者都配置。这些配置在 config.yml 文件中进行。有关每种限流配置的信息,请参阅以下部分。

用户名限流

用户名限流配置根据用户名限制登录尝试。当登录失败时,该用户名将被网络中任何机器阻止使用。以下示例显示了为用户名限流配置的 config.yml 文件设置:

auth_failure_listeners:
  internal_authentication_backend_limiting:
    type: username
    authentication_backend: internal
    allowed_tries: 3
    time_window_seconds: 60
    block_expiry_seconds: 60
    max_blocked_clients: 100000
    max_tracked_clients: 100000

下表描述了此类配置的各项设置。

设置 描述
类型 限流类型。在本例中为 username
身份验证后端 内部后端。输入 internal
允许尝试次数 在登录尝试被阻止之前允许的登录尝试次数。请注意,增加此数字会增加堆内存使用量。
时间窗口秒数 执行 allowed_tries 值的时间窗口。例如,如果 allowed_tries3time_window_seconds60,则用户名为 60 秒内成功登录有 3 次尝试机会,之后登录尝试将被阻止。
阻止过期秒数 登录失败后登录尝试保持被阻止的时间窗口。此时间过后,登录将被重置,用户名可以再次尝试登录。
最大阻止客户端数 最大阻止用户名数量。这限制了堆内存使用量,以避免潜在的 DoS 攻击。
最大跟踪客户端数 最大跟踪失败登录尝试的用户名数量。这限制了堆内存使用量,以避免潜在的 DoS 攻击。

IP 地址限流

IP 地址限流配置根据 IP 地址限制登录尝试。当登录失败时,用于登录的机器的特定 IP 地址将被阻止。

配置 IP 地址限流涉及两个步骤。首先,在 config.yml 文件的 http_authenticator 部分中将 challenge 设置为 false

http_authenticator:
  type: basic
  challenge: false

有关此设置的更多信息,请参阅HTTP 基本身份验证

其次,配置 IP 地址限流设置。以下示例显示了完整的配置:

auth_failure_listeners:
  ip_rate_limiting:
    type: ip
    allowed_tries: 1
    time_window_seconds: 20
    block_expiry_seconds: 180
    max_blocked_clients: 100000
    max_tracked_clients: 100000

下表描述了此类配置的各项设置。

设置 描述
类型 限流类型。在本例中为 ip
允许尝试次数 在登录尝试被阻止之前允许的登录尝试次数。请注意,增加此数字会增加堆内存使用量。
时间窗口秒数 执行 allowed_tries 值的时间窗口。例如,如果 allowed_tries3time_window_seconds60,则 IP 地址在 60 秒内有 3 次尝试成功登录的机会,之后登录尝试将被阻止。
阻止过期秒数 登录失败后登录尝试保持被阻止的时间窗口。此时间过后,登录将被重置,IP 地址可以再次尝试登录。
最大阻止客户端数 最大阻止 IP 地址数量。这限制了堆内存使用量,以避免潜在的 DoS 攻击。
最大跟踪客户端数 最大跟踪失败登录尝试的 IP 地址数量。这限制了堆内存使用量,以避免潜在的 DoS 攻击。
忽略主机 用于限流的要忽略的 IP 地址列表、CIDR 范围或主机名模式。config.dynamic.hosts_resolver_mode 必须设置为 ip-hostname 才能支持主机名匹配。
剩余 350 字符

有问题?

想做贡献?