Score:0

สามารถบล็อกประเภทข้อความ ICMPv6 เหล่านี้บนเว็บเซิร์ฟเวอร์ได้อย่างปลอดภัยหรือไม่

ธง ca

ฉันมี Debian 11 VPS บนผู้ให้บริการคลาวด์ โดยเปิดใช้งานทั้ง IPv4 และ IPv6 และอินเทอร์เฟซ eth0 ที่มีทั้งที่อยู่ ipv6 แบบกำหนดขอบเขตทั่วโลก (สาธารณะ) และที่อยู่ ipv6 แบบกำหนดขอบเขตลิงก์ (fe80::/10)

จุดประสงค์เดียวของเซิร์ฟเวอร์คือการโฮสต์เว็บไซต์สาธารณะ

ฉันกำลังติดตั้งไฟร์วอลล์บนเซิร์ฟเวอร์โดยใช้ iptables/ip6tables ฉันอ่าน RFC4890 แล้ว แต่ยังไม่แน่ใจว่าจะจัดการข้อความ ICMPv6 บางประเภทได้อย่างไร และจำเป็นจริงๆ สำหรับกรณีการใช้งานของฉันหรือไม่ ในขณะที่ฉันอนุญาตให้รับส่งข้อมูลใด ๆ บนขอบเขตของลิงก์ ฉันไม่แน่ใจว่าจะบล็อกประเภทข้อความ ICMPv6 ต่อไปนี้ได้อย่างปลอดภัยหรือไม่ บน ครอบคลุมทั่วโลก:

  • การชักชวนเราเตอร์ (ประเภท 133)

  • โฆษณาเราเตอร์ (ประเภท 134)

  • การชักชวนเพื่อนบ้าน (แบบ 135)

  • โฆษณาเพื่อนบ้าน (แบบที่ 136)

  • การร้องขอการค้นพบเพื่อนบ้านผกผัน (ประเภท 141)

  • โฆษณาการค้นพบเพื่อนบ้านผกผัน (ประเภท 142)

  • แบบสอบถามผู้ฟัง (ประเภท 130)

  • รายงานผู้ฟัง (แบบ 131)

  • ฟังเสร็จแล้ว (แบบ 132)

  • รายงานผู้ฟัง v2 (แบบ 143)

  • การร้องขอเส้นทางใบรับรอง (ประเภท 148)

  • โฆษณาเส้นทางใบรับรอง (ประเภท 149)

  • โฆษณาเราเตอร์มัลติคาสต์ (ประเภท 151)

  • การชักชวนเราเตอร์แบบหลายผู้รับ (ประเภท 152)

  • การยกเลิกเราเตอร์แบบหลายผู้รับ (ประเภท 153)

ขอบคุณมากสำหรับความช่วยเหลือใด ๆ

Score:3
ธง cn

อนุญาต ICMPv6 ทุกประเภท อัตราจำกัดแพ็กเก็ต ICMPv6 ต่อวินาที หากเป็นไปได้ เพื่อจำกัดการใช้ทรัพยากรบนอุปกรณ์ IP นี่เป็นวิธีที่ง่ายและไม่ปลอดภัยอย่างที่คิด


หรือวิธีการค้นคว้าของคุณคือการอ่าน คำแนะนำ RFC 4890 สำหรับการกรองข้อความ ICMPv6 ในไฟร์วอลล์. หมายเหตุการขาด ต้อง ถูกทิ้งคำแนะนำสำหรับการเริ่มต้น

"Link-global" ไม่ใช่คำมาตรฐาน ฉันคิดว่าคุณหมายถึงยูนิคาสต์ (ทั่วโลก) ตรงข้ามกับ link-local หรือ multicast ซึ่งอยู่ในช่วงที่กำหนด นอกจากนี้ คุณจะต้องการไฟร์วอลล์ที่มีแนวคิดเกี่ยวกับโซน เนื่องจากคุณอาจต้องการนโยบายที่แตกต่างกันสำหรับคำนำหน้าของคุณเทียบกับอินเทอร์เน็ต แต่ทั้งสองอย่างเป็นขอบเขตแบบ unicast ทั่วโลก

RFC อธิบายว่าข้อความที่กำหนดขอบเขตในเครื่องเหล่านี้จำนวนมากไม่ต้องการการกรองพิเศษ เราเตอร์ที่เข้ากันได้จะไม่ส่งต่อลิงก์ที่มาจากท้องถิ่น โฮสต์ที่เป็นไปตามข้อกำหนดที่ได้รับข้อความค้นหาเพื่อนบ้านจะยืนยันว่าไม่ได้ผ่านเราเตอร์ และไฟร์วอลล์จำนวนมากเป็นเราเตอร์ ดังนั้นคุณต้องมีการค้นพบเพื่อนบ้าน รวมถึง RA จึงจะทำงานได้


