Điểm:0

Không thể truy cập cổng UFW từ web công khai mặc dù quy tắc rõ ràng cho phép

lá cờ tr

Tôi có hai máy chủ chuyên dụng: "web" (YYY.YYY.YYY.YYY) và "màn hình" (XXX.XXX.XXX.XXX). Cả hai đều nằm trong cùng một mạng của một máy chủ lưu trữ hàng loạt (hetzner).

Bây giờ trên "web", tôi có 3 điểm cuối số liệu prometheus đang chạy: docker-engine (9323) trên máy chủ kim loại trần và neo4j (2004), telegraf (9273) làm bộ chứa docker. Cả hai vùng chứa docker đều ánh xạ chính xác các cổng đầu ra của chúng tới Máy chủ, vì vậy các lệnh gọi sau được thực hiện trên "web" đều hoạt động:

linh miêu http://YYY.YYY.YYY.YYY:9323/metrics => OK
linh miêu http://YYY.YYY.YYY.YYY:9273/metrics => OK
linh miêu http://YYY.YYY.YYY.YYY:2004/metrics => OK

Nhưng việc gọi các điểm cuối đó từ máy chủ "màn hình" chỉ hoạt động đối với docker-engine dịch vụ kim loại gấu (9323)

linh miêu http://YYY.YYY.YYY.YYY:9323/metrics => OK
linh miêu http://YYY.YYY.YYY.YYY:9273/metrics => hết thời gian chờ
linh miêu http://YYY.YYY.YYY.YYY:2004/metrics => hết giờ

Trạng thái UFW tiết lộ như sau

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), từ chối (được định tuyến)
Hồ sơ mới: bỏ qua

Đến hành động từ
-- ------ ----
[…]
9323/tcp CHO PHÉP TRONG XXX.XXX.XXX.XXX
9273/tcp CHO PHÉP TRONG XXX.XXX.XXX.XXX
2004/tcp CHO PHÉP TRONG XXX.XXX.XXX.XXX
[…]

Không có quy tắc nào khác với các IP đó và không có quy tắc chung nào áp dụng cho mạng con, giao diện, v.v. Tất cả các quy tắc khác dành cho các cổng kín đáo, chẳng hạn như 22, 80, 443, v.v.

Điều kỳ lạ là nó đã hoạt động chỉ vài giờ trước đó. Trong khi chờ đợi, tôi đã thử nghiệm một chút với điều này ở đây https://medium.com/@pitapun_44686/what-is-the-best-practice-of-docker-ufw-under-ubuntu-69e11c826b31 và nối khối sau vào cuối /etc/ufw/after.rules

*lọc
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
-A DOCKER-USER -j RETURN
LÀM

Bây giờ tôi đã nhận xét nó và khởi động lại ufw. Các cổng 9273 và 2004 vẫn không truy cập được, vì vậy đây không phải là lý do.

Tôi đã định cấu hình mức nhật ký ufw thành cao, nhưng tôi không thể thấy bất kỳ kết nối nào attepmtps hoặc các gói bị rớt từ máy chủ XXX.XXX.XXX.XXX.

Cố gắng telnet vào một cổng đang hoạt động (telnet YYY.YYY.YYY.YYY 9323) Tôi có thể thấy giao tiếp trong nhật ký ufw, nhưng không phải cho hai cổng còn lại.

[KIỂM TOÁN UFW] SRC=XXX.XXX.XXX.XXX DST=YYY.YYY.YYY.YYY DPT=9323 =>
[KIỂM TOÁN UFW] SRC=YYY.YYY.YYY.YYY DST=XXX.XXX.XXX.XXX SPT=9323

Tôi đã cung cấp ufw bằng cách sử dụng mô-đun "ufw" ansible.

Những lý do khác có thể có? Điều gì đang xảy ra? :-)

Có thể mạng máy chủ áp đặt một số loại bộ lọc giữa các máy chủ đó do hoạt động "đáng ngờ" (giao tiếp thường xuyên)? Nó cũng xảy ra rằng tôi đã chạy một số bài kiểm tra quá mức cho gun.io từ XXX.XXX.XXX.XXX đến cổng 80/443 trên YYY.YYY.YYY.YYY hôm nay, nhưng giả thuyết này không giải thích được tại sao chỉ có hai cổng đó không hoạt động nữa không.

Và thử nghiệm cuối cùng, tắt ufw trên YYY.YYY.YYY.YYY, cũng không giúp được gì. Cổng 9273 và 2004 không truy cập được, 9323 thì được.

Đây là đầu ra từ iptables -L -v -n https://Pastebin.com/HVeJGXb9

lá cờ jp
hiển thị `iptables -L -v -n`
Artur Cichosz avatar
lá cờ tr
@AlexD Tôi đã thêm một pastebin vào cuối câu hỏi của mình
Điểm:1
lá cờ jp

Khi các cổng 9273 và 2004 được Docker hiển thị, các gói đến các cổng này sẽ đi qua PHÍA TRƯỚC chuỗi và sau đó thông qua DOCKER-NGƯỜI DÙNG chuỗi. Các quy tắc bạn đã thêm vào DOCKER-NGƯỜI DÙNG đang chặn hầu hết lưu lượng truy cập bên ngoài vào các mạng bộ chứa docker. Bạn cần cho phép lưu lượng được chuyển tiếp với tuyến đường ufw cho phép hoặc bạn có thể thêm quy tắc trực tiếp vào DOCKER-NGƯỜI DÙNG chuỗi.

Artur Cichosz avatar
lá cờ tr
Vâng. Cảm ơn bạn. Nói cách khác, đoạn mã tôi đã thêm này đã chèn vĩnh viễn các quy tắc và chúng vẫn hoạt động ngay cả sau khi xóa khỏi /etc/ufw/after.rules. Bây giờ tôi biết ít nhất là không có "ma thuật" nào liên quan ;-) và đoạn trích này thực hiện những gì nó nên làm. Đơn giản nhất trong trường hợp của tôi là hiển thị các cổng đó bằng proxy giao diện người dùng của tôi.

Đă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.