Tôi có nên xếp hạng các gói giới hạn với iptables không?


8

Tôi đang sử dụng iptables trên Ubuntu Server. Đó là một máy chủ web trên VPS.
Tôi muốn biết nếu tôi nên xếp hạng các gói giới hạn. Nếu vậy, tôi nên đánh giá giới hạn gì? Và tôi nên làm như vậy trên toàn cầu hoặc mỗi địa chỉ IP?

Tham khảo
tôi thấy mọi người đề nghị này:

# Limit packet traffic on a TCP or UDP port:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m limit --limit $lim/s --limit-burst $lb -j ACCEPT

# Limit established/related packet traffic:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit $lim/s --limit-burst $lb -j ACCEPT

Ở trên, giới hạn tỷ lệ toàn cầu dường như không hữu ích, ít nhất là đối với các trường hợp tôi có thể tưởng tượng. Có trường hợp nào tôi nên đánh giá giới hạn toàn cầu không?
Tôi tin rằng giới hạn tỷ lệ trên mỗi IP thường tốt hơn:

# Add the IP to the list:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --set --name RATELIMITED
# Drop if exceeded limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --update --seconds $sec --hitcount $hc --rttl --name RATELIMITED -j DROP
# Accept if inside limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -j ACCEPT

Câu hỏi bổ sung: IP từ xa có thể bị giả mạo. Làm thế nào để hạn chế chúng đúng cách?
Đã thêm một câu hỏi khác cho điều này:
/server/340258/how-to-rate-limit-spousted-ips-with-iptables

Mục tiêu
tôi đang cố gắng giảm thiểu rủi ro của một số cuộc tấn công D / DoS và lạm dụng chung.

Liên quan
Làm cách nào tôi có thể xếp hạng giới hạn kết nối SSH với iptables?

PS : Tôi vừa mở một câu hỏi liên quan chỉ dành cho ICMP và nó bao gồm giới hạn tỷ lệ cho giao thức này: iptables | Các loại ICMP: loại nào (có khả năng) có hại?

Câu trả lời:


6

Giới hạn tốc độ không phải là phòng ngừa mà là lời mời đến DoS - đặc biệt là trong hương vị được trình bày ở trên nơi các gói sẽ bị loại bỏ nếu một tỷ lệ nhất định của các gói không được xác thực mà không có thông tin trạng thái bị vượt quá. Vì mọi người đều có thể giả mạo các gói (bao gồm cả địa chỉ IP nguồn) ở trạng thái kết nối này mà không cần nỗ lực nhiều hơn, một vectơ tấn công DoS mới tận dụng cơ sở giới hạn tốc độ của bạn sẽ xuất hiện.

Giới hạn tỷ lệ thường sẽ chỉ có ý nghĩa nếu bạn có

  1. hoặc giới hạn kết nối cứng hoặc giới hạn mềm trong cấu hình của bạn
  2. đặt giới hạn tốc độ cho lưu lượng chung dưới giới hạn này để có thể thiết lập kết nối cho lưu lượng ưu tiên hoặc lưu lượng quản trị bất kể tải

Mặc dù 1. thường đủ khó để xác định thậm chí làm phiền, nhưng 2. rõ ràng sẽ chỉ hoạt động nếu bạn có thể phân biệt đáng tin cậy lưu lượng "ưu tiên hoặc quản trị" với phần còn lại khi thiết lập kết nối - ví dụ: nếu nó đi qua giao diện mạng khác.

Trong các trường hợp khác, nó sẽ làm giảm khả năng phục hồi của hệ thống của bạn hơn là thêm vào nó.


Hi sy từ-dj. Tôi hủy bỏ và đồng ý rằng tường lửa được cấu hình sai là một công cụ khác cho cuộc tấn công DoS. Cảm ơn cho những người đứng đầu lên!
ML--

