5.4 أمن الشبكات كتاب لينكس الشامل >>

5.4 أمن الشبكات

الفهرس

5.3.1 هل أنا بحاجة للحماية؟

الخطأ الذي كنت أقع فيه (عندما كنت أعيش في عقلية ما قبل لينكس) وأظن أنك قد تهمل قراءة هذا الفصل لأجله هو عدم الإكتراث للحماية تقول لنفسك أني لست بحاجة لأي نوع من الحماية فأنا لست ناسا ولا وكالة الأمن القومي! ليس لدي أرقام بطاقات إئتمان مخزنة على الحاسوب وبريدي مجاني ولن أحزن لو تسربت أي كلمة سر ، وحتى جهازي في حال تدميره بفيروس فإن كل ما قد يكلفني القليل من الساعات والكثير من الأسبرين لإعادة تركيب ويندوز.

tipتلميح

البعض يفضل فيروس لا يعيق سرعة الجهاز على مضاد فيروس يقلل من سرعة الجهاز!

ليس فقط لأن الوقت مال! وتضيعه في إعادة تصليح الجهاز هدر له. فبعد أن ولت تلك الأيام الغابرة وقرأت الكثير من الوثائق من مشروع توثيق لينكس، وشربت روح لينكس علمت أن المخربين يبحثون عن أهداف سلهة، ضحايا بالعقلية السابقة ليس بالضرورة لمكسب مباشر بل ربما لاستغلال جهازك في تمويه هجماتهم على أهداف أكبر وطبعاً لا تحب أن يظهر عنوانك IP في ملفات التقرير عن الهجوم! كما أن بعض الفيروسات تكون مضبوطة على وقت محدد تبدأ التخريب عنده (لو قام الفيروس مباشرة بالتخريب لما انتشر) ، هذا التخريب قد يكون مجرد حذف ملفات (أعرف ستقول لي ليس لديك ملفات مهمة لماذا اشتريت حاسوب المرة القادمة اشتري playstation) وقد يصل لحد تخريب فيزيائي مثل حرق دارة التزمن في الشاشة!

طرق الحماية المذكورة هنا تجعل جهازك يعمل بطريقة أسرع! على عكس ما تتوقع لأنها لا تحمل جهازك أي عبئ إضافي فقد صمم جنو/لينكس من الأساس والأمن في البال. بل ستلحظ زيادة في السرعة (سرعة الإتصال) لأن النشاطات المشبوهة يتم حجبها!

5.3.2 الأخطار المتوقعة

بالنسبة للشركات قد يبدو خيار شراء جهاز عملاق مرتفع الثمن خياراً جذاباً مقابل شراء عدد من الأجهزة الشخصية لعدة أسباب منها الإقتصادية ومنها الكِبْر (إلى زبائننا الكرام نحن لدينا سوبر كمبيوتر!) ، ولكن هذه العقلية هي أول خطر وهو يسمى One point of failer وهي تعني لب المثل "لا تضع كل البيض في سلة واحدة" ، كلما اشتركت الأجهزة لديك في ما يلي مصدر الكهرباء ، خط الهاتف ، مزود الإنترنت ، وسائط التخزين ، ... فإن أي فشل سيكون كارثياً وشاملاً. يفضل أن تكون الخادمات متعددة ويتم توزيع الخدمات عليها (خدمة على كل جهاز أو عبر العناقيد) يفضل أن تكون من مصنعين مختلفين وأن لا تكون "أحدث ما توصلت إليه التكنولوجيا" نعم، أن تكون أرخص بقليل وذات سوق مستقر (في أول ظهور للبنتيوم من إنتل كان به خلل سمي FDEV_BUG) وربما تكون القطع المتوافقة مع كذا أفضل من كذا ليس في السعر فقط. ولا تصدق الإعلانات لا تبحث على المعالج الأسرع! وتذكر التخزين الاحتياطي وخذ في حسابك أن أي قطعة ستتلف إن عاجلاً أو آجلاً.

الخطر التالي هو خطر حجب الخدمة DoS - Denaial of Service أو الفيض لإغراق الخادم بالطلبات بأن يرسل المهاجم الكثير من الطلبات الجديدة ويظل يرسلها دون أن يرسل إشعار بأنه إستلمها مما يؤدي بالخادم إلى إعادة إرسال ما أرسله لأنه يظن أنها لم تصل إضافة إلى إرسال الطلب الجديد فإذا علمنا أن كل شيء يرسله يوضع في الذاكرة من أجل إعادة إرسالة في حال لم يستلم فإننا سنصل إلى مرحلة تنتهي الذاكرة المتاحة ويعلق الخادم كاملاً (إذا لم يوفر النظام وقاية لمثل هذه الحالات) من الأمثلة على DoS هي ping flood (الخيار f في أمر ping) في هذا المثال نؤثر على عرض الحزمة(سرعة اللإتصال ) bandwidth وفي مثال spam البريد يكون الهدف ملئ مساحة القرص. وليس بالضرورة أن يقوم المخرب بها من جهازه ربما يستخدم حصان طرودة trojan يضرب أجهزة شخصية في مختلف مناطق العالم بالملايين مضبوطة كلها على وقت محدد لتبدأ دون علم أصحابها بطلباتها التعجيزية. فإذا كان خادم يستطيع أن يجيب مليون طلب في ثانية كحد أقصى فإن كل من المليون جهاز المصاب تطلب ألف طلب فيصبح لدينا مليار طلب مما يفوق قدرة الخادم فيموت (أو يقتله النظام). وذلك بأن يهاجم ضحايا سهلة ثم يضبط أجهزتهم على مهاجمة الهدف في وقت محدد. ومن الهجمات المتصلة بهذا النوع عملية spoofing. يتم الحماية من هذا الخطر بجدر النار وذلك بإهمال الطلبات ذات صفات معينة مثلاً أي طلب جاء دون أن نطلبه أو جاء من نفس المصدر الذي طلب الطلب السابق قبل أن يرد بأنه استلم الرد. أو تتم بوضع حد أعلى لكل طلب مثلاً لا يجوز أن يطلب نفس الشخص أكثر من 100 طلب في الثانية

من الأخطار الأخرى هي عملية التجس بواسطة كلاب الأثر sniffers وهي برامج متخصصة مثل dsniff و sniffit و snort وحتى برنامج etherial الرسومي الذي يأتي مع فيدورا. وهي تستعمل لهدف نبيل (دراسة وتشخيص الشبكة) أو شرير (جمع كلمات السر وأرقام بطاقات الإتمان)، تعتمد هذه البرامج على مبدأ أن الجهاز قد يستقبل ما ليس له تذكر تبولوجيا البث العام broadcasting حيث ترتبط الأجهزة مع مفرع hub. هذه البرامج يمكنها أن تبحث عن هيئة محددة (رقم من 14 منزلة) ويمكنها أن تجمع كلمات سر البريد أو مواقع http أو FTP وقد يتمكن مخرب من معرفة حتى كلمات السر المشفرة بواسطة crackers. حل هذه المشكلة يكون باستعمال التشفير مثل ssh و GPG و https وباستعمال switches مكان hups.

برامج crackers هي برامج تقوم بفك كلمات السر المشفرة hash (حتى طرق تشفير ذات الإتجاه الواحد) بواسطة التحزير والتجرير مع إعطاء أفضلية للكلمات القاموسية أو ذات الصلة. انظر فصل 4.9 ادارة النظام يتم تقليل خطرها بوضع كلمات سر قوية.

عملية spoofing هي بأن يأخذ شخص عنوان IP لشخص آخر. وذلك بإخراج tcp pockets مع تعديل عنوانها بواسطة عملية nat إذا كان هدفه من الهجوم هو حجب الخدمة DoS فإن هذا الإجراء يضمن ليس فقط أن يموّه نفسه بل أن لا ينتظر وصول الرد (الرد سيصل صاحب العنوان الحقيقي) ويتابع فيض الهجوم ، ولكن إن كان الهدف هو إدعاء عنوان له أفضلية (تذكر أن بعض طرق السماح تعتمد على العنوان) ، فإن هجومه لن ينجح إذا كان صاحب العنوان الأصلي قيد العمل لأنه يرد على الردود التي تصله بأنه لم يطلبها RST. ولكن إذا كان معطل أو مغلق فإن المهاجم يمكنه ذلك. من الطرق الأخرى هي الهجوم على خادم DNS فإذا تمكن منه المخرب فإنه يتمكن من أن يدعي أنه أي جهاز آخر ليس عبر العنوان بل الاسم. يتم كشف جميع ذلك من خلال قراءة عنوان MAC وهو عنوان بطاقة الإيثرنت (لا يمكن تغييره).

ليس بعيداً عن التجسس وإدعاء عنوان فإن هجوم رجل في الوسط man in the middle حيث يجعل المهاجم جهازه بوابة وصل gateway بين جهازين (إما فيزيائياً أو بمهاجمة الموجه router أو الجهاز البوابة وطلب منه التحويل إلى المهاجم) فيعمل على استعمال sniffers. أو يضع خادم الزائف fake server يقوم بالتجسس قبل التمرير مثلاً إذا كان أ يتصل عبر ssh الآمن مع ب وكان جـ في الوسط يشغل خادم ssh زائف يقول للجهاز أ "أنا ب أدخل كلمة السر".

نعود للقصة الشهيرة حصان طروادة الخشبي trojan horse وهو الطعم/الهدية الذي وُضع المهاجمون داخله ليدخلوا المدينة ثم يفتحوا الباب لبقية للجيش! عندما تنزل ملفات جاهزة عملها غيرك قد يكون وضع لك بداخل هذا الطعم جنود ليفتحوا له ثغره. إذا لم تحصل على الملف من مصدر موثوق وكنت لا تمتلك كود المصدر لتراه بعينيك، فلا تلم إلا نفسك! يتم تشغيل هذا النوع عبر فيروس أو عبر ثغرة في برنامج (مثل explorer حيث يقوم احياناً بتنفيذ برامج دون إذن) أو عن طريق ضعف في التصميم أو ما يسمى بالضعف الوراثي حيث لم يكون الأمن في البال عند التصميم مثل البريد و ActiveX التي تسمح بتشغيل برنامج معين على جهازك (موجودة بكثرة في ال Messenger) بحجة أنها قد تكون لنقل فيديو أو ما شابه (فكرة/إدعاء مايكوسوفت أنه لفتح وثائق معينة لا داع لشراء البرنامج الذي يشغلها بل يكون موجود على الشبكة ويتم تشغيله على جهازك ) ولكن المهاجم بدلا من استخدامه لهذا الغرض يقوم بتصميم برنامج بهذه التقنية ليسرح ويمرح على حاسوبك ويأخذ أرقام الحسابات وبطاقات الإئتمان وكلمات السر و أي شيء آخر. يمنكك أن تضع حرساً ليراقبوا لك البوابات والمنافذ فإذا كان هناك ما يريب عرفت أنه فخ. بعيداً عن القصة، راقب المنافذ ports فإذا كان هناك منفذ مفتوح -هناك من يرسل/يستقبل عبره بيانات- وكان هذا المنفذ ليس منفذاً لأحد البرامج القياسية التي تعرفها (ليس apache وليس ssh) فاعلم أن هناك اختراق. لهذا راقب المنافذ بأمر nmap -sT -O SOMEWHERE.NET ابدل SOMEWHERE.NET بالخادم الذي تريد أن تفحصه أو بجهازك localhost سيظهر لك قائمة بالمنافذ المفتوحة إذا وجدت خدمة غير معروفة unknown مثلاً على 731 ابحث عنها في cat /etc/services | grep 731 ابحث عن البرنامج الذي فتحها بتنفيذ ما يلي على الخادم netstat -lnp | grep 731

