Iptables: hung -p udp --state THÀNH LẬP


18

hãy xem hai quy tắc iptables này thường được sử dụng để cho phép DNS đi:

iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53 
   -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -p udp --sport 53 --dport 1024:65535
   -m state --state ESTABLISHED -j ACCEPT

Câu hỏi của tôi là: Làm thế nào chính xác tôi nên hiểu trạng thái THÀNH LẬP trong UDP? UDP là không quốc tịch.

Đây là trực giác của tôi - Tôi muốn biết, nếu hoặc nơi này không chính xác:

Trang người đàn ông nói với tôi điều này:

tiểu bang

Mô-đun này, khi được kết hợp với theo dõi kết nối, cho phép truy cập vào
trạng thái theo dõi kết nối cho gói này.

  --tiểu bang ...

Vì vậy, về cơ bản, iptables nhớ số cổng được sử dụng cho gói gửi đi (nó có thể nhớ gì khác cho gói UDP?) , Và sau đó cho phép gói đến đầu tiên được gửi lại trong một khung thời gian ngắn? Kẻ tấn công sẽ phải đoán số cổng (điều đó có thực sự quá khó không?)

Về việc tránh xung đột:

Hạt nhân theo dõi các cổng nào bị chặn (bởi các dịch vụ khác hoặc bởi các gói UDP gửi đi trước đó), để các cổng này sẽ không được sử dụng cho các gói DNS gửi đi mới trong khung thời gian? (Điều gì sẽ xảy ra, nếu tôi vô tình cố gắng bắt đầu một dịch vụ trên cổng đó trong khung thời gian - liệu nỗ lực đó có bị từ chối / chặn không?)

Vui lòng tìm tất cả các lỗi trong văn bản trên :-) Cảm ơn,

Chris

Câu trả lời:


12

Vì vậy, về cơ bản, iptables ghi nhớ số cổng được sử dụng cho gói gửi đi (nó có thể nhớ gì khác cho gói UDP?),

Tôi khá chắc chắn cho UDP, các cổng và địa chỉ nguồn và đích được lưu trữ.

Nếu bạn muốn kiểm tra các bảng trạng thái cài đặt conntrack và / hoặc netstat-nat.

(Điều gì sẽ xảy ra, nếu tôi vô tình cố gắng bắt đầu một dịch vụ trên cổng đó trong khung thời gian - liệu nỗ lực đó có bị từ chối / chặn không?)

Vì bạn đang sử dụng OUTPUT và INPUT, bạn đang nói về các dịch vụ địa phương. Cổng đã được sử dụng Tôi không tin hệ thống của bạn sẽ cho phép bạn khởi động một dịch vụ khác vì có gì đó đã lắng nghe trên cổng đó. Tôi đoán bạn có thể dừng dịch vụ đầu tiên và bắt đầu dịch vụ khác nếu bạn thực sự muốn, trong trường hợp đó, phản hồi có thể sẽ đến dịch vụ của bạn. Dịch vụ làm gì với gói phụ thuộc vào nội dung của gói là gì và dịch vụ đó là gì.


Vì vậy, nếu tôi bắt đầu nói một ví dụ Tomcat trên cổng 8080, tôi sẽ có cơ hội 1: (65535-1023) rằng khởi động sẽ thất bại, nếu vô tình một truy vấn DNS đang chạy trên cùng một cổng? Hay nó sẽ chỉ đợi cho đến khi khung thời gian hết hạn? Khung thời gian mặc định là bao lâu?
Chris Lercher 17/03/2016

6
Trên Linux, tôi tin rằng phạm vi cổng phù du thường là 32768-61000 (xem / Proc / sys / net / ipv4 / ip_local_port_range) điều này sẽ không bao gồm cổng ví dụ của bạn là 8080. Nó có xu hướng rất phổ biến để thiết lập các dịch vụ để nghe trên các cổng trong phạm vi phù du. Thời gian một mục nhập UDP trong bảng thường là 30 giây (xem / Proc / sys / net / netfilter / nf_conntrack_udp_timeout)
Zoredache

2
+1 Cảm ơn, đặc biệt là cho các đường dẫn / Proc!
Chris Lercher

