ping6.net
الأمان

تكوين جدار حماية IPv6: القواعد الأساسية

كوّن جدار الحماية الخاص بك لـ IPv6 دون كسر الاتصال. قواعد ICMPv6 الأساسية، أمثلة Linux، والأخطاء الشائعة لتجنبها.

ping6.net14 ديسمبر 20249 min read
IPv6جدار حمايةأمانiptablesnftablesICMPv6

تتيح لك جدران حماية IPv4 حظر ICMP دون عواقب كبيرة. IPv6 لا يعمل بهذه الطريقة. احظر رسائل ICMPv6 الخاطئة وستكسر اكتشاف MTU للمسار واكتشاف الجيران والاتصال الأساسي. سيسبب جدار الحماية الخاص بك بصمت فشل اتصال يستغرق ساعات لتصحيحه.

TL;DR - ملخص سريع

النقاط الرئيسية:

  • ICMPv6 ضروري: على عكس IPv4 ICMP، حظر ICMPv6 يكسر عمليات الشبكة الأساسية
  • اسمح بأنواع محددة: الأنواع 1-3 (أخطاء)، 128-129 (ping)، 133-136 (NDP) مطلوبة
  • لا تحظر أبداً النوع 2: رسائل الحزمة كبيرة جداً حاسمة لاكتشاف MTU للمسار
  • استخدم حد قفزة 255 لـ NDP: يمنع انتحال اكتشاف الجيران من خارج الوصلة
  • تطبيق على جميع عائلات البروتوكول: لا تنس تكوين كل من iptables وip6tables

انتقل إلى: أنواع ICMPv6 الأساسية | أمثلة Linux | الأخطاء الشائعة


لماذا تختلف جدران حماية IPv6#

في IPv4، يتعامل ICMP مع التشخيصات مثل ping وtraceroute. يمكنك حظره تماماً ومعظم الأشياء لا تزال تعمل. يعمل ARP في الطبقة 2، يستخدم DHCP UDP، وتستخدم الموجهات بروتوكولات مخصصة.

دمج IPv6 هذه الوظائف في ICMPv6. حل العناوين واكتشاف الموجه واكتشاف العناوين المكررة كلها تعتمد على أنواع ICMPv6 محددة. احظرها والمضيفات لا يمكنها العثور على بوابتها الافتراضية، والجيران لا يمكنهم الاتصال على نفس الوصلة، والاتصالات تتعلق عند عدم تطابق MTU.

اتخذ مصممو البروتوكول هذا القرار عمداً. ICMPv6 جزء من مواصفات IPv6، وليس إضافة تشخيصية.

أنواع ICMPv6 الأساسية#

يجب أن يسمح جدار الحماية الخاص بك بأنواع ICMPv6 هذه للوظائف الأساسية:

النوعالاسمالغرضاحظر هذا؟
1الوجهة غير قابلة للوصولالمنفذ/البروتوكول مغلقلا - يكسر TCP
2الحزمة كبيرة جداًاكتشاف MTU للمسارأبداً - يكسر الاتصالات
3الوقت تجاوزحد القفزة تم الوصول إليهلا - يكسر traceroute
128طلب الصدىطلب Pingاختياري (لكن لماذا؟)
129رد الصدىرد Pingاختياري (لكن لماذا؟)
133طلب الموجهالعثور على البوابة الافتراضيةأبداً - يكسر الاتصال
134إعلان الموجهإعلانات البوابةأبداً - يكسر الاتصال
135طلب الجارحل العنوان (مكافئ ARP)أبداً - يكسر كل شيء
136إعلان الجارردود حل العنوانأبداً - يكسر كل شيء

حظر أنواع ICMPv6 2، 133، 134، 135، أو 136 سيكسر اتصال IPv6 بطرق خفية يصعب تصحيحها. لا تفعل ذلك.

النوع 2 (الحزمة كبيرة جداً) يستحق اهتماماً خاصاً. IPv6 ليس لديه تجزئة في الموجهات الوسيطة. عندما تتجاوز الحزمة MTU للمسار، يسقطها الموجه ويرسل رسالة الحزمة كبيرة جداً. احظر هذا والاتصالات تتعلق بعد SYN/ACK الأولي. ستقضي ساعات في تصحيح لماذا يعمل HTTPS لكن التحويلات الكبيرة تفشل.

أمثلة ip6tables لـ Linux#

جدار حماية مضيف أدنى#

لجهاز عميل أو خادم لا يوجه حركة المرور:

# مسح القواعد الموجودة
ip6tables -F
ip6tables -X
 
# السياسات الافتراضية
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT ACCEPT
 
# السماح بالارتداد
ip6tables -A INPUT -i lo -j ACCEPT
 
# السماح بالاتصالات المنشأة
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# السماح بـ ICMPv6 الأساسي
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 1 -j ACCEPT   # الوجهة غير قابلة للوصول
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 2 -j ACCEPT   # الحزمة كبيرة جداً
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 3 -j ACCEPT   # الوقت تجاوز
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -j ACCEPT # طلب الصدى
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 129 -j ACCEPT # رد الصدى
 