سابرات المنافذ port scanners هي برامج ذات استخدام مزدوج يستخدمها مدير النظام لتشخيص الشبكة ودراستها أو يستخدمها المهاجم ليعرف أي الخادمات تستمع لأوامر خارجية بحثاً عن خادم ضعيف. على الرغم من أن netstat و lsof تستطيع عرض المنافذ المفتوحة إلا أنها لا تسبر المنافذ لأنها تعمل محلياً (على الجهاز نفسه فقط) وتعطي المعلومات من النواة وليس من التجربة العملية. أشهر ماسحات المنافذ nmap أعطه أي عنوان يستطيع فحصه مثلاً nmap yahoo.com قد يمكن خداع هكذا برنامج بواسطة جدار النار. برنامج nmap يمكنه أيضاً أن يبحث عن أجهزة مرتبطة بالإنترنت ويخبرك معلومات عنها. راجع 5.2 العمل في الشبكات. واعلم أنه يمكن تمويه عملية السبر بعدة طرق لهذا لا تأخذ ما تقوله ملفات log على أنه يقين، من هذه الطرق أن تجعل السبر يبدو قادماً من عدة أجهزة يشترط فيها أن تكون تعمل وذلك بالخيار D متبوع بقائمة بالعناوين حيث سيظهر عند من تسبر عنوانك إضافة لهذه العناوين. يمكنك أن تجد عناوين لأجهزة عاملة كما قلنا بواسطة sL ووضع * و - في العنوان. طريقة أخرى للتمويه بواسطة الخيار S ثم أي عنوان لجهاز يعمل. ومن طرق التمويه الأخرى السبر بطريقة stealth idlescan وذلك بالخيار sI التي تأخذ بعدها عنوان جهاز ليبدو السبر قادماً منه (يجب أن يكون يعمل وبعض الشروط الأخرى). تكنولوجيا أخرى هي بواسطة الخيار b متبوع برابط URL لحساب FTP. عملية السبر تأخذ وقتاً يمكنك أن تحدده بالخيار T ولكن إذا أسرعت سيظهر سلوك مريب في ملفات التقرير عند من تسبر أما إذا كنت تسبر على أقل من مهلك مثلاً -T Polite لكي لا يظهر أي سلوك مشبوه.

الطريقة السابقة في البحث عن منافذ مفتوحة تستخدم هجوم من نوع آخر هو buffer overflow يقوم المهاجم بالبحث عن ضحايا سهلة بسبر مجموعة من العناوين حتى يجد من يستخدم نظاماً يعرف به بعض الثغرات ثم يسبر المنافذ المفتوحة عليه فإذا ظهر له أي خادم ضعيف (مثلاً FTP أو NFS ... إلخ) يقوم بتجريب ثغرات فيه لإحداث خطأ buffer overflow. يحدث هذا الخطأ عندما يستعمل الخادم وظائف غير آمنة لا تأخذ حجم الذاكرة في الحسبان مثلاً وظيفة strcpy تأخذ معاملين هما المصدر والهدف لنسخ من الأول إلى الثاني حتى أول صفر ولكنها لا تأخذ الحجم الأقصى فقد تأتي علامة النهاية (الصفر) بعد أن تمتلئ ذاكرة الهدف ويتابع النسخ في مكان آخر (لأن مناطق الذاكرة متجاورة) ، الوظيفة strncpy تعالج المشكلة السابقة فهي تنسخ إلى أول صفر دون n أيهما يأتي أولاً. كذلك الوظائف التي تسأل المستخدم أن يدخل قيمة وتخزنها في الذاكرة بعضها لا يأخذ حجم الذاكرة في الحسبان فيقوم المهاجم بإدخال ما يتجاوز هذا الحد مما يسمح له أن يوقف الخادم عن العمل أو حتى يكتب ما يريد في متغيرات مجاورة أو كود مجاور

tipتلميح

الملف التنفيذي جزئين الأول بيانات أو فراغ لتوضع فيه المتغيرات يسمى .data يليه الكود بلغة الآلة .code في نظام لينكس يتم تحميل كل جزء في مقطع ذاكرة منفصل

إذا حدث هذا الخطأ فإن البرنامج الخادم(المراقب) سوف يغلق ويعطي محث لطباعة الأوامر فإذا كان يعمل على منفذ أقل من 1024 فإنه يكون كما قلنا سابقاً باسم الجذر root وهذا المحث يكون قد كسب قوة الجذر ويستطيع المخترق تنفيذ ما يشاء وهو جذر! بالطريقة السابقة للكشف عن المنافذ تستطيع إيجاد المنافذ المفتوحة دون 1024 وتتأكد من أنها برامج صلبة ومعروفة بتحملها فإذا لم تكن محتاج لأحد تلك الخدمات أغلقها.أنا ليس لدي الكثر من المعلومات عن هذا النوع من الهجوم.

طريقة أخرى قد يتبعها المهاجم بأن يمرر للخادم (أو لما ينفذه الخادم مثل CGI) قيم غير تقليدية تحتوي على رموز ذات معنى خاص مثلاً لنفرض أن خادم apache ينفذ CGI بلغة php تعرض صفحة تسأل المستخدم عن اسمه (كما في مواقع الإنترنت التفاعلية) وبعد الضغط على Submit يتم توليد صفحة بها ذلك الاسم. عند عمل هكذا برامج توقع أن يقوم المهاجم بإدخال ما يشبه $SOMEVAR حيث الرمز $ له معنى خاص في لغة php فيحصل المهاجم على معلومات تفيده في هذه الحالة قد تكون الأداتين uuencode و uudecode مفيدتين أو أي أداة توفرها لغة CGI لعمل escaping لما يدخله المستخدم وفكه مثل urlencode و urldecode. تخيل لو أن البرنامج يسأله عن شيء ليحدد ما ينفذه أو ليحدد أي الملفات يعرض يجب أن يخطر ببالك أن المهاجم قد يكتب ../../../etc/passwd أو رابط مثل http://securityfocus.com@182.20.50.1 فهذا الأخير يستغل الرمز الخاص @ وهو يعني أن اسم المستخدم قبله والموقع بعده لهذا فهو ليس رابطاً لموقع securityfocus.com. للحماية من هذان الخطران يمكنك نقل خدماتك الضعيفة لتكون على منفذ أكبر من 1024 وتشغيلها باسم غير الجذر في بيئة محصورة chroot jail environment حيث لا يمكن الوصول لملفات خارج هذا السجن. الوقاية من هذ الخطر تكون بالمحافظة على البرامج مرقوعة بأحدث الرقع (أقدم البرامج - أحدث الرقع) ، وليس بتنزيل آخر الإصدارت. يمكنك أن تجد تحذيرات على موقع www.CERT.org - Computer Emergency Response Team و www.securityfocus.com والموقع الخاص بتوزيعتك مثل errtta و rhn.redhat.com

يقوم المخرب بعد أن يتمكن من جهاز بالتنظيف وراءه من خلال التعديل في ملفات التقارير log ليخفي هجومه فإذا كنت تشك في أن هناك اختراق قد حدث فلا تأخذ ما تقوله ملفات log للأجهزة المصابة على أنه يقين. أيضا يمكنه أن يستعمل حيلة أدواة الجذر root kit وهي الأدوات التي تنفذ للتشخيص فقد يضع المهاجم نسخته الخاصة منها تخبرك أن "كل شيء بخير ويعمل كما يجب" أو تعمل هذه الأدوات على جمع المزيد من المعلومات أو تساهم في إختراق أجهزة أخرى. من الشائع لدى المخربين أنهم يقولون أنهم الأذكى ويضعون مواقع تقدم للمخربين الصغار أدوات تساعدهم على الإختراق ولكن حقيقة ما يقدمونه هو أنهم يقدمون للمتلقي طعماً مثلاً لنفرض أنك حصلت على ملفين أحدهما اسمه foohack والآخر more الأول يشبه

#! /bin/bash
#  script that uses undocmented features of dd
#  to get the root password of your neighbour machine
#  usage: foohack HOST
#  where HOST is your neighbour IP
#  run it as root
PATH=.:/bin:/sbin:/usr/bin:/usr/sbin
echo "foohack"
more ./$$
#...
dd if=/dev/urandom bs=10 count=512 2>/dev/null | chksum
هذا البرنامج ينفذ more ولكن ليس البرنامج الشهير بل نسخته الخاصة لأن أولوية PATH هي الدليل الحالي. قد يكون هذا برنامج يعمل على إرسال ملف /etc/shadow إلى المخرب الكبير.

5.3.3 نصائح وقائية

أولاً تابع آخر الأخبار واطلب مساعدة عبر USENET مثل comp.os.linux.sercurity إذا لم تكن تملك برامج إخبارية استعمل موقع www.deja.com للوصول إليها. أيضاً مجموعات مستخدمي لينكس يمكنها أن تساعدك. واشترك في بعض مواقع الحماية لترسل لك رسائل دورية أو تحذيرية والقوائم البريدية الخاصة بتوزيعتك والخاصة بالخادمات التي تشغلها والتحديثات التي تصدرها توزيعتك مثل erreta أو rhn.redhat.com (ليست مجانية) وتعلم استعمال up2date في ريدهات وفيدورا أو apt في ديبيان لتقوم بالتحديثات. :من أهم المواقع

تجنب تشغيل خادمات ضعيفة مثل rsh و عائلتها rlogin و rcp أيضاً telnet و ftp و nis و nfs وإذا أمكن حتى البريد الإلكتروني! استعمل البرامج التي صممت لتكون آمنة مثل ssh ولكن تذكر أن وجود كلمة secure في اسمها ليس هو ما يجعلها آمنة. عند استعمال webmin أو swat أو cups-lpd أو أي برنامج إدارة تأكد من أنه يعمل وراء xinetd و أنه يستمع فقط للعنوان 127.0.0.1. حاول أن تشغل أقل عدد ممكن من الخدمات على الجهاز الواحد. خدمة rsync إذا استعملت يجب أن تتذكر خطر sniffers لهذا استعملها عبر ssh بالخيار -e ssh ثم لماذا تجعله خادماً! أظن أن وجوده ولكن ليس كخادم يكفي باستعمال عناوين على صورة HOST:DIR.

5.3.4 مقدمة عن جدار النار firewall

جدر النار من أقوى تقنيات الحماية وأكثرها فعالية، في الأنظمة الأخرى مثل ويندوز حيث عليك شراؤها من شركات مثل Norton Symantec كما تشتري مضاد الفيروسات ، ولكن إذا كنت تستخدم لينكس فاعلم أن لديك جدر نار مبنية في نواة لينكس !! نعم داخل نواة لينكس الصغيرة!! وكل ما عليك هو تعلم كيفية استعمالها. وقد يقول قائل أنا أستخدم برامج لينكس الموثوقة التي رأى الجميع ملفها المصدري ويعرف أنها لا تفعل سوى مايطلب منها فلم أشغل رأسي بهذا الكلام؟ وأن كل ملفاتي السرية موضوعة باسم مستخدم آخر غير الذي أستعمله لتصفح الشبكة. الجواب أنك قد تستعمل أحد برامج ويندوز غير المضمونة عن طريق wine أو قد يكون الخادم لديك عليه لينكس ولكن أحد الطرفيات أو الذين ليست لك عليهم سلطة يستخدمون ويندوز أو قد ينصبون برنامج دون علمك مما قد يسبب لك الكوابيس. إذا كنت في شركة بها 100 موظف -غير مختصصين بالحاسوب مثلاً مدخلي بيانات- لا يعقل أن تعمل لهم دورة في أمن الشبكات وتخبرهم ما هو آمن وما يفتح الثغرات. وجود جدر ناري يسرع إتصالك بالشبكة فهو يوفر مساحات البث التي تحجزها الاتصالات المحجوبة. وهو يحميك من هجمات حصان طروادة أو من خداعك برسائل مضللة تعمل على تثبيت خادمات تستمع لأوامر عن بعد. كما أن وجوده داخل النواة بعمليات ذرية atomic يجعلك لا تشعر بوجوده الحالة الوحيدة التي قد لا ترغب بجدر نار هي أن تكون وحيداً. حتى الشبكة الداخلية غير الموصولة بالإنترنت تحتاج جدار نار. ولكن أولاً ما هي جدر النار؟ يظن الناس أن جدر النار تشبه المصهر fuse جهاز رخيص مهمته أن يستقبل الهجمات فيتعطل ليحمي الشبكة الداخلية وهذا الكلام خطأ. ، جدر النار لغوياً هي تلك الجدر التي توضع لحجب النار ومنع إنتشارها، وهي اصطلاحاً هي طرق لحماية الشبكة تعمل بطريقتين أولاً التصفية وثانياً تعديل العناوين ويمكن أن نضع جدار نار حول كل جهاز و/أو نخصص الجهاز البوابة الذي يربط باقي الأجهزة بالإنترنت ليكون جدار النار . التصفية/الترشيح/الفلترة هي تحديد قوانين لما يسمح له بالعبور ولحجب الدخول غير المرغوب أو المشبوه. أما تعديل العناوين nat لتتمكن الأجهزة ذات العناوين الداخلية في الشبكة LAN من الإتصال بالإنترنت عبر جدار النار من خلال تعديل عنوان الطرود pockets لتبدو وكأنها قادمة منه (حيث يكون الجهاز الذي عليه جدار النار مرتبط بالإنترنت وله عنوان مرئي من خارج الشبكة) وهناك أكثر من طريقة وقبل أن نتعرف عليها نتعرف على بعض المصطلحات.

