如何在 HAProxy 中阻止 IP 地址?

Mar*_*cin 9 haproxy deny apache-2.2

haproxy 中是否有类似 Apache 的“拒绝 ip”之类的东西?

Kyl*_*ndt 23

您可以通过创建 ACL,然后在 ACL 匹配时使用连接拒绝来在 tcp 级别删除 IP:

    acl bad_ip src 10.10.10.0
    tcp-request connection reject if bad_ip
Run Code Online (Sandbox Code Playgroud)

如果您想在 HTTP 级别执行此操作,您还可以设置 403 后端并将它们发送到该后端:

frontend foo
        ...
        acl bad_ip src 10.10.10.0
        use_backend bad_guy if bad_ip
...

backend bad_guy
        mode http
        errorfile 403 /etc/haproxy/errors/403.http
Run Code Online (Sandbox Code Playgroud)

这些 ACL 可以非常灵活,您可以在一个 ACL 中设置多个条件,或者必须满足操作中的多个 ACL。更多信息请访问http://haproxy.1wt.eu/download/1.5/doc/configuration.txt

  • 如果您想使用自定义 403 错误页面,您只需要一个单独的后端。否则,你可以逃避“http-request deny if bad_ip” (5认同)
  • 您知道如何从更灵活的存储(例如数据库或单独的平面文件)读取 ip 吗? (2认同)
  • 如果你给一个“坏”的人一个 403,那么他知道他被阻止了,并会寻找另一个 Vector。如果你给一个“坏”人一个 503 ..然后他认为他成功地引起了 DOS 并停止了攻击.. 当然他可能会弄清楚,但他会花更长的时间。 (2认同)
  • @IanVaughan,您可以使用以下`acl bad_list src -f /etc/haproxy/some-file-with-ips.list tcp-request连接拒绝如果bad_list (2认同)