# السماح باكتشاف الجيران (يجب أن يكون محلياً للوصلة مع حد قفزة 255)
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 133 -m hl --hl-eq 255 -j ACCEPT # طلب الموجه
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 134 -m hl --hl-eq 255 -j ACCEPT # إعلان الموجه
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 135 -m hl --hl-eq 255 -j ACCEPT # طلب الجار
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 136 -m hl --hl-eq 255 -j ACCEPT # إعلان الجار
 
# السماح بـ DHCPv6 (إذا كان مطلوباً)
ip6tables -A INPUT -p udp --dport 546 -j ACCEPT
 
# تسجيل الحزم المسقطة (اختياري)
ip6tables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "ip6tables-dropped: "

يمنع فحص حد القفزة (--hl-eq 255) حزم اكتشاف الجيران المنتحلة من مصادر خارج الوصلة. اكتشاف الجيران الشرعي يستخدم دائماً حد قفزة 255.

جدار حماية خادم#

أضف خدماتك بعد قواعد ICMPv6:

# SSH
ip6tables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
ip6tables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
 
# HTTP/HTTPS
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
 
# DNS (إذا كنت تشغل خادم DNS)
ip6tables -A INPUT -p udp --dport 53 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 53 -j ACCEPT

تستخدم قاعدة SSH recent لتنفيذ تحديد المعدل الأساسي. بعد 4 محاولات اتصال في 60 ثانية من نفس العنوان، تُسقط المحاولات الإضافية.

قواعد إعادة توجيه الموجه#

للموجهات أو الأنظمة التي تعيد توجيه حركة المرور:

ip6tables -P FORWARD DROP
 
# السماح بالاتصالات المنشأة
ip6tables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# السماح بإعادة توجيه ICMPv6 (حرج لـ PMTUD)
ip6tables -A FORWARD -p ipv6-icmp --icmpv6-type 1 -j ACCEPT
ip6tables -A FORWARD -p ipv6-icmp --icmpv6-type 2 -j ACCEPT
ip6tables -A FORWARD -p ipv6-icmp --icmpv6-type 3 -j ACCEPT
ip6tables -A FORWARD -p ipv6-icmp --icmpv6-type 128 -j ACCEPT
ip6tables -A FORWARD -p ipv6-icmp --icmpv6-type 129 -j ACCEPT
 
# السماح للشبكة الداخلية بالوصول للإنترنت
ip6tables -A FORWARD -i eth1 -o eth0 -j ACCEPT

لا تعيد توجيه رسائل اكتشاف الجيران (133-136). هذه محلية للوصلة فقط.

أمثلة nftables لـ Linux#

التوزيعات الحديثة تستخدم nftables بدلاً من iptables. بناء الجملة أنظف:

# إنشاء جدول
nft add table ip6 filter
 
# إنشاء سلاسل
nft add chain ip6 filter input { type filter hook input priority 0\; policy drop\; }
nft add chain ip6 filter forward { type filter hook forward priority 0\; policy drop\; }
nft add chain ip6 filter output { type filter hook output priority 0\; policy accept\; }
 
# الارتداد
nft add rule ip6 filter input iif lo accept
 
# الاتصالات المنشأة
nft add rule ip6 filter input ct state established,related accept
 
# ICMPv6
nft add rule ip6 filter input icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, echo-request, echo-reply } accept
 
# اكتشاف الجيران مع فحص حد القفزة
nft add rule ip6 filter input icmpv6 type { nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } ip6 hoplimit 255 accept
 
# SSH مع تحديد المعدل
nft add rule ip6 filter input tcp dport 22 ct state new limit rate 4/minute accept
 
# HTTP/HTTPS
nft add rule ip6 filter input tcp dport { 80, 443 } accept

ترميز المجموعة ({ 80, 443 }) ينشئ قاعدة واحدة بدلاً من اثنتين، مما يجعل مجموعة القواعد أكثر كفاءة.

جدار حماية Windows#

يمكّن جدار حماية Windows ICMPv6 افتراضياً لمعظم الأنواع الأساسية، لكن يجب عليك التحقق:

# إظهار قواعد ICMPv6 الحالية
Get-NetFirewallRule -DisplayName "*ICMPv6*" | Format-Table DisplayName, Enabled, Direction
 
# تمكين كل ICMPv6 الوارد (إذا كان معطلاً)
Enable-NetFirewallRule -DisplayName "Core Networking - Destination Unreachable (ICMPv6-In)"
Enable-NetFirewallRule -DisplayName "Core Networking - Packet Too Big (ICMPv6-In)"
Enable-NetFirewallRule -DisplayName "Core Networking - Neighbor Discovery Solicitation (ICMPv6-In)"
Enable-NetFirewallRule -DisplayName "Core Networking - Neighbor Discovery Advertisement (ICMPv6-In)"
Enable-NetFirewallRule -DisplayName "Core Networking - Router Advertisement (ICMPv6-In)"
 