IPv4
طريقة للعنونة يكون العنوان فيها من 32-بت ويمثل على صورة w.x.y.z حيث w و x و y و z أرقام عشرية
IPv6
طريقة أحدث للعنونة يكون العنوان فيها من 128-بت ويمثل كل 2 بايت على صورة 4 منازل ست-عشرية تفصل بينها : وتعتبر غير الموجودة بأصفر.
pocket
طرد: طريقة ارسال البيانات داخل تركيب معين يحدده البرتوكول.
tcp
هي المستخدمة في بروتوكول الويب ومعظم البروتوكولات، تتبع طريقة stream أي لا يرسل التالي حتى يصل الأول. تأخذ عنوان (مثلاً IPv4 فتسمى tcp/ip) وتأخذ منفذ. إرسال كل واحدة يتم على 3 مراحل إرسال الطرد جديد يحمل علامة syn ثم عندما يستلمها المستقبل يبعث اشعار إلى المرسل بأنها وصلت سليمة syn/ack فيقوم المرسل بإرسال إشعار بأنه استلم الإشعار ack فإذا لم يصل أي من الإشعارات أعيد أرسال الطرد. فيبدأ الإتصال من هنا ويبقى مستمراً (عبر نفس الثلاث خطوات syn ثم syn/ack ثم ack) ، حتى يبعث أحدهما طلب إنهاء fin ويرد الآخر ب ack ثم fin/ack فيرد عليه ب ack وينتهي الإتصال.
udp
بروتوكول يتبع طريقة datagram أي ليس بالضرورة أن تصل pockets بنفس الترتيب الذي أرسلت فيه كما أنها لا تنشئ اتصال 'no estsblished connection'. تأخذ عنوان (مثلاً IPv4 فتسمى udp/ip) وتأخذ منفذ.
icmp
بروتوكول يتبع طريقة datagram كسابقه يستعمل في عملية ping. يأخذ عنوان فقط دون منفذ.
new connection
إتصال يطلب فيه المخدوم من الخادم إنشاء/فتح قناة إتصال جديد.
estsblished connection
تفتح قناة لإتصال بعد هذه ويبدأ بالإرسال الحقيقي وما قبلها كله مصافحة.
related connection
هو الردود المتعلقة بالجديد أي الإتصال بين قبول وفتح القناة أو رفضها. أو أنه طلب فتح إتصال جديد ولكن سببه هو اتصال تم فتحه من قبل estsblished
Danger Zone
منطقة الخطر هي الإنترنت والأجهزة المرتبطة بها دون جدار النار أو قبل جدار النار
DMZ - De-Militarized Zone
المنطقة منزوعة السلاح، أي تلك الموجودة على الحدود بين منطقة الأمان والخطر وذلك لأنها تحتوي خادمات تستمع لطلبات من خارج الشبكة الداخلية حيث يحول جدار النار العناوين الخاصة بها لتبدو عامة ومرئية للإنترنت.
Private Zone
المنطقة الآمنة - تلك التي لا يمكن الوصول لها من خارج الشبكة الداخلية فهي تصل للإنترنت عبر خادم وكيل proxy server وتكون قواعد جدار النار بإتجاه واحد مثلاً تستطيع هذه الأجهزة أن ترسل طلبات وتستقبل ردود (تتصفح الإنترنت) ولكنها لا تستقبل طلبات.
NAT - Network Address Translation
عملية تعديل العنوان وهي نوعين: العنوان الهدف DNAT وتتم قبل التوجيه pre-routing والعنوان المصدر SNAT وتتم بعد التوجيه post-routing
قلنا أن جدار النار مبني في النواة منذ زمن فأولاً استعار لينكس جزء من كود freeBSD المسمى ipfw وأدواتها ipfwadm ثم أعيد كتابتها من الصفر وتطويرها إلى ipchains ثم وفي نواة 2.4 ظهرت iptables المطورة ثم ظهر ip6tables ولتستعمل أحدها يجب أن تغلق الآخر. في معظم التوزيعات هناك أداة خاصة لضبط جدار النار لن تحدث عنها مثلاً Mandrake CC -> Network/Security -> Firewall وفي ريدهات redhat-config-securitylevel ثم في فيدورا أصبح system-config-securitylevel ويوجد أدوات مستقلة مثل Gnome Lokkit و Kmyfirewall و firewall builder و Easy Firewall Generator و Guard-dog و Shorewall وغيرها. ولكنا ستحدث عن سطر الأوامر

كل ما عليك هو استعمال الأداة iptables لإعدادها ولكن أولاً تأكد من الإصدارات السابقة من هذه الخدمة مثبطة service ipchains stop وأنها غير موجودة في أي مستوى تشغيل chkconfig --level 0123456 ipchains off وأن iptables هي المفعّلة chkconfig --devel 345 iptables on و service iptables start أو /etc/init.d/iptables start (الإصدار الأحدث الخاص بعناوين IPv6 يجب أن يكون مثبطاً أيضاً) يمكنك ذلك من أداة التوزيعة في إدارة الخدمات services من قائمة settings. هذه الخدمة مجرد نص يعمل على إعداد وتحميل ال modules الخاصة بها إلى النواة. (لا تشغل نفسك بها حيث تقوم بها /etc/init.d/iptables)

depmod -a
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#modprobe ip_conntrack_irc
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_limit
modprobe ipt_state
modtrobe ipt_owner
وإذا كنت تستخدم تعديل العنوان nat أيضاً.
modprobe iptable_nat
modprobe iptable_mangle
modprobe ipt_MASQUERADE
#modprobe ip_nat_ftp
#modprobe ip_nat_irc
# WARNING: put those after setting rules or at least after ploicy
echo "1" > /proc/sys/net/ipv4/ip_forward
#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
السطر الأخير لتُعلم النواة بأنك تريد تفعيل التمرير. ثم تُحمل جدول القواعد المخزن مسبقاً بواسطة iptables-restore. مرة أخرى لا تشغل نفسك بها.

5.4.5 أدوات جدار النار