ตามตัวอย่างที่ใช้งานได้จริง มาดูการจัดการ ICMPv6 เริ่มต้นของเราเตอร์ libre อย่าง OpenWrt กัน คำถามนี้ รวมกฎไฟร์วอลล์เริ่มต้น ICMPv6 ไม่มากก็น้อย

ค่าเริ่มต้นของโซน "lan" คือทั้งหมดยอมรับโซน "wan" เริ่มต้นเป็นขาออกเท่านั้น ไฟร์วอลล์ธรรมดาทั่วไป กฎการอนุญาตมาจาก wan:

กฎการกำหนดค่า
        ชื่อตัวเลือก 'อนุญาต-ICMPv6-อินพุต'
        ตัวเลือก src 'วาน'
        ตัวเลือกโปรโต 'icmp'
        รายการ icmp_type 'echo-request'
        รายการ icmp_type 'echo-reply'
        รายการ icmp_type 'ปลายทางไม่สามารถเข้าถึงได้'
        รายการ icmp_type 'แพ็คเก็ตใหญ่เกินไป'
        รายการ icmp_type 'เกินเวลา'
        รายการ icmp_type 'ส่วนหัวไม่ถูกต้อง'
        รายการ icmp_type 'unknown-header-type'
        รายการ icmp_type 'การชักชวนเราเตอร์'
        รายการ icmp_type 'การชักชวนเพื่อนบ้าน'
        รายการ icmp_type 'โฆษณาเราเตอร์'
        รายการ icmp_type 'โฆษณาเพื่อนบ้าน'
        ขีดจำกัดตัวเลือก '1,000/วินาที'
        ตระกูลตัวเลือก 'ipv6'
        ตัวเลือกเป้าหมาย 'ยอมรับ'

กฎการกำหนดค่า
        ชื่อตัวเลือก 'Allow-ICMPv6-Forward'
        ตัวเลือก src 'วาน'
        ปลายทางตัวเลือก '*'
        ตัวเลือกโปรโต 'icmp'
        รายการ icmp_type 'echo-request'
        รายการ icmp_type 'echo-reply'
        รายการ icmp_type 'ปลายทางไม่สามารถเข้าถึงได้'
        รายการ icmp_type 'แพ็คเก็ตใหญ่เกินไป'
        รายการ icmp_type 'เกินเวลา'
        รายการ icmp_type 'ส่วนหัวไม่ถูกต้อง'
        รายการ icmp_type 'unknown-header-type'
        ขีดจำกัดตัวเลือก '1,000/วินาที'
        ตระกูลตัวเลือก 'ipv6'
        ตัวเลือกเป้าหมาย 'ยอมรับ'

ส่วนใหญ่ต้องไม่ตกประเภท ดูหัวข้อ 4.4.1 หมายเหตุใน 'Allow-ICMPv6-Forward' ประเภทข้อผิดพลาดและเสียงสะท้อนจะได้รับอนุญาตเสมอ ขาเข้าหรือขาออก

กฎการกำหนดค่า
        ชื่อตัวเลือก 'Allow-MLD'
        ตัวเลือก src 'วาน'
        ตัวเลือกโปรโต 'icmp'
        ตัวเลือก src_ip 'fe80::/10'
        รายการ icmp_type '130/0'
        รายการ icmp_type '131/0'
        รายการ icmp_type '132/0'
        รายการ icmp_type '143/0'
        ตระกูลตัวเลือก 'ipv6'
        ตัวเลือกเป้าหมาย 'ยอมรับ'

ข้อความแจ้งเตือนเครื่องรับมัลติคาสต์แบบเชื่อมโยงภายในเครื่อง

โดยรวมแล้ว อนุญาตทุกอย่างในโซนภายใน และเปิดใช้ข้อผิดพลาด เสียงสะท้อน การค้นหาเพื่อนบ้าน และ ICMP ที่เกี่ยวข้องกับมัลติคาสต์มาจากอินเทอร์เน็ตไม่อนุญาตให้สิ่งอื่นๆ เช่น SEND สำรวจอินเทอร์เน็ต ไม่ใช่วิธีเดียวในการกรองสิ่งนี้ แต่อย่างน้อยก็ไม่ทำให้ IPv6 เสียหาย

