Score:0

กฎไฟร์วอลล์ถาวรสำหรับ Docker ตาม DPORT (ก่อน NAT จะเกิดขึ้น)

ธง ma

ต่อสู้กับกฎไฟร์วอลล์ด้วยคอนเทนเนอร์ Docker

การตั้งค่ามีดังนี้

การติดตั้งแบบบางของ Debian 11 ที่ใช้ Docker (แบบสแตนด์อโลน)
ติดตั้งบน Docker คือ Portainer และเว็บคอนเทนเนอร์อีก 4 รายการ
ทั้งหมดเชื่อมต่อกับเครือข่าย Bridged เดียวที่เรียกว่า dkr-lan

ละเว้นคอนเทนเนอร์ porttainer คอนเทนเนอร์อื่นมีการแมปพอร์ตต่อไปนี้

  • เว็บ01 8081:80
  • เว็บ02 8082:80
  • เว็บ03 8083:80
  • เว็บ04 8084:80

web01 และ web03 สามารถเข้าถึงได้จากทุกที่บนพอร์ต 8081 และ 8083
อย่างไรก็ตาม web02 สามารถเข้าถึงได้โดย IP สาธารณะ 2 รายการเท่านั้น 1.2.3.4 และ 1.2.3.5
ในทำนองเดียวกัน web04 สามารถเข้าถึงได้โดย IP สาธารณะ 1.2.3.4 เดียวเท่านั้น

ฉันใช้ iptables และเริ่มพยายามตั้งค่ากฎในห่วงโซ่ DOCKER-USER แต่ดูเหมือนว่าจะกรองแพ็กเก็ตหลังจาก NAT เกิดขึ้นเท่านั้น และดูเหมือนว่าคอนเทนเนอร์ทั้งหมดหลังจาก NAT ใช้พอร์ต 80 ฉันไม่สามารถหาวิธียอมรับ web02 และ web04 สำหรับ IP เหล่านั้นและทิ้งส่วนที่เหลือ

หลังจากการค้นหาเล็กน้อย ฉันเริ่มคิดว่าตัวเลือกที่ดีที่สุดคือการกรองในห่วงโซ่ PREROUTING

โดยมีกติกาดังนี้

#สำหรับweb01
iptables -t mangle -A PREROUTING -p TCP -s 0/0 --dport 8081 -j MARK --set-mark 1
#สำหรับweb02
iptables -t mangle -A PREROUTING -p TCP -s 1.2.3.4 --dport 8082 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p TCP -s 1.2.3.5 --dport 8082 -j MARK --set-mark 1
#สำหรับweb03
iptables -t mangle -A PREROUTING -p TCP -s 0/0 --dport 8083 -j MARK --set-mark 1
#สำหรับweb04
iptables -t mangle -A PREROUTING -p TCP -s 1.2.3.4 --dport 8084 -j MARK --set-mark 1

# อนุญาตการรับส่งข้อมูลทั้งหมดที่ทำเครื่องหมายไว้ใน PREROUTING
# ปิดกั้นการรับส่งข้อมูลอื่น ๆ ทั้งหมด
iptables -A DOCKER-USER -m เครื่องหมาย --mark 1 -j ยอมรับ
iptables -A DOCKER-USER -p TCP --dport 8082 -j DROP
iptables -A DOCKER-USER -p TCP --dport 8084 -j DROP

ฉันเห็นว่าทราฟฟิกขาเข้ากำลังเข้าสู่กฎ PREROUTING เนื่องจากตัวนับเพิ่มขึ้นและนั่นก็ดูโอเค

อย่างไรก็ตามบล็อกไม่ทำงาน นี่เป็นเพราะมีการทำในห่วงโซ่ DOCKER-USER และในขั้นตอนนั้นพวกเขาอยู่หลัง NAT

แล้วฉันจะตั้งค่ากฎที่อนุญาต IP ตาม DPORT แล้วบล็อกการรีเซ็ตตาม DPORT ได้อย่างไร

คาดเดาสิ่งนี้ต้องทำในห่วงโซ่ PREROUTING หรือไม่

และต้องมีความเพียรด้วย ในขณะนี้ ทุกครั้งที่ฉันหยุดและเริ่มคอนเทนเนอร์ ดูเหมือนว่าจะละเมิดกฎไฟร์วอลล์และทุกอย่างจะเปิดขึ้นอีกครั้งสำหรับ ALL สิ่งนี้กำลังดำเนินการในห่วงโซ่ DOCKER ดังนั้นเดาว่าฉันต้องใส่กฎของฉันใน PREROUTING หรือ DOCKER-USER

ฉันพลาดอะไรไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา