Điểm:0

UFW chặn các kết nối ra bên ngoài hiện có khi được bật

lá cờ in

Tôi đang gặp sự cố khi ufw dường như đang chặn các kết nối ra nước ngoài hiện có trên cổng 443 khi nó được bật. Ví dụ:

Ngày 24 tháng 2 17:53:00 server5 kernel: [18571501.131985] [UFW BLOCK] IN=eno1 OUT= MAC=d0:50:99:db:0a:be:00:6b:f1:17:4a:81:08: 00 SRC=35.196.37.91 DST=1.2.3.4 LEN=40 TOS=0x00 PREC=0x60 TTL=51 ID=24902 DF PROTO=TCP SPT=443 DPT=44496 WINDOW=0 RES=0x00 RST URGP=0 
Ngày 24 tháng 2 17:33:40 kernel server5: [18570340.976130] [Khối UFW] IN=eno1 OUT= MAC=d0:50:99:db:0a:be:00:6b:f1:17:4a:81:08: 00 SRC=52.10.136.43 DST=1.2.3.4 LEN=83 TOS=0x00 PREC=0x00 TTL=228 ID=23746 DF PROTO=TCP SPT=443 DPT=59404 WINDOW=118 RES=0x00 ACK PSH URGP=0
Ngày 27 tháng 2 00:47:07 kernel server5: [18769144.299731] [Khối UFW] IN=eno1 OUT= MAC=d0:50:99:db:0a:be:00:6b:f1:17:4a:81:08: 00 SRC=35.196.37.91 DST=1.2.3.4 LEN=1460 TOS=0x00 PREC=0x60 TTL=51 ID=60877 DF PROTO=TCP SPT=443 DPT=42030 WINDOW=229 RES=0x00 ACK URGP=0

Ngoài ra, một số gói UDP bị chặn mặc dù tôi đã cho phép cụ thể UDP từ 1025-65535:

Ngày 24 tháng 2 17:52:19 kernel server5: [18571459.414576] [Khối UFW] IN=eno1 OUT= MAC=d0:50:99:db:0a:be:00:6b:f1:17:4a:81:08: 00 SRC=5.6.7.8 DST=1.2.3.4 LEN=69 TOS=0x00 PREC=0x00 TTL=44 ID=59557 PROTO=UDP SPT=58678 DPT=49900 LEN=49 

(Tôi đã thay thế ip máy chủ của chúng tôi bằng 1.2.3.4). Lưu lượng bị chặn là các kết nối curl gửi đi tới google drive và Vimeo.

Đây là cách tôi thiết lập nó:

thiết lập lại ufw
ufw mặc định cho phép gửi đi
ufw mặc định từ chối đến
ufw cho phép từ 96.54.177.7 proto tcp tới bất kỳ cổng nào 22
ufw cho phép từ 50.70.255.166 proto tcp tới bất kỳ cổng nào 22
ufw cho phép 443/tcp
ufw cho phép 80/tcp
ufw cho phép 25/tcp
ufw cho phép 587/tcp
ufw cho phép 1025:65535/udp

trạng thái ufw hiển thị:

Trạng thái: Đang hoạt động
Ghi nhật ký: bật (thấp)
Mặc định: từ chối (đến), cho phép (đi), vô hiệu hóa (được định tuyến)
Hồ sơ mới: bỏ qua

Đến hành động từ
-- ------ ----
22/tcp CHO PHÉP TRONG 99,99,99,99               
22/tcp CHO PHÉP TRONG 99,99,99,99             
443/tcp CHO PHÉP Ở Mọi Nơi                  
80/tcp CHO PHÉP Ở mọi nơi                  
25/tcp CHO PHÉP Ở mọi nơi                  
587/tcp CHO PHÉP Ở Mọi Nơi                  
  

Trong thử nghiệm:

  • bắt đầu tải lên mới lên Vimeo sau khi bật ufw hoạt động tốt.Dường như không có gì bị chặn.
  • bật ufw ở giữa quá trình tải lên Vimeo dường như làm hỏng nó.
  • telnetting tới cổng 587 (thư) từ máy chủ đến một nơi khác và bật ufw dường như không gây ra bất kỳ sự cố nào. Kết nối vẫn mở và tôi có thể nhập trợ giúp, v.v.
  • conntrack không bao giờ hiển thị các kết nối gửi đi, nhưng hiển thị các kết nối gửi đến thì ok.
  • khi tôi thử nghiệm trên phiên bản máy chủ đám mây ubuntu 20.04 mới, không có vấn đề gì...tôi thấy không có gói nào bị chặn đối với cổng 443 và quá trình tải lên hoạt động tốt. Nhưng trên máy chủ đám mây thử nghiệm, conntrack chưa được cài đặt và ngay cả sau khi tôi cài đặt conntrack và conntrackd, tôi hoàn toàn không thấy bất kỳ kết nối nào được liệt kê trong "conntrack -L".

