المحتوى عن 'أمان'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • مقالات عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
  • HTML5
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • سي شارب #C
    • منصة Xamarin
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
  • مقالات عامّة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • مقالات عامّة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 10 نتائج

  1. سأقوم بتعليمكم كيفية تصميم رسومات فكتور لبطاقات الأمان كتلك الموجودة في الطائرات وكما هو موجود في موقع Airtoons.com. اتبع الخطوات في هذا الدرس لتتعلم كيفية تصميم إحدى هذه البطاقات. إذا لم تكن فنّانًا موهوبًا بإمكانك الاستعانة بصورة فوتوغرافية كقاعدةٍ لبدء الرسم عليها. يمكنك الحصول على إحدى هذه الصور عبر الإنترنت أو استخدام بعض الأصدقاء ليقفوا في الوضعيات المطلوبة وتصويرهم. افتح هذه الصورة في الفوتوشوب. بعض الأشخاص يمكنهم استيراد هذه الصور مباشرة إلى الإليستريتور والعمل عليها ولكنني وجدت العمل باستخدام أداة القلم في الفوتوشوب أكثر سهولة. استخدم أداة القلم لتتبع مسار حول الشخصية ويمكنك تخفيف بعض التفاصيل إذا لزم الأمر مثل طيّات وثنيات الملابس. استمر برسم المزيد من المسارات حول شكل الوجه، هنا استخدمت تقديري الخاص لمنح التصميم طابعًا خاصًا يجعله أنيقًا بنظري. استمر في رسم المزيد من التفاصيل لملامح الوجه الرئيسية كالعينين والحاجبين والأنف والفم. حدّد جميع المسارات باستخدام أداة تحديد المسار Path Selection Tool وانسخ Ctrl+C ثم انتقل إلى برنامج الإليستريتور وألصق ما تم نسخه هناك Ctrl+V اختر خيار Compound Path. ارسم تحديدًا حول المسار ثم ألغِ تجمّع هذه المجموعة Ungroup عبر الاختصار Shift+Ctrl+G. حدّد فقط المسار الكامل الخارجي ثم أضِف حدودًا بقيمة 3pt. ثم حدّد المسارات التي تميّز التفاصيل الداخلية ثم أضِف لها حدودًا بقيمة 2pt. الآن حدّد المسارات التي تميّز عناصر الوجه ثم أضِف حدودًا بقيمة 1pt. في هذه المرحلة قم برسم أية تفاصيل إضافية تراها ضرورية كبؤبؤ العيون. ارسم بشكل تقريبي مسارًا كاملًا داخل نقاط وحدود الوجه. اختر مخطط ألوان للرسم، أنا اخترت ثلاثة ألوان زرقاء ولوّنتُ الوجه باللون الأفتح بينها. اضغط ]+Ctrl+Shift لإرسال الشكل الملوّن للخلف تحت بقية العناصر. كرّر العملية لرسم أشكال تقريبية للشعر والحواجب ولوّنها بلون أزرق داكن أكثر من السابق. استمر بذات الطريقة مع بؤبؤ العينين وانتقل إلى باقي أجزاء الشخصية مع تلوين كل جزء باللون المناسب. الآن أصبح لدينا رسم أنيق لشخصية التصميم. بكل الأحوال التصميم لن يكتمل بدون رسم باقي توضيحات الخطر في تعليمات السلامة. سنقوم برسم شكل اللهب عبر البدء برسم شكل بيضوي ثم اختر أداة القلم واستمر بالضغط على Alt وانقر على النقاط العلوية والسفلية وحرّك مزالج البيزير الخاصة بها لجعلها منحنية أكثر. استخدم أداة التحديد المباشر Direct Selection Tool لتحديد وتدوير منحنيات البيزير بشكل فردي للنقاط اليمنى واليسرى حتى 45 درجة (استمر بالضغط على Shift أثناء ذلك). انسخ وألصق الشكل عدّة مرّات، مع تدوير بعض النسخ وعكس البعض الآخر عبر القائمة Object > Transform حتى تحصل على شكل النار باللهب الذي تعمل عليه. لوّن أشكال النار بمجموعة من الألوان البرتقالية ابتداءً من الدرجة الداكنة في قاعدة شكل النار وحتى اللون الأفتح في قمة الشكل. امنح شكل النار حدودًا بقيمة 2pt. لإنهاء الرسم حدّد الجميع Ctrl+A ثم انسخها وعُد بعد ذلك مجدّدًا إلى برنامج الفوتوشوب وألصق ما تم نسخه في ملف جديد. ضاعف الطبقة عبر سحبها إلى أيقونة طبقة جديدة أسفل لوحة الطبقات. اذهب إلى القائمة Filter > Pixelate > Color Halftone لمنح التصميم انطباع الطباعة الرخيصة المستخدمة عادة في مثل هذا النوع من المطبوعات الخاصة بتعليمات السلامة. في خيارات Color Halftone أدخل القيمة 4px للقياس الأدنى ثم غيّر القنوات إلى 45. غيّر خصائص المزج إلى Overlay مع درجة تعتيم 50% ثم ضاعف الطبقة الأساسية وضعها فوق جميع الطبقات. غيّر خصائص مزج هذه الطبقة إلى Multiply وخفّف التعتيم حتى تظهر نقاط الطبقة التي تحتها. أنهِ هذا التصميم عبر رسم الخلفية الأساسية المؤلفة من ألوان البيج باستخدام أداة التحديد المضلعة Polygonal Lasso Tool على طبقة خاصة بها أسفل جميع الطبقات. يمكنك الاستمرار برسم المزيد من بطاقات السلامة المماثلة لهذا التصميم عبر استخدام ذات الخطوات. المهم هو البدء بأوضاع عامة مع التفكير بتعابير وملامح الوجه. ترجمة -وبتصرّف- للمقال: Create Your Own Spoof Airplane Safety Illustrations لصاحبه: Chris Spooner
  2. يُوفّر التّحكّم بخادوم لينكس الخاصّ بك فرصةً لتجربة أشياء جديدة والاستفادة من صلابة ومرونة هذه المنصّة الرّائعة. مع ذلك يجب على مسؤولي خواديم لينكس الانتباه إلى أنّ ميزات المنصّة لا تُغني عن التّدابير اللّازم اتّخاذها عند التّعامل مع حاسوب متّصل بالشّبكة، من أجل تأمينه وحمايته. تندرج العديدُ من الموضوعات الأمنيّة في الفئة العامة المسمّاة “أمان لينكس”، كما توجد العديد من الآراء حول مستوى الأمان المناسِب لخاودم لينكس. الفكرة الأساسيّة الّتي يجب العمل عليها هي تقرير نوعيّة الإجراءات الأمنيّة المطلوبة لحماية نظامك. قبل ذلك، ولكي تتّخذ القرارات المناسبة؛ يجب أن تعيَ الأخطار الموجودة والمقايضات الممكنة ثمّ تحدّد نقطة التّوازن بين قابليّة الاستخدام والأمان. يهدف هذا المقال إلى مساعدتك في اتّخاذ قراراتك عبر عرض بعض الإجراءات الأمنيّة الأكثر شيوعًا في البيئات الّتي تستخدم خواديم لينكس. يُرجى الانتباه إلى أنّ هذه القائمة غير شاملة ولا تتطرّق للإعدادات المنصوح بها؛ لكنّها ستُحيل إلى روابط توفّر موارد أكثر وتناقش مدى أهميّة بعض العناصر في نُظُم مختلفة. استخدام الجدران النّاريّة Firewalls لمنع الوصول ضبط وإعداد جدار ناريّ إحدى الخطوات الأسهل الّتي ينبغي تطبيقها في عمليّة تأمين الخادوم. تعمل الجدارن النّارية كحاجز بين شبكة الإنترنت وخادومك الخاصّ؛ حيثُ تُراقب حركة البيانات من وإلى الخادوم، ثمّ تقرّر السّماح لها بالمرور أو منعها. تعتمد الجدران النّاريّة في قراراتها (السّماح بمرور بيانات أو منعها) على قواعد يضبطها مدير النّظام. في العادة، يستعمل الخادوم بضع منافذ Ports للخدمات المُرخَّصة بينما تبقى بقيّة المنافِذ غير مستعملة ويجب أن توضع وراء جدار ناريّ يمنع جميع الطّلبات الموّجهة عبر هذه المنافذ من الوصول. تسمح لك الجدران النّاريّة بتجاهل البيانات الّتي لا تنتظر توجيهها إليك، وفي بعض الحالات تقييد الوصول إلى الخدمات الفعليّة الموجودة في النّظام. تُوفّر قواعد الجدران النّاريّة المعدّة بطريقة صحيحة أساسًا جيّدًا لتأمين الشّبكة. نستعرض في الفقرات التّاليّة بعض برامج الجدران النّاريّة. 1- UFW يهدف UFW (اختصار ل Uncomplicated FireWall، أي جدار ناريّ غير معقّد) إلى توفير حماية جيّدة دون الاعتماد على صيّاغة معقَّدة للقواعد كما تفعل بقيّة الحلول. UFW هو في الواقع، مثله مثل أغلب الجدران النّاريّة على لينكس، برنامج للتّحكّم في الجدار النّاري المُضمَّن في نواة لينكس، والمسمَّى Netfilter. يُعدّ UFW حلًّا سهلًا لغير المعتادين على استخدام الجدران النّاريّة على لينكس؛ وهو عمومًا حلّ جيّد. يُمكن الحصول على معلومات أكثر عن UFW، ومعرفة كيفيّة تفعيله وضبطه عبر اتّباع هذا الرّابط. 2- IPTables ربّما يكون IPTables الجدار النّاري الأكثر شهرة في لينكس. IPTables هو الآخر وسيلة لإدارة Netfilter. يتوفّر برنامج IPTables منذ زمن بعيد، وتعرَّض للكثير من التّدقيق خلال هذه الفترة للتّأكّد من أمانه. توجد نسخة مخصّصة للإصدار 6 من عناوين IP، تُسمّى IP6Tables. ستلاقي على الأرجح إعدادات تتضمّن IPTables أثناء إدارة خواديم لينكس. قد تكون صيّاغة القواعد صعبة الفهم من الوهلة الأولى، إلّا أنّ IPTables يبقى أداةً قويّة يُمكن إعدادها عن طريق مجموعة قواعد مرنة جدًّا. يشرح هذا الدّرس إعداد بعض قواعد IPTables على توزيعتيْ أوبنتو ودبيان؛ في ما تجد في الرّابط التّالي شرحًا لاستخدام IPTables على توزيعات CentOS، وFedora و RHEL. 3- IP6Tables يُستخدَم IPTables للتّعامل مع قواعد تتضمّن عناوين IP من الإصدار الرّابع IPv4؛ إذا كان الإصدار السّادس IPv6 مفعّلًا على خادومك فيجب أن تنتبه أيضًا إلى إصدار IPTables المكافئ: IP6Tables. يحتفظ الجدار النّاري المضمَّن في نواة لينكس، Netfilter، بجداول منفصلة لكلّ من البيانات المنقولة عبر IPv6 وIPv4. من هذا المنطلق، تتحدّد القواعد المطبَّقة على حزمة بيانات بإصدار IP المستخدَم. يعني هذا، بالنّسبة لمدير النّظام، أنّه يتوجّب إعداد مجموعة قواعد جديدة خاصّة بالإصدار 6 من عناوين IP، عندما يكون مفعَّلًا. تتشارك قواعد IP6Tables نفس الصّيّاغة مع قواعد IPTables؛ وهو ما يعني أنّ إضافتها لين يُشكّل مشكلًا كبيرًا. ينبغي فقط الانتباه إلى أنّ القواعد يجب أن تُطابق البيانات المُمرَّرة عبر IPv6 حتى تعمل بالطّريقة المطلوبة. 4- NFTables يُعدّ IPTables المعيار Standard في عالم الجدران النّاريّة على بيئات لينكس منذ بعض الوقت، على الرّغم من ذلك أُضيف مؤخَّرًا جدار ناريّ جديد يُدعى NFTables إلى نواة لينكس. يقف خلف الجدار الجديد نفس الفريق الّذي يُطوِّر IPTables. ويهدف - على الأمد الطّويل - إلى الحلول محلّ IPTables. يُحاول جدار NFTables مراعاة صيّاغة أكثر قابليّة للقراءة من صيّاغة IPTables، ويدعم قواعد تتعامل مع كلا الإصداريْن IPv4 وIPv6 في نفس الأداة. يُتوقَّع أن يكون NFTables حاضرًا على معظم أو كلّ توزيعات لينكس في الأمد القريب، لذا يُستحسَن محاولة التّعوّد على استخدامه. استخدام SSH للولوج الآمن عن بعد ستحتاج لطريقة للدّخول عن بعد، إن لم تكن لديك فرصة الوصول المباشر إلى الخادوم. الإجراء المتبَّع في هذه الحالة للدّخول بشكل آمن هو استخدام بروتكول معروف يُسمَّى SSH (اختصار لSecure SHell). يُوفّر SSH التّعميّة من طرف إلى طرف End-to-end encryption، إمكانيّة تمرير بيانات غير مؤمَّتة عبر اتّصال آمن، إعادة توجيه الخادوم X (واجهة المستخدِم الرّسوميّة عبر الشّبكة)، وأكثر. بالمختصر إذا أردت الاتّصال عن بعد بخادومك فيجب أن يكون SSH خيّارك الأوّل. على الرّغم من أنّ بروتوكول SSH نفسه آمن جدًّا وتعرَّض للكثير من التّدقيقات الأمنيّة، إلّا أنّ خيّارات الإعداد يُمكن أن تُعزّز أو - على العكس - تقوِّض أمان الخدمة. سنناقش هذا الأمر أدناه. 1- كلمة السّرّ في مقابل مفاتيح SSH لتسجيل الدّخول يُتيح SSH العديد من طرق الاستيثاق Authentication؛ أشهر طريقتيْن هما كلمة السّرّ ومفتاح SSH. كلمة السّرّ، من بين الخيّارين أعلاه، هي الأيسَر للمستخدم ولكنّها في نفس الوقت الأقلّ أمانًا. يسمح الاستيثاق عن طريق كلمة السّرّ لمحاولي التّسلّل باستمرار تخمين كلمة السّر إلى أن يُعثَر على الكلمة المُناسبة. تُسمّى آليّة الاختراق هذه بهجمات القوّة القاسيّة Brute force attack ويُمكن تشغيلها آليًّا بيُسر عن طريق بعض الأدوات البرمجيّة. على الجانب الآخر، تعمل مفاتيح SSH على توليد زوج من المفاتيح، عموميّ وسرّي. يُنشَأ مفتاح عموميّ Public key ليُستعمَل في تحديد هويّة المستخدِم، ويُمكن تشاركه دون مشاكل. لا يُمكن استعمال المفتاح العموميّ لأغراض أخرى غير تعريف مستخدِم، والسّماح بالولوج بمفتاح سرّي Private key موافق للمفتاح العموميّ المستعمَل. ينبغي أن لا يُنشَر المفتاح السّريّ، حيث يُستخدَم في التحقّق من المفتاح العموميّ المُصاحِب له. المبدأ هوّ أن تُضيف مفتاح SSH العموميّ الخاصّ بك إلى الخادوم وسيُسمح لك بالولوج باستعمال المفتاح السّري المُصاحِب للمفتاح العموميّ المُضاف إلى الخادوم. هذه المفاتيح على درجة من التّعقيد تجعل استخدام هجمات القوّة القاسيّة لتخمينها غير عمليّ. إضافةً لذلك، يمكن تحديد عبارة سرّ Passphrase طويلة إلى المفتاح السّرّيّ وهو ما يعني أمانًا أكبر. راجع هذا الدّرس لمعرفة المزيد حول الاتّصال عن طريق على خادوم أوبنتو SSH. الرّابط التّالي يشرح كيفيّة توليد مفاتيح SSH على خادومك. 2- إعداد fail2ban لحظر عناوين IP الخبيثة تُساعد أداة fail2ban في تأمين إعدادات SSH، ومن ثَمَّ الأمان العامّ للخادوم. تعمل fail2ban على مراقبة السّجلّات Logs لتحديد إمكانيّة أن يكون من يُحاول الاتّصال عبر SSH غيرَ مصرَّح له بالدّخول؛ في هذه الحالة يعمل fail2ban على حظر حركة البيانات القادمة من عنوان IP المُستخدَم. يسمح إعداد إستراتيجيّة صحيحة لاستخدام fail2ban بتحديد الأجهزة الّتي تحاول باستمرار - دون نجاح - الولوج إلى الخادوم، وإضافة قواعد للجدار النّاريّ لتجاهل حركة البيانات القادمة من هذه الأجهزة لفترة من الوقت. تُستعمل هذه الطّريقة دائمًا لعرقلة هجمات القوّة القاسيّة، إذ أنّ المهاجِم سيحتاج عندما يُحظَر، للانتظار بعض الوقت قبل معاودة الكرّة. يكفي هذا الأمر عادةً لإحباط من يحاول الدّخول عبر هذه الهجمات. يُمكن التّعرّف في الرّابط على كيفيّة ضبط fail2ban على أوبنتو. توجد أيضًا أدلّة مشابهة لكل من Debian وCentOS. ضبط نظام للكشف عن التّطفّل Intrusion Detection System لكشف عمليّات الدّخول غير المرخَّصة يجب الانتباه إلى وجوب إعداد آليّة لكشف الاستخدام غير المرخَّص. يُمكن أن تعدّ تدابير وقائيّة لكنك تحتاج أيضًا إلى معرفة هل نجحت هذه التّدابير أم لا. تعمل أنظمة الكشف عن التّطفّل، IDS، على تجميع معطيات عن الإعدادات والملفّات عندما يكون النّظام في وضعيّة يُعرف بأنّها جيّدة؛ ثمّ يُجري النّظام مقارنات بالمعطيات المُسجّلة لرصد تغييرات على الملفّات أو الإعدادات. سنرصد في ما يلي بعض أنظمة الكشف عن التّطفّل. 1- Tripwire يُعدّ Tripwire أحد أنظمة الكشف عن التّطفّل الأكثر شهرة. يُنشئ Tripwire قاعدة بيانات بملفّات النّظام ويحمي ملفّات الإعداد والملفّات التّنفيذيّة بمجموعة من المفاتيح. تُشعِر عمليّاتُ تشغيل Tripwire التّاليّةُ لتعيين تفاصيل الإعداد وتحديد الاستثناءات بأيّ تحريف يحصُل للملفّات الّتي يُراقبها. يُقدّم Tripwire نموذجًا مرِنًا لإعداد السّيّاسات يسمح بتشكيل خواصّه لتتلاءم مع بيئة العمل. يُمكن بعدها ضبط Cron ليُشغّل Tripwire دوريًّا؛ بل ويُمكن إعداد إشعارات تُرسَل عبر البريد الإلكترونيّ عند وجود أنشطة غير طبيعيّة. اقرأ المزيد عن إعداد Tripwire. 2- Aide برنامج Aide هو خيّار آخر لأنظمة الكشف عن التّطفّل. يُشبه Aide في عمله Tripwire؛ حيثُ ينشئ قاعدة بيانات ثمّ يقارن الوضعيّة الحاليّة للنّظام مع قيّم محفوظة أثناء وجود النّظام في وضعيّة جيّدة. عند ملاحظة أي اختلاف يُمكن للبرنامج إشعار مسؤول النّظام. يوفّر كلّ من Aide وTripwire حلولًا متشابهة لنفس المشكل. راجع التّوثيق Documentation وجرّب الاثنين ثم اختر ما يُناسبك. اقرأ الدّليل التّالي لمعرفة كيف تستخدم Aide لكشف التّطفّل. ### 3- Psad يختلف برنامج Psad عن البرنامجيْن السّابقيْن من حيث إنّه يهتمّ بجزء مختلف من النّظام. بدلًا من مراقبة ملفّات النّظام، فإن Psad يُراقب سجلّات الجدار النّاريّ لمحاولة رصد النّشاطات غير الطّبيعيّة. على سبيل المثال، إذا وُجد من يبحث عن ثغرات Vulnerabilities في النّظام عن طريق فحص المنافذ Ports فإنّ Psad يُمكن أن يرصُد هذا النّشاط ويغيّر قواعد الجدار النّاريّ ديناميكيًّا لحظر المستخدِم المعنيّ. يُمكن لهذا البرنامج تسجيل مستويات عديدة للتّهديدات ثمّ يعتمد في تجاوبه مع التّهديدات على خطورة المشكل الّذي يواجهه. توجد أيضًا إمكانيّة إرسال بريد لمدير النّظام. اقرأ الدّرس التّالي للمزيد حول استخدام برنامج Psad. ### 4- Bro برنامج Bro هو وسلة أخرى لضبط نظام كشف عن التّطفّل يعتمد على حركة البيانات في الشّبكة. Bro هو في الأصل إطار عمل Framework لمراقبة الشّبكة؛ يُمكن استخدامه كنظام للكشف عن التّطفّل أو لأغراض أخرى مثل تجميع إحصائيّات عن الاستخدام، التّحرّي عن المشاكل أو التّعرّف على أنماط Patterns معيَّنة. يُقسًّم نظام Bro إلى طبقتيْن. الطّبقة الأولى تُراقب النّشاطات وتُولّد أحداثا Events. أمّا الطّبقة الثّانيّة فتشغّل الأحداث المُولَّدة تبعًا لسيّاسات تُملي ما يتوجّب عمله. يُمكن لهذه الطّبقة إرسال تحذيرات، تنفيذ أوامر، مجرّد تسجيل الحالة أو إجراءات أخرى. يشرح الدّليل التّالي كيفيّة استخدام Bro لكشف التّطفّل. ### 5- RKHunter لا يعدّ برنامج RKHunter - تقنيًّا - برنامجًا للكشف عن التّطفّل، إلّا أنّه يعمل بنفس المبادئ الّتي تستخدمها أنظمة الكشف عن التّطفّل المعتمدة على مراقبة ملفّات النّظام، مثل Tripwire وAide. يهدف RKHunter في الأساس إلى كشف برامج Rootkits (برامج تُساعد المهاجمين في إخفاء ما ينفّذونه من عمليّات على النّظام) والبرمجيّات الخبيثة Malwares المعروفة. على الرّغم من ندرة الفيروسات على لينكس إلّا أنّ البرمجيّات الخبيثة وبرامج Rootkits موجودة ويُمكن أن تُصيب الخادوم وتُعطي إمكانيّة ولوج مستمرّ لمستغلّي الثّغرات. يُنزّل RKHunter قائمة بالثّغرات المعروفة ويتأكّد من عدم وجودها على النّظام؛ كما أنّه يحذّر مدير النّظام في حال كشف إعدادات غير آمنة في بعض التّطبيقات الشّائعة. يوجد في الرّابط التّالي دليل لاستخدام RKHunter على أوبنتو. General Security Advice تُساعد الأدوات المذكورة أعلاه في تأمين أجزاء من نظامك، إلّا أنّ الأمان لا يأتي فقط من إعداد أداة ثمّ نسيانها. يظهر الأمان في بعض العقليّات؛ ويمكن أن يتحقّق عبر الاجتهاد، التّدقيق والانخراط في عمليّة التّأمين. توجد بعض القواعد الّتي يُساعد اتّباعها في وضعك على الطّريق الصّحيح للاستخدام الآمن لنظامك. 1- انتبه إلى التّحديثات وحدّث الخادوم بانتظام يُعثر على الثّغرات طول الوقت وفي كلّ أنواع البرامج الّتي يمكن أن تكون لديك على الخادوم. يؤدّي مطوّرو التّوزيعات على العموم عملًا جيّدًا في الاطّلاع على آخر الثّغرات الأمنيّة والحرص على إرسال تحديثاتها إلى المستودعات Repositories؛ إلّا أنّ توفّر التّحديثات الأمنيّة في المستودَع لا يعني أنّ الخادوم آمن ما لم تُنزّلها وتثبّتها عليه. على الرّغم من أن الخواديم تستفيد من إصدارات مجرَّبَة جيّدًا، إلّا أنّ التّرقيعات الأمنيّة يجب أن تُعدَّ حرِجة ويجب تثبيتها فور صدورها. تُوفّر العديد من التّوزيعات قوائم بريديّة خاصّة بالأخبار الأمنيّة ومستودعات أمنيّة منفصِلة لتنزيل التّرقيعات الأمنيّة. 2- كن حذِرًا عند تنزيل برامج من خارج القنوات الرّسميّة يلتصق الكثير من المستخدمين بالبرامج المتوفّرة في المستودعات الرّسميّة لتوزيعاتهم، كما أنّ أغلب التّوزيعات تُوفّر حزمًا Packages موَقَّعة Signed. يُمكن عمومًا للمستخدمين الوثوق في مطوّري التّوزيعات والتّركيز على التّهديدات الأمنيّة في البرامج المُتحصَّل عليها من خارج المستودعات الرّسميّة للتّوزيعة. يُمكن أن تثق في الحزم القادمة من التّوزيعة الّتي تستخدمها أو من مواقع ويب رسميّة، لكن انتبه إلى إمكانيّة وجود خطر أمنيّ، إلّا إذا كنت تدقّق كل جزء من البرامج بنفسك. يرى الكثيرون أنّ مستوى الخطر هذا مقبول. على العكس من ذلك، يمكن للبرامج المتحصَّل عليها من مستودعات عشوائيّة أو من مستودعات PPA (اختصار لPersonal Package Archives، أرشيف حزم شخصية) يُشرف عليها أشخاص أو منظَّمات غير معروفة، يمكن أن تكون خطرًا محدِقا. لا توجد قاعدة عامّة، ولكن يمكن عدّ أغلب البرامج المتوفّرة في المستودعات غير الرّسميّة آمنة؛ لكن يجب الحذر والانتباه إلى وجود خطر في كلّ مرة تثق في طرف ثالث. تأكّد من قدرتك على شرح السّبب الّذي يجعلك تثق في مصدر البرنامج. في النّهاية الخطر على أمان نظامك مشكل أكبر من عدم توفّر بعض وسائل الرّاحة في التّعامل مع النّظام. 3- اعرف خدماتك وعرّف حدود استخدامها على الرّغم من أنّ الهدف الأساسيّ من تشغيل خادوم هو توفير خدمات، إلّا أنّه يجب تحديد الخدمات المُشغّلة على الجهاز وعدم تشغيل خدمات لا تحتاجها. انظُر إلى كلّ خدمة مُفَعَّلة على أنّها ناقل للخطر؛ وحاول التّخلّص من كلّ ناقل خطر حسب استطاعتك بحيث لا تؤثّر على الوظائف الّتي تُريد توفيرها عبر الخادوم. يعني هذا أنّك يجب أن تُعطّل خادوم العرض X إذا لم توجد شاشة متّصلة بالخادوم ولم تكن تشغِّل أي برامج رسوميّة (برامج الويب لا تدخل في هذا التّصنيف). يُمكن اتّخاذ إجراءات مشابهة في مجالات أخرى؛ لا تستخدمُ طابعة؟ عطِّل خدمة lp. لا تشارك الملفّات مع وندوز؟ عطِّل خدمة samba. توجد طرق عديدة لمعرفة الخدمات المُشغَّلة على جهازك. يعرض المقال التّالي لطريقة إنشاء قائمة بالخدمات المُفَعَّلة. 4- لا تستخدم FTP، استعِض عنه بSFTP. قد تكون هذه النّقطة من أكثر الأمور صعوبة للتّطبيق على كثير من المستخدمين؛ لكن بروتوكول FTP غير آمن منذ بداياته. كلّ معلومات الاستيثاق تُرسل في نصوص صِرفة (غير معمّاة) Plain-text، وهو ما يعني أنّ باستطاعة كلّ من يراقب الاتّصال بين الجهاز المحلّي وبين الخادوم معرفة بيانات الاستيثاق. توجد حالات قليلة يُمكن أن يكون فيها استخدام FTP مبرَّرا. إذا كنت تشغّل مرآة تنزيل عموميّة، مجهولة وللقراءة فقط؛ فFTP ربّما يكون خيّارًا مناسِبا. يُمكن أيضًا استخدام FTP عند نقل ملفّات بين حاسوبيْن موجوديْن في شبكتيْن محميتْن بجدار ناريّ، وتثق في أن الشّبكتيْن آمنتان. يجب أن تستخدم في أغلب الحالات الأخرى بديلًا آمنًا. تأتي حزمة SSH ببروتكول بديل يُسمَّى SFTP، يُستخدَم بنفس طريقة استخدام FTP ويوفّر نفس درجة الأمان الّتي يُوفّرها بروتوكول SSH. يشرح درس كيف تستخدِم SFTP لنقل الملفّات بأمان إلى خادوم بعيد طريقة التّعامل مع SFTP. 5- اضبُط سيّاسات حسّاسة لأمان المستخدمين توجد عدّة خطوات يُمكن تطبيقها لتأمين النّظام عند إدارة المستخدِمين. الاقتراح الأوّل هو تعطيل دخول المستخدِم الجذر Root user. يُعدّ حساب المستخدِم الجذر مقصِدًا جذّابًا لمحاولات التّسلّل نظرًا لوجوده على كلّ الأنظمة المتوافقة مع معيار POSIX، وللامتيّازات اللّامحدودة الّتي يتمتّع بها في النّظام. تبدو فكرة تعطيل دخول المستخدم Root، بعد إعداد الوصول عن طريق sudo أو إذا كنت مرتاحًا مع أمر su، تبدو فكرةً جيّدة. لا يوافق الكثيرون على هذه الفكرة؛ جرّب جدوائيّتها بالنّسبة لك. توجد إمكانيّة تعطيل الدّخول عن بعد لحساب root ضمن إعدادات SSH، كما يُمكن تعطيل الدخول للحساب الجذر محلّيًا. يُمكن أيضًا إضافة تقييدات على الحساب ضمن ملف الإعداد etc/securetty/، أو ضبط برنامج Shell للمستخدم الجذر بحيث يُشير إلى برنامج آخر ممّا ينتج عنه تعطيل وصول root إلى Shell. خيّار آخر يتمثّل في إعداد قواعد PAM (أو Pluggable Authentication Modules، وهي طبقة لتمكين الاستيثاق بين خدمات مختلفة على الأنظمة الشّبيهة بيونكس) لتقييد ولوج المستخدم الجذر. توفّر RedHat مقالًا رائعًا حول كيفيّة تعطيل دخول المستخدم الجذر. يتوجّب أيضًا العمل على تنفيذ سيّاسة أمنيّة يُنشَأ بموجبها حساب وحيد لكلّ مستخدم أو خدمة، ثمّ يُعطى الأذون Permissions الدّنيا اللّازمة لعمله. امنع الوصول إلى كلّ ما لا تحتاج الوصول إليه ولا تعطِ للمستخدمين امتيّازات لا يحتاجون إليها. هذه السّيّاسة مهمّة جدًّا، ففي حالة اختراق مستخدِم أو خِدمة فلن يؤدّي ذلك إلى تأثير الدومينو الّذي يسمح لمهاجمٍ بالحصول على صلاحيّات واسعة في النّظام. تُساعد طريقة التّقسيم هذه في عزل المشاكل الأمنيّة، بحيث لا يتسبّب مشكل أمنيّ لدى حساب واحد في تعريض كامل النّظام للخطر. يجب كذلك التّأكّد من تعطيل حسابات المستخدمين عندما تنقضي الحاجة إليها؛ مثلًا، عند إلغاء تثبيت برنامج. 6- انتبِه لإعداد الأذون تمثّل صلاحيّات الملفّات مصدرًا كبيرًا للجزع لدى كثير من المستخدمين؛ فقد يكون من الصّعب العثور على نقطة توازن بحيث يُمكن للمستخدِم أداء عمله دون أن يعرّض نفسه أو النّظام للخطر. يحتاج هذا الأمر إلى الانتباه والتّفكير في كلّ سيناريو ممكن. يجب التّفكير في سيّاسة أمنيّة تضبُط umask (الخاصّيّة الّتي تحدّد الأذون الافتراضيّة للملفّات والمجلّدات الجديدة) بما يُناسِب؛ الأمر الّذي يُشكّل خطوة كبيرة على الطّريق الصّحيح. المقال التّالي يتطرّق لكيفيّة ضبط umask. القاعدة العامّة هي ألّا تضبط إذن الكتابة على أي ملفّ إلّا إذا كان ذلك ضروريًّا، خصوصًا إذا أمكن الوصول للملفّ عبر الإنترنت، لما قد ينتُج عنه من عواقب. إضافةً لذلك، يجب ألّا تُعدّل على بت SGID أو SUID، إلّا إذا كنت تدرك جيّدًا ما تفعل. تحقّق أيضًا من أنّ كلّ الملفّات لديها مالِك ومجموعة. يتغيّر إعداد الأذون كثيرًا حسب الحاجة، ولكن يجب دائمًا محاولة العثور على طريقة لتلبيّة الحاجة بأقل أذون ممكن. ينبغي الانتباه إلى سهولة الخطأ في إعداد الأذون، ووجود العديد من النّصائح الخاطئة حولها على الإنترنت. كيف تؤمِّن برنامجًا تستخدمه لا يكفي حجم هذا المقال للتّطرّق لخصوصيّات تأمين كلّ نوع من البرامج أو الخدمات، إلّا أنّه توجد العديد من الدّروس والأدلّة المتاحة على الشّبكة. يجب أن تقرأ النّصائح الأمنيّة لكلّ برنامج تريد إعداده للعمل على جهازك. بالنّسبة لبرامج الخادوم الشّهيرة مثل خواديم الويب ونُظُم إدارة قواعد البيانات، توجد مواقع ويب وقواعد بيانات كاملة مخصَّصة للأمان. على العموم، يجب أن تقرأ حول تأمين كلّ خدمة قبل إعدادها وتشغيلها. خاتمة يجب أن تكون لديك الآن معرفة جيّدة بالإجراءات الأمنيّة الممكن إعدادها على خادوم لينكس. حاولنا في هذا الدّليل التّعرّض للعديد من المجالات ذات الأهميّة الكبيرة، ولكن في نهاية المطاف ستحتاج اتّخاذ قرارات بنفسك. يتوجب عليك، بوصفك مديرًا للنّظام؛ تحمّل مسؤوليّاتك في تأمين الخادوم. تأمين الخادوم ليس إجراءً يُؤدّى مرةً واحدة، لكنّه عملّية مستمرّة تتضمّن فحص النّظام باستمرار، إعداد الحلول، التحقّق من السّجلاّت والتّنبيهات، إعادة تعريف الاحتيّاجات، …إلخ. اليقظة واستمرار تقويم ومراقبة الإجراءات المتَّبعة أمور ضروريّة للحفاظ على الأمن. ترجمة بتصرّف لمقال An Introduction to Securing your Linux VPS لصاحبه Justin Ellingwood.
  3. ينصبّ الاهتمام عند إعداد بنية تحتيّة Infrastructure - عادةً - على جعل التّطبيقات تعمل بالطّريقة المرجوّة. ما لا ينتبه له الكثيرون أنّ التّركيز على عمل التّطبيقات دون الاهتمام الكافيّ بالاحتيّاجات الأمنيّة للبنية التحتيّة يُمكن أن تنتُج عنه نتائج كارثيّة في حال حدوث عمليّات اختراق. سنشرح في هذا الدّليل بعض التّصرّفات الأمنيّة الأساسيّة الّتي ينبغي تنفيذها قبل إعداد تطبيقاتك أو أثناءه. مفاتيح SSH تُستخدَم مفاتيح SSH بديلًا عن الاستيثاق المعتمد على كلمات السّرّ Password-based authentication للاتّصال بخادوم SSH؛ وهي عبارة عن زوج من المفاتيح، علنيّ Public وسريّ Private، تُنشأ قبل الاستيثاق. يحتفظ المستخدم بالمفتاح السّرّي ولا يُشاركه مع أيّ كان، في حين يُمكن مشاركة المفتاح العلنيّ. يجب وضع المفتاح العلنيّ للمستخدِم ضمن مجلَّد خاصّ على الخادوم حتى يُمكنَ استخدامُ الاستيثاق عن طريق مفاتيح SSH. يطلُب الخادوم، عند محاولة المستخدِم الاتّصال به، دليلًا على أنّ العميل Client يمتلك المفتاح السّري الموافق للمفتاح العلنيّ الموجود على الخادوم. يستخدم عميل SSH طريقة تُثبت للخادوم امتلاكه للمفتاح السّرّي للمستخدِم؛ فيسمح الخادوم للمستخدِم بالولوج دون كلمة سرّ. 1- كيف تحسّن مفاتيح SSH من الأمان؟ تُعمّى Encryption تمامًا كلّ إجراءات الاستيثاق، بما فيها الاستيثاق عن طريق كلمة السّر، عند استخدام SSH. في المقابل، يُمكن لسيّئي النّيّات - عند السّماح بالاستيثاق عن طريق كلمات السّرّ - محاولة الولوج إلى الخادوم مرارًا وتكرارًا عبر تخمين كلمة السّرّ. تمنح القدرات الحاليّة للحواسيب المهاجمين على تشغيل محاولات الاختراق آليًّا إلى أن يُعثَر على كلمة السّرّ الصّحيحة. يسمح إعداد استيثاق يعتمد على مفاتيح SSH بتعطيل الاستيثاق عن طريق كلمات السّرّ؛ إذ تحوي مفاتيح SSH عمومًا محارف أكثر بكثير من أيّ كلمة سرّ وهو ما يعني وجود إمكانيّات أكثر يجب على المُهاجم تجربتها. تعدّ الكثير من خوارزميّات غير قابلة للكسر، لسبب بسيط هو أنّ العتاد المتوفّر حاليًّا سيستغرق عقودًا أو أكثر للمرور بجميع الاحتمالات الممكنة. 2- ما مدى صعوبة إعداد الاستيثاق اعتمادًا على مفاتيح SSH؟ ضبط مفاتيح SSH سهلٌ جدًّا، كما أنّها الطّريقة الّتي يُنصَح بها للولوج عن بعد إلى خواديم لينكس ويونكس. يُمكن في ظرف دقائق إنشاء زوج من مفاتيح SSH على جهازك الشّخصيّ ثمّ نقل المفتاح العلنيّ إلى الخواديم. إذا كنت تشعر أنّك تحتاج للاستيثاق بالاعتماد على كلمات السّر فمن الجيّد استخدام حلول مثل fail2ban على خادومك للحدّ من إمكانيّة تخمين كلمة السّرّ. الجدران النّاريّة Firewalls الجدار النّاري عبارة عن برنامج (أو عتاد) يتحكّم في الخِدْمات المعروضة عبر الشّبكة. يعني هذا حظر أو تقييد الوصول إلى أي منفَذ Port لا يدخل ضمن المنافذ المتاحة للعموم. توجد بعض الخدمات الّتي تُشغَّل افتراضيًّا في الكثير من الخواديم. يُمكن تقسيم هذه الخِدْمات إلى المجموعات التّاليّة: الخِدْمات العموميّة الّتي يُمكن لأيّ كان الوصول إليها عبر الإنترنت، غالبًا بصفةِ مجهول. خادوم الويب مثال جيّد على هذه المجموعة، إذ يسمح عادةً للجميع بالوصول إلى موقع الويب. الخِدْمات الخاصّة الّتي لا يُمكن الوصول إليها لغير مجموعة حسابات مُرخَّص لها أو من أماكن محدَّدة . لوحة التّحكّم في قاعدة البيانات مثال على هذه المجموعة من الخِدْمات. الخِدْمات الدّاخليّة الّتي يمكِن الوصول إليها فقط من الخادوم نفسِه؛ دون أن تُعرَض للعالم الخارجيّ. قاعدة بيانات لا تقبل سوى الاتّصالات المحليّة (من الخادوم) مثال على هذه المجموعة. تتأكد الجدران النّاريّة من أنّ الوصول إلى برنامجك مقيّد وفقًا للمجموعات أعلاه. تُترك الخِدمات العموميّة مفتوحةً ومتاحةً للجميع بينما يُحصَر الوصول إلى الخِدْمات الخاصّة اعتمادا على معايير محدَّدة. بالنّسبة للخِدمات الدّاخليّة فيُمكن جعلُها غير مرئيّة تمامًا من خارج الخادوم. تمنع أغلب إعدادات الجدران النّاريّة تمامًا الوصولَ إلى المنافذ غير المستعملة. 1- كيف تحسّن الجدران النّاريّة من الأمان؟ الجدران النّاريّة جزء أساسيّ من إعداد أيّ خادوم. يُشكّل الجدار النّاري طبقة حماية إضافيّة، حتى ولو كانت البرامج الّتي تستخدمها تطبّق تدابير أمنيّة أو تقتصِر على الواجهات الّتي تريد لهذه البرامج العمل عليها. يمنع جدار ناريّ مضبوط بطريقة صحيحة الوصول إلى جميع الخِدمات ما عدا تلك الّتي تحتاج إلى أن تبقى مفتوحة. يقلّل عرض مجموعة برامج قليلة من الجوانب الّتي يُمكن إتيان الخادوم منها ممّا يعني قابليّةً أقلّ للتّعرّض للثّغرات الأمنيّة. 2- ما مدى صعوبة إعداد الجدران النّاريّة؟ توجد جدران ناريّة كثيرة على أنظمة لينكس، تختلف في صعوبة التّعامل معها. بصفة عامّة، يجب ألّا تتجاوز مدّة ضبط الجدار النّاري بضع دقائق؛ كما أنّه عمليّة تُجرى عند الإعداد الابتدائيّ للخادوم أو عند تغيير الخِدمات المتاحة عبر الخادوم. جدار UFW خيّار سهل. توجد أيضًا خيّارات أخرى مثل استخدام iptables أو جدار CSF النّاريّ. الشّبكات الخاصّة الافتراضيّة VPN والتّشبيك الخاصّ Private Networking الشّبكات الخاصّة هي شبكات متاحة لبعض الخواديم أو المستخدمين فقط؛ أمّا الشّبكات الخاصّة الافتراضيّة Virtual private network (أو VPN) فهي طريقة لإنشاء اتّصالات آمنة بين جهازيْن متباعديْن بحيث يظهر الاتّصال كما لو أنّه في شبكة خاصّة محليّة. تُتيح الشّبكات الخاصّة الافتراضيّة طريقة لإعداد خِدمات موجودة على خواديم متباعدة بحيثُ تظهر وكأنّها في شبكة خاصّة كما أنّها تؤمّن الاتّصالات بين خواديم متباعدة. 1- كيف تحسّن الشّبكات الخاصّة من الأمان؟ يُنصح دائمًا بتفضيل الشّبكات الخاصّة بدلًا من العموميّة في الاتّصالات الدّاخليّة كل ما كان ذلك ممكنًا. مع ذلك يجب تطيق تدابير أمنيّة إضافيّة لتأمين الاتّصالات بين الخواديم والحؤول دون وصول مستخدمي الشّبكة الدّاخليّة غير المرخَّص لهم إلى خواديمك. يُعدّ استخدام شبكات خاصّة افتراضيّة طريقة ذات فعاليّة لوضع شبكة خاصّة لا تُمكن لغير رؤيتها خواديمك؛ ستكون الاتّصالات خاصّة ومؤمّنة تمامًا. يُمكن ضبطُ بقيّة التّطبيقات لتمرير بياناتها عبر الواجهات الافتراضيّة الّتي يعرضها برنامج الشّبكات الخاصّة الافتراضيّة. لا تُعرض في هذا الإعداد عبر شبكة الإنترنت سوى سوى الخدمات الموجهة للعملاء العموميين. 2- ما مدى صعوبة إعداد الشّبكات الخاصّة الافتراضيّة؟ من السّهل استخدام الشّبكات الخاصّة في مراكز البيانات Data centers الّتي لديها هذه القدرة، إذ يقتصر الأمر على تفعيل واجهات الشّبكة أثناء إنشاء الخادوم وإعداد التّطبيقات والجدار النّاريّ لاستخدام الشّبكة الخاصّة. انتبه إلى أنّ الشّبكات الخاصّة الّتي تمتدّ عبر مركز البيانات تشترك في نفس الشّبكة مع بقيّة الخواديم. بالنّسبة للشّبكات الخاصّة الافتراضيّة فإنّ الإعداد الابتدائيّ أكثر تعقيدًا؛ إلّا أنّ الرّفع من مستوى الأمان يُعوّض الجهد في أغلب الحالات. يتطلّب إعداد شبكات خاصّة افتراضيّة تثبيت وضبط إعداد الأمان المشتركة على كلّ خادوم؛ ثمّ بعد إطلاق وتشغيل الشّبكة الخاصّة الافتراضيّة، إعداد التّطبيقات لاستخدامها. البنية التّحتيّة للمفاتيح العلنيّة PKI والتّعميّة بواسطة SSL/TLS تُحيل البنية التّحتيّة للمفاتيح العلنيّة Public key infrastructure (أو PKI) إلى نظام مُصمّم لإنشاء، إدارة والتحقق من شهادات Certificates تحديد الهويّة وتعميّة الاتّصال. يُمكن استخدام شهادات SSL أو TLS لتوثيق عناصر من النّظام لدى أخرى. يمكن - بعد الاستيثاق - استخدام الشّهادات لتعميّة الاتّصال. 1- كيف تحسّن البنية التّحتيّة للمفاتيح العلنيّة من الأمان؟ يُمكّن التّأسيس لسلطة شهادات Certificate authority وإدارتها ضمن خواديمك كلَّ عنصُر داخل بنيتك التّحتيّة من التّحقّق من هويّة بقيّة العناصر وتعميّة البيانات المتلادلة معها. يُمكن أن تمنع هذه الآليّة هجمات من نوع “رجل في الوسط” Man-in-the-middle الّتي يحاكي فيها المهاجم أحد الخواديم ضمن بنيتك التّحتيّة بهدف التقاط حركة البيانات. يُمكن ضبط كلّ خادوم ليثق في سلطة شهادات مركزيّة بحيث تُصبح أي شهادة تُوقّع عليها السّلطة المركزيّة موثوقة. إذا كانت التّطبيقات والبروتوكولات الّتي تستخدمها للاتّصال تدعم التّعمية بواسطة TLS/SSL، فإنّ هذه طريقة لتعميّة النّظام دون إغراق الاتّصال عن طريق شبكة خاصّة افتراضيّة (يدخل SSL غالبًا في آليّة عمل الشّبكات الخاصّة الافتراضيّة). 2- ما مدى صعوبة إعداد بنية التّحتيّة للمفاتيح العلنيّة؟ قد يحتاج إعداد سلطة شهادات وتثبيت بقيّة البنية التّحتيّة للمفاتيح العلنيّة في البداية لكثير من المجهود. علاوةً على ذلك فإنّ إدارة الشّهادات قد تزيد عبئًا إضافيًّا عند الحاجة لإنشاء شهادات جديدة، توقيعها أو إبطالها. لن يُشكّل تنفيذ بنية تحتيّة متكاملة للمفاتيح العلنيّة إضافةً محسوسة للكثير من المستخدمين إلّا عند زيادة احتيّاجاتهم. ربّما يكون تأمين الاتّصال بين عناصر البنية التّحتيّة عبر شبكات خاصّة افتراضيّة إجراءً مناسبًا إلى أن يصلوا إلى المرحلة الّتي تُصبح فيها بنية المفاتيح العلنيّة تعوّض الجهد الإضافيّ المبذول لإدارتها. فحص الخدمات Service auditing تطرّقنا حتى الآن لتقنيّات يُمكن اللّجوء إليها للرّفع من مستوى الأمان. يقبع جزء مهمّ من الأمان في تحليل الأنظمة المستخدَمة، فهم الجوانب الّتي يُمكن أن تُؤتَى منها، وقفل العناصر حسب إمكاناتك. يُشير فحص الخدمات إلى العمليّة الّتي تكتشف عن طريقها الخدمات العاملة في البنية التّحتيّة. يُضبط - غالبًا - نظام التّشغيل ليبدأ تشغيل خدمات معيّنة عند الإقلاع Boot. قد تجرّ البرامج الإضافيّة اعتماديّات Dependencies تُشغَّل هي الأخرى آليًّا عند الإقلاع. يسمح فحص الخدمات بمعرفة الخدمات العاملة على النّظام، المنافذ المستخدمة للاتّصالات، والبروتوكولات المقبولة. تُساعد هذه المعلومات في ضبط إعدادات الجدار النّاريّ. 1- كيف يُحسّن فحص الخدمات من الأمان؟ تُشغّل الخواديم عمليّات Processes عديدة لأداء أعمال داخليّة في الخادوم أو للتّعامل مع عملاء خارجيّين. يُمثّل كلّ واحد من هذه العناصر وسيلةً محتملة قد يستغلّها مستخدمون ذوو نيّات خبيثة لمهاجمة الخادوم؛ فكلّ ما زادت الخدمات الّتي تشغّلها زاد احتمال وجود ثغرات في البرامج الّتي تستخدمها. يُمكن أن تبدأ تحليل الخدمات الموجودة على جهازك فور حصولك على فكرة جيّدة عنها. في ما يلي بعض الأسئلة الّتي يجب أن تطرحها لكلّ واحدة من هذه الخِدمات: هل أحتاج لهذه الخدمة؟ هل تعمل الخدمة على واجهات لا تحتاج إليها؟ هل يحب تحديدها بعنوان IP واحد؟ هل قواعد الجدار النّاريّ معدّة بطريقة تسمح للبيانات المرخَّص لها بالمرور إلى الخدمة؟ هل يمنع الجدار النّاريّ الوصول غير المرخَّص إلى الخدمة؟ هل لديك وسيلة تحصُل بها على إشعارات عن الثّغرات المُكتشفة في البرنامج؟ يجب أن يكون فحص الخدمة تدبيرًا قيّاسيًّا عند إعداد أي خادوم جديد. 2- ما مدى صعوبة إعداد فحص الخدمات؟ الفحص الأساسيّ للخدمة سهلٌ جدًّا، إذ يعرض أمر netstat الخدمات الّتي تُنصِت لحركة البيانات عبر منافذ كلّ واجهة. في ما يلي مثال يعرض اسم البرنامج، معرّف العمليّة PID والعناوين المستخدَمة لحركة البيانات وفقًا لبروتوكول نقل البيانات (TCP أو UDP): sudo netstat -plunt ستكون المُخرجات مقاربة للتّاليّة: Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 887/sshd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 919/nginx tcp6 0 0 :::22 :::* LISTEN 887/sshd tcp6 0 0 :::80 :::* LISTEN 919/nginx الأعمدة الأساسيّة الّتي يجب عليك الانتباه إليها هي Porto (المنفذ) ، Local Address (العنوان المحلّي)، ومعرّف العمليّة/البرنامج (PID/Program). إذا كان عنوان IP الّذي تستقبل الخدمة عليه الاتّصالات هو 0.0.0.0 فهذا يعني أنّ الخدمة تقبل الاتّصالات من جميع الواجهات. فحص الملفّات وأنظمة الكشف عن التّطفّل Intrusion detection systems نعني بفحص الملفّات العمليّة الّتي بموجبها نُقارن وضعيّة النّظام الحاليّة بسجلّ لملفّات النّظام وخصائصها عندما كان في وضعيّة تُعرف بأنّها جيّدة. يُستخدم فحص الملفّات للتّعرّف على التّغييرات الّتي يُمكن أن يكون النّظام قد سمح بها. نظام الكشف عن التّطفّل (IDS اختصارًا) هو برنامج يُراقب نظام التّشغيل أو الشّبكة بحثًا عن أنشطة غير مسموح بها. تعتمد الكثير من أنظمة الكشف عن التّطفّل المُستضافة على الخادوم على طريقة فحص الملفّات للتّحقّق من وجود تعديلات في نظام التّشغيل. 1- كيف تُحسّن أنظمة الكشف عن التّطفّل وفحص الملفّات من الأمان؟ إذا كنت مهتمًّا بالرّفع من مستوى أمان بنيتك التّحتيّة فمن المفيد إجراء فحوص على مستوى الملفّات، مثلها مثل الخدمات. يُمكن أن يكون هذا الإجراء دوريًّا، يؤدّيه المسؤول؛ أو آليًّا ضمن نظام للكشف عن التّطفّل. تعدّ هذه الوسائل من الطّرق القليلة الّتي تتأكّد من خلالها أنّ نظام الملفّات Filesystem لم يغيِّره أو يُعدِّل عليه مستخدم أو برنامج. يُفضّل المتطفّلون في كثير من الأحيان، لأسباب مختلفة، البقاء متخفّين للاستمرار في استغلال الثّغرات الموجودة في النّظام لمدّة أطول. يُمكن لمن يستغلّ ثغراتٍ في النّظام أن يُبدل ملفّات تنفيذيّة بنُسخ مُعدَّلة منها؛ سيُخبرك فحص نظام الملفّات بالملفّات المُعدًّل عليها إن وُجدت ممّا يُساعد في التّأكّد من تكامل بيئة الخادوم. 2- ما مدى صعوبة إعداد فحص الملفّات وأنظمة الكشف عن التّطفّل؟ قد يكون تثبيت نظام للكشف عن التّطفّل أو إجراء فحص للملفّات عمليّة إضافيّة تأخذ جهدًا لا بأس به. يتضمّن الإعداد الابتدائيّ إخبارَ نظام الكشف عن التّطفّل يكلّ التّغييرات غير القياسيّة الّتي أجريتها على الخادوم، وتحديدَ مسارات قد تُستثنى لإنشاء خطّ مرجعيّ للاعتماد عليه. تجعل أنظمة الكشف عن التّطفّل من عمليّات الإدارة اليوميّة أكثر تكرارًا وتعقّد من تحديث البرامج ونظام التّشغيل، حيث ستحتاج لإعادة التّحقّق من النّظام قبل تنفيذ التّحديثات ثمّ إعادة إنشاء الخطّ المرجعيّ بعد تنفيذ التّحديثات لرصد أي تغييرات على إصدارات البرامج. يجب أيضًا نقل تقارير الكشف إلى مكان آخر غير النّظام الّذي حدث فيه الكشف لمنع المتطفّلين من تعديلها للتّغطيّة على آثارهم. ستزيد أنظمة الكشف عن التّطفّل بلا شكّ من عبْء الإدارة، ولكنّ مقارنة حالة النّظام الحاليّة بأخرى تعرف أنّها جيّدة هيّ الطّريقة الوحيدة للتّأكّد من أنّ الملفّات لم يُعدَّل عليها من دون علمك. Tripwire وAide من أكثر أنظمة الكشف عن التّطفّل انتشارًا. بيئات تنفيذ Execution environments معزولة يُحيل مفهوم “بيئة التّنفيذ المعزولة” إلى أيّ طريقة تشغيل تعمل بموجبها العناصر في مساحات عمل مخصَّصة لها. يُمكن أن تُعدّ بيئة تنفيذ معزولة بتشغيل عناصر التّطبيقات في خواديم خاصّة بها، أو بإعداد الخدمات للعمل في بيئات chroot أو حاويّات Containers. يعتمد مستوى العزل إلى حدّ بعيد على متطلّبات تطبيقاتك وواقع بنيتك التّحتيّة. 1- كيف يُحسّن عزل بيئات التّنفيذ من الأمان؟ يزيد عزل العمليّات في بيئات تنفيذ مستقلّة من قدرتك على تحديد المشاكل الأمنيّة الّتي يُمكن أن تتعرّض لها. يحُدّ الفصل بين العناصر المستقلّة في البنية التّحتيّة من وصول المخترقين إلى بقيّة العناصر في البنية التّحتيّة. 2- ما مدى صعوبة عزل بيئات التّنفيذ؟ تتوقّف صعوبة - أو سهولة - عزل التّطبيقات على طريقة الفصل الّتي تختارها. يُمكن عبر تحزيم التّطبيقات في حاويّات مستقلّة، الحصول بسرعة على مستوى من عزل التّطبيقات؛ ولكن يجب الانتباه إلى أنّ Docker لا يتعامل مع إعداد الحاويّات على أنّه ميزة أمنيّة. قد يوفّر إعداد بيئة Chroot لكلّ عنصُر مستوى من العزل هو الآخر، لكنّ هذه الطّريقة ليست مضمونةً بالكامل لعزل التّطبيقات؛ إذ توجد دائمًا وسيلة لكسر بيئات Chroot. يوفّر نقل العناصر إلى أجهزة مُخصَّصة أفضل مستوى من العزل، كما أنّه الوسيلة الأسهل في كثير من الأحيان؛ ولكنّه في المقابل الخيّار الأغلى نظرًا لثمن الأجهزة الإضافيّة. خاتمة قدّمنا في هذا الدّليل بعض التّحسينات الممكنة، وليس كلّها، من أجل الرّفع من مستوى الأمان في البنية التّحتيّة. تقلّ فعاليّة التّدابير الأمنيّة كلّ ما طال الانتظار في إجرائها. لا يجوز النّظر إلى التّدابير الأمنيّة على أنّها ملحقات، ويجب تنفيذها من البداية إلى جانب الخدمات والتّطبيقات. ترجمة بتصرّف لمقال 7 Security Measures to Protect your Servers.
  4. يجد كثير من مستخدمي لينكس والأنظمة الشبيهة بيونكس عموما مشاكل في فهم أذونات Permissions الملفات والمجلّدات. يتعلق الأمر أحيانا بترتيب أوضاع بتات القراءة، الكتابة أو التنفيذ؛ بينما تكمن الصعوبة أحيانا أخرى بفهم رموز العدّ الثمانيّ Octal أو ربما كيفية حل لغز بت setuid والبت اللاّصق Sticky bit. يتوجّه هذا المقال إلى من لم يفهم قطّ هذه الأذونات بالدرجة الأولى وإلى من يجد خلطا من حين لآخر في تفاصيلها. راجع أيضا مقال مقدّمة إلى أذونات لينكس Linux Permissions. الأساسيات نبدأ أولا بالنظر إلى مخرجات أمر ls: ls -lah -rwxr-xr-- 1 daniel consultants 5K Mar 10 06:55 scanner.rb -rwxr-xr-x 1 sarah teachers 18M Jul 30 10:07 papers.tar.bz2 ثلاث مجموعات من ثلاثة أحرف: بما أن الأمر يتعلّق هنا بملفات فستظهر عارضة - في أول كل مُخرَج (سطر) . تلي العارضة مجموعة محارف (9 بالضبط، تدخُل العوارض - في الحساب) سنصطلح على تقسيمها إلى ثلاث مجموعات فرعية متساوية (3x3). المستخدِم-المجموعة-الآخرون: نسمي المجموعات الثلاث على الترتيب المستخدِم User, U، مجموعة المستخدم Group, G والآخرين Other, O. يعني هذا أن أول مجموعة محارف (rwx في السطريْن) تتعلق بالمستخدِم مالك الملفّ، الثانية (r-x في السطريْن) تتعلّق بمجموعة المستخدمين مالكة الملفّ والثالثة (--r في السطر الأول وr-x في السطر الثاني) تعني الآخرين أي بقية المستخدمين. صاحب (مالك) الملف: يظهر في نتيجة الأمر المستخدم مالك الملف ومجموعة المستخدمين مالكة الملف كذلك، لكنك لن ترى الآخرين. يعود السبب في ذلك إلى أن أذونات الآخرين (مجموعة المحارف الأخيرة ضمن المجموعات الثلاث أعلاه) تنطبق على كل من ليس مالكَ الملف وليس ضمن مجموعة المستخدمين صاحبة الملف. الأعداد الثلاثة يرتبك بعضهم عندما يرى الأذونات مذكورة بصيغة مجموعة من ثلاثة أعداد، لكنّ الأمر ليس بهذا التعقيد. تذكّر فقط أن هذه الأعداد هي أماكن تحوي الرقم الموافق للإذن حسب الترتيب (من اليسار إلى اليمين): r (القراءة)، w (الكتابة) وx (التنفيذ). لاحظ الصورة. بالنسبة لكلّ رمز، نضربه في 1 إذا كان مذكورا في الأذونات وفي 0 إن لم يكن (تظهر عارضة مكانه)، ثم نجمع نتيجة كل ثلاثي. الأذونات على المجلدات يجب الانتباه إلى أن الأذونات على المجلدات تختلف عنها على الملفات. توحي أسماء الأذونات على الملفات بعملها: قراءة الملف (r)، الكتابة فيه أو حذفه (w) وتنفيذه (x)؛ بينما الدلالة مختلفة قليلا في المجلدات: يعني إذن القراءة على مجلد أن بإمكانك عرض المجلّد. يدلّّ إذن الكتابة أن لديك القدرة على إنشاء محتوى في المجلد أو حذفه منه. يشير إذن التنفيذ إلى أنه بالإمكان الدخول إلى المجلّد، تنفيذ أمر cd عليه مثلا. البت اللاصق، معرف المستخدم ومعرف المجموعة تمثّل هذه الخيارات الثلاثة الجزئية الأكثر تعقيدا لدى الكثيرين في أذونات لينكس. معرف المستخدم صُمِّم خيار معرّف المستخدم setuid (اختصار لـ Set user ID upon execution "اضبط معرّف المستخدم أثناء التنفيذ") لحلّ مشكل أساسي: غياب الإذن الكافي لتنفيذ بعض البرامج. كان حلّ هذا المشكل بإضافة خيار إلى الملف يقول “نفّذ هذا البرنامج وفق أذونات المستخدم الذي يملكه بغضّ النظر عن المستخدم الذي ينفّذ الملف”. ينبغي الحذر من استخدام هذا الخيار - الذي أصبح متجاوزا - إذ قد يؤدي لأخطار أمنية. إن حدث ومررت بإذن على النحو التالي فأنت أمام خيار setuid: -rwsr-xr-- 1 daniel consultants 5K Mar 10 06:55 scanner.rb لاحظ حرف s في أذونات المستخدم مالك الملف مكان إذن التنفيذ x. يشير حرف s إلى أن إذن setuid مضبوط. يظهر حرف s في المثال أعلاه صغيرا Lowercase وهو ما يعني أن خيار التنفيذ متاح أيضا لمالك الملف. إن كان خيار setuid فقط مضبوطا (بمعنى أنه لا يُتاح لمالك الملف إذن تنفيذه) فسيظهر الحرف كبيرا Uppercase هكذا S. ملحوظة: ينطبق التنبيه أعلاه بخصوص هيئة الحرف (صغير أو كبير) على جميع خيارات الأذونات الخاصة. المبدأ العام هو: إذا كان الحرف الذي يشير للإذن الخاص صغيرا فهذا يعني أن الإذن لدى المالك أيضا، أما إذا كان كبيرا فهذا يعني أنه ليس لدى المالك هذا الإذن. معرف المجموعة setguid يشبه الخيّار السابق في عمله مع فرق أنه يُطبَّق على مجموعة المستخدمين المالكة للملف بدلا من المستخدم المالك: -rwxr-Sr-x 1 bjones principals 101K Aug 16 04:01 grades.xml الفرق هنا بالمقارنة مع المثال في الفقرة السابقة هو أن حرف S يوجد ضمن أذونات المجموعة بدلا من المستخدِم. لاحِظ أيضا أن الحرف S في هذا المثال كبير وهو ما يعني أنّه ليس لدى المجموعة المالكة (principals في هذه الحالة) إذن التنفيذ ولكن عند تنفيذ المستخدِم bjones (المالك) أو مستخدم آخر ليس ضمن مجموعة principals للملف فإنّ التنفيذ سيكون بصلاحيات المجموعة المالكة. البت اللاصق يُستخدم هذا البت من أجل منع مستخدمين من التعديل على أو حذف ملفات مستخدِم أو مجموعة مستخدمين. يمكن تطبيق البت اللّاصق على ملفات عادية ولكنّه يُطبَّق أكثر على المجلّدات. نفرض مثلا أنك وضعت مجلدا تحت تصرّف مجموعة من التلاميذ ثم منحت لكل طالب مجلدا خاصا به. يمكن باستخدام البتّ اللاصق التأكد من أنه لن يكون بإمكان طالب حذفُ محتوى مجلد خاصّ بطالب آخر. يبدو البت اللاّصق كما يلي (لاحظ حرف t): drwxr-xr-t 1 alice alice 4.4K 2007-01-01 09:21 Alice التعديل على الأذونات استخدم أمر chmod لتعديل أذونات ملفّ بذكر الأذونات الجديدة التي تريد تطبيقها. يغيّر الأمر التالي أذونات مجلد الويب لتصبح 755: chmod 755 web_directory يغيّر الأمر أدناه أذونات ملف لتصبح 644: chmod 644 grocery_list.txt تعيين معرف المستخدم، معرف المجموعة والبت اللاصق يمكن استخدام أمر chmod أيضا لتعيين الأذونات الخاصّة. لتعيين معرّف المستخدم (نضيف 4 أمام الأذونات الاعتيادية): chmod 4644 script.rb يمكن أيضا استخدام طريقة إضافة الأذونات الأخرى: chmod u+s script.rb لتعيين معرّف المجموعة (نضيف 2 أمام الأذونات الاعتيادية): chmod 2644 script.rb أو: chmod g+s script.rb لتعريف البت اللّاصق (نضيف 1 أمام الأذونات الاعتيادية): chmod 1644 myfiles أو: chmod o+t myfiles ترجمة -وبتصرّف- للمقال A Unix and Linux Permissions Primer لصاحبه Daniel Miessler.
  5. تتوفّر على توزيعات لينكس برامج تحظُر إنشاء كلمات سر يسهُل تخمينها؛ فالوصول إلى الكثير من بيانات المستخدم وبرامجه يتطلّب تجاوز مرحلة إدخال كلمة السرّ ، الأمر الذي يجعل من كلمات السر نقطة حرجة في سبيل تأمين النظام والمستخدم على حدّ السواء ويجب بالتالي الحرص دائما على أن تكون محدَّثة. توجد الكثير من طرق تعمية البيانات ولكلّ منها خصوصيّاته. تستخدم أغلب توزيعات لينكس خوارزميّة تعمية تُسمّى معيار تعميّة البيانات Data Encryption Standard, DES لتعميّة كلمات السّر. تُخزّن كلمات السرّ المعمّاة في ملف etc/passwd/ أو etc/shadow/. عندما يحاول المستخدم الولوج إلى النظام فإن كلمة السّر التي يُدخِلها تُعمَّى ثم تقارن بحقل كلمة السّر المعمّاة في الملف، فإن حصل تطابق فهذا يعني أنها نفس كلمة السّر وبالتالي يُسمح له بالولوج. تستخدم أغلب توزيعات لينكس نسخة من DES لا تعمل إلا في اتجاه واحد؛ بمعنى أنه يمكن استخدامها لتعميّة كلمة سر ولكن لا يمكن استخدامها لفك تعميّة كلمات السر في ملفّي etc/passwd/ وetc/shadow/. يمكن لبرامج هجمات القوة العمياء Brute force attacks مثل John the Ripper وCrack تخمين كلمات السر التي لا تحترم حدًّا أدنى من العشوائية؛ وبإمكان مديري النّظم استخدامها لصالحهم في طريقة استباقية بتنفيذها على كلمات سرّ مستخدميهم للعثور على كلمات السّر غير الآمنة ثم الطلب من هؤلاء تغييرها إلى أخرى آمَن. التعمية بالمفاتيح العمومية تستخدم التعمية بالمفاتيح العمومية Public-Key Cryptography مفتاحا (سلسلة محارف) للتعمية وآخر لفكّها، على عكس طرق تعمية أخرى تستخدم نفس المفتاح للمهمتيْن. يهدف استخدام مفتاح خاصّ للتعميّة (المفتاح العموميّ) وآخر لفكّها (المفتاح الخصوصيّ) إلى تجاوز ضرورة تأمين نقل المفتاح الوحيد أثناء تبادل الرسائل المعمّاة. يتوفّر المفتاح العمومي لكلّ شخص للجميع دون استثناء بينما يقى المفتاح الخصوصي سرًّا خاصًّا به. مثلا، عندما يريد محمّد إرسال بريد معمّى إلى عمر فإنه يستخدم المفتاح العموميّ لعمر لتعمية البريد، عند وصول البريد إلى عمر فإنه يستخدم مفتاحه الخصوصي الذي لا يعرفه غيره لفك تعميّة الرسالة والاطّلاع عليها. بهذه الطريقة لن يعرف فحوى الرسالة غيرهما، محمّد لأنه كتب الأصل غير المعمَّى، وعمر لأنه الوحيد الذي يمكنه فك تعميتها. برنامج PGP يتبنّى برنامج PGP (اختصار لـ Pretty Good Privacy) مبدأ التعمية بالمفاتيح العمومية ويمكن استخدامه لتوقيع البيانات وتعميّتها: التوقيع للتأكد من المصدر والحؤول دون انتحال الشخصيّة، والتعمية للحفاظ على خصوصية البيانات. يجب الانتباه قبل استخدام البرنامج إلى التقييدات القانونية في استخدامه. يُحظَر في بعض الدوّل توجيه رسائل بتعميّة قويّة إلى خارج البلد. بروتوكول TLS يُستخدَم بروتوكول TLS (والإصدار السابق منه SSL) كثيرا لتأمين الاتصالات في شبكة حواسيب. يهدف البروتوكول إلى الحفاظ على خصوصية البيانات المنقولة عبر الاتصال بتعميتها، الاستيثاق من هويّات المتخاطبين باستخدام تعمية بالمفاتيح العمومية والتأكد من سلامة البيانات عن طريق جمع تحقق Checksum لكلّ حزمة بيانات. التنفيذ الأكثر شهرة على أنظمة لينكس لهذا المعيار هو مكتبة OpenSSL التي تدعم خوارزميات تعمية من بينها DES، Blowfish وIDEA. بروتوكول HTTPS وهو تطوير لبروتوكول HTTP بتضمينه داخل اتّصال يؤمّنه بروتوكول TLS (أو SSL). الأغراض الأساسية من استخدام HTTPS على مواقع الويب هي الاستيثاق، حماية الخصوصية والتحقق من سلامة البيانات المتبادلة. بروتوكول S/MIME يأتي الاسم اختصارا لـ Secure Multipurpose Internet Mail Extension (امتداد البريد الإلكتروني الآمن متعدّد الأغراض)، وهو معيار مفتوح يعتمد على التعميّة بالمفاتيح العمومية لتأمين البريد الإلكتروني وغيره من أنواع المراسلات على الشبكة. الشبكات الخاصة الافتراضية Virtual Private Network توجد تنفيذات عدّة لمعيار بروتوكول الإنترنت الآمن على لينكس. معيار IPSEC (اختصار لـ Internet Protocol Security؛ أمان بروتوكول الإنترنت) هو مجهود تقف خلفه قوة مهمات هندسة الإنتنرت IETF ويهدف إلى إنشاء اتصالات معمّاة على مستوى الشبكة (الطبقة الثالثة) وتوفير سبُل للتحقق من سلامة البيانات، التحكم في الوصول، الاستيثاق والسريّة. من الأمثلة على تطبيقات هذا البروتوكول في لينكس LibreSwan الذي يسمح للمستخدم ببناء نفق اتصالات آمن عبر شبكات غير موثوقة. يُعمَّى كل ما يمر إلى الشبكة غير الموثوقة قبل إرساله ليعمل الطرف الآخر عند استلامه على فك التعمية، تنتُج عن هذه العملية شبكة خاصّة افتراضية Virtual Private Network, VPN والتي هي شبكة اتصالات خاصّة على الرغم من أن الأجهزة فيها تتصل عن طريق شبكة غير موثوقة. لا تقتصر طُرُق إنشاء شبكات خاصة افتراضية في لينكس على IPSEC، بل توجد برامج خاصّة لهذا الغرض مثل OpenVPN التي تستخدم كثيرا مكتبات OpenSSL. بروتوكول SSH توجد عدّة حزم برمجية على لينكس لاستخدام SSH أبرزها OpenSSH. صُمِّم بروتوكول SSH ليحلّ مكان بروتوكولات الاتصال عن بعد غير الآمنة مثل rlogin، rsh وrexecالتي كانت ترسل البيانات دون احتياطات أمنية تُذكر. تعتمد حزمة برامج OpenSSH على التعمية بالمفاتيح العمومية لتعميّة الاتصالات بين مضيفين Hosts، وللاستيثاق من المستخدمين. كما يمكن استخدامها للولوج إلى خادوم بعيد أو لنسخ البيانات بين مضيفين مع الحماية من هجمات رجل في الوسط Man in the middle وهجمات أخرى. وحدات الاستيثاق سريعة التفعيل Pluggable Authentication Modules تأتي الإصدارات الحديثة من توزيعات لينكس محمّلة بآلية استيثاق موحدة تُسمّى Pluggable Authentication Modules, PAM تسمح للتطبيقات التي تعمل في فضاء المستخدم بتغيير متطلبات الاستيثاق الخاصّة بها وطريقته حسب الحاجة. يمكن باستخدام هذه الآلية من بين أمور أخرى: تحديد أمكنة وأوقات معيّنة لمستخدمين لا يمكنهم الولوج خارجها إلى النظام. تعيين سقف لاستخدام الموارد لكل مستخدِم. استعمال خوارزميات تعميّة أخرى غير DES لجعل فك التعمية بهجمات القوة العمياء أصعب. تفعيل كلمات السّر في ملف shadow حسب الحاجة. ملف Shadow لتأمين كلمات سر المستخدمين تستخدم الإصدارات الحديثة من توزيعات لينكس ملف etc/shadow/ لجعل كلمات سر المستخدم المعمّاة في مأمن من بقية المستخدمين على نفس النظام. كانت كلمات السر المعمّاة تخزّن في الإصدارات القديمة داخل ملف etc/passwd/ مبدئيا، ويمكن لجميع المستخدمين رؤيتها وبالتالي تنفيذ هجمات القوة العمياء عليها لمحاولة فك تعميتها. يعني اللجوء إلى ملف etc/shadow/ أن المستخدمين الإداريين فقط هم من يمكنهم رؤية كلمات السّر المعمّاة. التأكد من أمان كلمات مرور المستخدمين يحتاج مدير النظام أحيانا إلى التأكد من أن كلمات مرور المستخدمين جيّدة كفاية، لكي لا تكون بابا قد يؤدي فتحه إلى مشاكل أمنية أخرى، تُستخدم برامج مثل Jone the Ripper وCrack لهذا الغرض. تقوم فكرة هذه البرامج على توليد كلمات مرور معمّاة إما حسب نمط معرَّف مسبقا أو بالاعتماد على قاموس ألفاظ ثم مقارنتها بكلمات المرور المعمّاة الخاصّة بالمستخدمين، فإن وُجد تطابق عُرِفت كلمة السر. الجدير بالذكر أن مثل هذه البرامج تأخذ الكثير من الوقت وموارد الجهاز للعمل؛ وكلما كانت كلمات السّر معقدة كل ما كانت المهمة أصعب. في سيناريو هجمة حقيقية سيحتاج المخترق أولا إلى الحصول على ملف كلمات سر المستخدمين وهو أمر يحتاج لثغرات أمنية قد لا تكون موجودة؛ إلا أن الحيطة واجبة على الدوام. ترجمة - وبتصرّف - لمقال Encryption Methods in Linux لصاحبه M.el Khamlichi. حقوق الصورة البارزة: Designed by Freepik.
  6. يشرح هذا المقال كيفية استخدام Tinc، وهي أداة مفتوحة المصدر، لإنشاء شبكات خاصة افتراضية Virtual Private Network, VPN آمنة تستخدمها الخواديم والأجهزة للتواصل كما لو أنها في شبكة محليّة. يوضح المقال أيضا كيفية استخدام Tinc لإعداد نفق tunnel آمن نحو شبكة خاصة. سنستخدم خواديم Ubuntu 14.04 إلا أن الإعدادات صالحة للتطبيق والتكييف على أنظمة أخرى. يتضمن Tinc ميزات تجعله مفيدا؛ منها التعمية Encryption، الضغط Compression الاختياري للبيانات، التوجيه Routing التلقائي للشبكة (تُوجَّه حركة البيانات مباشرة إلى الخواديم المتصلة إن أمكن ذلك) واليسر في قابلية التمدد. تفرق هذه الميزات بين أداة Tinc وحلول الشبكات الخاصة الافتراضية الأخرى مثل OpenVPN وتجعلها مناسبة لإنشاء شبكة خاصة افتراضية مكوّنة من شبكات صغيرة موزَّعة على مناطق جغرافية متباعدة. تعمل أداة Tinc على نظم تشغيل مختلفة بما فيها لينوكس، وندوز و Mac OS X. المتطلباتيتطلب هذا المقال صلاحيات إدارية للوصول إلى ثلاثة خواديم Ubuntu 14.04 على الأقل. توجد تعليمات هذا الإعداد في الدرس التالي (الخطوات 3 و4): الإعداد الابتدائي لخادوم أوبنتو 14.04. إن كنت تريد استخدام الخطوات المشروحة في هذا الدرس في بيئة عملك فيجب عليك التخطيط للكيفية التي تريد لكل خادوم أن يتصل عن طريقها بالخواديم الأخرى، وتكييف الأمثلة المقدَّمة مع احتياجاتك الخاصة. تأكد عند تكييف الخطوات مع إعداداتك الخاصة من تغيير القيم إلى تلك الخاصة بك. لاتباع هذا الدرس دون تغيير يجب إنشاء خادومين خاصّين افتراضيين ضمن نفس مركز البيانات مع وضعهما في نفس الشبكة المحلية، وإنشاء خادوم آخر ضمن مركز بيانات منفصل. سنعد خادومين في مركز بيانات NYC2 وواحد في مركز بيانات AMS1 بالأسماء التالية: externalnyc: يجب أن تتصل جميع الأجهزة ضمن الشبكة الافتراضية بهذا الخادوم وتحافظ على الاتصال حتى تعمل الشبكة الافتراضية بطريقة صحيحة. يمكن أن تضبَط خواديم أخرى بطريقة مشابهة لضمان التكرار.internalnyc: يتصل بالخادوم externalnyc باستخدام واجهة الشبكة المحلية.ams1: يتصل بexternalnyc عبر الإنترنت.الهدففي المخطَّط أدناه توضيح للشبكة الخاصة الافتراضية التي نريد إعدادها والموصوفة في فقرة المتطلبات أعلاه: يمثل الأخضر شبكتنا الخاصة الافتراضية، البني شبكة الإنترنت والبرتقالي الشبكة المحلية. تستطيع الخواديم الثلاثة التخاطب عبر الشبكة الخاصة الافتراضية، على الرغم من أن ams1 غير متصل بالشبكة المحلية. نبدأ بتثبيت Tinc. تثبيت Tincثبت tinc على كل خادوم تود إلحاقه بالشبكة الخاصة الافتراضية. نبدأ بتحديث فهرس الحزم: sudo apt-get updateثم تثبيت حزمة tinc: sudo apt-get install tincننتقل بعد التثبيت إلى الإعداد. إعداد Tincيستخدم Tinc “اسم شبكة” netname للتفريق بين شبكات خاصة افتراضية عدّة في حالة وجودها. يُنصَح باستخدام أسماء شبكات حتى ولو لم تكن تخطط لإعداد شبكات خاصة افتراضية عدّة. سنسمي شبكتنا الاخاصة الافتراضية hsoub. يتطلب كل واحد من الخواديم التي ستكون جزءا من الشبكة الخاصة الافتراضية العناصر الثلاثة التالية: ملفات الإعداد: مثل tinc-up، tinc-down وtinc.conf.زوجا من المفاتيح (عمومي وخصوصي) للتعمية والاستيثاق.ملفات إعداد المستضيف: تتضمن المفاتيح العمومية وإعدادات أخرى للشبكة الخاصة الافتراضيةنبدأ بإعداد الجهاز الأول من شبكتنا الخاصة الافتراضية وهي externalnyc. إعداد externalnycأنشئ هيكل مجلّد الإعداد الخاص بالشبكة الخاصة الافتراضية hsoub على الخادوم externalnyc: sudo mkdir -p /etc/tinc/hsoub/hostsافتح ملف tinc للتعديل عليه: sudo nano /etc/tinc/hsoub/tinc.confأضف الأسطر التالية: Name = externalnyc AddressFamily = ipv4 Interface = tun0تعد التعليمات جهازا باسم externalnyc بواجهة شبكة تسمى tun0 تستخدم الإصدار الرابع من بروتوكول IP. احفظ الملف ثم أغلقه. ثم ننشئ ملفا لإعداد المستضيفات على الخادوم externalnyc: sudo nano /etc/tinc/netname/hosts/externalnycأضف الأسطر التالية إلى الملف (حيث externalnyc_public_IP عنوان IP العمومي للخادوم): Address = externalnyc_public_IP Subnet = 10.0.0.1/32تستخدم الخواديم الأخرى الملف للتخاطب مع الخادوم externalnyc. تحدد التعليمة Addressعنوان IP المُستخدّم للاتصال بهذا الخادوم فيما تعين Subnet الشبكة الفرعية التي سيستخدمها Tinc. احفظ الملف ثم أغلقه. أنشئ الآن زوج المفاتيح الخاصة بالمستضيف: sudo tincd -n hsoub -K4096ينشئ الأمر مفتاحا خاصا (يوجد على المسار etc/tinc/hsoub/rsa_key.priv/) ويضيف المفتاح العمومي إلى ملف إعداد المستضيف externalnyc الذي أنشأناه قبل قليل (etc/tinc/hsoub/hosts/externalnyc/). يجب الآن أن ننشئ tinc-up وهو سكربت يعمل على أي خادوم تشغَّل عليه شبكتنا الخاصة الافتراضية. sudo nano /etc/tinc/hsoub/tinc-upأضف الأسطر التالية: #!/bin/sh ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0يعمل هذا السكربت على إنشاء واجهة شبكة تستخدمها الشبكة الخاصة الافتراضية عند تشغيلها. سيكون عنوان هذا الخادوم على الشبكة الخاصة الافتراضية 10.0.0.1. سننشئ أيضا سكربت لحذف واجهة الشبكة الخاصة الافتراضية عند إيقاف هذه الأخيرة: sudo nano /etc/tinc/hsoub/tinc-downأضف الأسطر التالية: #!/bin/sh ifconfig $INTERFACE downاحفظ الملف ثم أغلقه. نجعل سكربتات tinc قابلة للتنفيذ: sudo chmod 755 /etc/tinc/netname/tinc-*احفظ الملف ثم أغلقه. ننتقل لإعداد بقية الأجهزة الموجودة في الشبكة الخاصة الافتراضية. إعداد internalnyc وams1يتوجب تنفيذ هذه الخطوات على كل من الخادومين internalnyc وams1 مع اختلافات طفيفة بينهما سنشير إليها. أنشئ هيكل مجلد إعداد الشبكة الخاصة الافتراضية المسماة hsoub على الخادومين internalnyc وams1 وعدل ملف إعداد Tinc: sudo mkdir -p /etc/tinc/hsoub/hosts sudo nano /etc/tinc/hsoub/tinc.confأضف الأسطر التالية (أبدل node_name باسم الخادوم): Name = node_name AddressFamily = ipv4 Interface = tun0 ConnectTo = externalnycتعد التعليمات الخواديم لمحاولة الاتصال بexternalnyc (العقدة التي أنشأناها قبل هذا). احفظ الملف ثم أغلقه. ملحوظة: يستخدم Tinc مصطلح العقدة Node للدلالة على جهاز مربوط بالشبكة الخاصة الافتراضية.. ننشئ ملف إعداد المستضيف: sudo nano /etc/tinc/hsoub/hosts/node_nameبالنسبة لinternalnyc أضف السطر التالي: Subnet = 10.0.0.2/32وبالنسبة لams1: Subnet = 10.0.0.3/32لاحظ الفرق بين العنوانين. احفظ الملف ثم أغلقه. ثم ولّد زوج المفاتيح: sudo tincd -n hsoub -K4096وأنشئ السكربت الخاص ببدء تشغيل واجهة الشبكة: sudo nano /etc/tinc/hsoub/tinc-upبالنسبة لinternalnyc أضف السطر التالي: ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0وبالنسبة لams1: ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0تستخدم عناوين IP المذكورة للاتصال بالشبكة الخاصة الافتراضية. احفظ الملف ثم أغلقه. أنشئ سكربت الإيقاف الخاص بواجهة الشبكة: sudo nano /etc/tinc/hsoub/tinc-downأضف السطر التالي: ifconfig $INTERFACE downاحفظ الملف ثم أغلقه. في الأخير نجعل السكربت قابلا للتنفيذ: sudo chmod 755 /etc/tinc/hsoub/tinc-*يجب الآن أن نوزع ملفات إعدادات المستضيف على كل عقدة من الشبكة الخاصة الافتراضية. توزيع المفاتيحلكي يستطيع جهازان التخاطب مباشرة ضمن الشبكة الخاصة الافتراضية فيجب عليهما تبادل المفاتيح العمومية التي توجد في ملف إعدادات المستضيف الخاص بكل جهاز. في حالتنا فقط الخادوم externalnyc يحتاج لتبادل المفاتيح العمومية مع بقية الخواديم. يسهل نقل كل مفتاح عمومي إلى جميع الأجهزة إدارة الشبكة الخاصة الافتراضية. ينبغي الانتباه إلى أنه يجب تغيير قيمة التعليمة Address ضمن ملف الإعداد الخاص بexternalnyc بعد نسخه على الخادوم internalnyc وإبدالها بعنوان IP المحلي للخادوم externalnyc لكي يُجرى الاتصال عبر الشبكة المحلية. توجد ملفات إعدادات المستضيف على المسار etc/tinc/hsoub/hosts/ حيث hsoub اسم الشبكة الخاصة الافتراضية. تبادل المفاتيح بين الخادومين externalnyc وinternalnycانسخ ملف إعداد المستضيف على الخادوم internalnyc إلى externalnyc (يُنفَّذ الأمر على الخادوم internalnyc): scp /etc/tinc/hsoub/hosts/internalnyc user@externalnyc_private_IP:/tmpثم انقل الملف إلى المجلَّد المناسب على الخادوم externalnyc (يُنفَّذ الأمر على الخادوم externalnyc): cd /etc/tinc/hsoub/hosts; sudo cp /tmp/internalnyc .نكرر نفس الخطوات في الاتجاه المعاكس. انسخ ملف إعداد المستضيف على الخادوم externalnyc إلى internalnyc(يُنفَّذ الأمر على الخادوم externalnyc): scp /etc/tinc/hsoub/hosts/externalnyc user@internalnyc_private_IP:/tmpثم انقل الملف إلى المجلَّد المناسب على الخادوم internalnyc (يُنفَّذ الأمر على الخادوم internalnyc): cd /etc/tinc/hsoub/hosts; sudo cp /tmp/externalnyc .نعدّل على ملف إعداد المستضيف externalnyc بعد نسخه على الخادوم internalnyc ونغير قيمة التعليمة Address ونبدلها بعنوان IP الخادوم externalnycضمن الشبكة المحلية (وهو ما يعني أن internalnyc سيتصل بexternalnyc عبر الشبكة المحلية): sudo nano /etc/tinc/hsoub/hosts/externalnycأعط القيمة externalnyc_private_IP للتعليمة Address(حيث externalnyc_private_IP عنوان externalnyc في الشبكة المحلية): Address = externalnyc_private_IPاحفظ الملف ثم أغلقه. ننتقل الآن للعقدة المتبقية، ams1. تبادل المفاتيح بين الخادومين externalnyc وams1نتبع نفس الخطوات السابقة. نبدأ بنسخ ملف إعداد المستضيفات الخاص بams1 على الخادوم externalnyc: scp /etc/tinc/hsoub/hosts/ams1 user@externalnyc_public_IP:/tmpثم انتقل إلى externalnyc وانقل الملف إلى المجلد المناسب: cd /etc/tinc/hsoub/hosts; sudo cp /tmp/ams1 .نكرر نفس الخطوات في الاتجاه المعاكس؛ فننسخ ملف إعدادات المستضيف الخاص ب externalnyc على ams1: scp /etc/tinc/hsoub/hosts/externalnyc user@ams1_public_IP:/tmpوننقل الملف إلى المجلد المناسب على الخادوم ams1: cd /etc/tinc/hsoub/hosts; sudo cp /tmp/externalnyc . تبادل المفاتيح بين العقد الإضافيةإن كانت الشبكة الخاصة الافتراضية التي تعدها تتضمن عقدا إضافية فيجب تبادل المفاتيح العمومية بينها بنفس الطريقة المشروحة في الفقرات السابقة. تذكر أنه يجب على عقدتين من الشبكة تبادل المفاتيح العمومية (ملفات إعداد المستضيف) إن كنت تريد أن يكون التخاطب بينهما مباشرا. اختبار الإعدادشغل أداة Tinc على كل واحد من الخواديم، بدءا بالخادوم externalnyc، مع تفعيل وضع التنقيح Debug: sudo tincd -n hsoub -D -d3يجب بعد تشغيل البرنامج أن تظهر أسماء العقد في المخرجات حال اتصالها بالخادوم externalnyc. في ما يلي نختبر الاتصال عبر الشبكة الخاصة الافتراضية. افتح نافذة جديدة لسطر الأوامر على الخادوم ams1 وجرب تنفيذ أمر ping مع إعطائه عنوان IP الخادوم internalnyc ضمن الشبكة الخاصة الافتراضية (أي 10.0.0.2 الذي ضبطناه سابقا): ping 10.0.0.2ينبغي أن يعمل الأمر دون مشاكل. سترى في نافذة سطر الأوامر الأولى بعض المخرجات المتعلقة بالاتصال عبر الشبكة الخاصة الافتراضية. يعني هذا أن ams1 قادر على التخاطب مع internalnyc عبر الشبكة الخاصة الافتراضية مرورا بexternalnyc. اضغط الزرين CTRL وC لتوقيف أمر ping في النافذة الجديدة. يمكن استخدام واجهات الشبكة الخاصة الافتراضية في أمور مثل اتصالات التطبيقات و SSH. لإيقاف وضعية التنقيح اضغط الزرين CTRL و\. ملحوظة: تأكد من إعدادات الجدار الناري لديك إن لم تعمل الاتصالات في الشبكة الخاصة الافتراضية. إعداد Tinc للعمل مع بدء تشغيل النظاميجب وضع اسم الشبكة الخاصة الافتراضية في ملف الإعداد nets.boot لكي تعمل بطريقة صحيحة. حرر ملف nets.boot على كل عقدة: sudo nano /etc/tinc/nets.bootأضف أسماء الشبكات الخاصة الافتراضية التي تستعملها، بالنسبة للمثال اسم الشبكة هو hsoub: # This file contains all names of the networks to be started on system startup. hsoubاحفظ الملف ثم أغلقه. Tinc معد الآن للعمل مع بدء تشغيل النظام؛ ويمكن اسخدام سطر الأوامر للتحكم فيه. استخدم الأمر التالي على كل عقدة إن أردت تشغيله الآن: sudo service tinc startخاتمةقدمنا في هذا المقال الخطوات الأساسية لإنشاء شبكة خاصة افتراضية باستخدام Tinc. يمكن البناء على ما أعددناه هنا لإنشاء شبكة تلبي احتياجاتك. يتميز Tinc بالمرونة ويمكن إعداد أي عقدة للاتصال بعقدة أخرى وبالتالي إنشاء شبكة غير مركزية لا تعتمد على خادوم واحد للتوجيه. ترجمة -وبتصرف- للمقال How To Install Tinc and Set Up a Basic VPN on Ubuntu 14.04 لصاحبه Mitchell Anicas.
  7. من المرغوب عادةً عند الانتقال من خادوم إلى آخر أن تُنقَل قواعد الجدار الناري iptables كجزءٍ من العملية؛ سيشرح هذا الدرس لك كيف تنسخ بسهولة القواعد المُفعّلة لجدار iptables من خادوم إلى آخر. المتطلبات المسبقةيتطلب هذا الدرس وجود خادومَين؛ سنشير إلى الخادوم المصدر (الذي توجد فيه قواعد iptables) بالخادوم A، والخادوم الوجهة (الذي ستُنقَل إليه القواعد) بالخادوم B. ستحتاج إلى امتيازات الجذر على كلي الخادومين. عرض قواعد Iptables الموجودةقبل نقل قواعد iptables، لننظر إليها أولًا؛ يمكنك فعل ذلك عبر تطبيق هذا الأمر على الخادوم A: sudo iptables -Sمثالٌ عن ناتج الأمر السابق: -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -s 15.15.15.51/32 -j DROPستُستخدَم القواعد الناتجة في المثال السابق لشرح عملية نقل الجدار الناري. تصدير قواعد Iptablesيكتب الأمر iptables-save قواعد iptables الحالية إلى stdout (مجرى الخرج القياسي)؛ مما يمنحنا طريقةً سهلةً لتصدير قواعد الجدار الناري إلى ملف، وذلك عبر إعادة توجيه stdout إلى ملف. استخدم الأمر iptables-save على الخادوم A -الذي تريد نقل القواعد منه- لتصدير القواعد الحالية إلى ملف باسم «iptables-export» كما يلي: cd ~ sudo iptables-save > iptables-exportهذا سيُنشئ الملف iptables-export في مجلد المنزل (home) الخاص بمستخدمك؛ يمكن أن يُستخدَم هذا الملف على خادومٍ آخر لتحميل قواعد الجدار الناري إلى iptables. عرض محتويات الملف (خطوة اختيارية)لنلقِ نظرةً سريعةً على محتويات الملف؛ سنستخدم الأمر cat لإظهار الملف على الطرفية: cat iptables-exportسيكون ناتج الأمر السابق شبيهًا بما يلي: # Generated by iptables-save v1.4.21 on Tue Sep 1 17:32:29 2015 *filter :INPUT ACCEPT [135:10578] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [8364:1557108] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -s 15.15.15.51/32 -j DROP COMMIT # Completed on Tue Sep 1 17:32:29 2015كما لاحظت، يحتوي الملف على ضبط قواعد iptables المُفعّلة؛ نحن جاهزون الآن لنسخ هذا الملف إلى الوجهة، التي هي الخادوم B. نسخ القواعد المصدرة إلى الخادوم الوجهةسنحتاج إلى نسخ ملف القواعد إلى الخادوم الوجهة (الخادوم B)؛ أسهل طريقة لفعل ذلك هي استخدام scp أو نسخ محتويات الملف ثم لصقها في ملفٍ جديد على الخادوم B. سنشرح كيفية استخدام الأمر scp لنسخ الملف عبر الشبكة إلى مجلد ‎/tmp. نفِّذ أمر scp الآتي على الخادوم A؛ تأكد أنك قد استبدلت الأجزاء المعلّمة ببيانات دخولك إلى الخادوم وعنوان IP له: scp iptables-export *user*@*server_b_ip_address*:/tmpسيُنسَخ الملف إلى مجلد ‎/tmp في الخادوم B بعد الاستيثاق (authentication)؛ الحظ أن محتويات المجلد ‎/tmp ستُحذَف عند إعادة الإقلاع، لذا يمكنك نسخ ذاك الملف إلى مكانٍ آخر إن أردت الاحتفاظ به. استيراد قواعد Iptablesبعد نسخ القواعد المُصدَّرة إلى الخادوم الوجهة، فيمكننا الآن تحميلها إلى iptables؛ لكن -وبالاعتماد على بيئتك- ربما تحتاج إلى تحديث القواعد في الملف ووضع عناوين ومجالات IP جديدة، وربما تريد أيضًا أن تعدِّل أسماء البطاقات الشبكيّة؛ إذا أردت أن تعدِّل القواعد قبل تحميلها، فعليك تعديل الملف ‎/tmp/iptables-export الآن. بعد أن تكون جاهزًا لتحميل القواعد من ملف iptables-export إلى iptables، فاستخدم الأمر iptables-restore لفعل ذلك. على الخادوم الوجهة (الخادوم B)، نفِّذ هذا الأمر لتحميل قواعد الجدار الناري: sudo iptables-restore < /tmp/iptables-exportسيحمِّل الأمر السابق القواعد إلى ipables، يمكنك التحقق من تحميلها بوساطة الأمر sudo iptables -S. حفظ القواعدتكون قواعد Iptables مؤقتةً، لذلك يجب أخذ الحيطة عند التعامل معها للحفاظ عليها حتى بعد إعادة الإقلاع؛ سيكون عليك تنفيذ هذه الخطوة على الخادوم B. سنشرح كيفية حفظ القواعد على توزيعتَي أوبنتو و CentOS. توزيعة أوبنتوإن أسهل طريقة لحفظ قواعد Iptables في أوبنتو لكي تبقى بعد إعادة الإقلاع هي استخدام حزمة iptables-persistent؛ يمكنك تثبيتها باستخدام الأمر apt-get: sudo apt-get install iptables-persistentستُسأل أثناء التثبيت إذا ما كنتَ تريد حفظ قواعد الجدار الناري الحالية؛ اختر yes إذا أردت حفظها. إذا حدَّثتَ قواعد جدارك الناري في المستقبل، وأردت حفظ التعديلات، فنفِّذ هذا الأمر: sudo invoke-rc.d iptables-persistent saveتوزيعة CentOS 6 وما قبلهاعلى توزيعة CentOS 6 وما قبلها (حيث تستخدم CentOS 7 افتراضيًا جدار FirewallD الناري)، يمكنك استخدام سكربت init الخاص بتطبيق iptables لحفظ القواعد: sudo service iptables saveسيحفظ الأمر السابق قواعد iptables الحالية إلى الملف ‎/etc/sysconfig/iptables، الذي يحمَّل بوساطة iptables عند الإقلاع. الخلاصةتهانينا، لقد أتممت نقل قواعد جدارك الناري من خادومك الأصلي إلى خادومك الجديد. ترجمة -وبتصرف- للمقال: How To Migrate Iptables Firewall Rules to a New Server لصاحبه: Mitchell Anicas.
  8. إن UFW هو أداةٌ لضبط iptables موجودٌ افتراضيًا في أوبنتو؛ يوفِّر هذا الدرس مرجعًا سريعًا لأوامر UFW التي ستُنشِئ قواعد جدار iptables الناري لحالات الاستخدام الشائعة، وهذا يتضمن أمثلةً عن استخدام UFW للسماح وحجب مختلف الخدمات عبر المنفذ، والبطاقة الشبكيّة، وعنوان IP المصدر. كيف تستخدم هذا الدرسإذا كنت قد بدأت لتوِّك باستخدام UFW لضبط جدارك الناري، فراجع الدرس تمهيد إلى UFW.تفترض أغلبية القواعد المشروحة هنا أنك تستخدم مجموعة قواعد UFW الافتراضية؛ التي تكون مضبوطةً للسماح بالاتصالات الصادرة وحجب الاتصالات الواردة، لذا عليك أن تنتقي البيانات التي تريد تمريرهااستعمل الأمثلة الموجودة في الأقسام المتتالية الملائمة لما تودّ تحقيقه؛ لا تعتمد أغلبية الأقسام في هذا الدرس على بعضها بعضًا، لذا يمكنك استخدام الأمثلة الآتية استخدامًا مستقلًاانسخ والصق الأمثلة عن الأوامر الموجودة في هذا الدرس، مستبدلًا قيمك بالقيم المُعلَّمة بالأحمرتذكر أنك تستطيع أن تتحقق من مجموعة قواعد UFW الحالية عبر الأمر sudo ufw status أو sudo ufw status verbose. حجب عنوان IPنفِّذ الأمر الآتي لحجب جميع الاتصالات الشبكية التي تُنشَأ من عنوان IP معيّن، مثلًا 15.15.15.51: sudo ufw deny from 15.15.15.51يُحدِّد التعبير from 15.15.15.51 في المثال السابق عنوان IP مصدري (source IP) هو «15.15.15.51»؛ يمكنك تحديد شبكة فرعية مثل 15.15.15.0/24 إن أردت ذلك. يمكن تحديد عنوان IP مصدري في أيّة قاعدة من قواعد الجدار الناري، بما في ذلك قاعدة allow. حجب الاتصالات إلى بطاقة شبكية معينةاستعمل هذا الأمر لحجب جميع الاتصالات من عنوان IP محدد (على سبيل المثال، 15.15.15.51) إلى بطاقة شبكيّة معيّنة، مثل eth0: sudo ufw deny in on eth0 from 15.15.15.51يشبه هذا الأمرُ الأمرَ السابق، لكن مع زيادة التعبير in on eth0. يمكن تحديد البطاقة الشبكية في أيّة قاعدة من قواعد الجدار الناري، وهذه طريقةٌ ممتازةٌ لتحديد الدور الذي تلعبه بطاقة شبكية معيّنة. خدمة SSHإذا كنتَ تستخدم خادومًا سحابيًا، فربما تريد السماح لاتصالات SSH الواردة (المنفذ 22) لذا يمكنك الاتصال وإدارة خادومك؛ يشرح هذا القسم كيف تَضبط جدارك الناري بمختلف القواعد المتعلقة بخدمة SSH. السماح لاتصالات SSHتستطيع استخدام الأمر الآتي للسماح باتصالات SSH الواردة: sudo ufw allow sshصيغةٌ بديلةٌ عن الصيغةِ السابقة هي تحديد رقم المنفذ بدلًا من اسم خدمة SSH: sudo ufw allow 22السماح لاتصالات SSH الواردة من عنوان IP معين أو شبكة فرعيةللسماح باتصالات SSH الواردة من عنوان IP معيّن أو شبكة فرعية، فعليك تحديد المصدر؛ على سبيل المثال، إذا أردت السماح لكامل الشبكة الفرعية 15.15.15.0/24، فنفِّذ هذا الأمر: sudo ufw allow from 15.15.15.0/24 to any port 22السماح لاتصالات Rsync الواردة من عنوان IP معين أو شبكة فرعيةيمكن أن يُستخدَم Rsync (الذي يعمل على المنفذ 873) لنقل الملفات من حاسوبٍ إلى آخر. للسماح باتصالات rsync الواردة من عنوان IP معيّن أو شبكة فرعية، فحدد عنوان IP المصدري والمنفذ الوجهة؛ على سبيل المثال، إذا أردت السماح لكامل الشبكة الفرعية 15.15.15.0/24 باستخدام rsync على خادومك، فنفِّذ الأمر الآتي: sudo ufw allow from 15.15.15.0/24 to any port 873خادم الويبتستمع خوادم الويب -مثل أباتشي و Nginx- للطلبيات على المنفذين 80 و 443 لاتصالات HTTP و HTTPS على التوالي وبالترتيب. إذا كانت السياسة الافتراضية للاتصالات الواردة هي الحجب أو التجاهل، فربما تريد إنشاء قواعد تسمح لخادومك بالرد على تلك الطلبيات. السماح لجميع اتصالات HTTP الواردةاستخدم الأمر الآتي للسماح لجميع اتصالات HTTP (المنفذ 80) الواردة: sudo ufw allow httpصيغةٌ بديلةٌ عن الصيغةِ السابقة هي تحديد رقم المنفذ بدلًا من اسم خدمة HTTP: sudo ufw allow 80السماح لجميع اتصالات HTTPS الواردةاستخدم الأمر الآتي للسماح لجميع اتصالات HTTPS (المنفذ 443) الواردة: sudo ufw allow httpsصيغةٌ بديلةٌ عن الصيغةِ السابقة هي تحديد رقم المنفذ بدلًا من اسم خدمة HTTPS: sudo ufw allow 443السماح لجميع اتصالات HTTP و HTTPS الواردةإذا أردت السماح لاتصالات HTTP و HTTPS معًا، فيمكنك إنشاء قاعدة وحيدة تسمح لكلي المنفذين؛ وذلك بتنفيذ الأمر الآتي: sudo ufw allow proto tcp from any to any port 80,443الحظ أنك ستحتاج إلى تحديد البروتوكول (باستخدام proto tcp) عند تحديد عدِّة منافذ. قواعد بيانات MySQLتستمع MySQL إلى اتصالات العميل على المنفذ 3306؛ إذا كان سيُستخدَم خادم قواعد بيانات MySQL من عميلٍ على خادوم بعيد؛ فتأكد أنك تسمح بمرور تلك البيانات الشبكية. السماح لاتصالات MySQL الواردة من عنوان IP معين أو شبكة فرعيةللسماح باتصالات MySQL الواردة من عنوان IP معيّن أو شبكة فرعية، فحدِّد المصدر؛ على سبيل المثال، تستطيع تنفيذ هذا الأمر إذا أردت السماح للشبكة الفرعية 15.15.15.0/24: sudo ufw allow from 15.15.15.0/24 to any port 3306السماح لاتصالات MySQL الواردة إلى بطاقة شبكية معينةاستخدم الأمر الآتي للسماح لاتصالات MySQL لبطاقة شبكيّة معيّنة -لنفترض أنّك تملك بطاقة شبكيّة خاصة باسم eth1-: sudo ufw allow in on eth1 to any port 3306قواعد بيانات PostgreSQLتستمع PostgreSQL إلى اتصالات العميل على المنفذ 5432 إذا كان سيُستخدَم خادم قواعد بيانات PostgreSQL من عميلٍ على خادوم بعيد؛ فتأكد أنك تسمح بمرور تلك البيانات الشبكية. السماح لاتصالات PostgreSQL الواردة من عنوان IP معين أو شبكة فرعيةللسماح باتصالات PostgreSQL الواردة من عنوان IP معيّن أو شبكة فرعية، فحدِّد المصدر؛ على سبيل المثال، تستطيع تنفيذ هذا الأمر إذا أردت السماح للشبكة الفرعية 15.15.15.0/24: sudo ufw allow from 15.15.15.0/24 to any port 5432السماح لاتصالات PostgreSQL الواردة إلى بطاقة شبكية معينةاستخدم الأمر الآتي للسماح لاتصالات PostgreSQL لبطاقة شبكيّة معيّنة -لنفترض أنّك تملك بطاقة شبكيّة خاصة باسم eth1-: sudo ufw allow in on eth1 to any port 5432خدمة البريدتستمع خوادم البريد مثل Sendmail و Postfix إلى تشكيلة واسعة من المنافذ بناءً على البروتوكولات المستخدمة لتوصيل البريد؛ إذا كنت تُشغِّل خادوم بريدٍ إلكتروني، فحدِّد البروتوكولات التي تستخدمها واسمح للاتصالات الموافقة لها. سنستعرض أيضًا مثالًا عن إنشاء قاعدة لحجب بريد SMTP الصادر. حجب بريد SMTP الصادرربما تريد أن تحجب بريد SMTP الصادر إذا لم يكن من المفترض لخادومك أن يُرسِل بريدًا إلكترونيًّا؛ استخدم الأمر الآتي لحجب بريد SMTP الصادر (الذي يستخدم المنفذ 25): sudo ufw deny 25يضبط الأمر السابق خادومك لتجاهل كل البيانات المُرسَلة على المنفذ 25؛ إذا أردت أن تحجب خدمةً أخرى عبر رقم منفذها، فضع رقم المنفذ الخاص بها بدلًا من 25. السماح لجميع اتصالات SMTP الواردةللسماح لخادومك بالرد على اتصالات SMTP على المنفذ 25، فعليك تنفيذ الأمر الآتي: sudo ufw allow 25ملاحظة: من الشائع لخوادم SMTP أن تستخدم المنفذ 587 للبريد الصادر. السماح لجميع اتصالات IMAP الواردةللسماح لخادومك بالرد على اتصالات IMAP على المنفذ 143، فعليك تنفيذ الأمر الآتي: sudo ufw allow 143السماح لجميع اتصالات IMAPS الواردةللسماح لخادومك بالرد على اتصالات IMAPS على المنفذ 993، فعليك تنفيذ الأمر الآتي: sudo ufw allow 993السماح لجميع اتصالات POP3 الواردةللسماح لخادومك بالرد على اتصالات POP3 على المنفذ 110، فعليك تنفيذ الأمر الآتي: sudo ufw allow 110السماح لجميع اتصالات POP3S الواردةللسماح لخادومك بالرد على اتصالات POP3S على المنفذ 995، فعليك تنفيذ الأمر الآتي: sudo ufw allow 995الخلاصةيجب أن يكون قد غطى هذا الدرس الكثير من الأوامر شائعة الاستخدام عند استعمال UFW لضبط الجدار الناري؛ وبالطبع إن UFW هو أداةٌ مرنةٌ جدًا، لذلك تستطيع دمج مختلف الخيارات مع الأوامر السابقة لملائمة متطلبات خادومك إن لم تكن تلك الأوامر مبيّنةً هنا. ترجمة -وبتصرف- للمقال: UFW Essentials: Common Firewall Rules and Commands لصاحبه: Mitchell Anicas.
  9. Iptables هو برمجية جدار ناري مضمَّنة افتراضيًّا في أغلبية توزيعات لينُكس. يوفِّر هذا الدرس مرجعًا سريعًا لأوامر iptables التي ستُنشِئ قواعدًا لحالات الاستخدام الشائعة، وهذا يتضمن أمثلةً عن استخدام iptables للسماح وحجب مختلف الخدمات عبر المنفذ، والبطاقة الشبكيّة، وعنوان IP المصدر. كيف تستخدم هذا الدرسإذا كنت قد بدأت لتوِّك باستخدام iptables لضبط جدارك الناري، فراجع الدرس تمهيد إلى iptables.تفترض أغلبية القواعد المشروحة هنا أنَّ iptables مضبوطٌ لتجاهل الاتصالات الواردة عبر السياسة الافتراضية، لذا عليك أن تنتقي البيانات التي تريد تمريرها.استعمل الأمثلة الموجودة في الأقسام المتتالية الملائمة لما تودّ تحقيقه؛ لا تعتمد أغلبية الأقسام في هذا الدرس على بعضها بعضًا، لذا يمكنك استخدام الأمثلة الآتية استخدامًا مستقلًا.انسخ والصق الأمثلة عن الأوامر الموجودة في هذا الدرس، مستبدلًا قيمك بالقيم المُعلَّمة بالأحمر.أبقِ في بالك أنَّ ترتيب القواعد مهم؛ تستخدم جميع أوامر iptables الآتية الخيار ‎-A الذي يُلحِق (append) القاعدة الجديدة إلى نهاية سلسلة، إذا أردت وضعها في مكانٍ آخر، فيمكنك استخدام الخيار ‎-I الذي يسمح لك بتحديد موقع القاعدة الجديدة (أو ببساطة وضعها في بداية السلسلة [chain] إن لم تُحدِّد رقمًا للقاعدة). ملاحظة: احذر عند العمل مع الجدر النارية أن تمنع نفسك من الدخول إلى خادومك عبر حجب اتصالات SSH (المنفذ 22 افتراضيًّا)؛ إذا فقدت القدرة على الوصول إلى خادومك بسبب ضبط جدارك الناري، فستحتاج إلى الدخول عبر !طرفية محلية! لتقويم الخلل. بعد أن تسجل دخولك عبر الطرفية المحلية، يمكنك تعديل قواعد جدارك الناري للسماح بالوصول إلى خدمة SSH (أو السماح بعبور جميع بيانات التراسل الشبكي)؛ إذا كانت قواعد جدارك الناري المحفوظة تسمح بالوصول عبر SSH، فستتمكن عبر إعادة تشغيل الخادوم من الاتصال مجددًا عبر SSH. تذكَّر أنك تستطيع التحقق من مجموعة قواعد iptables الحالية بالأمرَين sudo iptables -S و sudo iptables -L. لنلقِ نظرةً على أوامر iptables. حفظ القواعدتكون قواعد iptables مؤقتة، مما يعني أنه من الضروري حفظها يدويًا لكي تبقى بعد إعادة الإقلاع. توزيعة أوبنتوأسهل طريقة لحفظ قواعد iptables في أوبنتو كي تبقى حتى لو أُعيد الإقلاع هي استخدام الحزمة iptables-persistent؛ ثبِّتها عبر apt-get كما يلي: sudo apt-get install iptables-persistentستُسأل أثناء التثبيت إذا ما كنت تريد حفظ قواعد جدارك الناري الحالية. إذا حدَّثت قواعد جدارك الناري وأردت حفظ التغييرات، فنفِّذ الأمر الآتي: sudo invoke-rc.d iptables-persistent saveتوزيعة CentOS 6 وما قبلهايمكنك استخدام سكربت init لجدار iptables لحفظ القواعد في توزيعة CentOS 6 وما قبلها (تَستخدم توزيعة CentOS 7 جدار FirewallD افتراضيًّا): sudo service iptables saveسيحفظ الأمر السابق قواعد iptables الحالية إلى ملف ‎/etc/sysconfig/iptables. قواعد مفيدة عمومايتضمن هذا القسم تشكيلةً من أوامر iptables التي ستُنشِئ قواعدًا مفيدةً في أغلبية الخواديم. السماح بالاتصالات إلى بطاقة Loopbackبطاقة «loopback» (التي يُشار إليها أيضًا بالاسم lo) هي البطاقة التي يستخدمها الحاسوب لإجراء اتصالات شبكيّة مع نفسه؛ على سبيل المثال، إذا شغَّلت ping localhost أو ping 127.0.0.1، فإن خادومك سيجري عملية ping لنفسه باستخدام بطاقة loopback؛ يمكن الاستفادة أيضًا من بطاقة loopback إذا ضَبطتَ تطبيقك للاتصال إلى خادوم قواعد بيانات ذي العنوان «localhost»؛ ولهذا عليك أن تتأكد أنَّ جدارك الناري يسمح بمرور لهذه الاتصالات. لقبول مرور جميع بيانات التراسل الشبكي على بطاقة loopback، فعليك تنفيذ هذين الأمرين: sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPTالسماح للاتصالات الواردة المنشأة والمتعلقةيجب عادةً أن تمر بيانات التراسل الشبكي باتجاهين (صادرة وواردة) لكي تعمل الاتصالات الشبكية عملًا صحيحًا؛ من الاعتيادي إنشاء قاعدة في الجدار الناري للسماح بالاتصالات الواردة المُنشَأة (established) والمتعلقة (related)، مما يمكِّن الخادوم من استقبال البيانات المُرجَعة من اتصالات صادرة بدأها الخادوم نفسه؛ سيكون الأمر كما يلي: sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTالسماح بمرور البيانات للاتصالات الصادرة المنشأةربما تود السماح للبيانات الصادرة لجميع الاتصالات المُنشَأة، التي تكون عادةً الرد على الاتصالات الواردة المسموح لها؛ الأمر الذي يفعل بذلك هو: sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPTالتمرير من الشبكة الداخلية إلى الخارجيةعلى فرض أنَّ eth0 هي شبكتك الخارجية، و eth1 هي شبكتك الداخلية، فإن الأمر الآتي سيسمح بتمرير البيانات من الشبكة الداخلية إلى الخارجية: sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPTتجاهل الرزم الشبكية غير الصالحةتُعلَّم بعض الرزم الشبكية على أنها «غير صالحة» (invalid)؛ قد يكون مفيدًا في بعض الأخيان تسجيل هذا النوع من الرزم لكن يكون عادةً من المقبول تجاهلها. يمكنك فعل ذلك بوساطة هذا الأمر: sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROPحجب عنوان IPاستعمل الأمر الآتي لحجب الاتصالات الشبكية التي تنحدر من عنوان IP معيّن، ولنقل أنه 15.15.15.51 مثلًا: sudo iptables -A INPUT -s 15.15.15.51 -j DROPيُحدِّد التعبير ‎-s 15.15.15.51 عنوان IP المصدري على أنه «15.15.15.51»، يمكن أن يُحدَّد عنوان IP المصدري في أيّة قاعدة من قواعد الجدار الناري، بما في ذلك قواعد السماح (allow). إذا كنت تريد «رفض» (reject) الاتصال بدلًا من تجاهله (أي سيكون الرد على الاتصال هو خطأ «connection refused») فبدِّل «DROP» إلى «REJECT» كما يلي: sudo iptables -A INPUT -s 15.15.15.51 -j REJECTحجب الاتصالات إلى بطاقة شبكيةلحجب جميع الاتصالات من عنوان IP معيّن (15.15.15.51 مثلًا)، إلى بطاقة شبكيّة معيّنة (eth0 مثلًا) فاستخدم هذا الأمر: iptables -A INPUT -i eth0 -s 15.15.15.51 -j DROPيشبه هذا الأمر كثيرًا الأمرَ في الفقرة السابقة، لكنه يزيد عنه بالتعبير ‎-i eth0؛ يمكن تحديد البطاقة الشبكية في أيّة قاعدة من قواعد الجدار الناري، وهذه طريقةٌ رائعةٌ لجعل قاعدةٍ ما محدودةً إلى شبكةٍ معيّنةٍ فقط. خدمة SSHإذا كنتَ تستخدم خادومًا سحابيًا، فربما تريد السماح لاتصالات SSH الواردة (المنفذ 22) لذا يمكنك الاتصال وإدارة خادومك؛ يشرح هذا القسم كيف تضبط جدارك الناري بمختلف القواعد المتعلقة بخدمة SSH. السماح لاتصالات SSHتستطيع استخدام الأمرين الآتيين للسماح لجميع اتصالات SSH الواردة: sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات SSH المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لاتصالات SSH الواردة من عنوان IP معين أو شبكة فرعيةللسماح باتصالات SSH الواردة من عنوان IP معيّن أو شبكة فرعية، فعليك تحديد المصدر؛ على سبيل المثال، إذا أردت السماح لكامل الشبكة الفرعية 15.15.15.0/24، فنفِّذ هذين الأمرين: sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات SSH المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لاتصالات SSH الصادرةإذا لم تكن سياسة OUTPUT في جدارك الناري مضبوطةً إلى ACCEPT، فربما تريد السماح لاتصالات SSH الصادرة (أي أن يبدأ خادومك اتصال SSH إلى خادومٍ آخر) بتنفيذ هذين الأمرين: sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPTالسماح لاتصالات Rsync الواردة من عنوان IP معين أو شبكة فرعيةيمكن أن يُستخدَم Rsync (الذي يعمل على المنفذ 873) لنقل الملفات من حاسوبٍ إلى آخر. للسماح باتصالات rsync الواردة من عنوان IP معيّن أو شبكة فرعية، فحدِّد عنوان IP المصدري والمنفذ الوجهة؛ على سبيل المثال، إذا أردت السماح لكامل الشبكة الفرعية 15.15.15.0/24 باستخدام rsync على خادومك، فنفِّذ الأمرين الآتيين: sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 873 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 873 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات rsync المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. خادم الويبتستمع خوادم الويب -مثل أباتشي و Nginx- للطلبيات على المنفذين 80 و 443 لاتصالات HTTP و HTTPS على التوالي وبالترتيب. إذا كانت السياسة الافتراضية للاتصالات الواردة هي الحجب أو التجاهل، فربما تريد إنشاء قواعد تسمح لخادومك بالرد على تلك الطلبيات. السماح لجميع اتصالات HTTP الواردةاستخدم الأمرين الآتيين للسماح لجميع اتصالات HTTP (المنفذ 80) الواردة: sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات HTTP المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لجميع اتصالات HTTPS الواردةاستخدم الأمرين الآتيين للسماح لجميع اتصالات HTTPS (المنفذ 443) الواردة: sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات !HTTPS! المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لجميع اتصالات HTTP و HTTPS الواردةإذا أردت السماح لجميع اتصالات HTTP و HTTPS الواردة معًا، فيمكنك استخدام الوحدة (module) ‏«mulitport» لإنشاء قاعدة تسمح بمرور البيانات على كلي المنفذين؛ وذلك عبر الأمرين الآتيين: sudo iptables -A INPUT -p tcp -m multiport --sports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp -m multiport --sports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات HTTP و HTTPS المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. قواعد بيانات MySQLتستمع MySQL إلى اتصالات العميل على المنفذ 3306؛ إذا كان سيُستخدَم خادم قواعد بيانات MySQL من عميل على خادوم بعيد؛ فتأكد أنك تسمح بمرور تلك البيانات الشبكية. السماح لاتصالات MySQL الواردة من عنوان IP معين أو شبكة فرعيةللسماح باتصالات MySQL الواردة من عنوان IP معيّن أو شبكة فرعية، فحدِّد المصدر؛ على سبيل المثال، تستطيع تنفيذ هذين الأمرين إذا أردت السماح للشبكة الفرعية 15.15.15.0/24: sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات MySQL المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لاتصالات MySQL الواردة إلى بطاقة شبكية معينةاستخدم الأمر الآتي للسماح لاتصالات MySQL لبطاقة شبكيّة معيّنة -لنفترض أنّك تملك بطاقة شبكيّة خاصة باسم eth1-: sudo iptables -A INPUT -i eth1 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -o eth1 -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات MySQL المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. قواعد بيانات PostgreSQLتستمع PostgreSQL إلى اتصالات العميل على المنفذ 5432 إذا كان سيُستخدَم خادم قواعد بيانات PostgreSQL من عميل على خادومٍ بعيد؛ فتأكد أنك تسمح بمرور تلك البيانات الشبكية. السماح لاتصالات PostgreSQL الواردة من عنوان IP معين أو شبكة فرعيةللسماح باتصالات PostgreSQL الواردة من عنوان IP معيّن أو شبكة فرعية، فحدِّد المصدر؛ على سبيل المثال، تستطيع تنفيذ هذين الأمرين إذا أردت السماح للشبكة الفرعية 15.15.15.0/24: sudo iptables -A INPUT -p tcp -s 15.15.15.0/24 --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات PostgreSQL المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لاتصالات PostgreSQL الواردة إلى بطاقة شبكية معينةاستخدم الأمر الآتي للسماح لاتصالات PostgreSQL لبطاقة شبكيّة معيّنة -لنفترض أنّك تملك بطاقة شبكيّة خاصة باسم eth1: sudo iptables -A INPUT -i eth1 -p tcp --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -o eth1 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات PostgreSQL المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. خدمة البريدتستمع خوادم البريد مثل Sendmail و Postfix إلى تشكيلة واسعة من المنافذ بناءً على البروتوكولات المستخدمة لتوصيل البريد؛ إذا كنت تُشغِّل خادوم بريدٍ إلكتروني، فحدِّد البروتوكولات التي تستخدمها واسمح للاتصالات الموافقة لها. سنستعرض أيضًا مثالًا عن إنشاء قاعدة لحجب بريد SMTP الصادر. حجب بريد SMTP الصادرربما تريد أن تحجب بريد SMTP الصادر إذا لم يكن من المفترض لخادومك أن يرسل بريدًا إلكترونيًّا؛ استخدم الأمر الآتي لحجب بريد SMTP الصادر (الذي يستخدم المنفذ 25): sudo iptables -A OUTPUT -p tcp --dport 25 -j REJECTيضبط الأمر السابق خادومك لتجاهل كل البيانات المُرسَلة على المنفذ 25؛ إذا أردت أن تحجب خدمةً أخرى عبر رقم منفذها، فضع رقم المنفذ الخاص بها بدلًا من 25. السماح لجميع اتصالات SMTP الواردةللسماح لخادومك بالرد على اتصالات SMTP على المنفذ 25، فعليك تنفيذ الأمرين الآتيين: sudo iptables -A INPUT -p tcp --dport 25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 25 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات SMTP المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. ملاحظة: من الشائع لخوادم SMTP أن تستخدم المنفذ 587 للبريد الصادر. السماح لجميع اتصالات IMAP الواردةللسماح لخادومك بالرد على اتصالات IMAP على المنفذ 143، فعليك تنفيذ الأمرين الآتيين: sudo iptables -A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 143 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات IMAP المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لجميع اتصالات IMAPS الواردةللسماح لخادومك بالرد على اتصالات IMAPS على المنفذ 993، فعليك تنفيذ الأمرين الآتيين: sudo iptables -A INPUT -p tcp --dport 993 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 993 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات IMAPS المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لجميع اتصالات POP3 الواردةللسماح لخادومك بالرد على اتصالات POP3 على المنفذ 110، فعليك تنفيذ الأمرين الآتيين: sudo iptables -A INPUT -i -p tcp --dport 110 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 110 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات POP3 المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. السماح لجميع اتصالات POP3S الواردةللسماح لخادومك بالرد على اتصالات POP3S على المنفذ 995، فعليك تنفيذ الأمرين الآتيين: sudo iptables -A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPTالأمر الثاني (الذي يسمح بمرور بيانات التراسل الشبكي لاتصالات POP3S المُنشَأة) مطلوبٌ فقط إذا لم تكن سياسة OUTPUT مضبوطةً إلى ACCEPT. الخلاصةيجب أن يكون قد غطى هذا الدرس الكثير من الأوامر شائعة الاستخدام عند استعمال iptables لضبط الجدار الناري؛ وبالطبع iptables هو أداةٌ مرنةٌ جدًا، لذلك تستطيع دمج مختلف الخيارات مع الأوامر السابقة لملائمة متطلبات خادومك إن لم تكن تلك الأوامر مبيّنةً هنا. ترجمة -وبتصرف- للمقال: Iptables Essentials: Common Firewall Rules and Commands لصاحبه: Mitchell Anicas.
  10. تُعتبر الشبكات موضوعًا واسع التفاصيل مليئًا بالتشعبات بالنسبة للعديد من مديري الأنظمة المبتدئين، فهناك الكثير من الأدوات والخدمات التي يجب الإلمام بها لفهم هذه المواضيع بشكل جيّد، كالطبقات Layers المختلفة للإتصال، الواجهات Interfaces، والبروتوكولات Protocols. يُغطّي هذا الدرس مفهوم المنافذ Ports وكيفيّة استخدام برنامج Nmap للحصول على معلومات حول حالة منافذ الجهاز على الشبكة. ملاحظةيُغطّي هذا الدرس النسخة الرابعة من بروتوكول الإنترنت الآمن IPv4. في أنظمة غنو لينكس يُحفظ IPv6 بشكل منفصل عن IPv4، فعلى سبيل المثال تفحص الأداة Nmap عناوين IPv4 افتراضيًا، أما لفحص عناوين IPv6 فنحن نحتاج إلى تحديد الخيار المناسب (nmap -6). إذا ضُبط خادومك لاستخدام IPv6، فلا تنسَ من فضلك تأمين واجهات شبكة كل من IPv4 و IPv6 بالأدوات المناسبة. لمزيد من المعلومات حول أدوات IPv6 يمكنك الرجوع إلى درس كيفية استخدام IPv6 في خواديم غنو لينكس ما هي المنافذ؟يتألف نموذج OSI كما نعلم من سبع طبقات وتُعتبر طبقة النقل transport layer مسؤولة في المقام الأوّل عن الترابط ما بين الخدمات المختلفة و التطبيقات، وهي الطبقة التي ترتبط معها المنافذ بشكل رئيسي. مصطلحات المنافذلنفهم عملية ضبط المنافذ بشكل جيّد نحتاج إلى بعض المعرفة بالمصطلحات المُستخدمة في هذا المجال؛ لذا نعرض هنا عدّة مصطلحات تساعدك في فهم المناقشة التي ستتلوها. المنفذ Port: هو منطقة اتصال قابلة للعنونة، مُطبّقة داخل نظام التشغيل (ليست ماديّة)، تساعد على تمييز حركة البيانات المتجهة لمختلف التطبيقات والخدمات. مقابس الإنترنت Internet Sockets: هو ملف واصف يُحدّد عنوان IP ورقم المنفذ المرتبط به ونوع البروتوكول المستخدم في طبقة النقل لمعالجة البيانات. الربط أو التقييد Binding: هي العملية التي تحجز أو تحدّد مكانًا عندما يستعمل أحد التطبيقات أو الخدمات مقبس إنترنت للتعامل مع البيانات قيد الإرسال والاستقبال. الاستماع Listening: نقول عن خدمة ما أنها “تستمع” على منفذ، عندما يتم تقييد عنوان مركّب من منفذ/بروتوكول/عنوان IP من أجل انتظار الطلبات من عملاء الخدمة. وعند استلام الطلب يُؤسّس اتصال مع العميل (عند الحاجة) باستخدام نفس المنفذ الذي يتم الاستماع إليه، حيث مقابس الإنترنت المستخدمة ترتبط بعنوان IP مُحدّد للعميل، وهذا لا يمنع الخادوم من الاستماع إلى طلبات العملاء الآخرين وتلبية طلباتهم في نفس الوقت. فحص المنفذ Port Scanning: هي العملية التي تسعى للاتصال مع عدد من المنافذ بشكل متعاقب، بغرض الحصول على معلومات حول ما هي المنافذ المفتوحة منها، وما هي الخدمات وأنظمة التشغيل التي تعمل ورائها.المنافذ الشائعةتُحدّد المنافذ بأرقام تقع ضمن المجال من 1 إلى 65535. العديد من المنافذ التي تقع تحت الرقم 1024 ترتبط مع الخدمات التي يعتبرها لينكس والأنظمة الشهبية بيونكس Unix-like حسّاسة أو خطرة لوظائف الشبكة الأساسيّة وتُسمى "بالمنافذ المعروفة"، لذا يتوجب عليك الحصول على صلاحيات الجذر root لتخصيص خدمات هذه المنافذ. تُعتبر المنافذ التي تنتمي للمجال بين 1024 و49151 مُسجّلة، وهذا يعني أنها قد تكون "محفوظة" (بالمعنى الواسع للكلمة) لخدمات معينة، يتم ذلك بتقديم طلب إلى هيئة IANA (الهيئة الدولية المسؤولة عن ذلك)، والتي لا تُطبقها بشكل صارم، وإنما يمكنها أن تعطي دليلًا عن الخدمات التي يمكن تشغيلها على منفذ معيّن. أما المنافذ الواقعة في المجال بين 49152 و65535 فتسمى بالمنافذ المتغيّرة وهي التي لا يمكن تسجيلها، وتُقترح للاستخدام الخاص. ونظرًا لوجود عدد كبير من المنافذ المتاحة، فلا ينبغي القلق حيال الغالبية العظمى من الخدمات التي تربط عادةً منافذ معيّنة. بكل الأحوال هناك بعض الخدمات التي من الجيّد معرفة المنافذ التي ترتبط بها: 20: بيانات FTP 21: منفذ تحكم FTP 22: SSH 23: Telnet. غير آمن، لا يُنصح باستخدامه 25: SMTP 43: بروتوكول WHOIS 53: خدمات DNS 67: منفذ خدمة DHCP 68: منفذ عميل DHCP 80: HTTP traffic. حركة الوِب العاديّة 110: منفذ البريد POP3 113: Ident الخدمات الموثقّة على شبكات IRC 143: منفذ البريد IMAP 161: SNMP 194: IRC 389: منفذ LDAP 443: HTTPS. حركة الوِب المُشفّرة 587: SMTP. منفذ تسليم البريد 631: منفذ خدمة الطباعة CUPS 666: DOOM. منفذ ألعاب 3D هذه فقط بعض الخدمات الشائعة المرتبطة بمنافذ، ويمكنك دومًا أن تجد المنافذ المناسبة للتطبيقات التي ترغب بضبطها ضمن مستندات التوثيق الخاصة بكلّ منها. معظم الخدمات يمكن ضبطها لتستعمل منافذ أخرى غير تلك الافتراضية، لكن ينبغي عليك التأكد دومًا أن كلًا من المخدّم والعميل قد ضُبطا لاستعمال ذات المنفذ. يمكنك الحصول على قائمة صغيرة ببعض المنافذ الشائعة من خلال الأمر: less /etc/services يطبع الأمر السابق قائمة بالمنافذ الشائعة والخدمات المرتبطة بها: … tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol …وسنستعرض لاحقًا عند حديثنا عن nmap كيف يمكنك الحصول على قائمة شاملة بجميع المنافذ. كيفية فحص المنافذ المفتوحة على جهازكهناك عدد من الأدوات التي يمكن استخدامها لفحص المنافذ المفتوحة. واحدة من هذه الأدوات تدعى netstat وهي تأتي بشكل افتراضي مع معظم توزيعات غنو لينكس. يمكنك بسهولة استعراض الخدمات قيد التشغيل عبر تنفيذ الأمر التالي: sudo netstat -plunt Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 785/sshd tcp6 0 0 :::22 :::* LISTEN 785/sshdيعرض الخرج السابق منافذ ومقابس الإنترنت المُستمع عليها والمرتبطة مع خدمات وقوائم كلًا من بروتوكولي UDP وTCP . تركيب Nmapيعتبر اختبار "قابلية الإصابة" جزءًا مُهمًا من عملية تأمين وحماية الشبكات، وهذا يعني أن تحاول التسلل إلى شبكتك الخاصة واكتشاف مواطن الضعف فيها بنفس الطريقة التي قد يتبعها مهاجم ما. ومن بين كل الأدوات المتاحة لهذا الغرض، فإن nmap هي الأكثر شيوعًا وقوّة. لتثبيت nmap على دبيان أو Ubuntu والأنظمة المبنية عليهما: sudo apt-get update sudo apt-get install nmap إحدى الفوائد الجانبية لتثبيت هذا التطبيق هي تحسين ملف تعيين mapping file المنافذ، والذي يضم قائمة أوسع بكثير من الارتباطات ما بين الخدمات والمنافذ. less /usr/share/nmap/nmap-services … tcpmux 1/tcp 0.001995 # TCP Port Service Multiplexer [rfc-1078] tcpmux 1/udp 0.001236 # TCP Port Service Multiplexer compressnet 2/tcp 0.000013 # Management Utility compressnet 2/udp 0.001845 # Management Utility compressnet 3/tcp 0.001242 # Compression Process compressnet 3/udp 0.001532 # Compression Process unknown 4/tcp 0.000477 rje 5/udp 0.000593 # Remote Job Entry unknown 6/tcp 0.000502 echo 7/tcp 0.004855 echo 7/udp 0.024679 echo 7/sctp 0.000000 …لا يُشكّل الخرج السابق سوء جزءًا بسيطًا جدًا من ما يقارب 20 ألف سطر، مزوّدة بحقول إضافيّة، كالعمود الثالث الذي يسرد التردد المفتوح للمنفذ كما هو أثناء إجراء البحث على الإنترنت. كيفية فحص المنافذ باستخدام Nmapيمكن لـ nmap أن يكشف الكثير من المعلومات حول المضيفhost، لذا فإن استخدامه قد يجعل مديري الأنظمة يعتقدون أن شخصًا ما لديه نوايا خبيثة، لهذا السبب اختبر nmap فقط على الخوادم التي تملكها بالفعل أو التي يمكنك إخبار أصحابها بما تريد القيام به. في الحالات الأخرى يمكنك استخدام خادوم scanme.nmap.org والذي يقدّمه فريق عمل nmap لأغراض الاختبار والتعلّم. نبدأ الآن باستعراض بعض العمليات التي يمكنك القيام بها مع nmap، وسوف نستخدم أثناء ذلك صلاحيات الجذر root لتجب إرجاع نتائج جزئية مع بعض الاستفسارات. بعض الأوامر كذلك قد تستغرق وقتًا طويلًا لإكمالها. إجراء فحص لنظام تشغيل المُضيف: sudo nmap -O remote_host إذا كنت قد حصلت على الرد "Note: Host seems down" في اختبار سابق فنحن بحاجة لتخطّي اكتشاف جزء من الشبكة وتحميل المضيف أونلاين، أضف هذا الخيار: sudo nmap -PN remote_host تحديد نطاق باستخدام "-" لفحص عدد من المضيفين دفعةً واحدة: sudo nmap -PN xxx.xxx.xxx.xxx-yyy فحص نطاق الشبكة للخدمات المتوفرة: sudo nmap -sP network_address_range فحص من دون إجراء بحث DNS عكسي على عنوان IP محدد؛ وذلك بهدف تسريع النتائج في معظم الحالات: sudo nmap -n remote_host فحص منفذ مُحدّد بدلًا من كافة المنافذ: sudo nmap -p port_number remote_host لفحص اتصالات TCP مع منفذ مستهدف لدينا ثلاث طرق (موضحة في الأسفل)، نفّذ الأمر التالي: sudo nmap -sT remote_host لفحص اتصالات UDP نفّذ: sudo nmap -sU remote_host لفحص منافذ TCP و UDP المفتوحة: sudo nmap -n -PN -sT -sU -p- remote_host يعتبر فحص SYN من أقوى الفحوص حيث يستغل الطريقة التي يؤسّس بها بروتوكول TCP اتصالًا فيرسل رزمة SYN تسمح بالاتصال مع النظام وعرض المعلومات أول بأول لبدء اتصال TCP، يرسل الجهاز رزمة packet "طلب تزامن" إلى الخادوم، فإذا كان المنفذ مفتوح ولا يوجد جداري ناري يمنع الاتصال حينها يُعيد الخادوم رزمة بـ"إقرار تزامن" synchronized acknowledgment، يعود الجهاز المرسل بإكمال العملية مرسلًا رزمة "إقرار" مجددًا إلى الخادوم، ويتم الاتصال. أسلوب الـ "SYN" في الفحص، من الأكثر الأساليب استخدامًا ويسمى أيضًا فحص half-open لأنه لن يقوم بالاعتماد على النظام وإنشاء اتصال TCP بدلًا عن ذلك تقوم الأداة Nmap بإنشاء وإرسال رزمة لتتصل مع النظام، وفي حال الحصول على استجابة فهذا يعني أن المنفذ مفتوح: sudo nmap -sS remote_host أسلوب آخر يمكن إتباعه للمزيد من التخفي وذلك بإرسال TCP غير صالحة، فإذا توافق المضيف مع مواصفات TCP فحينها سيرسل رزمة عائدة في حال كان المنفذ مُغلقًا. تعمل هذه الطريقة على الخوادم المُشغّلة بأنظمة غير مبنية على Windows. يمكنك استخدام الخيارات "sF", "-sX-" أو "sN-" وجميعها ستعطينا الاستجابة المطلوبة: sudo nmap -PN -p port_number -sN remote_host لمعرفة ما هو إصدار الخدمة التي تعمل على المُضيف يمكنك تجريب الأمر التالي، والذي يحاول تحديد الخدمة ورقم إصدارها باختبار استجابات مختلفة من الخادوم: sudo nmap -PN -p port_number -sV remote_host هناك بالتأكيد عدد آخر كبير من تراكيب الأوامر والتي يمكنك استخدامها مع nmap، لكن يمكن لما سبق أن يشكّل بداية في استكشاف نقاط الضعف وقابلية الإصابة للشبكة الخاصة بك. الخاتمةإن فهم ضبط المنافذ واكتشاف المسارات المحتلمة للهجوم على خادومك هي مهارة أساسية و الخطوة الأولى فقط لتحقيق أمن المعلومات على خادومك الخاص. اكتشاف المنافذ المفتوحة وطبيعة المعلومات التي يمكن الحصول عليها من الخدمات التي تقبل الاتصالات على هذه المنافذ يمنحك المعرفة التي تحتاجها لتأمين الخادوم الخاص بك، حتى المعلومات العرضية التي قد تتسرب من جهازك يمكن استخدامها من قبل المتطفلين في محاولة استغلال نقاط الضعف المعروفة أو تطوير أخرى جديدة، لذا فإنه كلما كان ما يمكن معرفته أقل كلما كان ذلك أفضل. OSI Open Systems Interconnection Basic Reference Model أو النموذج المرجعي الأساسي لترابط الأنظمة المفتوحة، هو نموذج مرجعي وضعته منظمة المعايير الدولية ISO عام 1977 ليكون مرجعًا أو نموذجًا يشرح كيف يجب أن تُصمم البروتوكولات بطريقة معياريّة.