ฉันมีเซิร์ฟเวอร์เฉพาะสองเซิร์ฟเวอร์: "เว็บ" (YYY.YYY.YYY.YYY) และ "มอนิเตอร์" (XXX.XXX.XXX.XXX)
ทั้งคู่อยู่ในเครือข่ายเดียวกันของผู้ให้บริการจำนวนมาก (เฮทซ์เนอร์)
ตอนนี้ที่ "เว็บ" ฉันมี 3 จุดสิ้นสุดตัวชี้วัด prometheus ที่ทำงาน: docker-engine (9323) บนโฮสต์โลหะเปลือยและ neo4j (2004), telegraf (9273) เป็นคอนเทนเนอร์นักเทียบท่า
คอนเทนเนอร์นักเทียบท่าทั้งสองแมปพอร์ตเอาต์พุตกับโฮสต์อย่างถูกต้อง ดังนั้นการเรียกใช้ต่อไปนี้บน "เว็บ" จึงใช้งานได้:
คม http://YYY.YYY.YYY.YYY:9323/metrics => ตกลง
คม http://YYY.YYY.YYY.YYY:9273/metrics => ตกลง
คม http://YYY.YYY.YYY.YYY:2004/metrics => ตกลง
แต่การเรียกจุดสิ้นสุดเหล่านั้นจากเซิร์ฟเวอร์ "มอนิเตอร์" นั้นใช้ได้กับโปรแกรมนักเทียบท่าบริการหมีโลหะเท่านั้น (9323)
คม http://YYY.YYY.YYY.YYY:9323/metrics => ตกลง
คม http://YYY.YYY.YYY.YYY:9273/metrics => หมดเวลา
คม http://YYY.YYY.YYY.YYY:2004/metrics => หมดเวลา
รายละเอียดสถานะ UFW ให้สิ่งต่อไปนี้
สถานะ: ใช้งานอยู่
การบันทึก: เปิด (ต่ำ)
ค่าเริ่มต้น: ปฏิเสธ (ขาเข้า) อนุญาต (ขาออก) ปฏิเสธ (กำหนดเส้นทาง)
โปรไฟล์ใหม่: ข้าม
ถึงการดำเนินการจาก
-- ------ ----
[...]
9323/tcp อนุญาตใน XXX.XXX.XXX.XXX
9273/tcp อนุญาตใน XXX.XXX.XXX.XXX
2004/tcp อนุญาตใน XXX.XXX.XXX.XXX
[...]
ไม่มีกฎอื่นใดกับ IP เหล่านั้น และไม่มีกฎทั่วไปที่ใช้กับเครือข่ายย่อย อินเทอร์เฟซ ฯลฯ กฎอื่นๆ ทั้งหมดมีไว้สำหรับพอร์ตแบบแยกส่วน เช่น likie 22, 80, 443 เป็นต้น
สิ่งที่แปลกคือมันใช้งานได้เพียงไม่กี่ชั่วโมงก่อนหน้านี้ ในระหว่างนี้ฉันกำลังทดลองกับสิ่งนี้เล็กน้อย https://medium.com/@pitapun_44686/what-is-the-best-practice-of-docker-ufw-under-ubuntu-69e11c826b31 และเพิ่มบล็อกต่อไปนี้ต่อท้ายสุดของ /etc/ufw/after.rules
*กรอง
:ufw-user-forward - [0:0]
:นักเทียบท่า-ผู้ใช้ - [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 นักเทียบท่า-ผู้ใช้ -j ผลตอบแทน
ให้สัญญา
ตอนนี้ฉันแสดงความคิดเห็นและรีสตาร์ท ufw พอร์ต 9273 และ 2004 เหล่านั้นยังไม่สามารถเข้าถึงได้ ดังนั้นนี่ไม่ใช่เหตุผล
ฉันกำหนดค่าระดับการบันทึก ufw เป็นระดับสูง แต่ฉันไม่เห็นการเชื่อมต่อ attepmtps หรือแพ็กเก็ตหลุดจากโฮสต์ XXX.XXX.XXX.XXX
พยายาม telnet ลงในพอร์ตที่ใช้งานได้หนึ่งพอร์ต (telnet YYY.YYY.YYY.YYY 9323) ฉันเห็นการสื่อสารในบันทึก ufw แต่ไม่ใช่สำหรับอีกสองพอร์ต
[UFW AUDIT] SRC=XXX.XXX.XXX.XXX DST=YYY.YYY.YYY.YYY DPT=9323 =>
[UFW AUDIT] SRC=YYY.YYY.YYY.YYY DST=XXX.XXX.XXX.XXX SPT=9323
ฉันจัดเตรียม ufw โดยใช้โมดูล "ufw" ที่เข้าใจได้
มีเหตุผลอื่นใดอีกบ้าง เกิดอะไรขึ้น? :-)
เป็นไปได้ไหมที่เครือข่ายโฮสต์กำหนดตัวกรองระหว่างเซิร์ฟเวอร์เหล่านั้นเนื่องจากกิจกรรม "น่าสงสัย" (การสื่อสารบ่อยครั้ง)
นอกจากนี้ยังเกิดขึ้นว่าฉันเรียกใช้การทดสอบ artillery.io มากเกินไปจาก XXX.XXX.XXX.XXX ไปยังพอร์ต 80/443 ใน YYY.YYY.YYY.YYY วันนี้ แต่สมมติฐานนี้ไม่ได้อธิบายว่าทำไมมีเพียงสองพอร์ตนั้นเท่านั้นที่ไม่ทำงาน อีกต่อไป.
และการทดสอบขั้นสุดท้าย การปิด ufw ใน YYY.YYY.YYY.YYY ก็ไม่ได้ช่วยอะไรเช่นกัน พอร์ต 9273 และ 2004 ไม่สามารถเข้าถึงได้ 9323 คือ
นี่คือผลลัพธ์จาก iptables -L -v -n
https://pastebin.com/HVeJGXb9