Vì vậy, tôi hơi bối rối về chính xác những gì đang xảy ra ở đây và liệu tôi có nên lo lắng về điều đó hay không. Tôi thực sự không muốn kích hoạt ufw cho đến khi tôi hoàn toàn hiểu nó sẽ ảnh hưởng như thế nào đến lưu lượng truy cập của tôi. Làm thế nào chính xác nó theo dõi các kết nối bên ngoài nếu conntrack không theo dõi chúng?

Tôi nghĩ có thể có một vài điều đang diễn ra ở đây, nhưng tôi muốn hiểu tại sao tôi lại nhìn thấy những thứ này. Các khối UDP và ACK là đáng lo ngại nhất, nhưng dường như chúng chỉ xảy ra trong một phần giây sau khi bật ufw, vì vậy tôi tự hỏi liệu có một chút chậm trễ nào trong khi ufw đang bật các quy tắc hay không. Cái khác (RST) có thể chỉ là do kết nối bị đóng. Các khối ACK dường như đang gây ra sự cố với bất kỳ kết nối ra bên ngoài mở nào hiện có đang tích cực gửi dữ liệu khi bật tường lửa.

Điểm:0
lá cờ in

Sau khi điều tra thêm, hóa ra các gói bị chặn chỉ xảy ra trong khoảng thời gian dưới 1 giây khi ufw đang được bật. Lệnh "ufw enable" không ở đâu gần nguyên tử...nó là một tập lệnh python tương tác với iptables. Bạn có thể cho rằng nó chỉ thực hiện một hoặc hai lệnh iptables, nhưng điều đó không đúng. Chạy một bước trên "ufw enable" cho thấy rằng nó thực sự thực thi lệnh iptables hoặc ip6tables tổng cộng 358 lần trong trường hợp của tôi:

strace -f -tt ufw --force enable > /tmp/a 2>&1
root@testing:/home/ubuntu# grep exec /tmp/a|wc -l
358
root@testing:/home/ubuntu# grep exec /tmp/a|grep iptables|wc -l
135
root@testing:/home/ubuntu# grep exec /tmp/a|grep ip6tables|wc -l
134

Ví dụ:

