Làm cách nào để chặn địa chỉ IP trong HAProxy?


Câu trả lời:


21

Bạn có thể loại bỏ IP ở cấp độ tcp bằng cách tạo ACL và sau đó sử dụng từ chối kết nối nếu ACL được khớp:

    acl bad_ip src 10.10.10.0
    tcp-request connection reject if bad_ip

Bạn cũng có thể thiết lập một phụ trợ 403 và gửi chúng đến đó nếu bạn muốn làm điều đó ở cấp 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

Các ACL này có thể khá linh hoạt và bạn có thể tạo ra nhiều điều kiện trong một ACL hoặc nhiều ACL trong hành động phải được đáp ứng. Thông tin khác tại http://haproxy.1wt.eu/doad/1.5/doc/configuration.txt .


4
Bạn chỉ cần một phụ trợ riêng nếu bạn muốn sử dụng trang lỗi 403 tùy chỉnh. Mặt khác, bạn có thể thoát khỏi "từ chối yêu cầu http nếu bad_ip"
sh-beta

1
Bạn có biết cách đọc ips từ một cửa hàng linh hoạt hơn, như db hoặc tách tệp phẳng không?
UpTheCux

1
Bad_guy phụ trợ đó không hoạt động như mong đợi, vì nó không có máy chủ được xác định, nó được coi là "không hoạt động" và sẽ luôn trả về 503 - dịch vụ không khả dụng. Tôi chỉ cần bạn có thể viết "block if bad_ip" để cấu hình frontend và nó sẽ ném 403 trang đúng cách. EDIT: http-request từ chối nếu bad_ip hoạt động như được quảng cáo bởi @ sh-beta - về cơ bản thực hiện điều tương tự, nhưng có lẽ chỉ dành cho các yêu cầu http?
Dalibor Filus

Có một sự khác biệt nhỏ giữa từ chối khối và yêu cầu http và đó là: quy tắc "khối 'được đặt sau quy tắc' use_backend 'vẫn sẽ được xử lý trước đó."
Dalibor Filus

2
Nếu bạn cho một anh chàng "xấu" 403 thì anh ta biết rằng anh ta bị chặn và sẽ tìm kiếm một Vector khác. Nếu bạn cho một anh chàng "xấu" 503 .. khi anh ta nghĩ rằng anh ta đã gây ra một DOS thành công và ngăn chặn cuộc tấn công .. Tất nhiên anh ta có thể tìm ra nó nhưng nó sẽ khiến anh ta mất nhiều thời gian hơn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.