-
المساهمات
1406 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
63
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبد اللطيف ايمش
-
إن بروتوكول التحكم في نقل البيانات (Transmission Control Protocol) وبروتوكول الإنترنت (Internet Protocol) المسمى اختصارًا TCP/IP هو معيار يضم مجموعة بروتوكولاتٍ مطورةً في نهاية السبعينات من القرن الماضي من وكالة مشاريع أبحاث الدفاع المتقدمة (Defense Advanced Research Projects Agency [DARPA])، كطرق للتواصل بين مختلف أنواع الحواسيب وشبكات الحواسيب؛ إن بروتوكول TCP/IP هو العصب المحرك للإنترنت، وهذا ما يجعله أشهر مجموعة بروتوكولات شبكيّة على وجه الأرض. TCP/IP المكونان الرئيسيان من مكونات TCP/IP يتعاملان مع مختلف نواحي شبكة الحاسوب؛ بروتوكول الإنترنت -جزء «IP» من TCP/IP- هو بروتوكول عديم الاتصال (connectionless) يتعامل مع طريقة توجيه (routing) الرزم الشبكية مستخدمًا ما يسمى «IP Datagram» كوحدة رئيسية للمعلومات الشبكية؛ تتكون IP Datagram من ترويسة، يتبعها رسالة. إن بروتوكول التحكم في نقل البيانات هو «TCP» من TCP/IP، ويُمكِّن مضيفي الشبكة من إنشاء اتصالاتٍ يستطيعون استخدامها لتبادل مجاري البيانات (data streams)؛ ويَضمَن أيضًا بروتوكول TCP أن البيانات التي أُرسِلَت بواسطة تلك الاتصالات ستُسَلَّم وتصل إلى مضيف الشبكة المُستقبِل كما أُرسِلَت تمامًا وبنفس الترتيب من المُرسِل. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن ضبط TCP/IP يتكون ضبط TCP/IP من عدِّة عناصر التي يمكن أن تُغيَّر بتعديل ملفات الإعدادات الملائمة، أو باستخدام حلول مثل خادوم «بروتوكول ضبط المضيف الديناميكي» (Dynamic Host Configuration Protocol [DHCP])، الذي يمكن أن يُضبَط لتوفير إعدادات TCP/IP صالحة لعملاء الشبكة تلقائيًا، يجب أن تُضبط قيم تلك الإعدادات ضبطًا صحيحًا لكي تساعد في عمل الشبكة عملًا سليمًا في نظام أوبنتو عندك. عناصر الضبط الخاصة ببروتوكول TCP/IP ومعانيها هي: عنوان IP: هو سلسة نصية فريدة يُعبَّر عنها بأربع مجموعات من أرقام تتراوح بين الصفر (0)، ومئتان وخمسٌ وخمسون (255)، مفصولةٌ بنقط، وكل أربعة أرقام تمثل ثمانية (8) بتات من العنوان الذي يكون طوله الكامل اثنان وثلاثون (32) بتًا، تُسمى هذه الصيغة باسم «dotted quad notation». قناع الشبكة: قناع الشبكة الفرعية (أو باختصار: قناع الشبكة [netmask])، هو قناع ثنائي يفصل قسم عنوان IP المهم للشبكة، عن قسم العنوان المهم للشبكة الفرعية (Subnetwork)؛ على سبيل المثال، في شبكة ذات الفئة C (Class C network)، قناع الشبكة الافتراضي هو 255.255.255.0، الذي يحجز أول ثلاثة بايتات من عنوان IP للشبكة، ويسمح لآخر بايت من عنوان IP أن يبقى متاحًا لتحديد المضيفين على الشبكة الفرعية. عنوان الشبكة: يمثل عنوان الشبكة (Network Address) البايتات اللازمة لتمثيل الجزء الخاص من الشبكة من عنوان IP، على سبيل المثال، المضيف صاحب العنوان 12.128.1.2 في شبكة ذات الفئة A يستطيع استخدام 12.0.0.0 كعنوان الشبكة، حيث يمثل الرقم 12 البايت الأول من عنوان IP (جزء الشبكة)، وبقية الأصفار في البايتات الثلاثة المتبقية تمثل قيم مضيفين محتملين في الشبكة؛ وفي مضيف شبكة يستخدم عنوان IP الخاص 192.168.1.100 الذي يستخدم بدوره عنوان الشبكة 192.168.1.0 الذي يحدد أول ثلاثة بايتات من شبكة ذات الفئة C والتي هي 192.168.1، وصفرًا الذي يُمثِّل جميع القيم المحتملة للمضيفين على الشبكة. عنوان البث: عنوان البث (Broadcast Address) هو عنوان IP يسمح لبيانات الشبكة بأن تُرسَل إلى كل المضيفين معًا في شبكة محلية بدلًا من إرسالها لمضيف محدد. العنوان القياسي العام للبث لشبكات IP هو 255.255.255.255، لكن لا يمكن استخدام هذا العنوان لبث الرسائل لكل مضيف على شبكة الإنترنت، لأن الموجهات (routers) تحجبها؛ ومن الملائم أن يُضبَط عنوان البث لمطابقة شبكة فرعية محددة، على سبيل المثال، في شبكة خاصة ذات الفئة C، أي 192.168.1.0، يكون عنوان البث 192.168.1.255؛ تُولَّد رسائل البث عادةً من بروتوكولات شبكيّة مثل بروتوكول استبيان العناوين (Address Resolution Protocol [ARP])، وبروتوكول معلومات التوجيه (Routing Information Protocol [RIP]). عنوان البوابة: إن عنوان البوابة (Gateway Address) هو عنوان IP الذي يمكن الوصول عبره إلى شبكة معينة أو إلى مضيف معين على شبكة؛ فإذا أراد أحد مضيفي الشبكة التواصل مع مضيفٍ آخر، ولكن المضيف الآخر ليس على نفس الشبكة، فيجب عندئذٍ استخدام البوابة؛ في حالات عديدة، يكون عنوان البوابة في شبكةٍ ما هو الموجه (router) على تلك الشبكة، الذي بدوره يُمرِّر البيانات إلى بقية الشبكات أو المضيفين كمضيفي الإنترنت على سبيل المثال. يجب أن تكون قيمة عنوان البوابة صحيحةً، وإلا فلن يستطيع نظامك الوصول إلى أي مضيف خارج حدود شبكته نفسها. عنوان خادوم الأسماء: عناوين خادوم الأسماء (Nameserver Addresses) تمثل عناوين IP لخواديم خدمة أسماء المضيفين DNS، التي تستطيع استبيان (resolve) أسماء مضيفي الشبكة وتحويلها إلى عناوين IP؛ هنالك ثلاث طبقات من عناوين خادوم الأسماء، التي يمكن أن تُحدَّد بترتيب استخدامها: خادوم الأسماء الرئيسي (Primary)، وخادوم الأسماء الثانوي (Secondary)، وخادوم الأسماء الثلاثي (Tertiary)، ولكي يستطيع نظامك استبيان أسماء أسماء مضيفي الشبكة وتحويلها إلى عناوين IP الموافقة لهم، فيجب عليك تحديد عناوين خادوم الأسماء الذي تثق به لاستخدامه في ضبط TCP/IP لنظامك؛ في حالاتٍ عديدة، تُوفَّر هذه العناوين من موزع خدمة شبكتك، لكن هنالك خواديم أسماء عديدة متوفرة مجانًا للعموم، كخواديم Level3 (Verizon) بعناوين IP تتراوح بين 4.2.2.1 إلى 4.2.2.6. تنبيه: إن عنوان IP، وقناع الشبكة، وعنوان الشبكة، وعنوان البث، وعنوان البوابة تُحدَّد عادةً بالإمكان الملائمة لها في ملف /etc/network/interfaces، عناوين خادوم الأسماء تُحدَّد عادة في قسم nameserver في ملف /etc/resolve.conf، للمزيد من المعلومات، راجع صفحة الدليل لكلٍ من interfaces و resolv.conf على التوالي وبالترتيب، وذلك بكتابة الأوامر الآتية في محث الطرفية: للوصول إلى صفحة دليل interfaces، اكتب الأمر الآتي: man interfaces وللوصول إلى صفحة دليل resolv.conf: man resolv.conf توجيه IP يمثِّل توجيه IP (IP Routing) الوسائل اللازمة لتحديد واكتشاف الطرق في شبكات TCP/IP بالإضافة إلى تحديد بيانات الشبكة التي ستُرسَل، يَستخدِم التوجيه ما يسمى «جداول التوجيه» (routing tables) لإدارة تمرير رزم بيانات الشبكة من مصدرها إلى وجهتها؛ وذلك عادة بواسطة عقد شبكيّة وسيطة تسمى «موجهات» (routers)؛ وهنالك نوعان رئيسيان من توجيه IP: التوجيه الثابت (static routing)، والتوجيه الديناميكي (dynamic routing). يشتمل التوجيه الثابت على إضافة توجيهات IP يدويًّا إلى جدول توجيهات النظام، ويتم ذلك عادةً بتعديل جدول التوجيهات باستخدام الأمر route؛ يتمتع التوجيه الثابت بعدِّة مزايا تميزه عن التوجيه الديناميكي، كسهولة استخدامه في الشبكات الصغيرة، وقابلية التوقع (يُحسَب جدول التوجيهات مسبقًا دائمًا، وهذا ما يؤدي إلى استخدام نفس المسار في كل مرة)، ويؤدي إلى حِملٍ قليل على الموجهات الأخرى ووصلات الشبكة نتيجةً لعدم استخدام بروتوكولات التوجيه الديناميكي؛ لكن يواجه التوجيه الثابت بعض الصعوبات أيضًا؛ فعلى سبيل المثال، التوجيهُ الثابتُ محدودٌ للشبكات الصغيرة، ولا يمكن أن يتوسَّع توسعًا سهلًا، ويصعب عليه التأقلم مع نقصان أو فشل معدات الشبكة في الطريق المسلوك نتيجةً للطبيعة الثابتة لذاك الطريق. يُعتَمَد على التوجيه الديناميكي في الشبكات الكبيرة ذات احتمالات عديدة للطرق الشبكية المسلوكة من المصدر إلى الوجهة، وتُستخدَم بروتوكولات توجيه خاصة، كبروتوكول معلومات الموجه (Router Information Protocol [RIP])، الذي يتولَّى أمر التعديلات التلقائية في جداول التوجيه، مما يجعل من التوجيه الديناميكي أمرًا ممكنًا؛ وللتوجيه الديناميكي مزايا عدّة عن التوجيه الثابت، كإمكانية التوسع بسهولة، والتأقلم مع نقصان أو فشل معدات الشبكة خلال الطريق المسلوك في الشبكة، بالإضافة إلى الحاجة لإعداداتٍ قليلةٍ نسبيًا لجداول التوجيه، ﻷن الموجهات تعلم عن وجود وتوفر بعضها بعضًا؛ وهذه الطريقة تمنع حدوث مشاكل في التوجيه نتيجةً لخطأ بشري في جداول التوجيه. لكن التوجيه الديناميكي ليس كاملًا، ويأتي مع عيوب، كالتعقيد، والحِمل الزائد على الشبكة بسبب التواصل بين الموجهات، التي لا تفيد المستخدمين المباشرين فوريًا، وتستهلك التراسل الشبكي. بروتوكولَي TCP و UDP إن بروتوكول TCP هو بروتوكول مبني على الاتصال (connection-based)، ويوفر آليةً لتصحيح الأخطاء، وضمانةً لتسليم البيانات عبر ما يُعرَف بالمصطلح «التحكم في الجريان» (flow control)، يُحدِّد التحكم في الجريان متى يجب إيقاف نقل البيانات، وإعادة إرسال الرزم التي أُرسِلَت سابقًا والتي واجهة مشاكل كالتصادمات (collisions)؛ إذ أنَّ التأكيد على الوصول الدقيق والكامل للبيانات عبر بروتوكول TCP هو أمر جوهري في عملية تبادل البيانات المهمة كالتحويلات في قواعد البيانات. أما بروتوكول UDP (User Datagram Protocol) على الجهة الأخرى، هو بروتوكول عديم الاتصال (connectionless)، الذي نادرًا ما يتعامل مع عمليات نقل البيانات المهمة لأنه يفتقر إلى التحكم في جريان البيانات أو أيّة طريقة أخرى للتأكد من توصيل البيانات عمليًا؛ لكن بروتوكول UDP يُستخدَم استخدامًا شائعًا في التطبيقات كتدفق (streaming) الصوت والصورة، حيث أنه أسرع بكثير من TCP ﻷنه لا يحتوي على آليةٍ لتصحيح الأخطاء والتحكم في الجريان، وفي الأماكن التي لا يهم فيها فقدان بعض الرزم الشبكية كثيرًا. بروتوكول ICMP إن بروتوكول ICMP (Internet Control Messaging Protocol) هو إضافة إلى بروتوكول الإنترنت (IP) الذي يُعرَّف في RFC (Request For Comments) ذي الرقم #792 ويدعم التحكم في احتواء الرزم الشبكية والأخطاء ورسائل المعلومات، يُستخدَم بروتوكول ICMP بتطبيقات شبكيّة كأداة ping، التي تستطيع تحديد إذا ما كان جهازٌ ما متاحًا على الشبكة، أمثلة عن رسالة الخطأ المُعادَة من ICMP -التي تكون مفيدةً لمضيفي الشبكة وللأجهزة كالموجهات- تتضمن رسالتَي «Destination Unreachable» و «Time Exceeded». العفاريت العفاريت (Daemons) هي تطبيقات نظام خاصة التي تعمل عادةً عملًا دائمًا في الخلفية، وتنتظر طلبياتٍ للوظائف التي توفرها من التطبيقات الأخرى، يتمحور عمل العديد من العفاريت حول الشبكة، وبالتالي فإن عددًا كبيرًا من العفاريت التي تعمل في الخلفية في نظام أوبنتو تُوفِّر وظائف تتعلق بالشبكة؛ بعض الأمثلة عن عفاريت الشبكة تتضمن «عفريت بروتوكول نقل النص الفائق» (HyperText Transport Protocol Daemon [httpd])، الذي يوفر وظيفة خادوم الويب؛ و «عفريت الصدفة الآمنة» (Secure SHell Daemon [sshd])، الذي يوفر طريقةً للدخول الآمن عن بُعد وإمكانيات نقل الملفات؛ و «عفريت بروتوكول الوصول إلى رسائل الإنترنت» (Internet Message Access Protocol Daemon [imapd]) الذي يوفر خدمات البريد الإلكتروني... مصادر تتوفر صفحات دليلٍ لبروتوكولي TCP و IP التي تحتوي على معلومات قيمّة. راجع أيضًا المصدر الآتي من IBM: «TCP/IP Tutorial and Technical Overview». مصدرٌ أخرى هو كتاب «TCP/IP Network Administration» من O'Reilly. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Networking TCP/IP.
-
تتكون الشبكات من جهازين أو أكثر، كأنظمة الحواسيب والطابعات وغيرها من المعدات المتعلقة بها والتي يمكن أن تتصل إما باستخدام كبل فيزيائي أو بالروابط اللاسلكية؛ وذلك لمشاركة وتوزيع المعلومات بين الأجهزة المتصلة. يوفر هذا الدرس معلوماتٍ عامة وأخرى متخصصة تتعلق بالشبكات، وتتضمن لمحةً عن مفاهيم الشبكة، ونقاشًا مفصَّلًا عن بروتوكولات الشبكة الشائعة. تأتي أوبنتو مع عدد من الأدوات الرسومية لضبط أجهزة الشبكة، هذه السلسلة موجَّهة لمدراء الخواديم، وستركِّز على إدارة الشبكة من سطر الأوامر. بطاقات إيثرنتتُعرَّف بطاقات إيثرنت (Ethernet interfaces) في النظام باستخدام الاسم الاصطلاحي ethX، حيث تمثل X قيمةً رقميةً، وتُعرَّف أول بطاقة إيثرنت بالاسم eth0، والثانية بالاسم eth1، وهَلُّمَ جرًا للبقية، حيث تُرتَّب ترتيبًا رقميًا. التعرف على بطاقات إيثرنتيمكنك استخدام الأمر ifconfig كما يلي للتعرف على جميع بطاقات إيثرنت بسرعة: ifconfig -a | grep eth eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5aبرمجيةٌ أخرى تساعدك في التعرف على جميع بطاقات الشبكة المتوفرة في نظامك هي الأمر lshw؛ يُظهِر الأمر lshw في المثال الآتي بطاقة إيثرنت واحدة باسمها المنطقي eth0، مع معلومات الناقل (bus) وتفاصيل التعريف وكل الإمكانيات المدعومة: sudo lshw -class network *-network description: Ethernet interface product: BCM4401-B0 100Base-TX vendor: Broadcom Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: eth0 version: 02 serial: 00:15:c5:4a:16:5a size: 10MB/s capacity: 100MB/s width: 32 bits clock: 33MHz capabilities: (snipped for brevity) configuration: (snipped for brevity) resources: irq:17 memory:ef9fe000-ef9fffffالأسماء المنطقية لبطاقات إيثرنتتُعرَّف الأسماء المنطقية للبطاقات في الملف /etc/udev/rules.d/70-persistent-net.rules، إذا أردت التحكم في بطاقة التي ستحصل على اسم منطقي معين، فابحث عن السطر الذي يطابق عنوان MAC الفيزيائي للبطاقة، وعدِّل قيمة NAME=ethX إلى الاسم المنطقي المطلوب؛ أعد إقلاع النظام لتطبيق التغيرات التي أجريتها. إعدادات بطاقة إيثرنتإن ethtool هو برنامج يُظهِر ويعدِّل إعدادات بطاقة إيثرنت كالمفاوضة التلقائية (auto-negotiation)، وسرعة المنفذ، ونمط duplex (اتصال باتجاه وحيد، أم باتجاهين)، وخاصية الاستيقاظ عند وصول إشارة معينة من شبكة WoL (Wake-on-LAN)؛ هذا البرنامج غير مثبَّت افتراضيًا، لكنه متوفر في المستودعات للتثبيت: sudo apt-get install ethtoolما يلي مثالٌ عن عرض الميزات المدعومة، وضبط إعدادات بطاقة إيثرنت: sudo ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x000000ff (255) Link detected: yesالتغيرات التي أُجريت بالأداة ethtool هي تغيرات مؤقتة، وستزول بعد إعادة الإقلاع، إذا أردت الحفاظ على تلك الخيارات، فأضف أمر ethtool الذي تريده إلى عبارة pre-up (التي تُنفَّذ عند تهيئة البطاقة وقبل استخدامها)، في ملف الإعدادات /etc/network/interfaces. يوضح المثال الآتي كيف يمكن ضبط إعدادات بطاقة مُعرَّفة على أنها eth0 بسرعة منفذ تساوي 1000Mb/s وتعمل في نمط full duplex (اتصال باتجاهين): auto eth0 iface eth0 inet static pre-up /sbin/ethtool -s eth0 speed 1000 duplex fullملاحظة: على الرغم من أن المثال السابق يستخدم الطريقة «static»، إلا أنه يعمل مع الطرق الأخرى أيضًا، كاستخدام DHCP؛ فالغرض من المثال السابق هو توضيح المكان الصحيح لوضع عبارة pre-up في ملف إعدادات البطاقة وحسب. عناوين IPسيشرح القسم الآتي طريقة إعداد عناوين IP لنظامك، وضبط البوابة (gateway) الافتراضية اللازمة للتواصل على الشبكة المحلية والإنترنت. إسناد مؤقت لعنوان IPيمكن استخدام الأوامر القياسية عند الضبط المؤقت للشبكة، كالأمر ip و ifconfig و route التي يمكنك إيجادها في أغلب أنظمة تشغيل غنو/لينُكس؛ تسمح لك هذه الأوامر بضبط الإعدادات التي تأخذ حيز التنفيذ فوريًا، لكنها ليست دائمة؛ أي أنها لن تبقى مُفعَّلةً بعد إعادة التشغيل. لضبط عنوان IP مؤقتًا، استخدم الأمر ifconfig بالطريقة الآتية: لتعديل عنوان IP وقناع الشبكة الفرعية (subnet mask) لمطابقة متطلبات الشبكة: sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0للتأكد من ضبط عنوان IP للبطاقة eth0: ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a inet addr:10.0.0.100 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:466475604 errors:0 dropped:0 overruns:0 frame:0 TX packets:403172654 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2574778386 (2.5 GB) TX bytes:1618367329 (1.6 GB) Interrupt:16لضبط البوابة الافتراضية، يمكنك استخدام الأمر route بالطريقة الآتية: حيث عليك تغيير عنوان البوابة الافتراضية لمطابقة متطلبات شبكتك: sudo route add default gw 10.0.0.1 eth0يمكنك استخدام الأمر route بهذه الطريقة للتأكد من ضبط البوابة الافتراضية: route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0إذا كنت تحتاج إلى DNS لإعدادات شبكتك المؤقتة، فيمكنك إضافة عناوين IP لخواديم DNS في الملف /etc/resolv.conf، لكن ليس من المستحسن عمومًا تعديل الملف /etc/resolv.conf مباشرةً، لكن هذا ضبط مؤقت وغير دائم؛ يوضح المثال الآتي طريقة إضافة عناوين خادومَي DNS إلى ملف /etc/resolv.conf؛ التي يجب أن تُبدَّل إلى الخواديم الملائمة لشبكتك؛ شرحٌ مطول عن ضبط إعدادات عميل DNS سيأتي في القسم الآتي. nameserver 8.8.8.8 nameserver 8.8.4.4إذا لم تعد بحاجة لهذا الضبط وتريد مسح كل إعدادات IP من بطاقة معينة، فعليك استخدام الأمر ip مع الخيار flush كما يلي: ip addr flush eth0ملاحظة: عملية إزالة ضبط IP باستخدام الأمر ip لا تمسح محتويات ملف /etc/resolv.conf، فعليك حذف أو تعديل محتوياته يدويًا. إسناد ديناميكي لعنوان IP (عميل DHCP)لإعداد الخادوم لكي يستخدم DHCP لإسناد العنوان ديناميكيًا، فأضف الطريقة dhcp إلى عبارة «عائلة العنوان» (address family) في inet للبطاقة المطلوبة في ملف /etc/network/interfaces، يفترض المثال الآتي أنك تُعِدّ بطاقة إيثرنت الأولى المعرَّفة باسم eth0: auto eth0 iface eth0 inet dhcpبإضافة ضبط للبطاقة كما في المثال السابق، يمكنك أن تفعِّل البطاقة باستخدام الأمر ifup الذي يهيّء DHCP باستخدام dhclient. sudo ifup eth0لتعطيل البطاقة يدويًا، يمكنك استخدام الأمر ifdown، الذي بدوره يهيّء عملية الإطلاق (release) الخاصة بنظام DHCP، ويوقف عمل البطاقة. sudo ifdown eth0إسناد عنوان IP ثابتلإعداد نظامك لاستخدام عنوان IP ثابت، فاستخدم الطريقة static في عبارة «عائلة العنوان» في inet للبطاقة المطلوبة في ملف /etc/network/interfaces، يفترض المثال الآتي أنك تُعِدّ بطاقة إيثرنت الأولى المعرَّفة باسم eth0، عدِّل العنوان (address) وقناع الشبكة (netmask) والبوابة (gateway) إلى القيم التي تتطلبها شبكتك: auto eth0 iface eth0 inet static address 10.0.0.100 netmask 255.255.255.0 gateway 10.0.0.1بعد إضافة ضبط للبطاقة كما في المثال السابق، يمكنك أن تفعِّل البطاقة باستخدام الأمر ifup: sudo ifup eth0يمكنك استخدام الأمر ifdown لتعطيل البطاقة يدويًا: sudo ifdown eth0بطاقة loopbackإن بطاقة loopback (التي هي المضيف المحلي)، معرَّفة من النظام بالاسم lo، ولها عنوان IP الافتراضي 127.0.0.1، ويمكن أن تُعرَض باستخدام الأمر ifconfig: ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2718 errors:0 dropped:0 overruns:0 frame:0 TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:183308 (183.3 KB) TX bytes:183308 (183.3 KB)افتراضيًا، يجب أن يكون هنالك سطران في ملف /etc/network/interfaces مسؤولان عن ضبط بطاقة loopback تلقائيًا، ومن المستحسن أن تبقي على الإعدادات الافتراضية ما لم يكن لك غرضٌ محدد من تغييرها؛ مثال على السطرين الافتراضيين: auto lo iface lo inet loopbackاستبيان الأسماءإن استبيان الأسماء (Name resolution) الذي يتعلق بشبكات IP، هو عملية ربط عناوين IP إلى أسماء المضيفين، جاعلًا من السهل تمييز الموارد على الشبكة؛ سيشرح القسم الآتي كيف يُعَدّ النظام لاستبيان الأسماء باستخدام DNS، وسجلات أسماء المضيفين الثابتة (static hostname records). ضبط إعدادات عميل DNSتقليديًا، كان الملف /etc/resolv.conf ملف ضبطٍ ثابتٍ لا تحتاج لتعديله إلا نادرًا، أو كان يُعدَّل تلقائيًا عبر عميل DHCP؛ أما حاليًا فيمكن أن يُبدِّل الحاسوب بين شبكةٍ وأخرى من حين لآخر، وأصبح يُستخدَم إطار العمل resolvconf لتَتَبُّع هذه التغيرات وتحديث إعدادات استبيان الأسماء تلقائيًا؛ في الواقع هو وسيط بين البرامج التي توفر معلومات استبيان الأسماء، والتطبيقات التي تحتاج إلى تلك المعلومات. يُغَذَّى Resolvconf بالمعلومات عبر مجموعة من السكربتات التي تتعلق بإعدادات بطاقة الشبكة، الفرق الوحيد بالنسبة للمستخدم هي أن أيّة تعديلات حدثت على ملف /etc/resolv.conf ستُفقَد عندما تُعاد كتابته كل مرة يُشغِّل فيها حدثٌ ما resolvconf؛ فبدلًا من ذلك، يستخدم resolvconf عميل DHCP وملف /etc/network /interfaces لتوليد قائمة بخواديم الأسماء والنطاقات ليضعها في ملف /etc/resolv.conf، الذي هو الآن وصلةٌ رمزية (symlink): /etc/resolv.conf -> ../run/resolvconf/resolv.confلضبط استبيان الأسماء، أضف عناوين IP لخواديم الأسماء الملائمة لشبكتك في ملف /etc/network /interfaces، يمكنك إضافة قائمة بحث اختيارية للاحقة DNS (DNS suffix search-lists) لمطابقة أسماء نطاقات الشبكة، ولكل خيار ضبط resolv.conf صالح، يمكنك تضمين سطر واحد يبدأ باسم الخيار مع السابقة dns- مما ينتج ملفًا شبيهًا بالملف الآتي: iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com dns-nameservers 192.168.3.45 192.168.8.10يمكن أن يُستخدَم الخيار search مع عدِّة أسماء نطاقات، وستُلحَق طلبيات DNS في التسلسل الذي أُدخِلَت به؛ على سبيل المثال، ربما يكون لشبكتك نطاقات فرعية يجب البحث فيها؛ نطاق رئيسي «example.com»، ونطاقين فرعيين «sales.example.com»، و «dev.example.com». إذا كنت تريد البحث في عدِّة نطاقات فرعية، فسيكون ملف الضبط كالآتي: iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com sales.example.com dev.example.com dns-nameservers 192.168.3.45 192.168.8.10إذا كنت تحاول عمل ping للمضيف ذي الاسم server1، فسيطلب النظام تلقائيًا طلبية DNS لاسم النطاق الكامل (Fully Qualified Domain Name [FQDN])، في الترتيب الآتي: server1.example.comserver1.sales.example.comserver1.dev.example.comإذا لم يُعثَر على أيّة مطابقات، فسيزودنا خادوم DNS بنتيجة «notfound»، وستفشل طلبية DNS. أسماء المضيفين الثابتةيمكن تعريف أسماء ثابتة للمضيفين تربط بين اسم المضيف وعنوان IP في ملف /etc/hosts؛ المدخلات في ملف hosts ستسبق طلبيات DNS افتراضيًا، هذا يعني لو أن نظامك حاول تفسير اسم مضيف، وكان هذا الاسم يطابق مدخلةً في ملف /etc/hosts، فلن يحاول البحث في سجلات DNS؛ وفي بعض حالات الاستخدام -وخصوصًا عندما لا يُتَطَّلب الوصول إلى الإنترنت- يمكن أن تتعرف الخواديم الموصولة بعدد قليل من الموارد الشبكية على بعضها باستخدام أسماء المضيفين الثابتة بدلًا من DNS. المثال الآتي هو ملف hosts، حيث نجد عددًا من الخواديم المحلية قد عُرِّفَت بأسماء مضيفين بسيطة، وأسماءٍ بديلة، وأسماء النطاقات الكاملة المكافئة لها: 127.0.0.1 localhost 127.0.1.1 ubuntu-server 10.0.0.11 server1 vpn server1.example.com 10.0.0.12 server2 mail server2.example.com 10.0.0.13 server3 www server3.example.com 10.0.0.14 server4 file server4.example.comملاحظة: لاحظ أن كل خادوم من الخواديم في المثال السابق قد أُعطي أسماءً بديلةً بالإضافة إلى أسمائها الأساسية، وأسماء النطاقات الكاملة؛ حيت رُبِطَ server1 مع الاسم vpn، و server2 يُشار إليه بالاسم mail، و server3 بالاسم www، و server4 بالاسم file. ضبط تبديل خدمة الأسماءالترتيب الذي يتبّعه نظامك لاختيار طريقةٍ لتحويل أسماء المضيفين إلى عناوين IP مُتَحَّكَمٌ به من ملف إعدادات «مُبَدِّل خدمة الأسماء» (Name Service Switch [NSS]) الموجود في /etc/nsswitch.conf؛ وكما ذُكِرَ في القسم السابق، فإن أسماء المضيفين الثابتة المعرَّفة في ملف /etc/hosts تسبق استخدام سجلات DNS؛ المثال الآتي يحتوي على السطر المسؤول عن ترتيب البحث عن أسماء المضيفين في ملف /etc/nsswitch.conf: hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4files: المحاولة أولًا للحصول على العناوين من ملف أسماء المضيفين الثابتة في /etc/hosts.mdns4_minimal: محاولة الحصول على العناوين باستخدام Mulitcast DNS.[NOTFOUND=return]: تعني أن أي جواب يكون notfound أتى من عملية mdns4_minimal السابقة سيُعامَل بموثقية، ولن يحاول النظام الاستمرار في محاولة الحصول على جواب.dns: تمثل طلبية Unicast DNS قديمة.mdns4: تمثل طلبية Mulitcast DNS.لتعديل ترتيب طرائق استبيان الأسماء (name resolution) المذكورة آنفًا، يمكنك بكل بساطة تعديل قيمة عبارة «hosts» للقيمة التي تريدها؛ على سبيل المثال، لو كنت تفضل استخدام Unicast DNS القديم، بدلًا من Mulitcast DNS، فتستطيع تغيير تلك السلسلة النصية في ملف /etc/nsswitch.confكما يلي: hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4إنشاء الجسورإنشاء جسر (bridge) بين عدة بطاقات شبكية هو ضبط متقدم جدًا، لكنه مفيد كثيرًا في حالات عديدة، أحد تلك الحالات هو إنشاء جسر بين عدة اتصالات شبكية، ثم استخدام جدار ناري لترشيح (filter) ما يمر بين قسمين من الشبكة؛ حالةٌ أخرى هي استخدام إحدى البطاقات لتمكين «الآلات الوهمية» (Virtual Machines) من الوصول إلى الشبكة الخارجية؛ يشرح المثال الآتي الحالة الأخيرة. قبل ضبط إعدادات الجسر، عليك تثبيت حزمة bridge-utils، أدخِل الأمر الآتي في الطرفية لتثبيت هذه الحزمة: sudo apt-get install bridge-utilsثم اضبط الجسر بتعديل ملف /etc/network/interfaces: auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.0.10 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp offملاحظة: أدخِل القيم الملائمة لبطاقتك الفيزيائية، والشبكة عندك. ثم شغِّل بطاقة الجسر: sudo ifup br0يجب أن تعمل بطاقة الجسر تلقائيًا الآن، تُوفِّر الأداة brctl معلوماتٍ حول حالة الجسر، وتتحكم بالبطاقات التي تكوِّن جزءًا من الجسر؛ راجع صفحة الدليل man brctl لمزيد من المعلومات. مصادرهنالك وصلات في صفحة ويكي أوبنتو «Network» تشير إلى مقالات تشرح الضبط المتقدم جدًا للشبكة.صفحة الدليل الخاصة بالبرمجية resolvconf فيها بعض المعلومات عن resolvconf.صفحة دليل man interfaces تحتوي على تفاصيل عن خياراتٍ أخرى لملف /etc/network /interfaces.صفحة دليل man dhclient تحتوي على تفاصيل عن الخيارات الأخرى لضبط إعدادات عميل DHCP.للمزيد من المعلومات حول ضبط عميل DNS، راجع صفحة الدليل man resolver؛ راجع أيضًا الفصل السادس من الكتاب المنشور من O'Reilly: «Linux Network Administrator's Guide»؛ الذي هو مصدر جيد للمعلومات حول ضبط resolver، وخدمة الأسماء.لمزيد من المعلومات حول الجسور، راجع صفحة الدليل man brctl، وصفحة Networking-bridge في موقع مؤسسة لينُكس (Linux Foundation).ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Network Configuration.
-
- 1
-
- خادوم أوبنتو
- أوبنتو
-
(و 5 أكثر)
موسوم في:
-
توفر أوبنتو نظام إدارةَ حزمٍ شاملٍ للتثبيت والترقية والضبط وإزالة البرمجيات، بالإضافة إلى توفير الوصول إلى أكثر من 35000 حزمة برمجيات منظَّمة؛ وأيضًا من ميزات نظام إدارة الحزم حل مشاكل الاعتماديات، والتحقق من وجود تحديثات للبرمجيات. هنالك عدة أدوات متوفرة للتعامل مع نظام إدارة الحزم الخاص بأوبنتو، بدءًا من الأدوات البسيطة التي تعمل من سطر الأوامر، التي يمكن بسهولةٍ أتمتةُ عملها من مدراء النظام، ووصولًا إلى واجهة رسومية بسيطة تكون سهلةً على الوافدين الجدد لنظام أوبنتو. مقدمةأُشتُق نظام إدارة الحزم في أوبنتو من نفس النظام المستخدم في توزيعة دبيان غنو/لينُكس. تحتوي ملفات الحزم على جميع الملفات اللازمة، والبيانات الوصفية، والتعليمات لتشغيل وظيفة معينة أو برنامج محدد على حاسوبك العامل بنظام تشغيل أوبنتو. تكون لملفات حزم دبيان عادةً اللاحقة «.deb»، وتتواجد غالبًا في «مستودعات» (repositories)، التي هي مجموعات من الحزم الموجودة في وسائط مختلفة، كأقراص CD-ROM، أو على الإنترنت؛ تلك الحزم مُصرَّفة (compiled) مسبقًا إلى صيغة ثنائية في غالب الأحيان، لذلك يكون تثبيتها سريعًا، وبالتالي لا تحتاج لبناء البرمجية من المصدر. تَستخدم حزمٌ عديدةٌ معقدةٌ المصطلحَ «الاعتماديات» (dependencies)؛ الاعتماديات هي الحزم الإضافية التي تتطلبها حزمة رئيسية ﻷداة الوظيفة المطلوبة أداءً سليمًا؛ على سبيل المثال، حزمة تركيب الكلام المسماة festival تعتمد على حزمة libasound2، التي توفر مكتبة الصوت ALSA الضرورية لتشغيل الصوت، ولكي يعمل festival عملًا صحيحًا، يجب أن يُثبَّت هو وجميع اعتمادياته؛ حيث تُجري أدوات إدارة البرمجيات في أوبنتو ذلك تلقائيًا. الأداة dpkgdpkg هو مدير حزم للأنظمة المبينة على دبيان؛ حيث يمكنه تثبيت، وحذف، وبناء الحزم، ولكن على النقيض من بقية أنظمة إدارة الحزم، لا يمكنه أن يُنزِّل ويُثبِّت الحزم أو اعتمادياتها تلقائيًا؛ سيغطي هذا القسم استخدام dpkg لإدارة الحزم المثبتة محليًا: اكتب الأمر الآتي في الطرفية لعرض كل الحزم المثبتة على النظام: dpkg -lوبالاعتماد على عدد الحزم المثبتة على نظامك، يمكن أن يُولِّد الأمر السابق ناتجًا ضخمًا من البيانات؛ تستطيع تمرير الناتج عبر أنبوب للأداة grep لمعرفة فيما إذا كانت حزمة معينة قد ثُبِّتَت على النظام: dpkg -l | grep apache2استبدل اسم الحزم التي تريد البحث عنها، أو جزءًا منه، أو تعبيرًا نمطيًا (regular expression)، باسم الحزمة apache2. لعرض الملفات المثبتة بواسطة حزمة ما، في هذه الحالة حزمة ufw، فأدخِل الأمر: dpkg -L ufwإذا لم تكن متأكدًا أيّة حزمة قد ثبتت ملفًا ما، فالأمر dpkg -S سيخبرك ذلك، على سبيل المثال: dpkg -S /etc/host.conf base-files: /etc/host.confتُظهِر المخرجات أنَّ الملف /etc/host.conf ينتمي إلى الحزمة base-files. ملاحظة: العديد من الملفات تولَّد تلقائيًا أثناء عملية تثبيت الحزمة، وعلى الرغم من أن تلك الملفات موجودة في نظام الملفات، فقد لا يعلم dpkg -S أيّة حزمة تنتمي إليها تلك الملفات. بإمكانك تثبيت ملف حزمة .deb بالأمر الآتي: sudo dpkg -i zip_3.0-4_i386.debضع اسم ملف الحزمة التي تريد تثبيتها عندك بدلًا من zip_3.0-4_i386.deb. يمكن إلغاء تثبيت حزمة معينة باﻷمر: sudo dpkg -r zipتحذير: ليس من المستحسن في معظم الحالات إلغاء تثبيت الحزم باستخدام dpkg، من الأفضل استخدام مدير حزم يستطيع حل مشاكل الاعتماديات للتأكد من أن النظام في حالة «متينة»، فعلى سبيل المثال، استخدام dpkg -r zip سيحذف حزمة zip، لكن أيّة حزم تعتمد عليها ستبقى مثبتةً ولكنها لن تعمل بصورة صحيحة. للمزيد من خيارات dpkg، راجع صفحة الدليل man dpkg. الأداة Apt-Getإن الأداة apt-get هي أداة سطر أوامر مفيدة جدًا، إذ تتعامل مع «أداة التحزيم المتقدمة» (Advanced Packaging Tool [APT])، وتُنفِّذ مهامًا كتثبيت حزم البرمجيات الجديدة، وترقية الحزم البرمجية الموجودة، وتحديث فهرس قائمة الحزم، وحتى ترقية كامل نظام أوبنتو. كون هذه الأداة أداةً سطرية (أي تعمل من سطر الأوامر)، فإن للأداة apt-get مزايا كثيرةً تتميز بها عن غيرها من أدوات إدارة الحزم المتوفرة في أوبنتو لمدراء الخواديم، إحدى تلك المزايا هي سهولة الاستخدام في جلسات الطرفية البسيطة (عبر SSH)، وقابلية الاستخدام في سكربتات إدارة الأنظمة، التي يمكن أن تؤتمت باستخدام أداة جدولة المهام cron. بعض الأمثلة للاستخدامات الشائعة للأداة apt-get: تثبيت حزمةعملية تثبيت الحزم باستخدام أداة apt-get هي عمليةٌ سهلةٌ جدًا؛ فعلى سبيل المثال، اكتب الأمر الآتي لتثبيت حزمة ماسح الشبكة nmap: sudo apt-get install nmapحذف حزمةأيضًا عملية حذف حزمة (أو حزم) هي عملية مباشرة جدًا؛ فلحذف الحزمة التي ثبتناها في المثال السابق، فإننا نستخدم الأمر الآتي: sudo apt-get remove nmapتلميح: يمكنك تحديد أكثر من حزمة لتثبَّت أو تحذف، وذلك بتمرير أسماء تلك الحزم كوسائط للأمر apt-get مفصولةً بفراغات. إن إضافة الخيار --purge إلى الأمر apt-get remove سيجعل apt-get يحذف ملفات إعدادات الحزمة أيضًا، ربما يكون -أو لا يكون- هذا ما تريده؛ استخدم هذا الخيار بعد أخذ الحيطة والحذر. تحديث فهرس قائمة الحزمإن فهرس حزم APT هو قاعدة بيانات للحزم المتوفرة في المستودعات المعرَّفة في ملف /etc/apt/sources.list وفي مجلد /etc/apt/sources.list.d؛ فلتحديث فهرس الحزم المحلي والحصول على آخر التعديلات التي أُجريَت على المستودعات، فعليك تنفيذ الأمر الآتي: sudo apt-get updateالعمليات التي أجريت بواسطة الأداة apt-get، كتثبيت وحذف الحزم، ستُسجَّل في ملف السجل /var/log/dpkg.log. للمزيد من المعلومات حول استخدام APT، راجع «دليل مستخدم APT في دبيان»، أو اكتب: apt-get help الأداة Aptitudeسيعطيك تشغيل Aptitude دون خيارات سطر الأوامر واجهةً نصيةً لنظام التحزيم المتقدم (APT)، العديد من وظائف إدارة الحزم الشائعة، كالتثبيت، والحذف، والترقية يمكن إجراؤها في Aptitude بأمرٍ ذي حرفٍ واحد، الذي يكون عادةً بأحرفٍ ذاتُ حالةٍ صغيرة. يعمل Aptitude جيدًا في البيئات النصية التي تكون طرفياتٍ دون واجهة رسومية، لعدم حدوث تضارب في أزرار الأوامر؛ يمكنك بدء واجهة ذات قوائم من Aptitude بكتابة الأمر الآتي في مِحَث الطرفية: sudo aptitudeستشاهد شريط القائمة في أعلى الشاشة عندما يبدأ Aptitude، وجزأين تحته، يحتوي الجزء العلوي على تصنيفات الحزم، كالحزم الجديدة، والحزم غير المثبتة؛ وأما الجزء السفلي فيحتوي على معلومات تتعلق بالحزم وتصنيفاتها. عملية استخدام Aptitude لإدارة الحزم هي عملية مباشرة إلى حدٍ ما؛ وتجعلُ واجهةُ المستخدمِ من المهام الشائعة أمرًا هينًا ليقام به؛ ما يلي أمثلةٌ عن كيفية تنفيذ وظائف إدارة الحزم الأساسية في Aptitude: تثبيت الحزملتثبيت حزمة ما، حدِّد الحزمة في تصنيف «الحزم غير المثبتة»، وذلك باستخدام أزرار الأسهم في الحاسوب وزر Enter، علِّم على الحزم المُراد تثبيتها ثم اضغط على زر +، حيث سيتبدَّل لون مدخلة الحزمة إلى اللون الأخضر، مما يشير إلى أنها قد حُدِّدَت للتثبيت؛ اضغط الآن على الزر g لإظهار ملخص عن الأفعال التي ستُجرى على الحزم، اضغط على g مرةً أخرى، وسيُطلَب منك أن تصبح جذرًا لإكمال التثبيت، اضغط على Enter، وسيُطلَب منك إدخال كلمة المرور، أدخل كلمة المرور لتصبح جذرًا؛ في النهاية، اضغط على g مرةً أخرى، فستُسأل عن تنزيل تلك الحزمة اضغط على Enter للمتابعة، ثم ستُجرى عملية تنزيل وتثبيت الحزمة. حذف الحزملحذف حزمة ما، حدد الحزمة في تصنيف «الحزم المثبتة»، وذلك باستخدام أزرار الأسهم في الحاسوب وزر Enter، علِّم على الحزم المُراد حذفها ثم اضغط على زر -، حيث سيتبدَّل لون مدخلة الحزمة إلى اللون الوردي، مما يشير إلى أنها قد حُدِّدَت للحذف؛ اضغط الآن على الزر g لإظهار ملخص عن الأفعال التي ستُجرى على الحزم، اضغط على g مرةً أخرى، وسيطلب منك أن تصبح جذرًا لإكمال التثبيت، اضغط على Enter، وسيُطلب منك إدخال كلمة المرور، أدخل كلمة المرور لتصبح جذرًا؛ في النهاية، اضغط على g مرةً أخرى، واضغط على Enter للمتابعة، ثم ستُجرى عملية إزالة الحزمة. تحديث فهرس الحزملتحديث فهرس الحزم، اضغط ببساطة على الزر u، وستُسأل عمّا إذا كنت تريد أن تصبح جذرًا وتكمل التحديث، اضغط على Enter، وستُطالب بكلمة المرور، أدخل كلمة المرور لتصبح جذرًا، وسيبدأ تحديث فهرس الحزم؛ اضغط على Enter على زر OK في مربع الحوار الذي سيظهر عندما تنتهي عملية التنزيل. ترقية الحزملترقية الحزم، عليك أولًا تحديث فهرس الحزم كما وضِّح سابقًا، ثم اضغط على الحرف U لتحديد جميع الحزم التي لها تحديثات، اضغط الآن على الزر g حيث سيُعرَض لك ملخص عن الأفعال التي ستُجرى على الحزم، اضغط على g مرة أخرى، وسيُطلب منك أن تصبح جذرًا لإكمال التثبيت، اضغط على Enter، وستُطالب بكلمة المرور، أدخل كلمة مرور الجذر ثم اضغط على g مرة أخرى، وستُسأل عن تنزيل الحزم، اضغط على Enter للإكمال، وستبدأ عملية ترقية الحزم. العمود الأول من المعلومات الظاهر في الجزء العلوي في قائمة الحزم يعرض حالة الحزمة، المفاتيح الآتية تصف حالة الحزمة: i: الحزمة مثبتة.c: الحزمة غير مثبتة، لكن إعدادات الحزمة ما زالت باقيةً على النظام.p: حذفت الحزمة حذفًا كاملًا من النظام (هي وإعداداتها).v: حزمة ظاهرية (Virtual package).B: حزمة محطمة (Broken package).u: ملفات الحزمة قد فُكَّ ضغطها، لكن الحزمة لم تُعَدّ بعد.C: الحزمة نصف مضبوطة، أي أن الضبط قد فشل، ويلزمه إصلاح.H: الحزمة نصف مثبتة، فشل الحذف، ويلزمه إصلاح.للخروج من Aptitude، اضغط على حرف q، ووافق أنك تريد الخروج؛ يمكن الوصول لوظائف عديدة من وظائف Aptitude بالضغط على زر F10. استخدام Aptitude في سطر الأوامريمكنك استخدام Aptitude كأداةٍ سطرية (تعمل من سطر الأوامر) استخدامًا شبيهًا باستخدام apt-get؛ فلتثبيت حزمة nmap مع جميع الاعتماديات اللازمة، كما في مثال apt-get، فسنستخدم الأمر الآتي: sudo aptitude install nmapولحذف نفس الحزمة، سنستخدم الأمر: sudo aptitude remove nmapراجع صفحات الدليل man لمزيد من المعلومات حول الخيارات السطرية للأداة aptitude. التحديثات التلقائيةيمكن استخدام الحزمة unattended-upgrades لتثبيت تحديثات الحزم تلقائيًا، ويمكن ضبطها لتحديث كل الحزم، أو تثبيت التحديثات الأمنية فقط؛ لكن أولًا يجب تثبيت الحزمة بإدخال الأمر الآتي في الطرفية: sudo apt-get install unattended-upgradesلضبط unattended-upgrades، عدِّل مما يلي في ملف /etc/apt/apt.conf.d/50unattended-upgrades ليوافق ما تحتاج: Unattended-Upgrade::Allowed-Origins { "Ubuntu trusty-security"; // "Ubuntu trusty-updates"; };ويمكن أيضًا وضع بعض الحزم في «القائمة السوداء» مما يؤدي إلى عدم تحديثها تلقائيًّا؛ لإضافة حزمة ما إلى القائمة السوداء: Unattended-Upgrade::Package-Blacklist { // "vim"; // "libc6"; // "libc6-dev"; // "libc6-i686"; };ملاحظة: الإشارة «//» تعمل كتعليق (comment)، أي أن كل ما يتبع // لن يُفسَّر. لتفعيل التحديثات التلقائية، عدِّل ملف /etc/apt/apt.conf.d/10periodic واضبط إعدادات apt المناسبة: APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "7"; APT::Periodic::Unattended-Upgrade "1";الضبط السابق يُحدِّث فهرس الحزم ويُنزِّل ويُثبِّت جميع الترقيات المتوفرة كل يوم و«يُنظِّف» أرشيف التنزيل المحلي كل أسبوع. ملاحظة: يمكنك قراءة المزيد عن خيارات ضبط apt الزمنية في ترويسة سكربت /etc/cron.daily /apt. سيُسجَّل ناتج unattended-upgrades إلى ملف /var/log/unattended-upgrades. الإشعاراتضبط المتغير Unattended-Upgrade::Mail في ملف /etc/apt/apt.conf.d/50unattended-upgrades سيجعل unattended-upgrades يرسل بريدًا إلكترونيًا إلى مدير النظام يُفصِّل فيه الحزم التي تحتاج إلى ترقية، أو التي تتعرض لمشاكل. حزمة أخرى مفيدة هي apticron، التي تضبط عملًا مجدولًا (cron) لإرسال بريد إلكتروني لمدير النظام، يحتوي على معلومات حول أيّة حزم في النظام لها تحديثات متوفرة، وملخص عن التغيرات في كل حزمة. أدخِل الأمر الآتي في سطر الأوامر لتثبيت حزمة apticron: sudo apt-get install apticronبعد انتهاء تثبيت الحزمة، عدِّل الملف /etc/apticron/apticron.conf لضبط عنوان البريد الإلكتروني والخيارات الأخرى: EMAIL="root@example.com" الضبطالضبط الخاص بمستودعات أداة التحزيم المتقدمة (APT) مُخزَّنٌ في ملف etc/apt/sources.list/ ومجلد /etc/apt/sources.list.d، ستُذكَر معلومات عن طريقة إضافة أو إزالة المستودعات من الملف في هذا القسم. بإمكانك تعديل الملف لتفعيل المستودعات أو تعطيلها؛ على سبيل المثال، لتعطيل ضرورة إدراج القرص المضغوط الخاص بأوبنتو في كل مرة تُجرى فيها عملية على الحزم، فضع رمز التعليق قبل السطر الموافق لقرص CD-ROM، الذي يظهر في أول الملف: # no more prompting for CD-ROM please # deb cdrom:[Ubuntu 14.04 _Trusty Tahr_ - Release i386 (20111013.1)]/ trusty main restrictedمستودعات إضافيةبالإضافة إلى مستودعات الحزم الرسمية المدعومة المتوفرة لأوبنتو، هنالك مستودعات مصانة من المجتمع تمنحك إمكانية تثبيت الآلاف من الحزم الإضافية، أشهر اثنين منها هما مستودعا «Universe» و «Multiverse»، هذان المستودعان غير مدعومين من أوبنتو رسميًا؛ لكنهما مصانان من المجتمع، حيث يوفران حزمًا آمنة لاستخدامها على حاسوبك. ملاحظة: قد يكون في الحزم الموجودة في مستودع «Multiverse» مشاكلٌ في الترخيص مما يمنع من توزيعها مع نظام التشغيل الحر، وقد يكونون غير قانونيين في منطقتك. تحذير: لاحظ أن أيًّا من مستودعي «Universe» و «Multiverse» لا يحتويان حزمًا مدعومةً رسميًا من أوبنتو، وهذا يعني أنها قد لا تكون هنالك تحديثات أمنية لتلك الحزم. هنالك مصادر عديدة للحزم، وأحيانًا توفر تلك المصادر حزمةً واحدةً فقط، في هذه الحالة، تكون مصادر الحزمة موفرة من مطور تطبيق واحد؛ يجب أن تكون حذرًا جدًا عند استخدام مصادر غير قياسية للحزم؛ وعليك -على أي حال- البحث عن المصدر جيدًا قبل القيام بأية عملية تثبيت، فقد تجعل بعض تلك الحزم من النظام غير مستقرٍ أو لا يؤدي وظائفه في بعض الجوانب. تكون مستودعات «Universe» و «Multiverse» مفعَّلة افتراضيًا، لكن إذا أردت تعطيلها، فعدّل الملف /etc/apt/sources.list وضَعْ تعليقًا قبل الأسطر الآتية: deb http://archive.ubuntu.com/ubuntu trusty universe multiverse deb-src http://archive.ubuntu.com/ubuntu trusty universe multiverse deb http://us.archive.ubuntu.com/ubuntu/ trusty universe deb-src http://us.archive.ubuntu.com/ubuntu/ trusty universe deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates universe deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates universe deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse deb http://security.ubuntu.com/ubuntu trusty-security universe deb-src http://security.ubuntu.com/ubuntu trusty-security universe deb http://security.ubuntu.com/ubuntu trusty-security multiverse deb-src http://security.ubuntu.com/ubuntu trusty-security multiverseمصادرأغلبية المعلومات التي أُعطِيت في هذا الدرس موجودةٌ في صفحات الدليل، التي يتوفر كثير منها على الإنترنت: صفحة ويكي أوبنتو «InstallingSoftware» فيها بعض المعلومات.للمزيد من التفاصيل عن dpkg، راجع صفحة الدليل man dpkg.مقالة «APT HOWTO»، وصفحة الدليل man apt-get، توفر معلومات مفيدة عن كيفية استخدام apt-get.راجع صفحة الدليل man aptitude للمزيد من الخيارات الخاصة بأداة Aptitude.صفحة ويكي أوبنتو «Adding Repositories HOWTO» تحتوي معلومات مفيدة عن طريقة إضافة المستودعات.ترجمة -وبتصرف- للمقال Package Managment.
-
- 1
-
- apt
- ubuntu server
- (و 7 أكثر)
-
يشير تفريغ انهيار النواة (Kernel Crash Dump) إلى جزء من محتويات ذاكرة الوصول العشوائي غير الدائمة التي تُنسَخ إلى القرص عندما يتعرض تنفيذ النواة إلى اضطراب ما. الأحداث الآتية تسبب اضطراب النواة: ارتياع النواة (Kernel Panic).تقطعات غير مقنَّعة (Non Maskable Interrupts [NMI]).استثناءات تفحص الجهاز (Machine Check Exceptions [MCE]).عطب في العتاد.تدخل يدوي.لبعض تلك الأحداث (الارتياع، أو NMI)، سيكون رد فعل النواة تلقائيًا، وتُطلَق آلية تفريغ انهيار النواة عبر kexec، يلزم التدخلُ اليدوي في الحالات الأخرى للحصول على معلومات الذاكرة، وعندما تقع إحدى الأحداث السابقة، فيجب معرفة السبب الرئيسي للتمكن من تجنبه مستقبلًا؛ يمكن تحديد السبب بتفحص محتويات الذاكرة المنسوخة. آلية تفريغ انهيار النواةعندما يحدث ارتياع النواة، فإن النواة تعتمد على آلية kexec لتعيد الإقلاع بسرعة لنسخةٍ جديدةٍ من النواة في القسم المحفوظ من الذاكرة المحجوزة عندما أقلع النظام (انظر في الأسفل)، وهذا يسمح لمنطقة الذاكرة المتبقية أن تبقى دون أن تُلمَس لنسخها نسخًا آمنًا إلى وسيطة التخزين. التثبيتتُثبَّت أداة تفريغ انهيار النواة بالأمر الآتي: sudo apt-get install linux-crashdumpالضبطعدِّل الملف /etc/default/kdump-tool مضيفًا السطر الآتي: USER_KDUMP=1يجب إعادة إقلاع النظام بعد ذلك. التحققللتأكد من أن آلية تفريغ انهيار النواة مفعَّلة، فهنالك عدِّة أمور يجب التحقق منها، تأكد أولًا من أن مُعامِل الإقلاع crashkernel موجودٌ (لاحظ أن الأسطر الآتية قد قُسِّمَت لكي تظهر بشكلٍ سليم): cat /proc/cmdlineBOOT_IMAGE=/vmlinuz-3.2.0-17-server root=/dev/mapper/PreciseS-root ro crashkernel=384M-2G:64M,2G-:128Mلمعامل crashkernel الشكل العام الآتي: crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset] range=start-[end] 'start' is inclusive and 'end' is exclusive.لذا، لمعامل crashkernel الذي وجدناه في ملف /proc/cmdline، سيكون لدينا: crashkernel=384M-2G:64M,2G-:128Mالسطر السابق يعني الآتي: إذا كانت قيمة الذاكرة في النظام أقل من 384 ميغابايت، فلا تُبقي على شيء (هذه هي حالة «الإنقاذ» [rescue]).إذا كانت قيمة الذاكرة في النظام بين 384 ميغابايت و 2 غيغابايت (بما فيها 2 غيغابايت)، فحافظ على 64 ميغابايت.إذا كان حجم الذاكرة في النظام أكبر من 2 غيغابايت، فحافظ عندها على 128 ميغابايت.ثانيًا، يجب التأكد من أن النواة قد حافظت على مكان الذاكرة المطلوبة للأداة kdump باستخدام: dmesg | grep -i crash... [ 0.000000] Reserving 64MB of memory at 800MB for crashkernel (System RAM: 1023MB) اختبار آلية تفريغ انهيار النواةتحذير: سيؤدي اختبار آلية تفريغ انهيار النواة إلى إعادة إقلاع النظام، وقد يسبب ذلك فقدانًا للبيانات في بعض الأحيان إذا كان النظام تحت حِملٍ شديد؛ إذا أردت اختبار الآلية فتأكد من أن نظامك لا يجري أيّة عمليات مهمة، أو أنَّه تحت حمل خفيف جدًا. تأكد من أن آلية SysRq مُفعَّلة بالنظر إلى قيمة معامل النواة في /pro/sys/kernel/sysrq: cat /proc/sys/kernel/sysrqإذا أُعيدَت القيمة 0، فإن تلك الميزة معطلة، وعليك تنفيذ الأمر الآتي لتفعيلها: sudo sysctl -w kernel.sysrq=1بعد فعل ذلك، يجب أن تصبح المستخدم الجذر حيث لا يكفي استخدام sudo؛ وعليك تنفيذ الأمر التالي كمستخدم جذر: echo c > /proc/sysrq-trigger إذا كنت تستخدم اتصالًا شبكيًا، فستفقد تواصلك مع النظام ولهذا من الأفضل أن تختبر ذلك عندما تكون موصولًا للنظام عبر طرفية محلية، مما يجعل عملية تفريغ النواة ظاهرةً أمامك. إن ناتج فحصٍ عادي سيكون شبيهًا بما يلي: sudo -s [sudo] password for ubuntu: # echo c > /proc/sysrq-trigger [ 31.659002] SysRq : Trigger a crash [ 31.659749] BUG: unable to handle kernel NULL pointer dereference at (null) [ 31.662668] IP: [<ffffffff8139f166>] sysrq_handle_crash+0x16/0x20 [ 31.662668] PGD 3bfb9067 PUD 368a7067 PMD 0 [ 31.662668] Oops: 0002 [#1] SMP [ 31.662668] CPU 1 ....لقد اُقتطِعَت بقية السجل، لكن يجب أن تشاهد أن النظام قد أعيد إقلاعه في مكان ما في السجل، حيث سترى السطر الآتي: Begin: Saving vmcore from kernel crash ...عند الإكمال، سيُعاد تشغيل النظام لحالته الاعتيادية، وستجد ملف تفريغ انهيار النواة في مجلد /var/crash: ls /var/crash linux-image-3.0.0-12-server.0.crashمصادرتفريغ انهيار النواة هو موضوع واسع يتحاج إلى خبرات في نواة لينُكس، تستطيع إيجاد المزيد من المعلومات حول الموضوع في: توثيق kdumpالأداة crashمقالة «تحليل تفريغ انهيار نواة لينُكس» (هذه المقالة مبنية على فيدورا، لكنها تشرح تحليل تفريغ النواة جيدًا).ترجمة -وبتصرّف- لـ Kernel Crash Dump.
-
بعد أن تطرّقنا في الدّرس السّابق إلى كيفية تنصيب نسخة الخواديم من نظام أوبنتو إضافة إلى كيفية إعداد مُختلف تطبيقاته، سنستعرض في هذا المقال بعض الخصائص المُتقدّمة التي قد تحتاج إليها لدى تنصيبك للنّظام. RAID برمجيمصفوفة التعدد للأقراص المستقلة (Redundant Array of Independent Disks أو اختصارًا RAID) هي طريقة لاستخدام عدِّة أقراص صلبة لتوفير توازن بين زيادة مرونة ووثوقيّة تخزين البيانات، و/أو زيادة أداء القراءة والكتابة، وذلك بالاعتماد على مستوى RAID المطبَّق؛ ويمكن تطبيق RAID إما بطريقة برمجية (حيث يَعلم نظام التشغيل عن القرصين المستخدمين، ويصون العلاقة بينهما)، أو عن طريق العتاد (حيث يضاف متحكم خاص يجعل نظام التشغيل يعتقد أنه يتعامل مع قرص واحد، ويتحكم بالأقراص تحكمًا «خفيًا»). النسخة البرمجية من RAID الموجودة في الإصدارات الحالية من لينُكس (وأوبنتو) هي مبنية على محرك «mdadm» الذي يعمل عملًا ممتازًا، وحتى أنه أفضل من متحكمات RAID «الفيزيائية»؛ سيدلُّك هذا القسم على طريقة تثبيت نسخة الخادوم من أوبنتو باستخدام قسمَي RAID1 على قرصين صلبين منفصلين، واحد من أجل نظام ملفات الجذر (/)، والآخر لذاكرة التبديل (swap). التقسيماتَّبِع تعليمات التثبيت إلى أن تصل إلى خطوة تقسيم الأقراص، عندها: اختر طريقة التقسيم اليدوية.اختر القرص الصلب الأول، ووافق على «هل تريد إنشاء جدول تجزئة جديد وفارغ على هذا الجهاز؟» ، أعد هذه الخطوة لجميع الأجهزة التي تريدها أن تصبح جزءًا من مصفوفة RAID.اختر «المساحة المتاحة» في أول قرص، ثم حدد «إنشاء جزء [قسم] جديد».اختر بعدها المساحة التخزينية لهذا القسم، سيكون هذا القسم هو القسم الخاص بذاكرة التبديل، والقاعدة العامة لحجم ذاكرة التبديل هي أن تكون ضعف حجم ذاكرة الوصول العشوائي (RAM)، اختر المساحة التخزينية للقسم، ثم اختر «أولي»، ثم «في البداية» (مكان بدء القطاعات).ملاحظة: لا يُستحسَن دومًا أن يكون حجم ذاكرة التخزين ضعف حجم الذاكرة، وخصوصًا في الأنظمة التي تملك مقدارًا كبيرًا من الذاكرة، يتوقف حساب الحجم التخزيني لقسم ذاكرة التبديل على طريقة استخدام النظام.اختر سطر «طريقة الاستخدام» من الأعلى، الذي يكون افتراضيًا «نظام ملفات Ext4»، وغيرّه إلى «حجم فيزيائي لمصفوفة RAID» (أو «الكتلة الجسمية لـ RAID») ، ثم اختر «انتهى إعداد الجزء [القسم]».ولتهيئة قسم الجذر (/) فاختر «المساحة المتاحة» مرةً أخرى على القرص الصلب الأول، ثم اختر «إنشاء جزء [قسم] جديد».اختر ما تبقى من مساحة القرص التخزينية، ثم اضغط على متابعة، ثم «أولي».وكما في قرص ذاكرة التبديل، اختر «طريقة الاستخدام» ثم «حجم فيزيائي لمصفوفة RAID»، ثم اختر سطر «وسم إمكانية الإقلاع»، وغيرها إلى «ممكَّن»، ثم اختر «انتهى إعداد الجزء [القسم]».أعد تنفيذ الخطوات من ثلاثة إلى ثمانية للأقراص والأقسام الأخرى.إعداد RAIDبعد أن أُعِّدَت الأقسام، يمكن الآن ضبط المصفوفة: عد إلى صفحة «تقسيم الأقراص» الرئيسية، ثم اختر «تهيئة مصفوفة RAID البرمجية» في الأعلى.اختر «نعم» لكتابة التغيرات إلى القرص.اختر «إنشاء جهاز MD».لهذا المثال، اختر «RAID1»، لكن إن كنت تستخدم ضبطًا مختلفًا، فاختر النوع الملائم (RAID0، أو RAID1، أو RAID5). ملاحظة: ستحتاج إلى ثلاثة أقراص على الأقل لاستخدام RAID5، أما استخدام RAID0 أو RAID1، فيلزمك قرصان فقط.أدخِل رقم الأجهزة الفعالة (2)، أو مقدار الأقراص الصلبة التي عندك والتي ترغب باستخدامها في المصفوفة، ثم اختر «متابعة».أدخل رقم الأقراص البديلة (في حالة حدوث عطب في أحد الأقراص)، الذي هو «0» افتراضيًا، ثم اختر «متابعة».اختر الأقسام التي تريد استخدامها، عمومًا، ستكون sda1, sdb1, sdc1 ...إلخ. ستتطابق الأرقام غالبًا، وستختلف الأحرف للدلالة على اختلاف الأقراص الصلبة.لقسم ذاكرة التبديل، اختر sda1، و sdb1، ثم اختر «متابعة» للذهاب للخطوة الآتية.أعد الخطوات من ثلاثة إلى سبعة لقسم الجذر (/) باختيار sda2، و sdb2.بعد انتهائك من الضبط، اختر «إنهاء».التهيئةيجب أن تحصل الآن على قائمة بالأقراص الصلبة وأجهزة RAID، الخطوة الآتية هي التهيئة وإعداد نقاط الوصل لأجهزة RAID؛ عامل جهاز RAID كقرص صلب، هيِّئه وصِلْه كالمعتاد. اختر «#1» تحت قسم «RAID1 برمجي الجهاز #0».اختر «استخدام كـ»، ثم اختر «ذاكرة التبديل»، ثم «انتهى إعداد الجزء [القسم]».ثم اختر «#1» تحت قسم «RAID1 برمجي الجهاز #1».اختر «طريقة الاستخدام»، ثم اختر «نظام ملفات Ext4 سجلي».اختر «نقطة الوصل»، واضبطها على «/ - جذر نظام الملفات»، عدِّل الخيارات الأخرى كما تريد، ثم اختر «انتهى إعداد الجزء [القسم]».في النهاية، اختر «إنهاء التجزئة، وكتابة التغيرات إلى القرص».إذا اخترت وضع قسم الجذر في مصفوفة RAID، فسيسألك المثبت إذا كنت تريد الإقلاع بحالة «منخفضة» (degraded)، راجع القسم «مصفوفة RAID ذات الحالة المتدهورة (degraded state)» للمزيد من التفاصيل. يجب أن تُكمَل عملية التثبيت بشكلٍ اعتيادي. مصفوفة RAID ذات الحالة المتدهورة (degraded state)قد يحصل خلل في القرص في نقطة ما من حياة الحاسوب؛ وعندما يحصل ذلك وقت استخدام مصفوفة RAID برمجية، فسيضع نظام التشغيل المصفوفة في ما يدعى «الحالة المتدهورة» (degraded state). إذا أصبحت المصفوفة في الحالة المتدهورة -ربما لحدوث تلف في البيانات- فعندها تحاول نسخة الخادوم من أوبنتو افتراضيًا الإقلاع إلى initramfs بعد ثلاثين ثانية، وعندما يكتمل إقلاع initramfs، فسيظهر مِحَث لمدة خمس عشرة ثانية يسمح لك بالاختيار بين إقلاع النظام أو محاولة استرداده يدويًا؛ ربما لا يكون الإقلاع إلى محث initramfs هو السلوك المطلوب، وخصوصًا إن كان الحاسوب في مكان بعيد عنك. يمكن إعداد الإقلاع إلى مصفوفة متدهورة بعدة طرق: الأداة dpkg-reconfigure التي تستخدم لضبط السلوك الافتراضي؛ وستُسأل خلال العملية عن الخيارات الإضافية المتعلقة بالمصفوفة، كالمراقبة، وتنبيهات البريد ...إلخ. أدخِل الأمر الآتي لإعداد mdadm: sudo dpkg-reconfigure mdadmستغير عملية dpkg-reconfigure mdadm ملف الإعدادات /etc/initramfs-tools /conf.d/mdadm، لدى هذا الملف ميزة القدرة على الإعداد المسبق لسلوك النظام، ويمكن تعديله يدويًا: BOOT_DEGRADED=tureملاحظة: يمكن تجاوز ملف الإعدادات باستخدام وسيط يمرر للنواة. يَسمح استخدام وسيط يمرر للنواة لك أيضًا بإقلاع النظام من مصفوفة ذات الحالة المتدهورة كما يلي: عندما يقلع الخادوم، اضغط على Shift لفتح قائمة جروب (Grub).اضغط e لتعديل خيارات النواة.اضغط على زر السم السفلي لتعليم سطر النواة.أضف «bootdegraded=true» (دون علامات الاقتباس) إلى نهاية السطر.اضغط على Ctrl+x لإقلاع النظام.بعد أن يُقلِع النظام، تستطيع إما إصلاح المصفوفة (انظر قسم «صيانة مصفوفات RAID» للتفاصيل) أو نسخ المعلومات المهمة إلى جهاز آخر بسبب عطب في العتاد. صيانة مصفوفات RAIDيمكن أن تَعرِض الأداة mdadm حالة المصفوفة، أو تستطيع إضافة أو إزالة أقراص في المصفوفة ...إلخ. لإظهار حالة مصفوفة أقراص، فأدخِل الأمر الآتي إلى الطرفية: sudo mdadm -D /dev/md0الخيار -D يخبر mdadm أن يُظهِر معلوماتٍ تفصيلية حول الجهاز /dev/md0، استبدل مسار جهاز RAID المناسب بالمسار /dev/md0. لعرض حالة قرص في مصفوفة: sudo mdadm -E /dev/sda1ستُشابِه مخرجات الأمر السابق مخرجات الأمر mdadm -D؛ عدِّل /dev/sda1 لكل قرص من أقراص المصفوفة. إذا عُطِبَ قرصٌ ما، فيجب أن يُزال من المصفوفة: sudo mdadm --remove /dev/mo0 /dev/sda1بدِّل كلًّا من /dev/md0 و /dev/sda1 إلى جهاز RAID والقرص الملائمَين بالتوالي وبالترتيب. وبطريقة مشابهة، لإضافة قرص جديد: sudo mdadm --add /dev/md0 /dev/sda1يمكن أن تُبَدَّل حالة القرص في بعض الأحيان إلى «مُعَاب» (faulty)، حتى وإن لم يكن فيه خلل فيزيائي؛ من المفيد في كثير من الأحيان إزالة القرص من المصفوفة، ثم إعادة إضافته؛ وهذا ما يجعل القرص يُزامَن مرةً أخرى مع المصفوفة؛ وإذا لم يزامن القرص مع المصفوفة، فهذا دليلٌ قويٌ على وجود مشكلة فيزيائية فيه. يحتوي الملف /proc/mdstat على معلومات مفيدة حول حالة أجهزة RAID في النظام: cat /proc/mdstatPersonalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sda1[0] sdb1[1] 10016384 blocks [2/2] [UU] unused devices: <none>الأمر الآتي رائع لمشاهدة حالة مزامنة قرص: watch -n1 cat /proc/mdstatاضغط على Ctrl+c لإيقاف الأمر watch. إذا احتجت لاستبدال قرص معطوب، فيجب أن يعاد تثبيت محمل الإقلاع «جروب» (grub) مرةً أخرى بعد استبدال القرص المعطوب بالجديد ومزامنته؛ أدخِل الأمر الآتي لتثبيت «جروب» على القرص الجديد: sudo grub-install /dev/md0ضع اسم جهاز المصفوفة الملائم بدلًا من /dev/md0. مصادرإن موضوع مصفوفات RAID هو موضوع معقد نتيجةً لوفرة الطرق التي يمكن ضبط RAID فيها، رجاءً راجع الروابط الآتية لمزيدٍ من المعلومات: المقالات التي تتحدث عن RAID في ويكي أوبنتو. مقالة بعنوان «Software RAID HOWTO».كتاب «Managing RAID on Linux».مدير الحجوم المنطقية (LVM)يسمح مدير الحجوم المنطقية (Logical Volume Manager) لمدراء الأنظمة بإنشاء حجوم تخزينية على قرصٍ واحد أو أقراصٍ صلبة متعددة؛ ويمكن إنشاء حجوم LVM على أقسام في مصفوفة RAID أو على الأقسام الموجودة في قرص واحد، ويمكن أيضًا توسيع تلك الحجوم، مما يضيف مرونةً كبيرةً للنظام عندما تتغير المتطلبات التشغيلية. لمحة عامةتأثيرٌ جانبي لقوة ومرونة LVM هو درجة كبيرةٌ من التعقيد؛ ويجدر بنا التعرف على بعض المصطلحات قبل الخوض في عملية تثبيت LVM: الحجم الفيزيائي (PV): القرص الصلب الفيزيائي، أو قسم في قرص، أو قسم مصفوفة RAID برمجية؛ مهيئين للعمل كحجم LVM.مجموعة الحجوم (VG): التي تُصنَع من حجم فيزيائي واحد أو أكثر؛ ويمكن أن تُوسَّع مجموعة الحجوم بإضافة المزيد من الحجوم الفيزيائية، حيث تكون مجموعة الحجوم كقرص صلب وهمي (virtual disk drive)، الذي يُنشَأ منه المزيد من الحجوم المنطقية.حجم منطقي (LV): الذي يشبه القسم في الأنظمة الأخرى (التي ليست LVM)، حيث يُهيَّأ الحجم المنطقي بنظام الملفات المطلوب (Ext3، أو XFS، أو JFS ...إلخ.)، ويكون متوفرًا للوصل وتخزين البيانات.التثبيتسيشرح المثال في هذا القسم طريقة تثبيت نسخة الخادوم من أوبنتو مع وصل مجلد /srv على حجم LVM، إذ سيُضاف حجمٌ فيزيائيٌ (PV) واحدٌ فقط أثناء عملية التثبيت، والذي يمثِّل جزءًا من مجموعة الحجوم؛ وسيضاف حجم فيزيائي آخر بعد التثبيت لشرح كيف يمكن أن تُوسَّع مجموعة الحجوم. هنالك خياراتُ تثبيتٍ عدِّة لاستخدام LVM، الخيار الأول «موجّه - استخدام القرص بأكمله وإعداد LVM» الذي يسمح بإعطاء جزء من المساحة التخزينية المتوفرة لاستخدامها في LVM، والخيار الآخر «موجّه - استخدام القرص بأكمله وإعداد LVM مشفّر»، أو إعداد الأقسام وضبط LVM يدويًا؛ والطريقة الوحيدة لهذه اللحظة لإعداد النظام لاستخدام LVM والأقسام الاعتيادية أثناء التثبيت هو استخدام الطريقة اليدوية. اتَّبِع خطوات التثبيت إلى أن تصل إلى خطوة «تقسيم الأقراص»، عندها: في صفحة «تقسيم الأقراص»، اختر «يدويًا».اختر القرص الصلب، ثم في الشاشة التالية اختر «نعم» للرد على الرسالة «هل تريد إنشاء جدول تجزئة جديد وفارغ على هذا الجهاز؟».ثم أنشئ أقسام /boot، و swap، و / بأي نظام ملفات تريد.ولإنشاء /srv باستخدام LVM، فأنشئ قسمًا منطقيًا جديدًا، ثم غير «طريقة الاستخدام» إلى «حجم فيزيائي لتخزين LVM»، ثم اختر «انتهى إعداد الجزء [القسم]».اختر الآن «إعداد مدير الحجوم المنطقية» في الأعلى، ثم اختر «نعم» لكتابة التعديلات إلى القرص.والآن اختر «إنشاء مجموعة حجوم» في «إعدادات LVM» في الشاشة التالية، ثم اختر اسمًا لمجموعة الحجوم، وليكن vg01، أو أي شيء يصفها أكثر من ذلك؛ وبعد اختيار الاسم، اختر القسم المُعَدّ لاستخدام LVM عليه، ثم «متابعة».وبالعودة لصفحة «إعدادات LVM»، اختر «إنشاء حجم منطقي»، واختر مجموعة الحجوم المُنشَأة منذ قليل، وأدخل اسمًا للحجم المنطقي الجديد (على سبيل المثالsrv ﻷنه اسم نقطة الوصل المخطط لها) ثم اختر المساحة التخزينية، التي ستكون القسم بأكمله، لا تنسَ أنه يمكنك دائمًا زيادتها لاحقًا، ثم اختر «إنهاء» ويجب أن تعود لشاشة «تقسيم الأقراص».لإضافة نظام ملفات إلى LVM الجديد، اختر القسم تحت «LVM VG vg01, LV srv»، أو أي اسم قد اخترته في الخطوة السابقة، ثم اختر «طريقة الاستخدام»، واضبط نظام الملفات كالمعتاد باختيار /srv نقطةً للوصل، ثم اضغط على «انتهى إعداد الجزء [القسم]» عند الفراغ منه.في النهاية، اختر «إنهاء التجزئة وكتابة التغيرات إلى القرص»، ثم وافق على إجراء التغيرات، وأكمل عملية التثبيت.هذه بعض الأدوات المفيدة لعرض المعلومات حول LVM: الأمر pvdisplay: عرض معلومات حول الحجوم الفيزيائية.الأمر vgdisplay: عرض معلومات حول مجموعات الحجوم.الأمر lvdisplay: عرض معلومات حول الحجوم المنطقية.توسيع مجموعات الحجومبإكمال مثالنا المتعلق بحجم LVM واستخدامه كنقطة وصل لمجلد /srv، فسيناقش هذا القسم إضافة قرص صلب آخر، وإنشاء حجم فيزيائي (PV)، وإضافته إلى مجموعة الحجوم (VG)، وتوسيع الحجم المنطقي srv، ثم في النهاية توسيع نظام الملفات؛ يفترض هذا المثال أنَّ قرصًا صلبًا ثانيًا قد أُضيف إلى النظام، وفي هذا المثال، سيكون اسمه /dev/sdbوسنستخدم القرص بأكمله كحجمٍ فيزيائي (بإمكانك إنشاء أقسام واستخدامها كحجوم فيزيائية مختلفة). تحذير: تأكد أنه ليس لديك قرص صلب باسم /dev/sdbقبل تنفيذ الأوامر الآتية، قد تخسر بعض البيانات إذا نفَّذت هذه الأوامر على قرص غير فارغ. أولًا، أنشِئ الحجم الفيزيائي بتنفيذ الأمر الآتي في الطرفية: sudo pvcreate /dev/sdbوسِّع الآن مجموعة الحجوم (VG): sudo vgextend vg01 /dev/sdbاستخدم vgdisplay لمعرفة الامتدادات الفيزيائية أو PE (physical extents)، التي هي الامتدادات الفيزيائية الحرة / الحجم (الحجم التخزيني الذي حددته)، سنعتبر أن المساحة الفارغة هي 511 PE (مما يساوي2 غيغابايت إذا كان حجم PE هو 4 ميغابايت)، وسنستخدم كل المساحة الفارغة المتاحة، لا تنسَ استخدام رقم PE -أو الحجم التخزيني الحر- المتوفر عندك. يمكن توسيع الحجم المنطقي بعدِّة طرق، وسنشرح كيف يمكن استخدام PE لتوسعة حجم منطقي: sudo lvextend /dev/vg01/srv -l +511إن الخيار -l يسمح بتوسعة الحجم المنطقي باستخدام PE، يسمح الخيار -L للحجم المنطقي بأن يُوسَّع باستخدام الميغا، أو الغيغا، أو التيرابايت ...إلخ. حتى وإن كان من المفترض أنه باستطاعتك توسيع نظام ملفات ext3 أو ext4 دون فصله أولًا، لكن من العادات الجيدة فصله على أيّة حال وتفحص نظام الملفات؛ وبهذا لن تخرِّب شيئًا في اليوم الذي تريد فيه تقليل الحجم المنطقي (إذ يكون فصل نظام الملفات في هذه الحالة إلزاميًا). الأوامر الآتية ﻷنظمة الملفات EXT3 أو EXT4، إذا كنت تستخدم أنظمة ملفات أخرى، فتتوفر أدوات مختلفة: sudo umount /srv sudo e2fsck -f /dev/vg01/srvالخيار -f يجبر الأداة e2fsck على تفحص نظام الملفات وإن كان يبدو «نظيفًا». في النهاية، غيِّر حجم نظام الملفات: sudo resize2fs /dev/vg01/srvثم صِل نظام الملفات وتأكد من حجمه التخزيني: mount /dev/vg01/srv /srv && df -h /srvمصادرراجع المقالات حول LVM في ويكي أوبنتو.انظر مقالة LVM HOWTO للمزيد من المعلومات.مقالة أخرى جيدة هي «Managing Disk Space with LVM» في موقع O'Reilly المدعو linuxdevcenter.com.للمزيد من المعلومات حول fdisk، انظر صفحة الدليل الخاصة به.رجمة -وبتصرّف- للمقال Ubuntu Server Guide: Advanced Installation.
-
أهلًا بك في سلسلة دليل إدارة خواديم أوبنتو! ستجد هنا معلوماتٍ حول تثبيت وإعداد مختلف تطبيقات الخادوم؛ توضِّح هذه السلسلة طريقة إجراء المهام لتهيئة وتخصيص نظامك خطوةً بخطوة. قبل أن نبدأ. ستجد خلال هذه السّلسلة إشارات من قبيل: "راجع القسم [اسم القسم]". يُقصد بذلك أقسام إما في نفس المقال (واصل قراءة المقال لتصله) أو في مقال آخر (إما سبق نشره أو سيُنشر لاحقًا) في نفس السّلسلة. يوفر هذا الدرس لمحةً عامةً سريعةً عن تثبيت نسخة الخادوم من أوبنتو 14.04، للمزيد من المعلومات المفصَّلة، رجاءً راجع «دليل تثبيت أوبنتو». التحضير للتثبيتيشرح هذا القسم النواحي المختلفة التي يجب أن تؤخذ بعين الاعتبار قبل البدء بالتثبيت. متطلبات النظامتدعم نسخة الخادوم من أوبنتو 14.04 ثلاث معماريات رئيسية: إنتل x86، و AMD64، و ARM؛ يعرض الجدول الآتي مواصفات العتاد المستحسنة؛ لكن اعتمادًا على استخدامك للنظام، ربما يمكنك تشغيل النظام بأقل من هذه المواصفات، لكن لا ينصح أبدًا بتجاهل هذه الاقتراحات. الجدول 2-1: مواصفات العتاد المستحسنة table{border-collapse: collapse;} td, th, table{border: 1px solid black;} نوع التثبيت المعالج الذاكرة العشوائية مساحة القرص الصلب أساس النظام جميع المهام مثبتة خادوم (قياسي) 1 غيغاهرتز 512 ميغابايت 1 غيغابايت 1.75 غيغابايت خادوم (الحد الأدنى) 300 ميغاهرتز 192 ميغابايت 700 ميغابايت 1.4 غيغابايت توفر نسخة الخادوم أساسًا مشتركًا لجميع أنواع برمجيات الخادوم، حيث تمثل تصميمًا مصغرًا يوفر منصةً للخدمات المطلوبة، كخدمات مشاركة الملفات أو الطابعات، أو استضافة مواقع الويب، أو البريد الإلكتروني ...إلخ. الاختلافات بين نسختي الخادوم وسطح المكتبهنالك بعض الاختلافات بين نسخة الخادوم وسطح المكتب في أوبنتو، عليك أن تلحظ أن كلا النسختين تَستخدمان مستودعات apt نفسها، مما يجعل من السهل تثبيت تطبيق من تطبيقات الخادوم على نسخة سطح المكتب، وكذلك هو الحال في نسخة الخادوم. تكمن الاختلافات بين النسختين في عدم وجود بيئة النوافذ X في نسخة الخادوم، بالإضافة إلى عملية التثبيت، وخيارات النواة المختلفة. اختلافات النواةفي أوبنتو 10.10 وما قبلها، كان لنسختي الخادوم وسطح المكتب أنوية مختلفة؛ لكن أوبنتو لم تعد تفصل الأنوية الخاصة بالخواديم والأنوية الشاملة (generic)، حيث دمجتا في نواة شاملة واحدة لتقليل عبء صيانة النواة طوال فترة دعم الإصدارة. ملاحظة: عندما تُشغِّل نسخة 64 بت من أوبنتو على معالجات 64 بت، فلن تكون محدودًا بسعة عناوين الذاكرة. لرؤية جميع إعدادات خيارات النواة، تستطيع أن تلقي نظرةً على /boot/config-3.13.0-server، وأيضًا على كتاب «Linux Kernel in a Nutshell» الذي هو مصدر رائع للمعلومات حول الخيارات المتوفرة. النسخ الاحتياطييجدر بك قبل تثبيت نسخة الخادوم من أوبنتو أن تتأكد أنَّ جميع البيانات على الخادوم قد نُسِخَت احتياطيًا، وسنفصِّل النسخ الاحتياطي في درسٍ لاحق. إذا لم تكن هذه أول مرة يُثبَّت فيها نظام تشغيل على حاسوبك، فربما عليك إعادة تقسيم القرص الصلب لإيجاد مساحة فارغة لتثبيت أوبنتو عليها. في أي وقت تعيد فيه تقسيم قرصك الصلب، كن مستعدًا لأن تخسر جميع البيانات عليه في حال ارتكبت خطأً أو حدث شيء ما بشكل خاطئ أثناء التقسيم؛ وذلك على الرغم من أنَّ البرامج المستخدمة في التثبيت عملية جدًا وثابتة ومَرَّت عليها سنواتٌ من الاستخدام، لكنها تقوم بأمورٍ مُدمِّرة! التثبيت من قرص مضغوطالخطوات الأساسية لتثبيت نسخة الخادوم من قرص مضغوط هي نفس الخطوات لتثبيت أي نظام تشغيل من قرص مضغوط؛ وعلى النقيض من نسخة سطح المكتب، لا تحتوي نسخة الخادوم على نظام تثبيت رسومي؛ حيث تَستخدِم نسخة الخادوم واجهةً نصيةً عوضًا عنها. بدايةً، نزِّل واحرق ملف ISO الملائم من موقع أوبنتو الرسمي.أقلع النظام من قارئة الأقراص المضغوطة.سيُطلَب منك تحديد اللغة في مِحَث الإقلاع (boot prompt).هنالك بعض الخيارات الإضافية لتثبيت نسخة الخادوم من أوبنتو الموجودة في قائمة الإقلاع الرئيسية، يمكنك تثبيت خادوم أوبنتو أساسي، أو تفحص قرص CD-ROM والتأكد من خلوه من الأعطاب، أو التحقق من ذاكرة النظام (RAM)، أو الإقلاع من القرص الصلب الأول، أو إصلاح نظام معطوب؛ ستناقش بقية هذا القسم كيفية تثبيت خادوم أوبنتو أساسي. يسأل المثبت عن اللغة التي سيستخدمها، وبعد ذلك سيُطلَب منك أن تختار موقعك.الخطوة التالية هي سؤالك عن تحديد تخطيط لوحة المفاتيح الخاصة بك، يمكنك أن تطلب من المثبت أن يحاول أن يحددها لك، أو بإمكانك اختيارها يدويًا من القائمة.ثم سيكتشف المثبت إعدادات العتاد لديك، ثم سيحاول ضبط إعدادات الشبكة باستخدام DHCP، إذا لم تُرِد استخدام DHCP في الشاشة التالية، فاختر «رجوع»، حيث تستطيع الوصول إلى الخيار «هيّء الشبكة يدويًّا».سيُعَدّ مستخدمٌ جديد، وسيحصل هذا المستخدم على امتيازات الجذر باستخدام الأداة sudo.بعد إكمال إعدادات المستخدم، ستُسأل عمّا إذا أردت تشفير مجلد المنزل.سيسألك المثبت في الخطوة التالية عن اسم المضيف (hostname)، ومنطقة التوقيت.ثم بإمكانك الاختيار بين عدِّة خيارات لضبط تخطيط القرص الصلب، بعد ذلك ستُسأل عن القرص الذي تريد تثبيت النظام عليه، ستحصل على نوافذ للتأكيد قبل أن تعيد كتابة جدول الأقسام أو قبل إعداد LVM اعتمادًا على تخطيط القرص الصلب؛ إذا اخترت LVM، فستُسأل عن حجم القسم الجذر المنطقي؛ لخيارات الأقراص المتقدمة، راجع القسم «التثبيت المتقدم». سيُثبَّت بعد ذلك نظام أوبنتو الأساسي. الخطوة الآتية في عملية التثبيت هي تقرير كيفية تحديث النظام، حيث هناك ثلاثة خيارات: بدون تحديثات تلقائية: وهذا ما يتطلب من المدير أن يسجل الدخول إلى الحاسوب ويثبت التحديثات يدويًا.تثبيت التحديثات الأمنية تلقائيًا: وهذا ما سيثبت حزمة unattended-upgrades، التي ستُثبِّت التحديثات الأمنية دون تدخل من المدير؛ لمزيدٍ من المعلومات، راجع القسم «التحديثات التلقائية».إدارة النظام باستخدام Lanscape: إن Lanscape هو خدمة مدفوعة من كانوكيال لتسهيل إدارة الأجهزة العاملة بنظام أوبنتو؛ راجع موقع Landscape للتفاصيل.تملك الآن الخيار لتثبيت، أو عدم تثبيت، العديد من مجموعات الحزم؛ راجع القسم «مجموعات الحزم» لمزيد من التفاصيل. وهنالك أيضًا خيار لتشغيل aptitude لاختيار الحزم التي تريد تثبيتها، للمزيد من المعلومات، انظر القسم «الأداة Aptitude». في النهاية، آخر خطوة قبل إعادة الإقلاع هي ضبط الساعة على توقيت UTC (التوقيت العالمي). ملاحظة: إذا لم تكن راضيًا عن الإعدادات الافتراضية في أيّة مرحلة من مراحل التثبيت، فاستخدم خاصية «رجوع» الظاهرة في أيّة نافذة لكي تذهب لقائمة التثبيت المفصلة، التي تسمح لك بتعديل الإعدادات الافتراضية. ربما احتجت في نقطة ما أثناء عملية التثبيت إلى قراءة صفحة المساعدة التي يزودها نظام التثبيت، عندئذٍ اضغط على F1. مرةً أخرى، راجع «دليل تثبيت أوبنتو» للحصول على تعليمات تفصيلية. مجموعات الحزملديك خلال عملية تثبيت نسخة الخادوم خيارٌ لتثبيت حزم إضافية من القرص المضغوط، تُجَمَّع هذه الحزم بواسطة نوع الخدمة التي توفرها. خادوم DNS: تُحدِّد هذه المجموعة خادوم BIND DNS وتوثيقه.خادوم LAMP: تُحدِّد الحزم اللازمة لخادوم Linux-Apache-MySQL-PHP.خادوم Mail: هذه المجموعة تُحدِّد حزمًا متنوعة مفيدة لخادوم بريد ذي غرضٍ عام.خادوم OpenSSH: تحدد الحزم التي يحتاج خادوم OpenSSH لوجودها.قاعدة بيانات PostgreSQL: هذه المجموعة تحدد حزم العميل والخادوم لقواعد بيانات PostgreSQL.خادوم طباعة: تُهيِّء هذه المجموعة نظامك ليكون خادوم طباعة.خادوم ملفات سامبا: تُهيِّء هذه المجموعة نظامك ليكون خادوم ملفات سامبا (Samba File Server)، الذي يفيد خصوصًا في الشبكات التي فيها أنظمة ويندوز ولينُكس معًا.خادوم جافا «تومكات»: تُثبِّت هذه المجموعة خادوم «Apache Tomcat»، والاعتماديات اللازمة لعمله.مضيف آلات وهمية: تتضمن الحزم اللازمة لتشغيل آلات وهمية تعتمد على KVM.تحديد الحزم يدويًا: تنفيذ aptitude مما يسمح لك باختيار الحزم فرادى يدويًا.تُثبَّت مجموعات الحزم باستخدام الأداة tasksel، أحد أهم الفروقات بين أوبنتو (أو دبيان) وغيرها من توزيعات غنو/لينُكس هي أن الحزم عندما تُثبَّت فإنها تُضبَط ضبطًا منطقيًا، وتسألك في بعض الأحيان عن المعلومات الإضافية المطلوبة؛ وبشكل مشابه، عند تثبيت مجموعة حزم فإن الحزم لا تثبت فقط بل تُعَدّ أيضًا لتوفير خدمة مندمجة جيدًا مع بعضها بعضًا. تستطيع مشاهدة قائمة بمجموعات الحزم المتوفرة بإدخال الأمر الآتي في مِحَث الطرفية بعد أن تنتهي عملية التثبيت: tasksel --list-tasksملاحظة: سيُعرَض أيضًا في الناتج مجموعات الحزم من التوزيعات الأخرى المبينة على أوبنتو، مثل كوبنتو (Kubuntu)، وايديوبونتو (Edubuntu)، لاحظ أيضًا أنك تستطيع استدعاء الأمر tasksel لوحده، الذي سيعرض لك قائمةً بمختلف مجموعات الحزم المتوفرة. تستطيع معرفة الحزم المثبتة مع أي مجموعة باستخدام الخيار --task-packages؛ على سبيل المثال، لعرض الحزم المثبتة مع مجموعة الحزم الخاصة بخادوم DNS، فإننا ندخل الأمر الآتي: tasksel --task-packages dns-serverيجب أن يكون ناتج الأمر السابق: bind9-doc bind9utils bind9إذا لم تُثبِّت أيّة مجموعة حزم أثناء عملية التثبيت، لكنك مثلًا قررت أن تجعل خادوم LAMP الجديد عندك خادوم DNS أيضًا، فبإمكانك ببساطة إدراج قرص التثبيت وتنفيذ الأمر الآتي من الطرفية: sudo tasksel install dns-serverالترقيةهنالك عدة طرق للترقية من إصدارة أوبنتو لأخرى، سيعطيك هذا القسم لمحةً عن طريقة الترقية المستحسنة. الأداة do-release-upgradeالطريقة المستحسنة لترقية نسخة الخادوم هي استخدام الأداة do-release-upgrade، التي هي جزءٌ من حزمة update-manager-core، وليس لديها أيّة اعتماديات رسومية، وهي مثبَّتة تلقائيًا. يمكن تحديث الأنظمة المبينة على دبيان باستخدام الأمر apt-get dist-upgrade، لكن استخدام الأداة do-release-upgrade مستحسن ﻷن بإمكان تلك الأداة التعامل مع التغيرات في ضبط النظام، الذي قد يكون لازمًا في بعض الأحيان بين الإصدارات. اكتب الأمر الآتي في مِحَث الطرفية للترقية إلى إصدارة أحدث: do-release-upgradeمن الممكن استخدام do-release-upgrade للترقية إلى إصدارة تطويرية من أوبنتو، أضف الخيار -d لفعل ذلك: do-release-upgrade -dتحذير: التحديث إلى إصدارة تطويرية هو أمر غير مستحسن في البيئات الإنتاجية. ترجمة وبتصرّف لـ: Preparing to InstallInstalling from CDUpgradingمن الدّليل الرّسمي لتنصيب أوبنتو على الخواديم.
-
من المرغوب عادةً عند الانتقال من خادوم إلى آخر أن تُنقَل قواعد الجدار الناري 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.
-
إن 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.
-
إن UFW، أو Uncomplicated Firewall (الجدار الناري غير المعقَّد)، هو واجهة للجدار الناري iptables الذي يجنح لتبسيط عملية ضبط جدار ناري؛ وعلى الرغم من أنَّ iptables هو أداةٌ قويةٌ ومرنة، لكن قد يكون من الصعب على المبتدئين أن يتعلموا استخدامه ليضبطوا جدارًا ناريًا ضبطًا سليمًا. إذا كنت تطمح إلى أن تبدأ بتأمين شبكتك، ولكنك لست متأكدًا من أيّ أداةٍ ستختار، فربما يكون UFW هو الخيار المناسب لك. سيريك هذا الدرس كيفية ضبط جدارٍ ناريٍ في أوبنتو 14.04 بوساطة UFW. المتطلبات المسبقةقبل أن تبدأ في تطبيق هذا الدرس، يجب أن تملك حسابَ مستخدمٍ ليس جذرًا لكنه يستطيع الحصول على امتيازات الجذر عبر الأمر sudo. يمكنك تعلم كيف يتم ذلك عبر تطبيق الخطوات من 1 إلى 3 على الأقل في درس الإعداد الابتدائي لخادوم أوبنتو 14.04. يكون UFW مُثبَّتًا افتراضيًا في أوبنتو؛ إذا ألغي تثبيته لسببٍ ما، فيمكنك إعادة تثبيته باستخدام الأمر: sudo apt-get install ufw استخدام IPv6 مع UFWإذا كان IPv6 مفعّلًا على خادومك، فتأكد أن UFW مضبوطٌ لدعم IPv6 كي تستطيع إدارة قواعد الجدار الناري الخاصة بعناوين IPv6 بالإضافة إلى IPv4؛ ولفعل ذلك، عدِّل ضبط UFW بمحررك النصي المفضّل؛ سنستخدم nano هنا: sudo nano /etc/default/ufw تأكد من أن قيمة «IPV6» مساويةٌ للقيمة «yes»؛ إذ يجب أن يبدو الملف كما يلي: /etc/default/ufw excerpt … IPV6=yes … احفظ واخرج، اضغط Ctrl-X للخروج من الملف، ثم Y لحفظ التعديلات التي أجريتها، ثم اضغط Enter لتأكيد اسم الملف. عندما يفعَّل UFW، فسيُضبَط لكتابة قواعد جدار ناري لعناوين IPv4 و IPv6. كُتِبَ هذا الدرس مع أخذ IPv4 بعين الاعتبار، لكنه قابل للتطبيق على IPv6 طالما كنت مفعِّلًا إياه. التحقق من حالة وقواعد UFWفي أي وقتٍ تريد، تستطيع التحقق من حالة UFW باستخدام هذا الأمر: sudo ufw status verbose افتراضيًا، يكون UFW معطّلًا لذلك سيظهر عندك شيءٌ شبيهٌ بما يلي: Status: inactive إذا كان UFW مفعّلًا، فسيخبرك الناتج ذلك، وسيُظهِر أيّة قواعد قد ضُبِطَت؛ على سبيل المثال، إذا ضُبِطَ الجدار الناري للسماح بالاتصالات من أيّ مكانٍ إلى SSH (المنفذ 22)، فسيكون الناتج شيئًا شبيهًا بما يلي: Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhereيمكنك استخدام الأمر status في أي وقتٍ إذا أردت أن تعرف كيف ضَبَطَ UFW الجدارَ الناري. قبل تفعيل UFW، ربما تريد أن تتأكد أن جدارك الناري مضبوطٌ للسماح لك بالاتصال عبر SSH. لنبدأ بضبط السياسات الافتراضية (default policies). ضبط السياسات الافتراضيةإذا كنت قد بدأت لتوِّك مع جدارك الناري، فإن أولى القواعد التي عليك تعريفها هي السياسات الافتراضية؛ تتحكم هذه القواعد بطريقة معالجة البيانات الشبكية التي لم تُطابَق بدقّة مع أيّة قواعد أخرى؛ افتراضيًا، UFW مضبوطٌ لمنع جميع الاتصالات الواردة والسماح لكل الاتصالات الصادرة. هذا يعني أن أي شخصٍ يحاول أن يصل إلى خادومك السحابي لن يستطيع الاتصال، بينما يستطيع أيُ تطبيقٍ على خادومك أن يصل إلى «العالم الخارجي». لنرجع الضبط الافتراضي لقواعد UFW لكي نتأكد أنك تستطيع الإكمال مع هذا الدرس؛ استخدم الأمرين الآتيين لإعادة ضبط القيم الافتراضية المُستخدَمة من UFW: sudo ufw default deny incoming sudo ufw default allow outgoing وكما توقّعتَ، يعيد الأمران السابقان ضبط UFW إلى القيم الافتراضية بمنع الاتصالات الواردة والسماح للاتصالات الصادرة؛ قد تكون هذه القيم الافتراضية كافيةً للحواسيب الشخصية لكن تحتاج الخواديم إلى الرد على الطلبيات (requests) القادمة من المستخدمين الخارجيين؛ سنلقي نظرةً على ذلك لاحقًا. السماح لاتصالات SSHإذا فعّلنا جدار UFW الآن، فسيحجب جميع الاتصالات الواردة؛ هذا يعني أننا سنحتاج إلى إنشاء قواعد تسمح (وبدقّة) للاتصالات الشرعيّة (مثل اتصالات SSH أو HTTP) إذا أردنا أن يجيب خادومنا إلى ذاك النوع من الطلبيات؛ إذا كنت تستخدم خادومًا سحابيًا، فربما تريد السماح لاتصالات SSH الواردة كي تستطيع الاتصال وإدارة خادومك عن بُعد. لضبط خادومك للسماح باتصالات SSH، فاستخدم أمر UFW الآتي: sudo ufw allow ssh ينُشِئ الأمر السابق قواعد جدار ناري تسمح لجميع الاتصالات على المنفذ 22، الذي هو المنفذ الذي يستمع إليه «عفريت» (daemon) SSH؛ يعلم UFW ما هو «ssh» (بالإضافة إلى عدد كبير من أسماء الخدمات الأخرى) ولذلك لأنه مذكورٌ كخدمةٍ تَستخدمُ المنفذ 22 في ملف /etc/services. نستطيع كتابة قاعدة مكافئة للقاعدة السابقة بتحديد المنفذ بدلًا من اسم الخدمة؛ على سبيل المثال، سيعمل هذا الأمر عمل الأمر السابق تمامًا: sudo ufw allow 22 إذا ضبطتَ عفريت SSH ليستخدم منفذًا آخر، فربما عليك تحديد المنفذ الملائم؛ على سبيل المثال، إذا كان يستمع خادم SSH إلى المنفذ 2222، فيمكنك استخدام الأمر الآتي للسماح للاتصالات على ذاك المنفذ: sudo ufw allow 2222 الآن، وبعد أن ضبطتَ جدارك الناري للسماح لاتصالات SSH القادمة، فعلينا تفعيله. تفعيل UFWاستخدم الأمر الآتي لتفعيل UFW: sudo ufw enable سيظهر لك تحذيرٌ يقول: «قد يقطع هذا الأمر اتصالات SSH الموجودة»؛ لكننا قد ضبطنا مسبقًا قاعدةً تسمح لاتصالات SSH، لذلك لا بأس من الإكمال، أجب بكتابة y. قد فعَّلتَ الجدار الناري الآن، تستطيع تنفيذ الأمر: sudo ufw status verbose لمعرفة القواعد المضبوطة. السماح لبقية الاتصالاتعليك الآن السماح لبقية الاتصالات التي يجب على خادومك الإجابة عليها؛ الاتصالات التي ستَسمح لها تتعلق باحتياجاتك. ولحسن الحظ، لقد تعلمت كيف تكتب قواعدًا تسمح للاتصالات بناءً على اسم الخدمة أو المنفذ (حيث فعلنا ذلك لخدمة SSH على المنفذ 22)؛ سنريك عدّة أمثلة لخدماتٍ شائعةٍ جدًا ربما تريد أن تسمح لها في جدارك الناري. إذا كانت لديك أيّة خدمات أخرى تريد السماح لاتصالاتها الواردة، فاتّبِع تلك الصيغة. خدمة HTTP – المنفذ 80يمكن السماح لاتصالات HTTP التي تستخدمها خوادم الويب غير المشفَّرة (unencrypted) بالأمر الآتي: sudo ufw allow http أو إذا كنت تفضِّل استخدام رقم المنفذ (80)، فنفِّذ هذا الأمر: sudo ufw allow 80 خدمة HTTPS – المنفذ 443يمكن السماح لاتصالات HTTPS التي تستخدمها خوادم الويب المشفَّرة (encrypted) بالأمر الآتي: sudo ufw allow https أو إذا كنت تفضِّل استخدام رقم المنفذ (443)، فنفِّذ هذا الأمر: sudo ufw allow 443 خدمة FTP – المنفذ 21يمكن السماح لاتصالات FTP التي تُستخدَم لنقل الملفات دون تشفير (والتي لا يجدر بك استخدامها على أيّة حال) بالأمر الآتي: sudo ufw allow ftp أو إذا كنت تفضِّل استخدام رقم المنفذ (21)، فنفِّذ هذا الأمر: sudo ufw allow 21/tcp السماح لمجالات منافذ معيّنةيمكنك تحديد مجالات منافذ عبر UFW؛ حيث تَستخدِم بعض التطبيقات عدِّة منافذ، بدلًا من منفذٍ واحد. على سبيل المثال، للسماح لاتصالات X11، التي تستخدم المنافذ 6000-6007، فاستخدم هذين الأمرين: sudo ufw allow 6000:6007/tcp sudo ufw allow 6000:6007/udp عند تحديد مجالات للمنافذ مع UFW، فيجب عليك تحديد البروتوكول (tcp أو udp) الذي تُطبَّق عليه القاعدة؛ لم نذكر ذلك من قبل لأنه عدم تحديد البروتوكول يسمح ببساطة بالاتصالات لكلي البروتوكولَين، وهذا مقبولٌ في أغلبية الحالات. السماح لعناوين IP محددةعند العمل مع UFW، تستطيع تحديد عناوين IP؛ على سبيل المثال، إذا أردت السماح للاتصالات من عنوان IP محدد، مثل عنوان IP للعمل أو المنزل الذي هو 15.15.15.51، فعليك استخدام الكلمة «from» ثم عنوان IP: sudo ufw allow from 15.15.15.51 تستطيع تحديد منفذ معيّن يُسمَح لعنوان IP بالاتصال إليه عبر كتابة «to any port» متبوعةً برقم المنفذ؛ على سبيل المثال، إذا أردت السماح لعنوان 15.15.15.51 بالاتصال إلى المنفذ 22 (SSH)، فاستخدم هذا الأمر: sudo ufw allow from 15.15.15.51 to any port 22 السماح للشبكات الفرعيةإذا أردت السماح لشبكة فرعية من عناوين IP، فيمكنك استخدام «ترميز CIDR» (CIDR notation) لتحديد شبكة فرعية؛ فعلى سبيل المثال، إذا أردت السماح لجميع عناوين IP التي تتراوح بين 15.15.15.1 إلى 15.15.15.254 فيمكنك استخدام هذا الأمر: sudo ufw allow from 15.15.15.0/24وبشكلٍ مشابه، تستطيع أيضًا تحديد منفذ يُسمَح للشبكة الفرعية 15.15.15.0/24 بالاتصال إليه؛ سنستخدم أيضًا المنفذ 22 (SSH) كمثال: sudo ufw allow from 15.15.15.0/24 to any port 22 السماح بالاتصالات إلى بطاقة شبكية محددةإذا أردت إنشاء قاعدة جدار ناري تُطبَّق فقط على بطاقةٍ شبكيّةٍ محددة، فيمكنك فعل ذلك عبر كتابة «allow in on» متبوعةً باسم البطاقة الشبكيّة. ربما تريد أن تبحث عن بطاقاتك الشبكيّة قبل الإكمال؛ استخدم هذا الأمر لفعل ذلك: ip addr الناتج: … 2: eth0: حجب الاتصالاتإذا لم تعدِّل السياسة الافتراضية للاتصالات الواردة، فإن UFW مضبوطٌ ليحجب كل الاتصالات الواردة؛ عمومًا، هذا يُبسِّط عملية إنشاء سياسة جدار ناري آمنة وذلك بتطلّب إنشاء قواعد تحدد بدقة المنافذ وعناوين IP التي يسمح لها «بالعبور»؛ لكن في بعض الأحيان، تريد أن تحجب اتصالاتٍ معينة بناءً على عنوان IP المصدري أو الشبكة الفرعية، ربما لأنك تعلم أن خادومك يتعرض للهجوم من هناك. وأيضًا لو حوّلت سياسة التعامل الافتراضية مع الاتصالات الواردة إلى «السماح» (والذي ليس مستحسنًا لصالح الأمان)، فعليك إنشاء قيود «حجب» لأي خدمة أو عناوين IP لا تريد السماح بمرور الاتصالات إليها. يمكنك استخدام الأوامر المشروحة آنفًا لكتابة قيود الحجب، لكن مع استبدال «deny» بالكلمة «allow». على سبيل المثال، لحجب اتصالات HTTP، فعليك استخدام الأمر: sudo ufw deny http أو إذا أردت حجب جميع الاتصالات من 15.15.15.51 فيمكنك استخدام هذا الأمر: sudo ufw deny from 15.15.15.51 إذا أردت مساعدةً في كتابة قواعد الحجب، فانظر إلى قواعد السماح السابقة وعدِّلها بما يلائمها. لنلقِ الآن نظرةً على طريقة حذف القواعد. حذف القواعدمعرفة كيفية حذف قواعد الجدار الناري بنفس أهمية معرفة كيفية إنشائها؛ هنالك طريقتان لتحديد أيّة قواعد لتحذف: عبر رقم القاعدة أو عبر القاعدة نفسها (بشكلٍ شبيه لطريقة تحديد القاعدة عندما أُنشِئت). سنبدأ بطريقة الحذف عبر رقم القاعدة لأنها أسهل، مقارنةً بكتابة القواعد نفسها، خصوصًا إن كنتَ حديث العهد بالتعامل مع UFW. عبر رقم القاعدةإذا كنت تستخدم رقم القاعدة لحذف قواعد الجدار الناري، فإن أول شيء تريد فعله هو الحصول على قائمة بقواعد جدارك الناري؛ يملك أمر UFW status خيارًا لعرض الأرقام بجوار قواعدها، كما هو مبيّن هنا: sudo ufw status numbered الناتج: Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhereإذا قررت أنك تريد حذف القاعدة 2، التي تسمح بالاتصالات إلى المنفذ 80 (HTTP)، فيمكنك ذلك عبر تمرير رقمها إلى أمر UFW delete كما يلي: sudo ufw delete 2 ما سبق سيُظهِر محثًا (prompt) ليطلب موافقتك، ثم سيحذف القاعدة 2 التي تسمح باتصالات HTTP. الحظ أنك إن كنت قد فعَّلت IPv6، فعليك أن تحذف قاعدة IPv6 المناظرة لها. عبر القاعدة نفسهاالبديل عن تحديد رقم القاعدة هو تحديد القاعدة نفسها؛ على سبيل المثال، إذا أردت حذف قاعدة «allow http»، فيمكنك كتابة الأمر كما يلي: sudo ufw delete allow http يمكنك أيضًا تحديد القاعدة مستعملًا «allow 80»، بدلًا من اسم الخدمة: sudo ufw delete allow 80 ستَحذُف هذه الطريقة قواعد IPv4 و IPv6 إن كانت موجودةً. كيفية تعطيل UFW (خطوة اختيارية)إذا قررت أنّك لا تريد استعمال UFW لأي سببٍ كان، فيمكنك تعطيله عبر هذا الأمر: sudo ufw disable ستُعطَّل أيّة قواعد أنشَأتها باستخدام UFW، يمكنك بأي وقتٍ تنفيذ: sudo ufw enable إذا احتجت لتفعيله لاحقًا. إعادة ضبط قواعد UFW (خطوة اختيارية)إذا كانت لديك قواعد UFW مضبوطة، لكنك قررت أن تبدأ من الصفر، فيمكنك استخدام الأمر reset: sudo ufw reset سيُعطِِّل الأمر السابق UFW ويحذف أيّة قواعد عرَّفتَها سابقًا. أبقِ في بالك أن السياسات الافتراضية لن يُعاد ضبطها إلى إعداداتها الافتراضية إذا كنت قد عدَّلتها. الخلاصةيجب أن يكون قد ضُبِطَ جدارك الناري للسماح (على الأقل) لاتصالات SSH؛ تأكد أن تسمح لأيّة اتصالات واردة أخرى لخادومك بينما تقيّد أيّة اتصالات غير ضرورية، كي يكون خادومك آمنًا ويعمل عملًا صحيحًا. ترجمة -وبتصرّف- للمقال How To Set Up a Firewall with UFW on Ubuntu 14.04 لصاحبه Mitchell Anicas.
-
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.
-
نشر مختلف مكونات تطبيقك على عدِّة عقد (nodes) هو طريقةٌ شائعةٌ لتخفيف الحِمل (load) والبدء في التوسع أفقيًا (scaling horizontally)؛ مثالٌ اعتياديٌ عن ذلك هو ضبط قاعدة بيانات على خادوم منفصل عن تطبيقك؛ وعلى الرغم من العدد الكبير من المحاسن الناتجة عن هذا الإعداد، لكن الاتصال عبر الشبكة ينضوي على مخاطر أمنية. سنشرح في هذا الدرس كيف نعد جدار ناري بسيط على كل خادوم من خواديمك عند استخدامك للضبط الموزَّع (distributed setup)؛ سنضبط السياسة لكي تسمح بمرور البيانات بين المكونات (components)، وتمنع في الوقت ذاته مرور أيّة بيانات أخرى. سنستخدم في هذا الدليل خادومَي أوبنتو 14.04؛ واحدٌ سيحتوي على نسخة من وردبريس مُخدَّمة بوساطة nginx، والآخر يستضيف قاعدة بيانات MySQL للتطبيق. وعلى الرغم من أننا سنستخدم هذا الإعداد كمثال، لكنك تستطيع تعديل التقنيات التي سنستخدمها لكي تلائم متطلبات خادومك. المتطلبات المسبقةللبدء، عليك أن تحصل على خادومَي Ubuntu؛ وتضيف مستخدمًا عاديًا بامتيازات الجذر عبر الأمر sudo على كلي الخادومَين؛ يمكنك اتباع درس الضبط المبدئي لخادوم أوبنتو 14.04 لكي تتعلم كيف تفعل ذلك بشكلٍ صحيح. ضبط جدار ناري بسيطسنبدأ بضبط أساسي للجدار الناري على كل خادوم من خواديمنا. السياسة التي سنتبعها تأخذ منحى «الأمان أولًا»، أي أننا سنمنع كل شيء عدا بيانات التراسل التابعة لخدمة SSH ثم سنفتح «فجوات» في الجدار الناري خاصة بتطبيقنا. يوفر الجدار الناري المضبوط في هذا الدرس إعدادًا أساسيًا لما سنحتاج؛ ثبِّت الحزمة iptables-persistent ثم الصق القواعد الأساسية في ملف /etc/iptables/rules.v4: sudo apt-get update sudo apt-get install iptables-persistent sudo nano /etc/iptables/rules.v4محتويات الملف: etc/iptables/rules.v4/ *filter # Allow all outgoing, but drop incoming and forwarding packets by default :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # Custom per-protocol chains :UDP - [0:0] :TCP - [0:0] :ICMP - [0:0] # Acceptable UDP traffic # Acceptable TCP traffic -A TCP -p tcp --dport 22 -j ACCEPT # Acceptable ICMP traffic # Boilerplate acceptance policy -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -A INPUT -i lo -j ACCEPT # Drop invalid packets -A INPUT -m conntrack --ctstate INVALID -j DROP # Pass traffic to protocol-specific chains ## Only allow new connections (established and related should already be handled) ## For TCP, additionally only allow new SYN packets since that is the only valid ## method for establishing a new TCP connection -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP -A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP # Reject anything that's fallen through to this point ## Try to be protocol-specific w/ rejection message -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable # Commit the changes COMMIT *raw :PREROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT *security :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] COMMIT *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMITإذا كنتَ تجري هذه التعديلات على «بيئة حيّة» فلا تعيد تحميل قواعد الجدار الناري! تحميل القواعد الأساسية المذكورة هنا سيؤدي مباشرةً إلى قطع الاتصال بين تطبيقك وخادوم قواعد البيانات؛ سنحتاج إلى تعديل القواعد لكي تعكس احتياجاتنا لكي يعمل التطبيق قبل إعادة التحميل. معرفة المنافذ التي تستخدمها الخدمات التي تشغلهالكي نستطيع إضافة استثناءات للسماح بالاتصالات بين مختلف مكونات التطبيق، فسنحتاج إلى معرفة المنافذ الشبكية المُستخدَمة؛ يمكنك معرفة المنافذ الشبكية الصحيحة بتفحص ملفات الضبط، لكن طريقة اكتشاف المنافذ غير مرتبطة بالتطبيقات هي التحقق من الخدمات التي «تستمع» إلى الاتصالات على كل جهاز. يمكننا استخدام الأداة netstat لمعرفة ذلك؛ ولمّا كان تطبيقنا يتواصل عبر IPv4 فقط، فسنضيف الوسيط -4 لكنك تستطيع إزالته إذا كنت تستخدم IPv6 أيضًا؛ الوسائط الأخرى اللازمة لمعرفة الخدمات التي تعمل هي -plunt. على خادوم الويب، سنرى شيئًا شبيهًا بما يلي: sudo netstat -4pluntالناتج: 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 1058/sshd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4187/nginx يُظهِر أول عمود عنوان IP والمنفذ للخدمة التي تستمع إليه (الموجود اسمها في آخر السطر)؛ عنوان 0.0.0.0 الخاص يعني أن الخدمة المعنية تستمع إلى جميع العناوين المتاحة (جميع البطاقات الشبكية). وعلى خادوم قواعد البيانات، يجب أن نشاهد شيئًا شبيهًا بما يلي: sudo netstat -4pluntالناتج: 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 1097/sshd tcp 0 0 192.0.2.30:3306 0.0.0.0:* LISTEN 3112/mysqldيمكنك قراءة الأعمدة السابقة بنفس الطريقة. يمثّل عنوان 192.0.2.30 في المثال السابق عنوان IP الخاص لخادوم قواعد البيانات؛ وعند إعداد التطبيق، لقد حصرنا استخدام MySQL إلى البطاقة الخاصة فقط لأسبابٍ أمنية. الحظ القيم التي ستجدها في هذه الخطوة، هذه هي التفاصيل الشبكية التي سنحتاج لها لكي نعدِّل ضبطنا للجدار الناري. في مثالنا التوضيحي، سنلاحظ أنه علينا التأكد من أن هذه المنافذ متاحة على خادوم الويب: المنفذ 80 على جميع العناوينالمنفذ 22 على جميع العناوين (وذلك موجودٌ في قواعد الجدار الناري)وعلينا التأكد من أن هذه المنافذ متاحةٌ على خادوم قواعد البيانات: المنفذ 3306 على العنوان 192.0.2.30 (أو البطاقة الشبكية المرتبطة معه)المنفذ 22 على جميع العناوين (وذلك موجودٌ في قواعد الجدار الناري)تعديل قواعد الجدار الناري لخادوم الويبلدينا الآن معلومات المنافذ التي نحتاج إليها لتعديل مجموعة قواعد الجدار الناري لخادوم الويب الخاص بنا؛ افتح ملف القواعد في محررك النصي بامتيازات الجذر (عبر sudo): sudo nano /etc/iptables/rules.v4سنحتاج إلى السماح بمرور بيانات التراسل الشبكي على المنفذ 80 في خادوم الويب؛ ولمّا كان الخادوم يستمع إلى الاتصالات على جميع العناوين المتوفرة، فإننا لن نقيّد القاعدة ببطاقة شبكية أو عنوان معيّن. سيستخدم زوار موقعنا بروتوكول TCP للاتصال؛ إطار العمل الذي أنشأناه لجدارنا الناري فيه سلسلة خاصة باسم TCP لوضع استثناءات لتطبيقات TCP؛ يمكننا إضافة المنفذ 80 إلى السلسلة، مباشرةً بعد الاستثناء الخاص بمنفذ SSH: /etc/iptables/rules.v4 *filter . . . # Acceptable TCP traffic -A TCP -p tcp --dport 22 -j ACCEPT -A TCP -p tcp --dport 80 -j ACCEPT . . .سيبدأ خادوم الويب اتصالًا مع خادوم قواعد البيانات؛ ليست الاتصالات الشبكية الخارجة من خادومنا مقيدةً في جدارنا الناري ويُسمَح للاتصالات الواردة المرتبطة مع اتصالات مُنشَأة مسبقًا، لذلك لن نحتاج إلى فتح أيّة منافذ إضافية في هذا الخادوم للسماح بهذا الاتصال. احفظ وأغلق الملف عندما تنتهي من تعديله، يجب أن يملك خادوم الويب الآن سياسة جدارٍ ناريٍ تسمح بمرور البيانات الشرعية وتحجب في الوقت نفسه أي شيءٍ آخر. اختبر ملف القواعد للكشف عن الأخطاء البنيوية (syntax errors): sudo iptables-restore -t < /etc/iptables/rules.v4إذا لم تظهر أيّة أخطاء، فأعد تحميل الجدار الناري لتطبيق مجموعة القواعد الجديدة: sudo service iptables-persistent reloadتعديل قواعد الجدار الناري لخادوم قواعد البياناتيجب علينا السماح بالوصول إلى المنفذ 3306 على عنوان IP الخاص بخادوم قواعد البيانات، الذي هو 192.0.2.30، يمكننا وضع قيود على الوصول لهذا العنوان تحديدًا، أو يمكننا وضع القيود للبيانات القادمة إلى البطاقة الشبكية المرتبطة مع هذا العنوان. لمعرفة البطاقة الشبكية المرتبطة مع هذا العنوان، فنفِّذ الأمر: ip -4 addr show scope globalالناتج: 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 203.0.113.5/24 brd 104.236.113.255 scope global eth0 valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 192.0.2.30/24 brd 192.0.2.255 scope global eth1 valid_lft forever preferred_lft foreverما سبق يظهر أنّ البطاقة eth1 هي البطاقة الشبكيّة المرتبطة مع ذاك العنوان. ومن ثم علينا أن نعدِّل قواعد الجدار الناري في خادوم قواعد البيانات. افتح ملف القواعد بامتيازات الجذر (عبر sudo) في خادوم قواعد البيانات: sudo nano /etc/iptables/rules.v4مرةً أخرى، سنضيف قاعدةً إلى سلسلة TCP لتشكيل استثناء للاتصال بين خادومَي الويب وقواعد البيانات. إذا أردت تقييد الوصول بناءً على العنوان، فيمكنك إضافة قاعدة مثل هذه: /etc/iptables/rules.v4 *filter . . . # Acceptable TCP traffic -A TCP -p tcp --dport 22 -j ACCEPT -A TCP -p tcp --dport 3306 -d 192.0.2.30 -j ACCEPT . . .إذا كنت تفضِّل أن تسمح بالاستثناء بناءً على البطاقة الشبكية التي تستضيف العنوان، فيمكنك إضافة قاعدة شبيهة بالقاعدة السابقة بدلًا منها: /etc/iptables/rules.v4 *filter . . . # Acceptable TCP traffic -A TCP -p tcp --dport 22 -j ACCEPT -A TCP -p tcp --dport 3306 -i eth1 -j ACCEPT . . .احفظ وأغلق الملف عندما تنتهي من تعديله. اختبر ملف القواعد للكشف عن الأخطاء البنيوية: sudo iptables-restore -t < /etc/iptables/rules.v4عندما تكون جاهزًا، فأعد تحميل قواعد الجدار الناري: sudo service iptables-persistent reloadيجب أن يكون كلا الخادومَين محميًا الآن دون تقييد تدفق البيانات بينهما. الخلاصةيجب أن يكون إعداد جدارٍ ناريٍ سليم جزءًا من خطة نشر التطبيق؛ وعلى الرغم من أننا شرحنا هذا الضبط مستخدمين خادومَين يشغِّلان Nginx وMySQL لكي تعمل نسخة من وردبريس، لكن التقنيات المشروحة في هذا الدرس قابلةٌ للتطبيق بغض النظر عن الخدمات المُشغَّلة. ترجمة -وبتصرف- للمقال: How To Set Up an Iptables Firewall to Protect Traffic Between your Servers لصاحبه: Justin Ellingwood.
-
سنرى في هذا الدرس كيفية تثبيت وإعداد Mailpile، الذي هو عميل ويب سريع وآمن وجميل للبريد للإلكتروني، على نظام أوبنتو Ubuntu 14.04. عميل ويب للبريد الإلكتروني مثل Mailpile هو طريقةٌ ممتازةٌ للتأكد أنك تستطيع الوصول إلى بريدك من أي مكان دون الفوضى التي تحدث عند ضبط عميل بريد قياسي؛ Mailpile هو مجرد عميل بريد، مما يعني أنه يدير حسابات البريد الموجودة مسبقًا فقط. ستحصل، في نهاية هذا الدرس، على خدمة سحابية تعمل عملًا تامًا تشغِّل Mailpile مع خادم Nginx كخادم وسيط عكسي (reverse proxy). ابقِ في ذهنك خلال قراءتك لهذا الدرس أن Mailpile ما يزال تجريبيًّا (في مرحلة beta)، الذي يعني أنك ربما تواجه عللًا وصعوباتٍ أخرى في الطريق... لا يحتفظ Mailpile بمعلوماتك بين الجلسات (أي أن عليك إعادة إدخال معلومات حسابك في كل مرة تعيد فيها تشغيل Mailpile). ولا يحتوي أيضًا على طريقة سهلة لتشغيله كخدمة (service)؛ افتراضيًا، يمكنه أن يعمل فقط كسكربت تفاعلي في جلسة SSH؛ لكننا ضمّنا سكربت Upstart يستخدم Screen لتشغيله في الخلفية، لذلك يمكنك ترك عميل الويب للبريد يعمل إلى أن تشاء إغلاقه؛ لكن ذلك ليس طريقةً مستحسنةً للتشغيل في بيئة إنتاجية. المتطلبات المسبقةسنحتاج إلى بضعة أشياء قبل البدء: خادوم (Droplet) يعمل بنظام أوبنتو 14.04، من المستحسن أن يكون لديك 512 ميغابايت من ذاكرة الوصول العشوائي على الأقل لكي يستطيع Mailpile إدارة عدِّة صناديق بريد إلكتروني؛ إذا كنت تتوقع استخدامه من أكثر من مستخدمَين، فربما تريد زيادة الحجم.مستخدم يملك امتيازات الجذر (root)، راجع هذا الدرس لتعليمات حول إعداد مستخدم يملك امتيازات الجذر عبر sudo في أوبنتو 14.04شهادة SSL لإبقاء بريدك آمنًا؛ يمكنك شراء واحدة من Namecheap أو سلطة شهادات (certificate authority) أخرى؛ إذا لم تكن تريد إنفاق المال، فيمكنك إنشاء شهادتك لاستخدامها مع Nginx أو يمكنك الحصول على واحدة من StartSSL.اسم نطاق.إذا كنت تملك نطاقًا، فأنشِئ سجل A للإشارة إلى خادومك (على سبيل المثال mailpile.example.com).الحظ أماكن وجود شهادة SSL الخاصة بك والمفاتيح؛ إذا اتبعت الدرس التعليمي لإنشاء شهادات لاستخدامها مع Nginx، فسيكونوا موجودين في: /etc/nginx/ssl/nginx.crt و /etc/nginx/ssl/nginx.keyهذا كل ما في الأمر، إذا كان لديك كل شيء جاهزًا، فأكمل إلى الخطوة الأولى. الخطوة الأولى – تنزيل Mailpileسنُحضِّر في هذا القسم بيئة العمل لتثبيت Mailpile. علينا أولًا تسجيل الدخول إلى خادومنا، تأكد أنك سجلت دخولك بمستخدم لديه امتيازات الجذر عبر sudo. علينا بادئ الأمر تثبيت Git، سنستخدم Git لنسخ كود Mailpile المصدري من GitHub. حدِّث فهرس حزم مستودعات أوبنتو: sudo apt-get updateثبِّت Git: sudo apt-get install gitالآن بعد تثبيت Git، لنغيّر مجلد العمل الحالي إلى مكانٍ آخر لكي نجري أعمالنا فيه؛ في هذه الحالة، سنستخدم المجلد /var: cd /varانسخ (clone) كود Mailpile: sudo git clone https://github.com/mailpile/Mailpile.gitستحتاج إلى استخدام sudo للسماح للأمر Git بإنشاء مجلد داخل /var، الذي هو مجلد نظام. كاد أن يصبح نظامك جاهزًا لتشغيل Mailpile، انتقل الآن إلى الخطوة الثانية لاستعرض المزيد من المتطلبات. الخطوة الثانية – ضبط متطلبات Mailpileسنثبت ونضبط في هذا القسم متطلبات Mailpile. أولًا، لنثبت pip؛ إن pip هو مدير حزم لبايثون: sudo apt-get -y install python-pipسيسمح pip لنا بتثبيت متطلبات Mailpile بطريقة أسهل؛ سترى كيف يتم ذلك خلال دقيقة، لكن علينا أولًا تثبيت المزيد من الأشياء. علينا الآن تثبيت lxml؛ إن lxml هو من متطلبات Mailpile الذي يُثبَّت عادةً بواسطة pip، لكننا وجدنا أنه يسبب فشل التثبيت لأسبابٍ غير معروفة؛ وبسبب ذلك، سنُثبِّته عبر apt-get: sudo apt-get install python-lxmlيجب تثبيت بعض الحزم الأخرى يدويًا أيضًا، بما في ذلك GnuPG و OpenSSL؛ ستجعل هذه الحزم البيئة أكثر أمانًا لبريدنا. يمكن أن تكون بعض الحزم مثبتةً افتراضيًا، لكننا سنتأكد من ذلك على أيّة حال تحسبًا لعدم وجودها: sudo apt-get install gnupg openssl libssl-devبدِّل الآن مجل العمل الحالي إلى مجلد Mailpile: cd /var/Mailpileإننا جاهزون الآن لاستغلال إمكانيات pip لتثبيت بقية المتطلبات. يحتوي Mailpile على ملف باسم requirements.txt، الذي هو قائمة بمتطلباته؛ يملك pip القدرة على قراءة تلك القائمة وتثبيت كل واحدٍ فيها تلقائيًّا؛ لنفعل ذلك إذًا: sudo pip install -r /var/Mailpile/requirements.txtلقد إنتهينا، لقد ثبتنا جميع المتطلبات، وأصبح Mailpile جاهزًا للاستخدام، لكن قبل أن نشغِّله، علينا إجراء بعض الخطوات الإضافية لتزيد من الأمان. الخطوة الثالثة – ضبط وسيط عكسي عبر Nginxسنضبط Nginx في هذا القسم كوسيط عكسي لخدمة Mailpile؛ وهذا ما سيجعل Mailpile أكثر أمانًا، سامحًا لنا باستخدام شهادة SSL، وبتسهيل الوصول إلى عميل الويب للبريد. باستخدام Nginx –بدلًا من الوصول إلى Mailpile بزيارة http://example.com:33411– فستستطيع استخدام https://mailpile.example.com، لنبدأ! علينا أولًا تثبيت Nginx لأننا سنستخدمه لإنجاز معظم الأعمال؛ لذلك لنحصل على Nginx قبل أي شي: sudo apt-get install nginxالآن، وبعد أن ثبّتنا Nginx، يمكننا ضبط خادم الوسيط العكسي؛ لنعدل ضبط Nginx لتوجيه النطاق الفرعي إلى Mailpile. ربما تريد أن تحذف ملف ضبط Nginx الافتراضي، لأنه مليئ بأشياءٍ لا نحتاجها؛ لكن أولًا، لنُنشِئ نسخةً احتياطيةً؛ أنشِئ أولًا المجلد: sudo mkdir /home/backupثم خذ نسخةً احتياطيةً: sudo cp -b /etc/nginx/sites-enabled/default /home/backupيمكنك الآن حذف الملف بحرية دون عواقب وخيمة: sudo rm /etc/nginx/sites-available/defaultلنتأكد من أن الملف قد حُذِف: ls /etc/nginx/sites-available/إذا ثبَّتتَ Nginx الآن، فيجب ألّا يعيد الأمر السابق أيّة مخرجات. لننشِئ الآن ملفًا جديدًا: sudo nano /etc/nginx/sites-available/defaultحان الآن الوقت لضبط الوسيط العكسي؛ لنبدأ بالقسم الأول. أضف ما يلي إلى بداية الملف (سنشرح ماذا يفعل بعد ثوانٍ): /etc/nginx/sites-available/default server { listen 80; return 301 https://$host$request_uri; }ما سبق يخبر Nginx أن يعيد توجيه الطلبيات التي تأتي إليه إلى HTTPS؛ لكنه في الواقع يعيد التوجيه إلى شيءٍ غير موجودٍ بعد؛ لننشِئ ذلك: /etc/nginx/sites-available/default server { listen 443; server_name mailpile.example.com; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; access_log /var/log/nginx/mailpile.access.log; تأكد من أن الشهادة والمفتاح موجودان في /etc/nginx/ssl/nginx.crt و /etc/nginx/ssl/nginx.key؛ عدا ذلك، فحَدِّث المسارات بعد ssl_certificate و ssl_certificate_key لمطابقة مسارات الشهادة والمفتاح. ما أدخلناه في الأعلى يخبر Nginx أن يستمع إلى المنفذ 443 (المنفذ المستعمل للوصول إلى مواقع الويب عبر SSL، على النقيض من المنفذ 80)، ويستخدم شهادة SSL الخاصة بنا، ويشغِّل SSL. يجب علينا الآن أن نخدِّم شيئًا ما لعنوان HTTPS URL الذي أعدنا التوجيه إليه وفعّلنا SSL عليه؛ وهذا ما سنفعله في الخطوة الآتية. أضف ما يلي إلى الكتلتين النصيتين السابقتين: /etc/nginx/sites-available/default location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Fix the "It appears that your reverse proxy set up is broken" error. proxy_pass http://localhost:33411; proxy_read_timeout 90; proxy_redirect http://localhost:33411 https://webmail.example.com; } }بعد أن تنتهي من ذلك، يجب أن يبدو ملف الضبط كما يلي: /etc/nginx/sites-available/default server { listen 80; return 301 https://$host$request_uri; } server { listen 443; server_name mailpile.example.com; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; access_log /var/log/nginx/mailpile.access.log; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Fix the "It appears that your reverse proxy set up is broken" error. proxy_pass http://localhost:33411; proxy_read_timeout 90; proxy_redirect http://localhost:33411 https://webmail.example.com; } }إذا لم تستبدل الموقع الافتراضي، لكنك أنشَأت «server block file» باسمٍ مختلف، فيمكنك تفعيله كما يلي: sudo ln -s /etc/nginx/sites-available/mailpile.example.com /etc/nginx/sites-enabled/يجب أن يكون الموقع الافتراضي مفعلًا افتراضيًّا. الآن أعد تشغيل Nginx لإعادة تحميل الضبط: sudo service nginx restartهذا كل ما في الأمر؛ يمكن الوصول إلى Mailpile الآن عبر https://mailpile.example.com؛ ربما عليك قبول تحذير SSL إذا استخدمتَ شهادةً موقعةً ذاتيًا (self-singed certificate). ولو حاولت أيضًا الوصول عبر http://mailpile.example.com فستحوَّل تلقائيًّا إلى نسخة SSL من الموقع. لم نشغِّل Mailpile بعد، لذلك إذا زرت هذه العناوين الآن، فستشاهد الخطأ «502 Bad Gateway»، أكثر سبب شائع لهذا الخطأ هو أن تطبيق Mailpile لا يعمل. انتقل الآن إلى الخطوة الرابعة لتشغيل Mailpile. الخطوة الرابعة – ضبط وتشغيل Mailpileسنشغل في هذا القسم Mailpile، ونضبطه ليعمل مع الخادم الوسيط. لنتأكد أننا في المجلد الصحيح: cd /var/Mailpileلتشغيل Mailpile، أدخِل الأمر: ./mpتستطيع الآن البدء في استكشاف Mailpile عبر الواجهة السطرية أو واجهة الويب. تحذير: لن يحفظ Mailpile الضبط الذي أجريته عندما يتوقف عن العمل؛ لذلك قبل أن تقضي وقتًا في ضبطه؛ ربما تريد أن تنجز الخطوة الإضافية لتشغيله كخدمة تعمل في الخلفية. أصبح Mailpile يعمل الآن، ويمكنك الوصول إليه عبر https://mailpile.example.com، وحتى يمكنه إعادة التوجيه إلى HTTPS مُستخدِمًا شهادة SSL الخاصة بك. تهانينا! يمكنك استخدام Ctrl+C ثم كتابة quit للخروج من Mailpile. خطوة اختيارية – اجعل Mailpile يعمل كخدمة مع Upstartللتأكد من أن Mailpile يعمل دائمًا وجاهزٌ للتعامل مع بريدك؛ يمكنك تحويل Mailpile إلى خدمة باستخدام Upstart. لمّا كان Mailpile ما يزال تجريبيًّا، فإنه لم يصبح على شكل خدمة بعد؛ حيث يتطلب وجود سطر أوامر تفاعلي، لذلك لا تستطيع أن تشغل سكربت بايثون مباشرةً. سكربت Upstart الآتي هو طريقة ملتوية لتشغيل تطبيق بايثون كخدمة عبر Screen: sudo nano /etc/init/mailpile.conf /etc/init/mailpile.conf description "Mailpile Webmail Client" author "Sharon Campbell" start on filesystem or runlevel [2345] stop on shutdown script echo $$ > /var/run/mailpile.pid exec /usr/bin/screen -dmS mailpile_init /var/Mailpile/mp end script pre-start script echo "[`date`] Mailpile Starting" >> /var/log/mailpile.log end script pre-stop script rm /var/run/mailpile.pid echo "[`date`] Mailpile Stopping" >> /var/log/mailpile.log end scriptسيبدأ السكربت السابق Mailpile ويبقى يعمل ما دامت جلسة Screen تعمل؛ لا يمكن للسكربت أن يوقِف جلسة Screen إيقافًا سَلِسًا، لذلك عليك إيقاف جلسة Screen يدويًا إذا أردت إيقاف تشغيل Mailpile. مستخدمًا هذا السكربت، يمكنك تشغيل Mailpile عبر: sudo start mailpileمما يؤدي إلى إنشاء جلسة Screen باسم 12345.mailpile_init مملوكة من المستخدم الجذر (root). لكن لن تعمل أوامر Upstart الأخرى؛ عليك إنهاء جلسة Screen يدويًا، ولو انهارت الخدمة أو توقفت، فعليك أن تعيد تشغيلها من جديد وتضبط جميع خصائصها. الخطوة الخامسة – التعامل مع Mailpileيوضح هذا القسم كيفية استخدام Mailpile من واجهة الويب، عبر https://mailpile.example.com. هذه هي الشاشة التي ستشاهدها عندما تشغِّل Mailpile لأول مرة. اختر اللغة من القائمة المنسدلة.اضغط على زر «Begin».أنشِئ كلمة مرور جديدة، وأدخلها مرتين.اضغط على زر «Start using Mailpile».في شاشة الدخول: رجاءً أدخِل كلمة المرور التي أنشأتها منذ قليل. أضف حسابًا عبر زر «+ Add Account». من هنا، ستحتاج إلى إدخال بيانات حساب البريد الذي تملكه؛ عليك إدخال عنوان البريد الإلكتروني وكلمة المرور لذاك الحساب؛ ثم سيحاول Mailpile أن يتصل إلى حسابك بهذه المعلومات، الأمر الذي قد يستغرق بضع دقائق. يمكنك إدخال بيانات «Sending Mail» و «Receiving Mail» يدويًا، إذا لم يتمكن Mailpile من تحديدها تلقائيًا. تنويه: إن Gmail يحجب Mailpile من استخدام حسابك في Gmail؛ لذلك لن تستطيع إضافة حساب Gmail إلى Mailpile – ليس بسهولة على الأقل. بعد أن تُسجِّل دخولك، فستظهر لك هذه الشاشة: حاول إرسال واستقبال رسالة بريدية تجريبيّة إلى الحساب الذي أضفته إلى Mailpile من حساب بريد إلكتروني آخر؛ إذا نجح ذلك، فاعلم أن Mailpile يعمل مع حساب بريدك الإلكتروني بنجاح. ميزات Mailpile أخرىيوفِّر Mailpile أيضًا تشكيلةً واسعةً من خيارات التشفير: الخلاصةلكي تبدأ مشوارك مع Mailpile، فراجع الأسئلة الشائعة له. للمزيد من خيارات الضبط، نفِّذ الأمر help من سطر أوامر Mailpile. تهانينا، لقد حصلت على عميل ويب للبريد الإلكتروني الخاص بك، الذي يعمل على خادوم أوبنتو 14.04؛ ويعمل تمامًا مع SSL ويعيد التوجيه تلقائيًا إلى نسخة HTTPS من موقعك. يمكنك الآن ضبط حسابات بريدك الإلكتروني وإدارة جهات الاتصال، والبريد، والتصنيفات، والمزيد من واجهة Mailpile الجميلة. استمتع! ترجمة -وبتصرّف- للمقال How To Install Mailpile on Ubuntu 14.04 لصاحبه Kellan.
-
الجدار الناري هو نظامٌ يوفِّر حمايةً للشبكة عبر ترشيح البيانات المُرسَلة والمُستقبَلة عبر الشبكة بناءً على قواعد حدّدها المستخدم. عمومًا، الهدف من الجدار الناري هو تقليل أو إزالة وجود الاتصالات الشبكية غير المرغوب فيها والسماح في الوقت نفسه للاتصالات «الشرعية» أن تُنقَل بحريّة؛ تُوفِّر الجدر النارية طبقةً أساسيةً من الحماية التي -عندما تُدمَج مع غيرها- تمنع المهاجمين من الوصول إلى خادومك بطرقٍ خبيثة. يناقش هذا الدّرس كيف تعمل الجدر النارية، مع التركيز على برمجيات الجدر النارية «ذات الحالة» (stateful)، مثل iptable و FirewallD، لأنها تتعلق بالخواديم السحابية؛ سنبدأ بشرح موجز عن رزم TCP الشبكية والأنواع المختلفة للجدر النارية، ثم سنناقش تنوع المواضيع التي تتعلق بالجدر النارية ذات الحالة؛ في النهاية، سنوفر روابط لمقالاتٍ أخرى ستساعدك في إعداد جدار ناري على خادومك. رزم TCP الشبكية قبل نقاش مختلف أنواع الجدر النارية، لنأخذ نظرةً سريعةً على شكل بيانات التراسل الشبكي لبروتوكول التحكم في النقل (Transport Control Protocol اختصارًا TCP). تنتقل بيانات TCP الشبكية عبر الشبكة في «رزم» (packets)، التي تمثِّل حاويات تتألف من ترويسة الرزمة (packet header) –التي تحتوي على معلومات التحكم مثل عناوين المصدر والوجهة، ومعلومات تسلسل الرزم– والبيانات (التي تعرف أيضًا بالمصطلح «الحمولة» [payload])؛ وبينما تساعد بيانات التحكم في كل رزمة على التأكد من أن البيانات المرتبطة معها ستصل وصولًا صحيحًا، لكن العناصر التي تحتويها تُوفِّر للجدر النارية طرقًا مختلفة لمطابقة الرزم الشبكية على قواعد الجدار الناري. من المهم الملاحظة أنه من الضروري لاستقبال صحيح لرزم TCP قادمة أن يُرسِل المُستقبِل رزمًا تحتوي على إشعار بالاستلام إلى المُرسِل؛ يمكن أن يستخدم دمج معلومات التحكم في الرزم المُستقبَلة والمُرسَلة لتحديد حالة الاتصال (مثلًا، جديد [new]، مُنشَأ [established]، متعلق [related]) بين المُرسِل والمُستقبِل. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن أنواع الجدر النارية لنناقش بسرعة الأنواع الثلاثة الأساسية للجدر النارية للشبكة: ترشيح الرزم (packet filtering) أو عديمة الحالة [stateless])، ذات الحالة (stateful)، وطبقة التطبيقات (application layer). ترشيح الرزم، أو الجدر عديمة الحالة، تعمل عبر تفصّح كل الرزم الشبكية على حدة؛ وبالتالي، ستكون غير مدركة لحالة الاتصال ويمكنها فقط أن تسمح أو تمنع مرور الرزم بناءً على ترويسات كل رزمة بشكل منفرد. الجدر ذات الحالة قادرة على تحديد حالة الاتصال للرزم، مما يجعل تلك الجدر أكثر مرونةً من الجدر عديمة الحالة. إنها تعمل عبر جمع الرزم الشبكية المترابطة إلى أن تستطيع تحديد حالة الاتصال قبل أن تطبَّق أيّة قواعد للجدار الناري على بيانات التراسل الشبكي. جدر التطبيقات (Application firewalls) تذهب خطوةً إضافيةً إلى الأمام عبر تحليل البيانات التي قد أُرسِلَت، مما يسمح بمطابقة بيانات التراسل الشبكي على قواعد الجدار الناري التي تكون مخصصة لخدمات أو تطبيقات معينة. تسمى هذه الجدر أيضًا باسم «الجدر النارية الوسيطة» (proxy-based firewalls). بالإضافة إلى برمجية الجدار الناري، المتوفرة في جميع أنظمة التشغيل الحديثة، يمكن توفير وظيفة الجدار الناري عبر أجهزة عتادية، مثل الموجهات (routers) أو أجهزة جدر نارية خاصة. مرةً أخرى، سنركِّز في نقاشنا على الجدر النارية ذات الحالة التي تعمل على الخواديم التي عليها حمايتها. قواعد الجدار الناري كما ذُكِر في الأعلى، البيانات الشبكية التي تعبر جدارًا ناريًا ستُطابَق على قواعدٍ لتحديد إذا كان يُسمَح لها بالمرور أم لا؛ طريقة سهلة لشرح كيف تبدو قواعد الجدار الناري هي عرض بعض الأمثلة، لنفعل ذلك الآن. لنفترض أن لديك خادومًا بهذه القائمة من قواعد الجدار الناري التي تنطبق على البيانات القادمة: السماح للبيانات الشبكية القادمة من اتصالات جديدة أو مُنشَأة مسبقًا إلى البطاقة الشبكية العامة على المنفذين 80 و 443 (بيانات HTTP و HTTPS للويب). تجاهل البيانات القادمة من عناوين IP للموظفين غير التقنيين في مكتبك إلى المنفذ 22 (خدمة SSH). السماح للبيانات الشبكية القادمة من اتصالات جديدة أو مُنشَأة مسبقًا من مجال عناوين IP لمكتبك إلى البطاقة الشبكية الخاصة على المنفذ 22 (خدمة SSH). الحظ أنَّ أول كلمة في كل مثال من الأمثلة الثلاثة السابقة هي إما كلمة «السماح» (accept) أو «رفض» (reject) أو «تجاهل» (drop). هذا يُحدِّد ما سيفعله الجدار الناري في حال طابقت البيانات الشبكية تلك القاعدة. «السماح» تعني أنه يمكن للبيانات الشبكية المرور، و«الرفض» تعني منع مرور البيانات الشبكية ولكن إرسال خطأ «unreachable»، بينما «التجاهل» تعني منع مرور البيانات الشبكية وعدم إرسال رد؛ يحتوي ما تبقى من كل قاعدة على الشرط الذي يجب أن تُطابَق عليه كل رزمة شبكية. وكما يبدو، فإن البيانات الشبكية ستُطابَق على قائمة بقواعد الجدار الناري بتسلسل (chain) من أول قاعدة إلى آخر قاعدة. وخصوصًا عندما تُطابَق قاعدة، فسينفَّذ الحدث المُطابِق لها على البيانات الشبكية؛ في مثالنا السابق، إذا حاول محاسب في المكتب إنشاء اتصال SSH إلى الخادوم، فسيُرفَض اتصاله بناءً على القاعدة رقم 2، حتى قبل التحقق من القاعدة رقم 3؛ لكن مديرًا للنظام سيتمكَّن من إنشاء الاتصال لأنه سيُطابِق القاعدة رقم 3 فقط. السياسة الافتراضية (Default Policy) من الطبيعي لسلسلة من قواعد الجدار الناري ألا تغطي بدقة كل حالة ممكنة؛ فلهذا السبب، يجب تحديد سياسة افتراضية لسلاسل قواعد الجدار الناري، التي تحتوي على ما سيُفعَل بالبيانات الشبكية فقط (قبول، أو رفض، أو تجاهل). افترض أننا ضبطنا السياسة الافتراضية للمثال السابق إلى «تجاهل»؛ فإذا حاول حاسوب خارج مكتبك إنشاء اتصال SSH إلى خادومك، فسيتم تجاهل البيانات الشبكية التي أرسلها لأنها لا تطابق أيّ من القواعد السابقة. أما لو ضُبِطَت السياسة الافتراضية إلى «السماح»، فإن أي شخص –ما عدا موظفي المكتب غير التقنيين– سيتمكن من إنشاء اتصال لأي خدمة مفتوحة على خادومك؛ هذا مثالٌ عن أن جدارًا ناريًا مضبوطٌ ضبطًا سيئًا سيمنع جزءًا من الموظفين فقط. البيانات الشبكية الداخلة والخارجة لمّا كانت تُفصَل البيانات الشبكية –من وجهة نظر الخادوم– إلى بيانات داخلة أو خارجة، فإن الجدار الناري يبقي مجموعةً منفصلةً من القواعد لكل حالة؛ البيانات التي أصلها من مكانٍ آخر –أي البيانات الداخلة– تُعامَل معاملةً مختلفةً عن البيانات الخارجة من الخادوم؛ من الطبيعي أن يسمح الخادوم بأغلبية البيانات الخارجة لأن الخادوم عادةً «يثق بنفسه». ومع ذلك، يمكن استخدام مجموعة قواعد للبيانات الخارجة لمنع الاتصالات غير المرغوبة في حال أُخترِق الخادوم من مهاجم أو عبر ملف تنفيذي خبيث. لكي نعظِّم الاستفادة الأمنية من الجدار الناري، فيجب عليك تحديد جميع الطرق التي تريد للأنظمة الأخرى أن تتعامل مع خادومك فيها؛ وذلك بإنشاء قواعد تسمع لتلك الحالات بدقة، ثم تتجاهل بقية البيانات الشبكية. أبقِ في بالك أنَّ قواعد البيانات الخارجة يجب أن تكون صحيحة للسماح للخادوم بإرسال إشعارات استلام لأي اتصالات داخلة مسموحٌ لها؛ تذكر أيضًا أنه ولما كان على الخادوم أن يبدأ اتصالات شبكية خاصة به لمختلف الأسباب (مثل تنزيل التحديثات، أو الاتصال إلى قاعدة بيانات)، فمن الضروري تضمين تلك الحالات في مجموعة القواعد للبيانات الخارجة. كتابة قواعد البيانات الخارجة افترض أن مثالنا عن الجدار الناري مضبوط لتجاهل البيانات الشبكية الخارجة افتراضيًا، هذا يعني أنَّ قواعد السماح للبيانات الداخلة ستكون عديمة الفائدة دون قواعد البيانات الشبكية الخارجة المُكمِّلة لها. لملائمة المثال عن قواعد البيانات الداخلة في الجدار الناري (القاعدتين 1 و 3)، من قسم «قواعد الجدار الناري» السابق، وللسماح بالاتصالات الملائمة بناءً على هذه العناوين والمنافذ؛ فعلينا استخدام هذه القواعد للاتصالات الخارجة: السماح بالبيانات الشبكية الخارجة المُنشَأة على البطاقة الشبكية العامة على المنفذ 80 و 443 (HTTP و HTTPS). السماح بالبيانات الشبكية الخارجة المُنشَأة على البطاقة الشبكية الخاصة على المنفذ 22 (SSH). الحظ أننا لم نحتج إلى كتابة قاعدة محددة للبيانات القادمة التي أُهمِلَت (القاعدة رقم 2) لأن الخادوم لا يحتاج إلى إنشاء أو إرسال إشعار إلى ذاك الاتصال. برمجيات وأدوات الجدار الناري بعد أن تعلّمنا كيف تعمل الجدر النارية، فلنلقي نظرة على حزم برمجية شائعة تساعدنا على ضبط جدار ناري فعّال؛ وعلى الرغم من أنَّ هنالك العديد من الحزم المتعلقة بالجدر النارية، إلا أنَّ هذه هي أكثرها فعاليةً وشيوعًا. Iptables إن Iptables هو الجدار الناري القياسي الموجود في أغلبية توزيعات لينكس افتراضيًا (بديل عصري له يسمى nftables بدأ باستبداله)؛ هو في الواقع واجهة أمامية (front-end) لنظام netfilter الخاص بالنواة الذي يمكنه تعديل الاتصالات الشبكية في لينُكس؛ حيث يعمل بمطابقة كل رزمة شبكية تمرّ عبر بطاقة شبكية على مجموعة من القواعد لتحديد ما الذي يجب فعله. لتعلم المزيد من المعلومات حول استخدام iptables كجدار ناري، رجاءً راجع هذه الروابط: كيفية إعداد جدار ناري باستخدام iptables على Ubuntu 14.04 فهم إعدادات "الطرق على المنافذ" على أوبنتو باستخدام IPTables كيف تضبط "الطرق على المنافذ" على أوبنتو باستخدام IPTables UFW إن UFW، الذي يرمز إلى «Uncomplicated Firwall» (الجدار الناري غير المعقّد)، هو واجهة إلى iptables مجهزٌ لتبسيط عملية ضبط جدار ناري. FirewallD FirewallD هو حلّ كامل لضبط الجدار الناري متوفرٌ افتراضيًا على خواديم CentOS 7؛ يجدر بالذكر أن FirewallD يستخدم iptables لضبط netfilter. Fail2ban إن Fail2ban هو برمجية لمنع التطفل يمكنها ضبط جدارك الناري تلقائيًا لحجب محاولات تسجيل الدخول باستخدام «القوة القاسية» (brute force) وهجمات الحرمان من الخدمة المُوزَّعة (DDoS). للمزيد من المعلومات حول Fail2ban، راجع هذه الروابط: كيف يعمل Fail2ban على زيادة حماية خادومك كيفية حماية SSH باستخدام Fail2Ban على Ubuntu كيف يعالج Fail2ban ملفات الضبط لتنفيذ الحظر الخلاصة أصبحت تعرف الآن كيف تعمل الجدر النارية، يجب عليك أخذ إنشاء جدار ناري بعين الاعتبار لتحسين مستوى حماية خادومك بالاستعانة بأحد الدروس سابقة الذكر.ش ترجمة -وبتصرّف- للمقال What is a Firewall and How Does It Work? لصاحبه Mitchell Anicas. حقوق الصورة البارزة: Designed by Freepik.