[pid 1959] 17:13:34.241806 execve("/usr/sbin/ip6tables", ["/usr/sbin/ip6tables", "-I", "ufw6-user-limit", "-m", "limit ", "--limit", "3/min", "-j", "LOG", "--log-prefix", "[Khối GIỚI HẠN UFW] "], 0x7ffd5e6d3d10 /* 18 vars */ <chưa hoàn thành . ..>

Vì vậy, kết quả cuối cùng của việc này là việc bật ufw có thể tạm thời làm hỏng bất kỳ kết nối hiện có nào đang truyền hoặc nhận dữ liệu trong khoảng thời gian cần thiết để bật ufw, vì vậy hãy cẩn thận khi bật ufw trên máy chủ trực tiếp.

Điểm:0
lá cờ gn

Đối với cái này:

Ngày 24 tháng 2 17:53:00 server5 kernel: [18571501.131985] [UFW BLOCK] IN=eno1 OUT= MAC=d0:50:99:db:0a:be:00:6b:f1:17:4a:81:08: 00 SRC=35.196.37.91 DST=1.2.3.4 LEN=40 TOS=0x00 PREC=0x60 TTL=51 ID=24902 DF PROTO=TCP SPT=443 DPT=44496 WINDOW=0 RES=0x00 RST URGP=0 

Đó không phải là bất thường. Xem thêm chi tiết trong một trong những câu trả lời trước đây của tôi đây.

Cai tiêp theo:

Ngày 24 tháng 2 17:33:40 kernel server5: [18570340.976130] [Khối UFW] IN=eno1 OUT= MAC=d0:50:99:db:0a:be:00:6b:f1:17:4a:81:08: 00 SRC=52.10.136.43 DST=1.2.3.4 LEN=83 TOS=0x00 PREC=0x00 TTL=228 ID=23746 DF PROTO=TCP SPT=443 DPT=59404 WINDOW=118 RES=0x00 ACK PSH URGP=0

Không quá rõ ràng, nhưng trước đây cũng đã xảy ra sự cố với kết nối bị rớt khi chuyển đổi từ UFW bị vô hiệu hóa sang được kích hoạt. Một số phương pháp điều tra được cung cấp trong một câu trả lời trước đó của tôi đây

Đối với cái này:

conntrack không bao giờ hiển thị các kết nối gửi đi, nhưng hiển thị các kết nối gửi đến thì ok.

Điều đó không đúng. Đây là một ví dụ:

doug@s15:~$ sudo conntrack -L | grep 192.168.111.134
tcp 6 35972 ĐÃ THÀNH LẬP src=192.168.111.1 dst=192.168.111.134 sport=36866 dport=22 src=192.168.111.134 dst=192.168.111.1 sport=22 dport=36866 [ĐẢM BẢO] mark=0 use=1
conntrack v1.4.6 (conntrack-tools): 68 mục luồng đã được hiển thị.

Đó là một kết nối gửi đi được tạo từ máy chủ cổng chính của tôi ở 192.168.111.1 đến Raspberry Pi ở 192.168.111.134.

lá cờ in
Đối với máy chủ của tôi, dường như tôi không thấy các kết nối gửi đi bằng cách sử dụng conntrack -L. Các kết nối được liên kết với 35.196.37.91 trong ví dụ trên không bao giờ xuất hiện trong conntrack (nhưng đã xuất hiện trong netstat). Khi tôi telnet outbound tới cổng 587 của máy chủ gia đình, nó hiển thị trong netstat nhưng không hiển thị trong conntrack -L. Điều đó có thể gây ra vấn đề? Tại sao máy chủ của tôi (bản gốc ubuntu 20.04 từ OVH) không hiển thị các kết nối ra bên ngoài trong conntrack?
lá cờ in
Ngoài ra, nhìn lại nhật ký, tất cả các gói bị chặn dường như là RST hoặc ACK. Tôi đoán RST không phải là vấn đề, nhưng ACK có thể là vấn đề.
Doug Smythies avatar
lá cờ gn
"OVH" có nghĩa là nó là một máy chủ lưu trữ? Việc kết nối của bạn hiển thị trong bảng theo dõi là khá cơ bản, vì vậy tôi không biết tại sao kết nối của bạn lại không.
lá cờ in
Không, đó là một máy chủ chuyên dụng với OVH. Tôi đã thử trên máy chủ đám mây với OVH bằng Ubuntu 20.04 và conntrack -L hoàn toàn không hiển thị mục nhập nào, trong nước hoặc ngoài nước. Tôi đã phải cài đặt conntrack và conntrackd. Nhưng ngay cả khi không theo dõi kết nối, tôi vẫn có thể thiết lập ufw. Vậy ufw có theo dõi kết nối riêng không? Toàn bộ điều này rất khó hiểu và được ghi lại kém về mặt này và tôi rất ngại chạy nó trên máy chủ prod của mình cho đến khi tôi hiểu đúng về nó.
Doug Smythies avatar
lá cờ gn
tốt, không có bảng conntrack trừ khi iptables sử dụng nó. Lưu ý rằng UFW chỉ là giao diện người dùng cho iptables. Cách để hiểu nội dung này là sử dụng iptables để xem luồng gói và bộ đếm, v.v. trong bộ quy tắc mà UFW tạo. Bản thân tôi ghét UFW và bộ quy tắc iptables phức tạp khó đọc mà nó tạo ra. Máy chủ thử nghiệm của tôi hoàn toàn không có quy tắc iptables nào được đặt và bảng conntrack hiển thị trống, evn mặc dù tôi có nhiều phiên SSH đang chạy.
lá cờ in
Vâng, tôi đã từng sử dụng iptables thô trên centos mà không gặp vấn đề gì. ufw dường như là một cách quản lý tường lửa hợp lý hơn nhiều so với việc tạo iptables bằng tay.
Điểm:0
lá cờ cn

Nếu quan sát kỹ, bạn có thể thấy rằng lưu lượng truy cập bị giảm là lưu lượng truy cập đến DST=1.2.3.4 DST là viết tắt của đích và như bạn đã nói 1.2.3.4 là IP của bạn.

Theo đầu ra của trạng thái ufw Lưu lượng truy cập có cổng nguồn 443 (SPT) chứ không phải DPT (vốn đã được cho phép) và do đó, nó sẽ bị ufw loại bỏ.

Tôi đoán là bạn đã mắc lỗi ở đâu đó (có thể liên quan đến việc dịch địa chỉ mạng) có tác dụng khiến tường lửa không ở trạng thái.

lá cờ in
Đó là phản hồi từ máy chủ từ xa (vì vậy SRC là máy chủ từ xa) nhưng kết nối chắc chắn là gửi đi từ máy chủ của chúng tôi và không bị theo dõi bởi conntrack. Tôi đã chỉnh sửa câu trả lời của mình để hiển thị các lệnh chính xác mà tôi đã sử dụng để thiết lập ufw. Không có lệnh nào để biến nó thành trạng thái hay không, vì vậy tôi không hiểu đó là lỗi của mình như thế nào, nhưng vui lòng sửa lỗi cho tôi nếu tôi sai. Vấn đề dường như là conntrack không theo dõi các kết nối gửi đi. Tại sao vậy?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.