1
Trong trường hợp bất kỳ ai muốn gia hạn udp_timeout, hãy sử dụngecho "net.netfilter.nf_conntrack_udp_timeout = 180" >> /etc/sysctl.conf
Kiran

8

NB: Câu trả lời này đã được chỉnh sửa.

Mặc dù những gì người đàn ông nói, ESTABLISHEDdường như có nghĩa là "trạng thái". Đối với UDP có nghĩa đơn giản là (như bạn đề xuất) ghi nhớ từng gói UDP bên ngoài ("src ip, src port dst ip, dst port" tuple) trong một thời gian và nhận ra phản hồi của nó.

FWIW, các quy tắc thông thường của tôi đối với lưu lượng DNS sẽ giống như thế này:

# permit any outbound DNS request (NB: TCP required too)
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53  -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 53  -j ACCEPT

# accept any packet that's a response to anything we sent
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

tức là kiểm soát lưu lượng trên OUTPUTchuỗi, và sau đó để các iptablesmô đun trạng thái xử lý mọi thứ khác trên INPUTchuỗi.

Xem thêm câu hỏi liên quan này .


1
Tôi biết rằng tôi cũng nên cho phép TCP. Nhưng điều gì có liên quan có nghĩa là cho UDP? Trang chủ: "LIÊN QUAN có nghĩa là gói đang bắt đầu một kết nối mới, nhưng được liên kết với một kết nối hiện có, ..." Kết nối cho UDP? Có lẽ nó thực sự có ý nghĩa hơn THÀNH LẬP, nhưng đó là những gì tôi muốn tìm hiểu.
Chris Lercher 17/03/2016

Khi tôi sử dụng các quy tắc của bạn, nhưng hạn chế udp INPUT thành LIÊN QUAN, các truy vấn DNS của tôi không hoạt động. Có vẻ như tôi phải cho phép THÀNH LẬP. Có bất kỳ lý do để cũng cho phép LIÊN QUAN (cho UDP)?
Chris Lercher

ok, có vẻ như THÀNH LẬP có nghĩa là nhiều hơn trang người đàn ông nói. Trong mọi trường hợp, nếu bạn sử dụng các bộ lọc OUTPUT như của tôi và không chấp nhận lưu lượng truy cập inbonud thì quy tắc INPUT là quy tắc duy nhất bạn cần.
Alnitak

1
Dựa vào những gì chúng tôi đã tìm thấy, các gói udp LIÊN QUAN không tồn tại AFAIK. Tuy nhiên (ví dụ) nếu bạn đã từng làm outbound FTP từ hộp mà bạn cần một quy luật nhà nước có liên quan cho các kênh dữ liệu. Quy tắc "THÀNH LẬP, LIÊN QUAN" duy nhất là AFAIK quy tắc duy nhất tối ưu nhất cho lưu lượng truy cập.
Alnitak

1
thực tế, các RELATEDgói UDP có thể tồn tại cho RTP.
Alnitak

1

Các nhà phát triển iptables đã xem xét rằng trạng thái "THÀNH LẬP" là tình huống khi các gói tin được nhìn thấy theo cả hai hướng bất kể giao thức giữa hai máy khách.

phần mở rộng nhà nước là một phần của conntrack. Nhân hiểu trạng thái từ bảng

/proc/net/nf_conntrack

Ví dụ về các trạng thái iptable cho UDP trong bảng nf_conntrack từ quan điểm của người gửi. Hãy tưởng tượng bạn gửi một truy vấn DNS trên UDP

udp   17 20 src=192.168.1.2 dst=192.168.1.10 sport=35237 dport=53 \
 [UNREPLIED] src=192.168.1.10 dst=192.168.1.2 sport=53 \
 dport=35237 use=1

Một gói đã được gửi. Nó không được áp dụng và oh, bảng có dữ liệu cho những gì được mong đợi trả lại (gói cho câu trả lời DNS).

udp   17 20 src=192.168.1.2 dst=192.168.1.10 sport=35237 dport=53 \
  src=192.168.1.10 dst=192.168.1.2 sport=53 \
 dport=35237 use=1

Câu trả lời đã đến, cờ chưa được giải thích đã biến mất, điều đó có nghĩa là kết nối UDP này ở trạng thái THÀNH LẬP trong một khoảng thời gian nhỏ được xác định trong hệ thống của bạ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.