Apache: Giới hạn số lượng yêu cầu / lưu lượng trên mỗi IP?


12

Tôi muốn chỉ cho phép một IP sử dụng tối đa 1GB lưu lượng truy cập mỗi ngày và nếu vượt quá giới hạn đó, tất cả các yêu cầu từ IP đó sẽ bị hủy cho đến ngày hôm sau. Tuy nhiên, một giải pháp đơn giản hơn trong đó kết nối bị hủy sau một số lượng yêu cầu nhất định sẽ đủ.

Đã có một số loại mô-đun có thể làm điều này? Hoặc có lẽ tôi có thể đạt được điều này thông qua một cái gì đó như iptables?

Cảm ơn


Phiên bản Apache?
pehrs

2.2 - Hoàn thành giới hạn ký tự--

Câu trả lời:


5

Nếu bạn muốn một giải pháp thuần túy bw_mod cho Apache 2.0 và mod_bandband cho Apache 1.3. Họ có thể điều tiết băng thông của máy chủ của bạn để hạn chế sử dụng băng thông.

Ngoài ra còn có mod_limitipconn, ngăn một người dùng thực hiện nhiều kết nối đến máy chủ của bạn. mod_cband là một tùy chọn khác, nhưng tôi chưa bao giờ sử dụng nó.

Nếu bạn không muốn gây rối với cài đặt Apache của mình, bạn có thể đặt proxy mực trước Apache. Nó cung cấp cho bạn nhiều quyền kiểm soát hơn đối với điều tiết.

Tuy nhiên, trong hầu hết các trường hợp, sự cố là một vài đối tượng lớn khi bạn muốn giới hạn băng thông trên mỗi IP và bạn muốn đưa ra thông báo lỗi nghiêm trọng khi người dùng kéo quá nhiều dữ liệu và bạn chặn anh ta. Trong trường hợp đó, có thể dễ dàng hơn để viết một tập lệnh PHP và lưu trữ thông tin truy cập trong một bảng tạm thời trong cơ sở dữ liệu.


2
Cảm ơn những lời đề nghị. Tôi đã xem xét bw_mod và mod_limitipconn, nhưng không (theo như tôi có thể nói) làm những gì tôi muốn. mod_limitipconn chỉ đơn giản giới hạn chúng ở một kết nối tại một thời điểm và bw_mod chỉ cho phép tôi giới hạn tốc độ tải xuống trên mỗi IP. Tôi muốn chặn chúng sau một lượng yêu cầu chuyển / dữ liệu nhất định. Tôi thực sự đang cố gắng bảo vệ chống lại một số người dùng cảm thấy cần phải thu thập dữ liệu toàn bộ trang web của tôi và tải xuống mọi thứ. Tôi sẽ xem xét proxy mực, nghe có vẻ thú vị. Nếu điều đó không thành công, tôi nghĩ tôi sẽ dùng đến việc sửa đổi nguồn bw_mod.

Bạn đã thiết lập robot.txt của mình để không cho phép nhện?
pehrs

1
Vấn đề với robot.txt, là (giống như RFC 3514) chỉ những robot đẹp mới tôn trọng nó.
Scott Pack

Đúng, nhưng bạn sẽ thấy rằng phần lớn những người tìm kiếm trang web của bạn sử dụng các công cụ tiêu chuẩn. Và nhiều người trong số họ, như wget, tôn trọng robot.txt. Robots.txt cũng là cách chính xác để thông báo cho người dùng của bạn mà bạn không muốn họ nhện.
pehrs

1
Tôi đã thử nó. Lúc đầu, robot.txt là đủ, sau đó họ bảo Wget bỏ qua robot.txt, vì vậy tôi đã dùng đến việc chặn các tác nhân người dùng "không được nhận dạng", nhưng sau đó họ giả mạo tác nhân người dùng. Họ có xu hướng thực hiện rất nhiều yêu cầu đầu, trong khi các trình duyệt hợp pháp thì không, vì vậy tôi có thể xem xét việc giới hạn các yêu cầu đầu hoặc vô hiệu hóa nó hoàn toàn (ít mong muốn hơn).

5

Đây là giải pháp iptables của tôi cho loại vấn đề này. Điều chỉnh --seconds --hitcountkhi bạn cần, cũng bảng iptables.

iptables -A FORWARD -m state --state NEW -m recent --rcheck --seconds 600 --hitcount 5 --name ATACK --rsource -j REJECT --reject-with icmp-port-unreachable
iptables -A FORWARD -d 192.168.0.113/32 -o eth1 -p tcp -m tcp --dport 80 -m recent --set --name ATACK --rsource -j ACCEPT

Giải thích:

  1. iptableskiểm tra xem IP nguồn có được liệt kê trên tệp / Proc / net / ipt_recent / ATACK trong 5 lần trở lên trong khoảng thời gian 600 giây không và nếu đó là yêu cầu MỚI. Nếu có, hãy từ chối; khác

  2. iptables kiểm tra xem yêu cầu có được chuyển đến cổng 80. Nếu vậy, hãy in IP và dấu thời gian sang / Proc / net / ipt_recent / ATACK và chuyển tiếp gói.

Nó hoạt động tốt cho nhu cầu của tôi.


3

Bạn đã xem một công cụ như fail2ban chưa? Nếu có thể hơi nặng tay với bạn, nhưng nó sẽ cho phép bạn giới hạn số lượng yêu cầu mà bất kỳ IP cụ thể nào được cho phép. Nó hoạt động bằng cách xem nhật ký và bạn đặt quy tắc cho phép có bao nhiêu vi phạm mỗi lần được phép, vì vậy đối với bạn đó có thể là yêu cầu mỗi ngày. Một khi họ đi qua nó có thể làm những việc như chặn họ bằng cách sử dụng ipchains.

Tôi đã sử dụng nó để chặn các cuộc tấn công DDoS chống lại máy chủ thư rất thành công. Nó có thể tiêu thụ một lượng đáng kể sức mạnh của bộ xử lý.


hiện tại, y sắp thực hiện điều này bản thân mình. Hy vọng nó hoạt động
Dark Star1

1

thử mod_dosevasivehaymod_security

mod_dosevasive có thể được cấu hình để cấm IP sau một số lượng hoặc yêu cầu trang được chỉ định đến một trang web trong khung thời gian được chỉ định.

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.