Giới hạn tỷ lệ với UFW: giới hạn cài đặt


22

Trang người đàn ông của UFW đề cập rằng nó có thể thiết lập giới hạn tỷ lệ iptables cho tôi:

ufw hỗ trợ giới hạn tốc độ kết nối, rất hữu ích để bảo vệ chống lại các cuộc tấn công đăng nhập vũ phu. ufw sẽ từ chối các kết nối nếu một địa chỉ IP đã cố khởi tạo 6 kết nối trở lên trong 30 giây qua. Xem http: //www.debian-adftime.org/articles/187 để biết chi tiết. Cách sử dụng điển hình là:

     ufw limit ssh/tcp

Thật không may, đây là tất cả các tài liệu mà tôi có thể tìm thấy. Tôi muốn gắn bó với UFW và không sử dụng các lệnh iptables phức tạp hơn (để giữ cho mọi thứ "không phức tạp").

Làm cách nào tôi sử dụng ufw để giới hạn tất cả lưu lượng truy cập đến (không đi ra) trên cổng 80 đến 20 kết nối mỗi 30 giây? Làm cách nào để vô hiệu hóa giới hạn tốc độ cho các cổng 30000 đến 30005? Là giới hạn tốc độ được bật theo mặc định cho tất cả các cổng?

Câu trả lời:


21

UFW được thiết kế để "không phức tạp", trong trường hợp này có nghĩa là bạn không có quyền kiểm soát các chi tiết về tốc độ kết nối bị hạn chế. Nếu bạn muốn tìm hiểu về nguồn Python của UFW, bạn có thể tìm hiểu cách điều chỉnh nó. Thông tin phù hợp là (trên hệ thống Ubuntu 10.04 của tôi) trong/usr/share/pyshared/ufw/backend_iptables.py

Vì vậy, đặt vấn đề thời gian sang một bên, do đó, đây là một số câu trả lời cho câu hỏi nhanh chóng của bạn ở cuối.

  1. Giả sử 10.10.10.0/24 là mạng cục bộ của bạn, điều này áp dụng quy tắc giới hạn mặc định cho cổng 80 / tcp đến:

    ufw limit proto tcp from any port 80 to 10.10.10.0/24
    
  2. và 3. Giới hạn tỷ lệ không được bật theo mặc định. Để thêm nó vào mọi cổng (đích) ngoại trừ phạm vi bạn muốn, hãy sử dụng quy tắc này. Lưu ý rằng các quy tắc (thậm chí với phạm vi) là các đơn vị nguyên tử và không thể tách ra. Ví dụ, bạn không thể thêm quy tắc cho bất kỳ cổng nào, sau đó deletequy tắc (không tồn tại) cho một phạm vi cụ thể để xóa nó. limitcũng không phải là một đối số chấp nhận được ufw default.

    ufw limit from any to any port 0:29999,30006:65535
    

Điều này có nghĩa là tỷ lệ không bao giờ có thể được thiết lập?
Tom

2
Không phải là không hack nguồn, ít nhất là không cho UFW 0.30pre1-0ubfox2, hiện đang có cho Ubuntu 10.04. Từ cái nhìn của mọi thứ trong nguồn hiện tại , điều đó đã không thay đổi. Tuy nhiên, bạn có thể đặt các quy tắc iptables vào /etc/ufw/after.rules (hoặc /etc/ufw/b Before.rules) và những quy tắc này cũng sẽ được sử dụng. Xem người đàn ông ufw-framework để biết thêm.
bonsaiviking

@bottoviking Có khả thi không iptable, nếu có thì iptable là phụ trợ của ufw.
Nullpulum

6

Như đã đề cập trên bài viết trước, bạn có thể tùy chỉnh user.rules. Tôi cần giới hạn tốc độ kết nối smtp của mình lên tới 12 kết nối trong 6 giây. Tôi đã thêm một quy tắc như hiển thị dưới đây đầu tiên. Lưu ý: điều này thêm quy tắc giới hạn cho phép 6 trong 30 giây theo mặc định

ufw limit smtp

và tôi đã chỉnh sửa /lib/ufw/user.rules (Tôi giữ một bản sao tùy chỉnh của tệp này với nhiều chỉnh sửa khác) như hiển thị bên dưới ...

### tuple ### limit tcp 25 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --set
-A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --update --seconds 6 --hitcount 12 -j ufw-user-limit
-A ufw-user-input -p tcp --dport 25 -j ufw-user-limit-accept

Tôi đã tìm thấy user.rules trong / etc / ufw
Otto Kanellis

5

giới hạn tốc độ có thể bằng cách thay đổi trên tệp quy tắc ufw có thể được tìm thấy /lib/ufw/user.rules. theo mặc định, không có giới hạn nào được kích hoạt cho tất cả các cổng. bạn nên thêm mọi hướng dẫn sử dụng cổng hoặc bằng cách chỉnh sửa tệp user.rules.


1

Rất đáng để chỉ ra những hậu quả không lường trước có thể xảy ra khi sử dụng tính năng LIMIT của ufw.

Giả sử người ta đặt giới hạn chăn trên cổng 22 / tcp làm quy tắc ufw đầu tiên:

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     LIMIT IN    Anywhere                  
...

với giả định rằng mọi kết nối hoạt động dưới giới hạn vẫn có thể được lọc theo các quy tắc ufw và cuối cùng là chính sách mặc định "từ chối (đến)".

Ít nhất là đối với ufw 0,35, giả định đó sẽ sai. Trong thực tế, logic LIMIT IN ngay lập tức chấp nhận mọi đầu vào không bị từ chối bởi tiêu chí giới hạn.

Trong psuedocode, logic LIMIT là

if CONDITION then DENY else ACCEPT

trong khi các quy tắc ufw khác dường như có logic:

if CONDITION then (DENY|ACCEPT) else continue to next rule.

Cá nhân tôi thấy rằng đó là hành vi bất ngờ đối với ufw LIMIT, điều mà tôi chỉ phát hiện ra khi bất ngờ tìm thấy nhiều lần thử đăng nhập cổng 22 trong tệp nhật ký hệ thống, điều đáng lẽ không bao giờ xảy ra do được lọc bởi các quy tắc ufw khác.

Chi tiết xác nhận hành vi

Các dòng có liên quan của mã iptables được chèn bởi ufw như sau:

-A ufw-user-input -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 --name DEFAULT --mask 255.255.255.255 --rsource -j ufw-user-limit
-A ufw-user-input -p tcp -m tcp --dport 22 -j ufw-user-limit-accept
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT

Danh sách trên có thể được tạo bằng

iptables -S | grep ufw-user-limit

Hai dòng đầu tiên được liên tiếp trong ufw-user-inputđó có thể được xác nhận với

iptables -S | grep ufw-user-input
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.