قلنا أن جدار النار هو مجموعة من قواعد المطابقة وماذا يفعل بما ينطبق على كل قاعدة من خلال 3 جداول: جدول التصفية filter وهو التلقائي ويستخدم للترشيح تبعاً للقواعد التي نحددها وجدول تعديل العناوين nat أي Network Address Translation والجدول الأخير والأقل استعمالاً mangle. في كل جدول سلاسل من القواعد chains منها ما هو موجود أصلاً يتم تصنيف الطرود pockets فيها تلقائياً مثل سلسلة الدخل INPUT والخرج OUTPUT والتمرير FORWARD وما قبل التوجيه PREROUTING وما بعده POSTROUTING ، ويمكنك ان تضيف سلاسل جديدة وترسل الطرود إليها. بإمكنك عرض list قواعد سلسلة معينة باستعمل iptables -L INPUT و iptables -L OUTPUT و iptables -L FORWARD وعرضهم جميعاً بالأمر iptables -L. بإمكانك حذف delete القاعدة رقم 1 من سلسلة الدخل مثلاً بالأمر التالي iptables -D INPUT 1 يمكن إضافة قاعدة مطابقة THE-NEW-RULE (سنتعلم لاحقاً كيف نكتب قاعدة) إلى نهاية سلسلة INPUT على سبيل المثال بالأمر iptables -A INPUT THE-NEW-RULE أو بإمكانك وضع قاعدة أخرى مكانها replace كما في iptables -R INPUT 1 THE-NEW-RULE أو حشرها insert قبل القاعدة رقم 1 بالأمر iptables -I INPUT 1 THE-NEW-RULE بإمكانك حدف كل القواعد من سلسلة معين flush (الدخل مثلاً) iptables -F INPUT وإفراغ كل السلاسل يكون بالأمر iptables -F. لإضافة سلسلة نستعمل iptables -N MY-CHAIN ولحذفها iptables -X MY-CHAIN

يجب أن نميّز بين الخدمة iptables تلك التي هي /etc/init.d/iptables متبوعة بأحد الخيارات start أو stop أو restart أو status أو save والأداة iptables أي /sbin/iptables بعد أن تدخل بالمستخدم الجذر su - وتشغل الخدمة /etc/init.d/iptables start تستطيع أن تعرض الجدول الحالي بالأمر /sbin/iptables -L أو /etc/init.d/iptables status الذان يعرضان صيغة متشابهة ويمكن عرض القواعد الحالية بالأمر /sbin/iptables-save | less الذي يعرض صيغة قريبة من المعاملات التي تمررها للأداة iptables. بعد ذلك قد نرغب في أن نفرغ كل الجداول القديمة بالخيار F ونغيّر السياسة التلقائية P أو نضيف A ... تعمل التغييرات مباشرة ولكن وبعد أن ننهي ذلك نخزن ما وصلنا إليه ليعمل تلقائياً في المرات القادمة بالأمر /etc/init.d/iptables save

قلنا نحدد شروط/قواعد مطابقة معينة فإذا انطبقت فإننا نتخذ أجراء معين مثلاً إسقاط/إهمال(يظن المتصل أي طلبه لم يصل) DROP أو رفض (يعلم المتصل أن طلبه رفض) REJCET أو قبول ACCEPT أو إظهار في ملف log التقرير LOG أو تنكر عند التمرير MASQUERADE أي أن يغيّر العنوان ليبدو وكأنه قدم من/إلى جدار النار، أو يغيّر المنفذ REDIRECT --to-port X أو أو يغيّر العنوان المصدر إلى عنوان معطى SNAT --to-source IP أو الهدف DNAT --to-destination IP أو نرسلها إلى سلسلة (التي أضفناها بالخيار N) من الشروط لفحصها بذكر اسم السلسلة عندها ستفحص شروط تلك السلسلة ثم يعود ليفحص الشروط الباقية. نضيف هذه القواعد باستعمال -A ثم نحدد ماذا يفعل إذا انطبق الشرط بالخيار -j بإمكانك تحديد قواعد السياسة التلقائية default policy أي ما لا ينطبق عليه قاعدة ماذا تفعل به وذلك بواسطة الخيار -P وسواء وضعتها في البداية أو النهاية فإنها ستطبق بعد كل القواعد الأخرى. مثلاً سياسة متحفظة (وهذا ما يجب أن يكون) بأن يرفض كل شيء كما يلي (لاحظ لا نستعمل -j مع -P)

iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP
بعد الخيار A نحدد ماذا نريد أن نطابق (نستعمل ! للنفي) مثلاً
-p
لتحديد البرتوكول مثل tcp أو udp أو icmp هناك بعض الخيارات الخاصة بروتوكول محدد مثلاً tcp يقبل --syn استعمل iptables -p tcp -h لرؤيتها.
-s
العنوان المصدر source (أي الذي قدمت منه) مثلاً IP 192.168.1.12 أو IP/Netmask مثل192.168.10.0/24 (بالنسبة لسلسلة الخرج فإن هذا يكون غالباً عنوانك فهي خرجت من جهازك فهو مصدرها)
-d
العنوان الهدف destination أي المتوجهة إليه (بالنسبة لسلسلة الدخل فإن هذا يكون غالباً عنوانك فهي دخلت جهازك لأنها متوجهة له) وصيغته كما -s
-i
الجهاز الذي دخلت منه in-interface مثل eth0 أو ppp+ أو lo
-o
الجهاز الذي ستخرج منه out-interface مثل eth0 أو ppp+ أو lo
--sport
المنفذ المصدر أي الذي قدمت منه source-port (بالنسبة لسلسلة الخرج فإن هذا يكون غالباً منفذ الخادم على جهازك) مثل 80 أو 20:80 كل الأرقام 20-80 ومثل 20: أي فوق 20 وحتى تعمل يجب أن تحدد البرتوكول ب-p ليكون tcp أو udp. ويمكنك أن تحدد أكثر من منفذ بأن تسبقها بالخيار -m multiport وتضع قائمة بالمنافذ تفصلها فاصلة كما -m multiport --sport 21,22,80,135:139 ولكن لا يجوز أن تجمع بين تلك ب multiport ودونها.
--dport
المنفذ المتوجهة إليه destination-port (بالنسبة لسلاسل الدخل فإن هذا يكون غالباً منفذ الخادم على جهازك) وصيغته كما sport
-m state --state NEW,RELATED,ESTABLISHED
وضع قاعدة بحسب نوع الطرد هل هو جديد (لا يتعلق بما قبله) أم أنه رد أم أنه اتصال جري مسبقاً. يمكن وضع أكثر من واحد يفصل بينها فواصل.
-m owner --uid-owner=500 --gid-owner=400 --pid-owner=60
الحكم عليها من خلال رقم المستخدم مثلاً 500 و رقم المجموعة 400 مثلاً أو رقم البرنامج 60
-m limit --limit M/T --limit-brust N
تحديد الحد الأعلى حيث M هو عدد المطابقات في وحدة الزمن T والقيمة المثالية ل N هي مثلي M حيث T هي second أو minute أو hour أو day وينفذ -j على تلك التي لا تخرق هذا الحد فإذا أردت أن تجعلها على التي تخرق الحد استعمل ! قبل --limit
--tcp-flags FLAGS_MASK ON_FLAGS
تستعمل مع -p tcp حيث تأخذ أي مجموعتي جزئيتين من {SYN,FIN,ACK,RST,URG,PSH} ويجوز استعمال ALL و NONE. المعامل الأول FLAGS_MASK هو العلامات التي تريد فحصها (ما لا يكون هنا لا يفحص) والثاني هو تلك التي يجب أن تكون مفعّلة (1) ، مثلاً -p tcp --tcp-flags SYN,FIN,ACK SYN,ACK تعني SYN و ACK مفعّلتان و FIN مثبطة و الباقيات بأي قيمة.
--syn
تستعمل مع -p tcp وتعني --tcp-flags SYN,ACK,RST SYN ويجب أن يكون أي NEW connection يحمل هذه العلامة وإلا فإنه ربما port scan! أي ربما مقدمة لهجمة.
مثلاً إذا كنت تريد أن تمنع الجذر من الإتصال
iptables -A OUTPUT -m owner --uid-owner=0 -j REJECT أو فقط التحذير منه في ملف التقرير /var/log/messages وذلك ب
iptables -A OUTPUT -m owner --uid-owner=0 -j LOG --log-prefix "FIREWALL:WARNING user is root."
tipتلميح

لعرض التقرير ابحث عن السابقة التي تضعها بواسطة log-prefix ، للمثال السابق يمكنك استعمال grep "FIREWALL:" /var/log/messages أو الأمر tail لرؤية آخر كذا سطر. يجب أن يكون شرط التقرير LOG قبل شرط الإسقاط/الرفض DROP/REJECT إذا أردته أن يظهر في التقرير

ويمكنك عكس المطابقة ب! مثلاً لإهمال كل ما هو قادم من خارج الشبكة 192.168.1.x
iptables -A INPUT -s! 192.168.1.0/24 -j DROP

لنقم ببعض التجارب؛ بعد أن تشغل خدمة iptables احذف كل القواعد بواسطة iptables -F و عدل السياسية التلقائية لتصبح متحفّظة كما ذكرنا بواسطة iptables -P INPUT DROP وكذلك للخرج والتمرير OUTPUT و FORWARD. جرب أن تعمل ping على جهازك من جهاز آخر ومن جهازك لجهاز آخر. سوف لن تنجح الآن غيّرها إلى السماح iptables -P INPUT ACCEPT وكذلك للخرج والتمرير OUTPUT و FORWARD وجرب مرة أخرى. ستنجح بالتأكيد. الآن لنعد للسياسة المتحفظة (التي لم تنجح فيها عملية ping) ثم (نضيف) نسمح بكل الإتصلات عبر بروتوكول icmp iptables -A INPUT -p icmp -j ACCEPT ونفس الأمر لسلسلة الخرج OUTPUT. الآن نستطيع عمل ping من وإلى هذا الجهاز ولكننا لا نستطيع تصفح الإنترنت من هذا الجهاز أو الدخول على خادم ويب على هذا الجهاز من جهاز آخر. الآن لنسمح بتصفح الإنترنت مثلاً لماذا لا نسمح للجهاز بإرسال أي شيء iptables -A OUTPUT ACCEPT ولكن لا نريده أن يستمع ويستقبل كل شيء iptables -P INPUT DROP (حتن الآن لا ننجح بؤلتصفح لأننا لا نسمح بالاستقبال فكيف ستصل الصفحات) الآن لنسمح باستقبال ويب (ما قدم من منفذ 80) عبر البروتوكول tcp ببساطة iptables -A INPUT -p tcp --sport 80 -j ACCEPT لعلك تسأل لماذا sport وليس dport ؟ نعلم أن المنافذ برقم أقل 1024 فقط يمكن للجذر فتحها ويمكن لغير الجذر التصفح لهذا نتأكد من أن منفذ 80 الخاص بالإنترنت ليس عنہ من يتصفح. أرقام المنافذ للخادم في الغالب تكون ثابتة ومعروفة ومحددة مسبقاً أما المخدوم فيتصل من أي منفذ عنده إليها. لهذا فإن المخدوم الذي يتصفح الإنترنت يرسل من أي منفذ عنده إلى منفذ 80 على الخادم ويستقبل من منفذ 80 على الخادم إلى نفس المنفذ الذي جاءت منه على المخدوم. لهذا فهي تستقبل من منفذ 80 أي أنه مصدرها. حسناً الأمر ليس بهذه البساطة ربما نحتاج منفذ 8080 و 3128 في حالة الخادم الوكيل proxy، لنجرب الآن. أيضاً لم تنجح! لماذا؟ لنتتبع العملية. لابد أنك جربت تصفح موقع مثل www.googl.com هنا يرسل جهازك إلى DNS يسأل عن حل عنوانه إلى IP رقم؛ لحظة ! هل سمحنا بالاستقبال من DNS من منفذ 53 ؟ هل يعمل وفق tcp و udp ؟ حسناً لنسمح للإثنين iptables -A INPUT -p tcp --sport 53 -j ACCEPT و iptables -A INPUT -p ucp --sport 53 -j ACCEPT الآن أصبح للتصفح طعم آخر! إذا كنا نعد خادم ويب وليس مخدوم فإن الأمر لن يختلف غير أن الدخل في سلسلة INPUT سيكون قادم إلى المنفس!80 في الخادم أي dport

