قوائم ACL للشبكة مقابل مجموعات الأمان
قارنوا بين قوائم ACL عديمة الحالة للشبكة ومجموعات الأمان ذات الحالة، وتعرّفوا إلى الوقت المناسب لاستخدام كل منها للدفاع الشبكي متعدد الطبقات.
قوائم ACL للشبكة مقابل مجموعات الأمان درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
طبقتان من أمان الشبكة
توفر AWS آليتين مختلفتين لجدار الحماية داخل VPC. تعمل Security Groups على مستوى المثيل (تقنيًا على مستوى ENI) وتكون ذات حالة. أما Network Access Control Lists (NACLs) فتعمل على مستوى الشبكة الفرعية وتكون عديمة الحالة. ويُقيَّم كلاهما لأي حركة مرور تدخل شبكة فرعية أو مثيلاتها المرتبطة بها أو تغادرها. ويوفر استخدامهما معًا دفاعًا متعدد الطبقات: إذ تعمل NACLs كخط دفاع أول عند حدود الشبكة الفرعية، بينما تعمل مجموعات الأمان كجدار حماية لكل مثيل. وكثيرًا ما يقارن امتحان SAA-C03 بين هاتين الآليتين.
NACLs: جدار حماية عديم الحالة على مستوى الشبكة الفرعية
إن Network ACL (NACL) قائمة مرقّمة من القواعد تُطبّق على جميع حركة المرور التي تعبر حدود شبكة فرعية. وتكون NACLs عديمة الحالة، أي يجري تقييم كل حزمة بشكل مستقل. فإذا سمحتم بحركة مرور TCP الواردة على المنفذ 80، فيجب أن تسمحوا صراحةً بحركة المرور الصادرة للعودة (المنافذ المؤقتة 1024-65535) حتى تتمكن الاستجابة من مغادرة الشبكة الفرعية. تُقيَّم القواعد بالترتيب الرقمي (بدءًا من أصغر رقم)، وتُطبَّق أول قاعدة مطابقة، ولا يجري فحص أي قواعد أخرى. يأتي كل VPC مزودًا بـ NACL افتراضية تسمح بكل حركة المرور الواردة والصادرة.
# Deny all traffic from a specific IP in the NACL
aws ec2 create-network-acl-entry \
--network-acl-id acl-12345678 \
--ingress \
--rule-number 90 \
--protocol tcp \
--cidr-block 203.0.113.10/32 \
--rule-action deny \
--port-range From=0,To=65535ترقيم قواعد NACL وترتيبها
تُقيَّم قواعد NACL بترتيب رقم القاعدة التصاعدي (من 1 إلى 32766)، ويتوقف التقييم فور تطابق إحدى القواعد؛ إذ يمكن لقاعدة Deny ذات رقم أقل أن تتغلب على قاعدة Allow ذات رقم أعلى لحركة المرور نفسها. توصي AWS بترقيم القواعد بزيادات قدرها 10 أو 100 لترك مجال لإدراج قواعد لاحقًا. تنتهي كل NACL بقاعدة افتراضية (* DENY) تحظر كل حركة المرور التي لم تطابق أي قاعدة صريحة. ولا يمكن تعديل هذه القاعدة الشاملة أو حذفها.
# Example NACL ruleset:
# Rule 100: Allow HTTPS (443) from 0.0.0.0/0
# Rule 200: Allow HTTP (80) from 0.0.0.0/0
# Rule 300: Deny All from specific-bad-IP
# Rule *: Deny All from 0.0.0.0/0 (default, implicit)NACLs عديمة الحالة: المنافذ المؤقتة
نظرًا إلى أن NACLs عديمة الحالة، يجب أن تأخذوا في الحسبان كلا اتجاهي كل اتصال. عندما يتصل عميل على الإنترنت بمثيل EC2 لديكم عبر المنفذ 443، يرسل المثيل الاستجابة إلى المنفذ المؤقت للعميل (وهو منفذ عشوائي مرتفع، عادةً 1024-65535 في Linux و49152-65535 في Windows). ويجب أن تسمح قواعد NACL الصادرة لديكم بهذا النطاق صراحةً. ومن الأخطاء الشائعة في تهيئة NACL إنشاء قاعدة Allow للمنفذ 443 الوارد مع نسيان السماح بالمنافذ المؤقتة الصادرة، مما يؤدي إلى إنشاء الاتصالات ثم إسقاط الاستجابات بصمت.
# NACL outbound rule allowing return traffic on ephemeral ports
aws ec2 create-network-acl-entry \
--network-acl-id acl-12345678 \
--egress \
--rule-number 100 \
--protocol tcp \
--cidr-block 0.0.0.0/0 \
--rule-action allow \
--port-range From=1024,To=65535مراجعة مجموعات الأمان
تذكيرًا بما سبق: تُربط مجموعات الأمان بالمثيلات (أو ENIs)، ولا تسمح إلا بقواعد Allow الصريحة (من دون Deny)، وتكون ذات حالة (إذ يُسمح تلقائيًا بالاستجابات لحركة المرور الواردة المسموح بها عند خروجها من دون الحاجة إلى قاعدة)، وتقيّم جميع القواعد المرتبطة معًا باستخدام منطق OR. ويمكنكم استخدام معرّفات مجموعات أمان أخرى كمصادر أو وجهات، وهو أسهل في الصيانة من استخدام نطاقات IP. وتُعد مجموعات الأمان الآلية الأساسية للتحكم في الوصول على مستوى المثيل، بينما تضيف NACLs طبقة إضافية على مستوى الشبكة الفرعية.
الفروق الأساسية: NACLs مقابل Security Groups
مقارنة مهمة للامتحان:
- المستوى: NACL = الشبكة الفرعية؛ SG = المثيل (ENI)
- الحالة: NACL = عديمة الحالة؛ SG = ذات حالة
- القواعد: NACL = Allow وDeny؛ SG = Allow فقط (مع رفض ضمني)
- التقييم: NACL = بالترتيب (الفوز لأول تطابق)؛ SG = تُقيَّم جميع القواعد (تنتصر أي قاعدة Allow)
- النطاق: تنطبق NACL على جميع المثيلات في الشبكة الفرعية؛ بينما تنطبق SG على المثيلات المرتبطة بها فقط
- الوارد/الصادر: تحتاج NACL إلى قواعد صريحة في كلا الاتجاهين؛ أما SG فهي ذات حالة (ولا تحتاج إلى قواعد واردة للاستجابات)
متى تستخدمون NACLs
استخدموا NACLs من أجل: حظر عناوين IP محددة (فمجموعات الأمان لا تستطيع الحظر، بل تسمح فقط؛ بينما يمكن لـ NACLs إضافة قواعد Deny صريحة لحظر عناوين IP ضارة معروفة أو أدوات استخراج البيانات). وتطبيق قواعد على مستوى الشبكة الفرعية (لتطبيق القاعدة نفسها على جميع المثيلات في شبكة فرعية من دون تعديل مجموعات الأمان الفردية). وإضافة طبقة دفاع (فإذا أدى خطأ في تهيئة مجموعة أمان إلى فتح الوصول، فلا يزال بإمكان قاعدة Deny في NACL عند حدود الشبكة الفرعية حظر حركة المرور). عمليًا، تدير معظم الفرق الوصول بشكل أساسي من خلال مجموعات الأمان، وتستخدم NACLs فقط لحظر عناوين IP صراحةً.
NACLs الافتراضية والمخصصة
تسمح NACL الافتراضية (التي تُنشأ مع كل VPC) بجميع حركة المرور الواردة والصادرة، إذ تحتوي على القاعدتين 100 Allow All Inbound و100 Allow All Outbound. وتستخدم الشبكات الفرعية غير المرتبطة صراحةً بـ NACL مخصصة NACL الافتراضية. وإذا أنشأتم NACL مخصصة، فإنها تبدأ بقاعدة Deny-All الافتراضية فقط (القاعدة *)، وتحظر جميع حركة المرور حتى تضيفوا قواعد Allow صريحة. وهذا يعني أن إرفاق NACL مخصصة جديدة بشبكة فرعية سيحظر جميع حركة المرور فورًا، لذا احرصوا على إضافة قواعد Allow قبل ربطها بشبكات فرعية خاصة بالإنتاج.
# Create a custom NACL (starts with DENY ALL)
aws ec2 create-network-acl --vpc-id vpc-12345678
# Associate it with a subnet
aws ec2 replace-network-acl-association \
--association-id aclassoc-12345678 \
--network-acl-id acl-custom-idترتيب التقييم: NACLs وSecurity Groups
بالنسبة إلى حركة المرور الواردة إلى مثيل EC2، تمر حركة المرور أولًا عبر NACL عند حدود الشبكة الفرعية (حيث تُقيَّم وفق ترتيب القواعد). وإذا سمحت NACL بحركة المرور، فإنها تصل بعد ذلك إلى مجموعة الأمان في المثيل، ويجب أن تسمح مجموعة الأمان بها أيضًا. يجب أن تسمح الآليتان كلتاهما بحركة المرور حتى تصل إلى المثيل. أما بالنسبة إلى حركة المرور الصادرة، فتُقيَّم مجموعة الأمان أولًا (وهي ذات حالة، فتسمح بها إذا كانت استجابة لحركة مرور واردة مسموح بها)، ثم تُقيَّم NACL (وهي عديمة الحالة، ولذلك يجب أن تحتوي على Allow صريحة للخروج). ويساعد فهم هذا الترتيب على توضيح سبب الحاجة إلى قواعد حركة المرور العائدة في NACLs عديمة الحالة حتى مع وجود مجموعات أمان ذات حالة.
استكشاف الأخطاء وإصلاحها باستخدام NACLs
تُعد NACLs مصدرًا شائعًا لمشكلات الشبكة صعبة التشخيص بسبب طبيعتها عديمة الحالة. وتشمل الأعراض: إنشاء الاتصالات ثم توقف تدفق البيانات (بسبب فقدان قاعدة المنافذ المؤقتة الصادرة)، أو حركة مرور في اتجاه واحد (بسبب نسيان قاعدة واردة أو صادرة)، أو تعذر اتصال عناوين IP محددة (بسبب مطابقة قاعدة Deny ذات الرقم الأقل قبل قاعدة Allow). ولتشخيص المشكلة، استخدموا VPC Flow Logs لمعرفة ما إذا كانت الحزم ACCEPT أو REJECT على مستوى NACL. وسيعرض سجل التدفق الحزم المرفوضة ومصدرها ووجهتها، مما يساعد على تحديد القاعدة المفقودة.
# Athena query to find NACL-rejected flows
SELECT sourceaddress, destinationaddress, destinationport, action
FROM vpc_flow_logs
WHERE action = 'REJECT'
AND interfaceid LIKE 'eni-%'
LIMIT 100;بنية الأمان متعددة الطبقات
النمط الموصى به لأمان VPC متعدد الطبقات: تسمح NACLs في الشبكات الفرعية العامة فقط بالمنافذ 80 و443 والمنافذ المؤقتة المطلوبة من الإنترنت، وتمنع كل ما عدا ذلك. تسمح مجموعات أمان الشبكات الفرعية العامة على ALB بالوصول إلى المنفذين 80 و443 من 0.0.0.0/0. وتسمح مجموعات أمان التطبيقات في الشبكات الفرعية الخاصة بالوصول فقط من معرّف مجموعة أمان ALB. أما مجموعات أمان البيانات في الشبكات الفرعية الخاصة فتسمح بالوصول فقط من معرّف مجموعة أمان التطبيق. ويضمن هذا الدفاع متعدد الطبقات أنه حتى إذا أُعدّت إحدى الطبقات بشكل غير صحيح، فستوفر طبقة أخرى الحماية؛ وهو مبدأ يُسمى أدنى قدر من الوصول في كل طبقة.
تحقق سريع
اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلمت في هذا الدرس أن: NACLs هي جدران حماية عديمة الحالة على مستوى الشبكة الفرعية، وتدعم قواعد السماح والمنع التي تُقيَّم وفق ترتيب رقمي، وأن مجموعات الأمان هي جدران حماية ذات حالة على مستوى المثيل، وتدعم قواعد السماح فقط، حيث تُقيَّم جميع القواعد معًا، وأنه يُستخدم NACLs للحظر الصريح لعناوين IP وللقواعد على مستوى الشبكة الفرعية بأكملها، بينما تُستخدم مجموعات الأمان للتحكم الدقيق في الوصول إلى المثيلات. وبذلك تكتمل وحدة أساسيات VPC؛ وسننتقل بعد ذلك إلى RDS وقواعد البيانات العلائقية على AWS.
الأسئلة الشائعة
هل درس «قوائم ACL للشبكة مقابل مجموعات الأمان» مجاني؟
نعم — نص درس «قوائم ACL للشبكة مقابل مجموعات الأمان» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ماذا ستتعلم في «قوائم ACL للشبكة مقابل مجموعات الأمان»؟
قارنوا بين قوائم ACL عديمة الحالة للشبكة ومجموعات الأمان ذات الحالة، وتعرّفوا إلى الوقت المناسب لاستخدام كل منها للدفاع الشبكي متعدد الطبقات. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟
لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «قوائم ACL للشبكة مقابل مجموعات الأمان»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟
نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية VPC وكتل CIDR
- بوابة الإنترنت وجداول التوجيه
- بوابة NAT والشبكات الفرعية الخاصة
- قوائم ACL للشبكة مقابل مجموعات الأمان