# السماح بخادم SSH على IPv6
New-NetFirewallRule -DisplayName "SSH (IPv6)" -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow -Profile Any -RemoteAddress Any

لخوادم الويب:

New-NetFirewallRule -DisplayName "HTTP (IPv6)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (IPv6)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

مجموعات الأمان السحابية#

AWS#

مجموعات الأمان ذات حالة وتسمح بحركة مرور الإرجاع المنشأة تلقائياً. أضف قواعد صريحة لـ:

  • ICMPv6: استخدم "كل ICMPv6" أو حدد أنواعاً محددة
  • الخدمات: أضف منافذ TCP/UDP الخاصة بك

Azure#

تتعامل مجموعات أمان الشبكة (NSGs) مع IPv6. القواعد الافتراضية تسمح بحركة المرور الصادرة والمنشأة. أضف قواعد واردة للخدمات.

GCP#

قواعد جدار الحماية تدعم IPv6. أنشئ قواعد منفصلة مع --source-ranges=::/0 لـ IPv6. القواعد الافتراضية لا تتضمن ICMPv6، لذا أضفه صراحةً.

جميع المزودين الثلاثة يتطلبون منك تمكين IPv6 على VPC/الشبكة أولاً. IPv6 غير ممكّن افتراضياً.

الأخطاء الشائعة#

حظر كل ICMPv6#

أكثر خطأ شائع في جدار حماية IPv6. يقوم المسؤولون بنقل قواعد IPv4 التي تحظر كل ICMP ويتساءلون لماذا IPv6 لا يعمل. إذا كنت تتذكر شيئاً واحداً من هذه المقالة فقط: لا تحظر كل ICMPv6 أبداً.

لا توجد قواعد جدار حماية IPv6#

بعض المسؤولين يكوّنون iptables بعناية لكن يتجاهلون ip6tables تماماً. IPv6 يكون مفتوحاً تماماً. كلا عائلتي البروتوكول تحتاجان قواعد جدار حماية.

نسيان تصفية الخروج#

معظم الأمثلة تعرض فقط قواعد الدخول. إذا نفذت تصفية خروج صارمة (يجب عليك)، اسمح بأنواع ICMPv6 الصادرة 133، 135، و128. حظر طلبات الجيران الصادرة يمنع المضيف من حل الجيران.

حد قفزة خاطئ لاكتشاف الجيران#

قبول حزم اكتشاف الجيران دون التحقق من حد القفزة (255) يسمح للمهاجمين بإرسال إعلانات موجه أو جار منتحلة من أي مكان على الإنترنت. تحقق دائماً من حد القفزة.

السماح بالكثير#

تمكين "كل ICMPv6" أكثر أماناً من حظره كله، لكنه لا يزال مفرطاً. لا تحتاج للسماح برسائل Multicast Listener Discovery من الإنترنت، على سبيل المثال. استخدم أنواعاً محددة.

اختبار جدار الحماية الخاص بك#

بعد تكوين القواعد، تحقق من الاتصال الأساسي:

# اختبار ping (يتطلب أنواع ICMPv6 128/129)
ping6 -c 3 2001:4860:4860::8888
 
# اختبار اكتشاف MTU للمسار (يتطلب نوع ICMPv6 2)
# إرسال حزمة كبيرة، تحقق من أنها لا تتعلق
curl -6 -v https://ipv6.google.com/
 
# التحقق من اكتشاف الجيران (يتطلب الأنواع 135/136)
ip -6 neigh show
 
# التحقق من المسارات (يتطلب الأنواع 133/134)
ip -6 route show

من مضيف آخر، اختبر أن المنافذ غير المصرح بها فعلاً محظورة:

# يجب أن تنتهي المهلة أو تعيد "رفض الاتصال"
telnet -6 your:server::address 23
 
# يجب أن تعمل (إذا كان SSH مسموحاً)
ssh -6 your:server::address

استخدم ماسحات عبر الإنترنت مثل IPv6 Port Scanner (ipv6-tools.com) أو test-ipv6.com للتحقق من جدار الحماية الخاص بك من الشبكات الخارجية.

مقالات ذات صلة#

  • أمان IPv6 - فهم اعتبارات الأمان الأوسع لشبكات IPv6
  • تمكين IPv6 - تعلم كيفية تكوين IPv6 على أجهزتك قبل إعداد قواعد جدار الحماية

تتطلب جدران حماية IPv6 فهم ما يفعله ICMPv6. البروتوكول ليس اختيارياً أو فقط للتشخيصات. اسمح بالأنواع الأساسية، تحقق من أن اكتشاف الجيران يعمل، واختبر اكتشاف MTU للمسار مع حركة مرور حقيقية. احصل على هذه بشكل صحيح وسيكون جدار حماية IPv6 الخاص بك آمناً ووظيفياً.