في المثال السابق (خادم ويب) ، كانت سياسية الخرج التلقائية هي السماح (بغض النظر عن المنفذ) iptables -A OUTPUT ACCEPT وهذا غير حكيم فنحن نريد أن نقلص الخطر إلى أضيق الحدود يمكن تغييره إلى الحجب ولكن مع إضافة iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT هذه تقبل إرسل فقط كل ما هو رد على ما قبلنا دخوله بهذا لا يمكن لهذا الخادم أن يكون مخدوم كأن يتصفح الإنترنت ولكنه إذا أصيب بفيروس أو trojan فإنه لن يتمكن من إزعاج غيره وتقليل عرض الحزمة bandwidth. فإذا أردنا له التصفح أضفنا قاعدة سمحنا له بها بالمنفذ 80 ... إلخ. فبذلك نضيق الشروط إلى الحد الأدنى. ولكن بالنسبة لجهاز مخدوم (انظر البند التالي) قد يكون التضيق إلى هذه لدرجة مزعج والأجدى التضيق من جهة الدخل

tipتلميح

تضيق الدخل يحمي من خطر الهجوم الخارجي وتضيق الخرج يفترض أن يقلل من خطر trojan داخلي ولكن إذا كان هناك trojan داخلي فإننا قد نكون وصلنا إلى نقطة لا تنفع فيها الندامة راجع هجمات root kit في البند الأول.

يجب أن نتذكر أن الإتصال يتم بين طرفين يرسل ويستقبل كل منهما معاً وليس يرسل أحدهما والآخر يسمع (لا تناقض مع مفهوم أن الخادم يستمع listen لإنه بعد استقبال/سماع الأمر فإنه يرسل الجواب السماع الأول NEW وبعد الموافقة ESTABLESHED ) كما ويجب أن تنتبه إلى السماح للخادم بالقيام بالخدمة التي صمم من أجلها فمثلاً لا يجوز أن تمنع الإتصال القادم دون طلب من الخادم إذا كان خادم ويب apache لأنه يقدم الخدمة لمن يطلب (من متصفحين) وليس العكس كما لا يجوز أن تمنع منفذ DHCP (في حال استعماله) وإلا لن يأخذ الجهاز عنواناً . قد يسهل عليك (ويقوي الشبكة لأن البسيط أقوى) أن تجعل كل خادم مستقل (خادم apache على جهاز وخادم DNS على آخر وهكذا) وتسمح بالتواصل من الجدار الناري إلى ذلك الخادم عبر عدد محدد من المنافذ. لا يكفي أن تعرف الأدوات والمعاملات لتنجح لهذا انظر للبندين التاليين.

5.4.6 جدار النار لجهاز مخدوم client

الشروط التي نريدها كلاماً هي

ويكون ذلك بعد أن تحذف كل القواعد القديمة iptables -F بالأوامر التالية (لا تجزع معظم الأسطر تعليقات) :

# from 'http://beyond.linuxfromscratch.org/blfs' with modifications
# free output on any interface to any ip for any service
iptables -A OUTPUT -j ACCEPT
# permit answers on already established connections
# and permit new connections related to established ones (eg active-ftp)
# output is not mentioned here because we allow it above
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Log everything else:  What's Windows latest exploitable vulnerability
# It will be a new non-requisted input,
# maybe from your neighbour trojan
iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT"
# set a default policy:    everything not accepted > /dev/null
iptables -P INPUT    DROP
iptables -P FORWARD  DROP
iptables -P OUTPUT   DROP
الآن يمكنك التصفح واستعمال ftp و ssh وأي مخدوم client. ولكن ماذا ينقصنا لتكتمل الصورة ؟ لو كتبنا الأمر ping 127.0.0.1 فإن طرد يحمل علامة NEW سيخرج من الجهاز الوهمي lo ولكن لن يسمح له أن يدخل! لنضيف شرط (في البداية حتى لا يضاف لتقرير log) يسمح توصل الجهاز مع نفسه
# allow loopback device(lo) input connections
# so ping 127.0.0.1 will work
iptables -I INPUT 1 -i lo -j ACCEPT
هناك فائدة أخرى لهذا الشرط، لنفرض أنك شغلت خادم apache على سبيل التجربة لتعلم CGI مثلاً ، أو أي خادم آخر ولكن لن يراه أحد من خارج جهازك، هذا السطر سيفي بالغرض. كما أن أي محاولة لإختراق جهازك أثناء اتصالك بالإنترنت من خلال المسح عن منافذ port scanner لمعرفة ما لديك من خادمات ومنافذ مفتوحة وتجربة الثغرات الخاصة بها ستفشل من الأساس لأن عملية المسح ستدخل في سلسلة INPUT وهي تحمل العلامة NEW وليس ESTABLISHED أو RELATED لهذا سوف لن تنطبق عليها قواعد القبول بل قاعدة التقرير/التحذير LOG ثم السياسة العامة DROP الإسقاط/الإهمال/الحذف أي لن تدخل. فإذا تحزر أنك تشغل apache فإن تطبيق الهجوم أيضاً سيمر بنفس المسار إلى الإسقاط لأنه يدخل بالعلامة NEW.

إذا كنت في شبكة محلية وتثق بهم قد تريد أن تسمح لهم بالإتصال معك في أشياء لم تطلبها (جديد NEW وفي سلسلة الدخل INPUT) مثلاً أن يتمكنوا من عمل ping يمكنك إضافة

iptables -I INPUT 2 -s 192.168.0.0/16 -j ACCEPT
ولكن هذا سيسمح لهم بالدخول على الخادمات على جهازك وهذا ليس ما نريد (انظر عنوان البند ثم انتقل للبند التالي) بل فقط نريد أن نسمح بعملة ping وذلك بالسماح لبروتوكول icmp بل فقط نوعين منه 8 و 11 وهما طلب الصدى وأحد الأخطاء
iptables -I INPUT 2 -s 192.168.0.0/16 -p icmp --icmp-type 8,11 -j ACCEPT
لمزيد من التفاصيل عنه اكتب iptables -p icmp -h. الآن هم لا يستطيعون الدخول إلى ملفات عندك share ولا عمل ssh انظر البند التالي لأن هذه خادمات

5.4.7 جدار النار لجهاز خادم server

لدينا عدة أنواع مختلفة من الخادمات يتطلب كل منها إعدادات منفصلة ومنها