ca flag
ขอบคุณที่ชี้ให้ฉันเห็นคำศัพท์ที่ถูกต้อง (หมายถึงลิงก์และขอบเขตส่วนกลาง) ฉันแก้ไขแล้ว แน่นอน ขอบคุณสำหรับคำตอบ ให้ฉันศึกษาและทำอย่างละเอียดก่อนที่จะให้ข้อเสนอแนะ
ca flag
จากคำแนะนำของคุณและกฎตัวอย่างที่รวมอยู่ใน RFC และจากสิ่งที่สังเกตเห็นในกล่อง Debian ของฉัน (เช่น กฎ ip6tables เดียวที่นับแพ็กเก็ตเป็น ICMPv6 ประเภท 128, 135, 136) ฉันลงเอยด้วย ด้วยชุดกฎที่อนุญาตประเภทต่อไปนี้ในขอบเขตส่วนกลาง: 1, 2, 3, 4, 128, 135, 136 ในขณะที่ขอบเขตการเชื่อมโยง (fe80::/10) อนุญาตการรับส่งข้อมูลทั้งหมด ฉันเดาว่าไม่จำเป็นต้องใช้ ICMPv6 ประเภทอื่นเนื่องจากที่อยู่ IPv6 และเกตเวย์ถูกกำหนดแบบคงที่ ฉันกำลังติดตามสถานการณ์นี้เพื่อดูว่ามีบางอย่างขัดข้องหรือไม่ จนถึงตอนนี้ดีมาก ข้อเสนอแนะใด ๆ ที่ชื่นชม
Score:0
ธง ca

จากการวิจัยของฉันฉันได้ลงเอยด้วยกฎต่อไปนี้ ฉันมีจำนวนแพ็กเก็ต 0 ตามกฎ LOG REJECT สำหรับประเภท ICMPv6 ในกฎที่แสดงความคิดเห็น (เช่น: ประเภทที่ปิดใช้งาน)

#
# ขาเข้า ICMPv6
# ไม่จำเป็นต้องใช้ประเภทความคิดเห็น
# ประเภทที่จะอนุญาตสำหรับ link-local เท่านั้นจะถูกแสดงความคิดเห็นเช่นกัน 
# เนื่องจาก link-local อนุญาตการรับส่งข้อมูลทั้งหมด
#

ip6tables -N ICMP6

ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 1 -j ยอมรับ # ปลายทางไม่สามารถเข้าถึงได้
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 2 -j ยอมรับ # แพ็คเก็ตใหญ่เกินไป
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 3 -j ยอมรับ # เวลาเกิน
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 4 -j ยอมรับปัญหาพารามิเตอร์ #
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 128 -j ยอมรับ # คำขอ Echo
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 133 -j ยอมรับ # การร้องขอเราเตอร์
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 134 -j ยอมรับ # โฆษณาเราเตอร์
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 135 -j ยอมรับ # การชักชวนเพื่อนบ้าน
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 136 -j ยอมรับ # โฆษณาเพื่อนบ้าน
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 141 -j ยอมรับ # การร้องขอการค้นพบเพื่อนบ้านผกผัน
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 142 -j ยอมรับ # ผกผัน การค้นพบเพื่อนบ้าน
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 130 -j ยอมรับ # แบบสอบถามผู้ฟัง
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 131 -j ยอมรับ # รายงานผู้ฟัง
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 132 -j ยอมรับ # ผู้ฟังเสร็จสิ้น
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 143 -j ยอมรับ # Listener Report v2
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 148 -j ยอมรับ # การร้องขอเส้นทางใบรับรอง
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 149 -j ACCEPT # เส้นทางใบรับรอง
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 151 -j ยอมรับ # โฆษณาเราเตอร์แบบหลายผู้รับ
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 152 -j ยอมรับ # การชักชวนเราเตอร์แบบหลายผู้รับ
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 153 -j ยอมรับ # การยกเลิกเราเตอร์แบบหลายผู้รับ

# วางทุกอย่างอื่นในห่วงโซ่ ICMP6
ip6tables -A ICMP6 -p icmpv6 -j LOG --log-ระดับ 7 --log-คำนำหน้า "[FW.IN drop ICMP6] "
ip6tables -A ICMP6 -p icmpv6 -j DROP

ip6tables -A อินพุต -p icmpv6 -j ICMP6

ดังนั้นข้อสรุปของฉันคือเว็บเซิร์ฟเวอร์ต้องการประเภท 1,2,3,4,128,135,136 เท่านั้น

โพสต์คำตอบ

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