如何在HAProxy中阻止IP地址?


Answers:


21

您可以通过创建ACL在tcp级别上删除IP,然后在ACL匹配的情况下使用拒绝连接:

    acl bad_ip src 10.10.10.0
    tcp-request connection reject if bad_ip

您还可以设置403后端并将其发送到该后端,如果您想在HTTP级别上这样做:

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

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


4
如果要使用自定义403错误页面,则仅需要一个单独的后端。否则,您可以摆脱“ http-request deny if bad_ip”
sh-beta

1
您是否知道从更灵活的存储(如db或单独的平面文件)中读取ip的方法?
UpTheCreek 2013年

1
后端bad_guy无法正常工作,因为它没有定义的服务器,因此被视为“关闭”,并且将始终返回503-服务不可用。我只是想您可以在前端配置中写入“ if bad_ip时阻塞”,它将正确抛出403页。编辑:http-request拒绝bad_ip是否像@ sh-beta所宣传的那样工作-本质上是做同样的事情,但是可能只是针对HTTP请求吗?
达里波·菲卢斯

阻止和http请求拒绝之间还有另一个细微的区别,那就是:“放置在'use_backend'规则之后的'block'规则仍将在处理之前。”
达里波·菲卢斯

2
如果您给“坏”家伙一个403,那么他知道他被阻止了,将寻找另一个Vector。如果您给“坏”家伙一个503 ..当他认为自己成功导致DOS并停止了攻击。.当然,他可能会找出来,但要花更长的时间。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.