Giới hạn tốc độ per-ip hoặc per-ip-port dường như cũng có ý nghĩa khi bảo vệ khỏi lưu lượng truy cập hợp pháp quá lớn đối với máy chủ của một người nhưng người khởi tạo không có khả năng khai thác vấn đề mà bạn đề cập, nói, hành vi lạm dụng từ Bingbot hoặc Rô bốt Facebook.
Ján Lalinský

3

Vấn đề với giới hạn -m là giới hạn của tất cả các gói TCP bất kể địa chỉ IP nguồn. Vì vậy, nếu bạn có giới hạn thấp cho các gói syn như

-A INPUT -p tcp  --syn -m limit --limit 30/s --limit-burst 30 -j ACCEPT
-A INPUT -p tcp --syn -j DROP

chỉ một khách hàng với dòng lệnh hping có thể hạ gục máy chủ của bạn bằng cách gửi bao nhiêu gói tcp với cờ SYN vì quy tắc giới hạn sẽ khớp và nó sẽ bỏ nhiều gói bất kể địa chỉ IP nguồn nào. giới hạn không tạo ra sự khác biệt giữa lưu lượng tốt và lưu lượng xấu. Nó sẽ làm giảm lưu lượng đến tốt quá.

hping có thể là một cái gì đó như:

hping thetargetedhostip -p 80 -S -c 1000 -i u20000

Tốt hơn là sử dụng hashlimit để giới hạn các kết nối tcp đến trên mỗi địa chỉ IP . Quy tắc sau sẽ chỉ khớp nếu nhận được 30 gói mỗi giây, giảm số lượng gói được ủy quyền trên mỗi IP xuống còn 15 gói mỗi giây.

-A INPUT -p tcp --syn -m hashlimit --hashlimit 15/s --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-name synattack -j ACCEPT 
-A INPUT -p tcp --syn -j DROP

Trên thực tế, tôi xác nhận rằng nhiều máy chủ đã bị gỡ xuống ngày hôm nay không bị lấy hết tài nguyên trong một cuộc tấn công mà do mô-đun giới hạn làm giảm tất cả lưu lượng truy cập đến.


1

Tôi thường giới hạn các quy tắc giới hạn tỷ lệ cho các máy chủ mà tôi mong muốn có:

  • lưu lượng dự kiến ​​thấp
  • dịch vụ xác thực

Ví dụ: trang đăng nhập của bảng điều khiển lưu trữ, POP3, IMAP, SSH, v.v. Tôi thường để các dịch vụ HTTP mở rộng và chỉ chặn nếu có sự cố.

Bạn không muốn giảm lưu lượng truy cập web tốt. Một liên kết trên slashdot có thể gửi cho bạn hàng tấn lưu lượng truy cập và với các quy tắc toàn cầu, bạn có thể không nhận ra vấn đề.

Đối với các IP giả mạo, chúng không thể bị chặn bằng phương pháp này và thường không phải là vấn đề đáng lo ngại vì các quy tắc này chủ yếu tập trung vào việc hạn chế các kết nối TCP được thiết lập. Với một IP giả mạo, kết nối TCP không bao giờ có thể được thiết lập.


Xin chào jeffatrackaid, cảm ơn câu trả lời của bạn! Tôi cũng thiên về giới hạn tỷ lệ (trên toàn cầu) các loại dịch vụ này (SSH, v.v.). Về lưu lượng HTTP, đó là lý do tại sao tôi không có ý định áp dụng giới hạn toàn cầu. Trong câu hỏi này, tôi hy vọng sẽ xem liệu có trường hợp nào khi giới hạn cho mỗi IP có thể thú vị hay không. Về các IP giả mạo (tôi đã mở một câu hỏi riêng biệt về vấn đề đó) mặc dù các kết nối không thể được thiết lập, có khả năng DoS bằng cách sử dụng lũ SYN. Tôi vẫn quan tâm đến việc làm thế nào điều này có thể được giảm nhẹ.
ML--
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.