ฉันได้ติดตั้งคอนเทนเนอร์นักเทียบท่าหลายตัวบนเซิร์ฟเวอร์ของฉัน คอนเทนเนอร์ทั้งหมดอยู่ในเครือข่ายนักเทียบท่าเดียวกัน และโดยพื้นฐานแล้วโครงสร้างคือทุกคอนเทนเนอร์อยู่หลังคอนเทนเนอร์พร็อกซีย้อนกลับ nginxproxymanager
จนถึงตอนนี้ทุกอย่างทำงานได้ดีดังนั้นฉันจึงพยายามทำให้โครงสร้างแข็งขึ้นโดยเพิ่มfail2ban ซึ่งฉันไม่สามารถทำให้มันทำงานได้ ฉันมีปัญหาในการทำความเข้าใจ iptables ให้ดีขึ้น แต่ฉันไม่สามารถทำให้มันใช้งานได้
หลังจากรีสตาร์ทนักเทียบท่าและตรวจสอบไฟล์ iptables (/etc/iptables/iptables.rules) ฉันมีสิ่งนี้
# สร้างโดย iptables-save v1.8.7 เมื่อวันศุกร์ที่ 29 ตุลาคม 09:48:00 น. 2021
*แนท
: ยอมรับ [82:13454]
: ยอมรับอินพุต [71:12758]
: ยอมรับเอาต์พุต [72:4846]
:หลังยอมรับ [858:45979]
:นักเทียบท่า - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A เอาท์พุท ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A โพสต์ -s 172.17.0.0/16 ! -o docker0 -j สวมหน้ากาก
-A โพสต์ -s 172.19.0.0/16 ! -o br-0aee38841ef3 -j สวมหน้ากาก
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 3000 -j MASQUERADE
-A นักเทียบท่า -i นักเทียบท่า 0 -j ผลตอบแทน
-นักเทียบท่า -i br-0aee38841ef3 -j ผลตอบแทน
- นักเทียบท่า ! -i br-0aee38841ef3 -p tcp -m tcp --dport 3000 -j DNAT --to-ปลายทาง 172.19.0.2:3000
ให้สัญญา
# เสร็จสิ้นเมื่อ ศ. 29 ต.ค. 09:48:00 น. 2564
# สร้างโดย iptables-save v1.8.7 เมื่อวันศุกร์ที่ 29 ตุลาคม 09:48:00 น. 2021
*กรอง
: ยอมรับอินพุต [98:7750]
:ส่งต่อ ยอมรับ [0:0]
: ยอมรับเอาต์พุต [77:11194]
:นักเทียบท่า - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:นักเทียบท่า-ผู้ใช้ - [0:0]
-A อินพุต -s 37.XXX.XXX.XX/32 -j DROP
-A อินพุต -j นักเทียบท่า-ผู้ใช้
-A ไปข้างหน้า -j นักเทียบท่า-ผู้ใช้
-A ส่งต่อ -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A ไปข้างหน้า -o นักเทียบท่า 0 -j นักเทียบท่า
-A ไปข้างหน้า -i docker0 ! -o นักเทียบท่า 0 -j ยอมรับ
-A ไปข้างหน้า -i docker0 -o docker0 -j ยอมรับ
-A FORWARD -o br-0aee38841ef3 -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A ส่งต่อ -o br-0aee38841ef3 -j นักเทียบท่า
-ไปข้างหน้า -i br-0aee38841ef3 ! -o br-0aee38841ef3 -j ยอมรับ
-A ไปข้างหน้า -i br-0aee38841ef3 -o br-0aee38841ef3 -j ยอมรับ
-นักเทียบท่า -d 172.19.0.2/32 ! -i br-0aee38841ef3 -o br-0aee38841ef3 -p tcp -m tcp --dport 3000 -j ยอมรับ
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-0aee38841ef3 ! -o br-0aee38841ef3 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j ผลตอบแทน
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-0aee38841ef3 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j ผลตอบแทน
-A DOCKER-USER -s 37.XXX.XXX.XX/32 -j DROP
ให้สัญญา
# เสร็จสิ้นเมื่อ ศ. 29 ต.ค. 09:48:00 น. 2564
ฉันเพิ่งลบกฎคอนเทนเนอร์อื่นๆ เนื่องจากเป็นแนวคิดเดียวกันกับกฎที่ฉันทิ้งไว้ (dport 3000)
br-0aee38841ef3
เป็นสะพานที่สร้างขึ้นเมื่อฉันสร้างเครือข่ายนักเทียบท่าที่คอนเทนเนอร์ของฉันอยู่
อย่างที่คุณเห็น ฉันพยายามเพิ่มกฎ DROP ในที่อยู่ IP สาธารณะของฉัน (37.XXX.XXX.XX) ทั้งใน INPUT และ DOCKER-USER chains แต่ฉันยังสามารถนำทางผ่านคอนเทนเนอร์ของฉันได้ (ฉันมีโดเมนที่กำหนดเองซึ่ง บันทึกชี้ไปที่ IP ของฉัน) ดังนั้นกฎจึงใช้ไม่ได้
แน่นอนว่า iptables เริ่มต้นและโหลดใหม่ด้วยกฎใหม่ แล้วฉันพลาดอะไรไปในการแบน IP?