标签: rate-limiting

后缀速率限制

我确实在我的 Postfix 配置中添加了一个新的慢速传输,但这看起来不起作用。消息在慢速传输中正确传递,但它们不受速率限制。

目前,我一直在我的 master.cf 中进行设置:

slow      unix  -       -       n       -       1       smtp
  -o default_destination_concurrency_limit=1
  -o initial_destination_concurrency=1
  -o smtp_destination_concurrency_limit=1
  -o in_flow_delay=2s
  -o syslog_name=slow
Run Code Online (Sandbox Code Playgroud)

知道为什么我的消息不受速率限制吗?

postfix rate-limiting

5
推荐指数
1
解决办法
8746
查看次数

使用 tc 基于 VLAN 的速率限制

我一直在尝试对我正在进行的一个学术项目执行基于 VLAN 的速率限制。该项目使用 Openflow(带有 Beacon 控制器),并使用 Mininet 模拟网络。该网络由 OpenVSwitch 组成。

对于我的项目,我需要对网络中每个 VLAN 上的流量进行速率限制。我为此选择了 tc (带有 htb),并且已经尝试了很多天来使其正常工作。这些是我想要使用 tc 实现的目标: 1) 将所有 VLAN 的速率限制为特定的数据速率。2) 确保设置速率限制后,使用交换机之间物理链路的所有 VLAN 都获得相同(或几乎相同)的最大数据速率。

因此,如果我将每个 VLAN 的数据速率限制设置为 100 Mbps,并且有 5 个 VLAN 使用物理链路,我希望所有这些 VLAN 不超过 100 Mbps,同时每个 VLAN 的最大数据速率约为 100 Mbps。

我已经为此拓扑编写了脚本:

s2---s4
|
s6---s8
|
s10---s12
Run Code Online (Sandbox Code Playgroud)

这是那个脚本:

#!/bin/bash

# delete prev: 
tc qdisc del dev s10-eth2 root
tc qdisc del dev s2-eth3 root
tc qdisc del dev s6-eth2 root
tc qdisc del dev s6-eth3 root
tc qdisc del …
Run Code Online (Sandbox Code Playgroud)

traffic-shaping tc htb rate-limiting openflow

5
推荐指数
1
解决办法
6342
查看次数

Nginx:如何基于用户代理限制请求速率

尝试在 nginx 中实现以下行为

使用浏览器时,每个 ip 的默认速率限制为 1r/s。bing 和 google 蜘蛛的速率限制为 10r/s。拒绝不良机器人。

不幸的是,谷歌没有发布 googlebot 的 IP 地址,所以我只能使用 useragent。

到目前为止,这已经很接近了:

http { 
  # Rate limits
  map $http_user_agent $uatype {
    default 'user';
    ~*(google|bing|msnbot) 'okbot';
    ~*(slurp|nastybot) 'badbot';
  }

  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
  limit_req_zone $binary_remote_addr zone=two:10m rate=10r/s;

  ...

  server {
    ...

    location / {
      if ($uatype == 'badbot) {
        return 403;
      }

      limit_req zone=one burst=5 nodelay;
      if ($uatype != 'user') {
        limit_req zone=two burst=10 nodelay;
      }

      ...
    }

  ...
  }
}
Run Code Online (Sandbox Code Playgroud)

但是 - 'if' 不允许这样做。 …

nginx rate-limiting

5
推荐指数
1
解决办法
1万
查看次数

Nginx:根据响应状态代码限制请求

我正在尝试根据响应状态代码限制 nginx 的请求。我想减慢具有太多 4xx 或 5xx 响应的请求。我的配置文件中有这个代码块:

map $status $bad_guy {
    ~^[23]  "";
    default $binary_remote_addr;
}
limit_req_zone "$bad_guy" zone=badguy:10m rate=1r/s;

server {
    limit_req zone=badguy burst=20;
Run Code Online (Sandbox Code Playgroud)

看来上面的配置阻止了所有发送超过 1 rps 的 IP 地址,包括那些只有 200 OK 响应的 IP 地址。

请问你能帮帮我吗?为什么上面的配置不起作用?我是否必须使用其他东西(也许是 openresty?)来实现这一目标?谢谢。

nginx rate-limiting

5
推荐指数
1
解决办法
3012
查看次数

Nginx 速率限制,使用多种速率规则

使用nginx限速,以这条规则为例:

limit_req_zone $request_limiting_zone_key zone=request_limiting_search:20m rate=30r/m;

这将设置每分钟 30 个请求。但是,如果我想堆叠第二条规则,那么逻辑是“每分钟 30 个请求,或每秒 1 个请求。以先到者为准”

原因是我们仍然希望上限为 30/分钟,但有一些奇怪的尝试,我们在 1-2 秒内看到了 10 次请求的垃圾邮件。当请求通过得那么快时,这会导致一些问题。因此,我们希望将用户限制为每秒 1 个请求,并且每分钟上限为 30 个。

我阅读了文档参考,但没有看到太多有关堆叠不同费率规则的信息。

这可能吗?如果是这样,语法是什么?

networking nginx rate-limiting

5
推荐指数
1
解决办法
4796
查看次数

Nginx:速率限制失败基本身份验证尝试

在 Nginx(撰写本文时为 1.14.1)中给出一个简单的 HTTP 基本身份验证设置,如下所示:

server {
  ...
  location / {
    auth basic "HTTP Auth Required";
    auth basic user file "/path/to/htpasswd";
  }
}
Run Code Online (Sandbox Code Playgroud)

...如何对失败的登录尝试应用速率限制?例如,如果 30 秒内有 10 次登录尝试失败,我想阻止该源 IP 在一个小时内访问该网站。我希望利用limit_req_zone和 相关指令,但找不到一种方法来连接请求的身份验证状态。

这在 HAproxy 中相当简单,使用棒表和 ACL,使用类似以下工作示例的内容。

userlist users
  user me password s3cr3t

frontend https.local
  ...

  # Set up the stick table to track our source IPs, both IPv4 & IPv6
  stick-table  type ipv6  size 100k  expire 1h  store http_req_rate(30s)

  # Check if the user has authenticated
  acl  auth_ok  http_auth(users) …
Run Code Online (Sandbox Code Playgroud)

nginx authentication brute-force-attacks rate-limiting

5
推荐指数
1
解决办法
1594
查看次数

如何限制每个用户的 Linux CPU 和 RAM 使用量

我想限制每个用户的 CPU 和 RAM 使用量。

因此,假设有用户 john。他可以运行任意数量的进程,但他还需要有 2048 MB 的 RAM 和 2 个 CPU 核心。

我知道有像“ulimit”和“nice”这样的方法,但我仅限于一个命令,所以我需要这样的东西:

limiter_cmd -ram 2048 -cpu 2 screen -s 1 ./script
Run Code Online (Sandbox Code Playgroud)

另外,我使用“screen”命令来保存会话。

linux rate-limiting

5
推荐指数
1
解决办法
1万
查看次数

每个用户的速率限制exim

如何在 Exim 中实现“速率限制”,以便我的 exim 中的每个用户每天都可以发送特定数量的电子邮件。

用户列表 A 每天可以发送 100 封电子邮件,用户列表 B 每天可以发送 500 封电子邮件。

smtp exim rate-limiting

4
推荐指数
1
解决办法
9397
查看次数

ISC BIND 提供了哪些速率限制选项?

这是一个关于 ISC BIND 名称服务器软件中速率限制的规范问题

最近我听说了 BIND 的速率限制功能。尤其是 DNS RRL 似乎变得越来越普遍。

我有点困惑。一些文档似乎说这些功能不应该与递归 DNS 服务器一起使用,但其他文档非常明确地解决了递归 DNS 基础设施。谁是对的?

domain-name-system bind rate-limiting

4
推荐指数
1
解决办法
1933
查看次数

在 HAProxy 中阻止 IP

一个客户的网站目前受到攻击,我被要求修复它。

大量 IP(轻松超过 5,000 个)不断攻击/login,大概是试图强行进入。

我更改了站点,因此页面返回 500 错误,但他们并没有放弃。显然,这对现在无法登录的真实用户不利。

负载平衡是通过HAProxy完成的,我对此知之甚少(尽管我比几个小时前知道的要多得多)。我已经尝试了很多我在网上找到的明智的方法,但似乎都没有帮助,可能是因为有如此大的 IP 块在执行攻击。

那么问题来了: 如果一个 IP在Y秒内命中/login超过X次,我该如何拒绝?

而且,子点 - 我怎样才能看到拒绝日志,所以我知道它确实在工作?

这是haproxy.log的示例

Jun  3 14:24:50 hap-server haproxy[11831]: 46.161.62.79:15290 [03/Jun/2017:14:24:49.505] www-https-test~ www-backend/www-03 751/0/202/38/991 500 220 - - ---- 428/428/120/38/0 0/0 "GET /login HTTP/1.1"
Jun  3 14:24:50 hap-server haproxy[11831]: 46.161.63.132:47804 [03/Jun/2017:14:24:49.505] www-https-test~ www-backend/www-04 751/0/202/38/991 500 220 - - ---- 428/428/119/42/0 0/0 "GET /login HTTP/1.1"
Jun  3 14:24:50 hap-server haproxy[11831]: 46.161.62.43:53176 [03/Jun/2017:14:24:49.505] …
Run Code Online (Sandbox Code Playgroud)

brute-force-attacks haproxy rate-limiting

4
推荐指数
2
解决办法
9360
查看次数