النقاط الرئيسية
- Firewalld هو جدار حماية حديث وقوي لنظام Linux ويمكن تكوينه بسهولة من خلال سطر الأوامر أو واجهة المستخدم الرسومية.
- تعتبر جدران الحماية مهمة للحد من اتصالات الشبكة بجهاز الكمبيوتر الخاص بك والتحكم فيها لتعزيز الأمان.
- يستخدم Firewalld مناطق لتنظيم قواعد جدار الحماية ويسمح بضبطها وتخصيصها استنادًا إلى احتياجات الأمان المختلفة.
إذا كنت تبحث عن جدار حماية حديث وقوي لنظام Linux وسهل التكوين على سطر الأوامر أو باستخدام واجهة المستخدم الرسومية الخاصة به، إذن firewalld ربما هذا ما تبحث عنه.
تم تقديم هذه المقالة الخاصة بأسبوع التوعية بالأمن السيبراني إليك بالتعاون مع Incogni .
لماذا تحتاج إلى جدار الحماية؟
إن اتصالات الشبكة لها أصل ووجهة. يطلب البرنامج الموجود في الأصل الاتصال، ويقبله البرنامج الموجود في الوجهة أو يرفضه. وإذا تم قبوله، يمكن لحزم البيانات – والتي تسمى عمومًا حركة مرور الشبكة – أن تمر في كلا الاتجاهين عبر الاتصال. وهذا صحيح سواء كنت تشارك عبر الغرفة في منزلك، أو تتصل عن بُعد بالعمل من مكتبك المنزلي، أو تستخدم موردًا بعيدًا قائمًا على السحابة.
تنص ممارسات الأمان الجيدة على ضرورة الحد من الاتصالات بالكمبيوتر والتحكم فيها. وهذا ما تفعله جدران الحماية. فهي تقوم بتصفية حركة المرور على الشبكة حسب عنوان IP أو المنفذ أو البروتوكول، وترفض الاتصالات التي لا تفي بمجموعة محددة مسبقًا من المعايير ـ قواعد جدار الحماية ـ التي قمت بتكوينها. وهي أشبه بأفراد الأمن في حدث خاص. فإذا لم يكن اسمك مدرجًا في القائمة، فلن تتمكن من الدخول.
بالطبع، لا تريد أن تكون قواعد جدار الحماية لديك مقيدة للغاية بحيث يتم تقييد أنشطتك العادية. كلما كان تكوين جدار الحماية الخاص بك أبسط، كلما قل احتمال قيامك عن غير قصد بإعداد قواعد متضاربة أو صارمة. غالبًا ما نسمع من المستخدمين الذين يقولون إنهم لا يستخدمون جدار الحماية لأنه معقد للغاية بحيث يصعب فهمه، أو لأن بناء جملة الأوامر غير واضح للغاية.
ال firewalld جدار الحماية قوي وسهل الإعداد، سواء على سطر الأوامر أو من خلال تطبيق واجهة المستخدم الرسومية المخصص له. تحت الغطاء، تعتمد جدران الحماية في Linux على netfilter، إطار عمل تصفية الشبكة على جانب النواة. هنا في عالم المستخدم، لدينا خيار من الأدوات للتفاعل معها netfilter ، مثل iptables, ufwجدار الحماية غير المعقد، و firewalld.
في رأينا، firewalld يوفر أفضل توازن بين الوظائف والتفاصيل والبساطة.
تثبيت جدار الحماية
هناك جزأين ل firewalld .هناك firewalld ، عملية الديمون التي توفر وظيفة جدار الحماية، وهناك firewall-config. هذه هي واجهة المستخدم الرسومية الاختيارية لـ firewalldلاحظ أنه لا يوجد “d” في firewall-config.
التثبيت firewalld في Ubuntu وFedora وManjaro، يكون الأمر واضحًا ومباشرًا في جميع الحالات، على الرغم من أن كل منها لديه وجهة نظره الخاصة فيما يتعلق بما هو مثبت مسبقًا وما هو مضمن.
لتثبيته على أوبونتو، نحتاج إلى تثبيت firewalld و firewall-config.
sudo apt install firewalld
sudo apt install firewall-config
على فيدورا، firewalld تم تثبيته بالفعل. نحتاج فقط إلى إضافة firewall-config .
sudo dnf install firewall-config
في Manjaro، لا يتم تثبيت أي مكون مسبقًا، ولكن يتم تجميعهما في حزمة واحدة حتى نتمكن من تثبيتهما معًا باستخدام أمر واحد.
sudo pacman -Sy firewalld
نحن بحاجة إلى تمكين firewalld daemon للسماح له بالعمل في كل مرة يتم فيها تشغيل الكمبيوتر.
sudo systemctl enable firewalld
ويجب علينا أن نبدأ تشغيل الديمون حتى يتم تشغيله الآن.
sudo systemctl start firewalld
يمكننا أن نستخدم systemctl للتحقق من ذلك firewalld لقد بدأت وتعمل دون مشاكل:
sudo systemctl status firewalld
يمكننا أيضا أن نستخدم firewalld للتحقق مما إذا كان يعمل أم لا. يستخدم هذا firewall-cmd الأمر مع --state الخيار. لاحظ أنه لا يوجد “d” في firewall-cmd :
sudo firewall-cmd --state
الآن بعد أن قمنا بتثبيت جدار الحماية وتشغيله، يمكننا الانتقال إلى تكوينه.
مفهوم المناطق
ال firewalld يعتمد جدار الحماية على المناطق. المناطق عبارة عن مجموعات من قواعد جدار الحماية واتصال شبكة مرتبط بها. يتيح لك هذا تخصيص مناطق مختلفة – ومجموعة مختلفة من القيود الأمنية – التي يمكنك العمل بموجبها. على سبيل المثال، قد يكون لديك منطقة محددة للتشغيل العادي اليومي، ومنطقة أخرى للتشغيل الأكثر أمانًا، ومنطقة إغلاق كاملة “لا شيء يدخل، لا شيء يخرج”.
للانتقال من منطقة إلى أخرى، وبشكل فعال من مستوى أمان إلى آخر، عليك نقل اتصال الشبكة من المنطقة التي يوجد فيها إلى المنطقة التي ترغب في العمل ضمنها.
وهذا يجعل الانتقال من مجموعة قواعد جدار الحماية المحددة إلى أخرى سريعًا للغاية. وهناك طريقة أخرى لاستخدام المناطق وهي أن تجعل الكمبيوتر المحمول يستخدم منطقة واحدة عندما تكون في المنزل ومنطقة أخرى عندما تكون بالخارج وتستخدم شبكة Wi-Fi عامة.
firewalld يأتي مع تسع مناطق تم تكوينها مسبقًا. ويمكن تحريرها وإضافة المزيد من المناطق أو إزالتها.
- يسقط:يتم إسقاط جميع الحزم الواردة. يُسمح بحركة المرور الصادرة. هذا هو الإعداد الأكثر جنونًا.
- حاجز:يتم إسقاط جميع الحزم الواردة و
icmp-host-prohibitedتم إرسال الرسالة إلى المرسل. يُسمح بالحركة الصادرة. - موثوق به:يتم قبول جميع اتصالات الشبكة ويتم الوثوق بالأنظمة الأخرى. هذا هو الإعداد الأكثر ثقة ويجب تقييده بالبيئات الآمنة للغاية مثل شبكات الاختبار المقيدة أو منزلك.
- عام:هذه المنطقة مخصصة للاستخدام على الشبكات العامة أو الشبكات الأخرى حيث لا يمكن الوثوق بأي من أجهزة الكمبيوتر الأخرى. يتم قبول مجموعة صغيرة من طلبات الاتصال الشائعة والآمنة عادةً.
- خارجي:هذه المنطقة مخصصة للاستخدام على الشبكات الخارجية مع تمكين إخفاء NAT (إعادة توجيه المنفذ). يعمل جدار الحماية الخاص بك كموجه يقوم بإعادة توجيه حركة المرور إلى شبكتك الخاصة التي تظل قابلة للوصول، ولكنها تظل خاصة.
- داخلي:هذه المنطقة مخصصة للاستخدام على الشبكات الداخلية عندما يعمل نظامك كبوابة أو جهاز توجيه. وعادة ما تكون الأنظمة الأخرى على هذه الشبكة موثوقة.
- المنطقة منزوعة السلاح:هذه المنطقة مخصصة لأجهزة الكمبيوتر الموجودة في “المنطقة منزوعة السلاح” خارج دفاعات محيطك وبإمكانية وصول محدودة إلى شبكتك.
- عمل:هذه المنطقة مخصصة لآلات العمل. عادةً ما تكون أجهزة الكمبيوتر الأخرى الموجودة على هذه الشبكة موثوقة.
- بيت:هذه المنطقة مخصصة للأجهزة المنزلية. عادةً ما تكون أجهزة الكمبيوتر الأخرى الموجودة على هذه الشبكة موثوقة.
تتشابه مناطق المنزل والعمل والمناطق الداخلية إلى حد كبير في وظيفتها، ولكن فصلها إلى مناطق مختلفة يسمح لك بضبط المنطقة حسب رغبتك، وتغليف مجموعة واحدة من القواعد لسيناريو معين.
نقطة بداية جيدة هي معرفة المنطقة الافتراضية. هذه هي المنطقة التي تتم إضافة واجهات الشبكة الخاصة بك إليها عند firewalld تم تثبيته.
sudo firewall-cmd --get-default-zone
منطقتنا الافتراضية هي المنطقة العامة. لرؤية تفاصيل تكوين المنطقة، استخدم --list-all الخيار. يعرض هذا كل ما تمت إضافته أو تمكينه لمنطقة ما.
sudo firewall-cmd --zone=public --list-all
يمكننا أن نرى أن هذه المنطقة مرتبطة باتصال الشبكة enp0s3، وتسمح بحركة المرور المتعلقة بـ DHCP وmDNS وSSH. نظرًا لإضافة واجهة واحدة على الأقل إلى هذه المنطقة، تصبح هذه المنطقة نشطة.
firewalld يتيح لك إضافة الخدمات التي ترغب في قبول حركة المرور منها إلى منطقة. تسمح هذه المنطقة بعد ذلك لهذا النوع من حركة المرور بالمرور. وهذا أسهل من تذكر أن mDNS، على سبيل المثال، يستخدم المنفذ 5353 وبروتوكول UDP، وإضافة هذه التفاصيل يدويًا إلى المنطقة. على الرغم من أنه يمكنك القيام بذلك أيضًا.
إذا قمنا بتشغيل الأمر السابق على كمبيوتر محمول مزود باتصال إيثرنت وبطاقة Wi-Fi، فسنرى شيئًا مشابهًا، ولكن مع واجهتين.
sudo firewall-cmd --zone=public --list-all
تمت إضافة واجهتي الشبكة إلى المنطقة الافتراضية. تحتوي المنطقة على قواعد لنفس الخدمات الثلاث كما في المثال الأول، ولكن تمت إضافة DHCP وSSH كخدمات مسماة، بينما تمت إضافة mDNS كإقران منفذ وبروتوكول.
لإدراج جميع المناطق استخدم --get-zones خيار.
sudo firewall-cmd --get-zones
لرؤية التكوين لجميع المناطق مرة واحدة، استخدم --list-all-zones الخيار. ستحتاج إلى توجيه هذا إلى less.
sudo firewall-cmd --list-all-zones | less
يعد هذا مفيدًا لأنه يتيح لك التمرير عبر القائمة، أو استخدام ميزة البحث للبحث عن أرقام المنافذ والبروتوكولات والخدمات.
على جهاز الكمبيوتر المحمول الخاص بنا، سننقل اتصال Ethernet الخاص بنا من المنطقة العامة إلى المنطقة المنزلية. يمكننا القيام بذلك باستخدام --zone و --change-interface خيارات.
sudo firewall-cmd --zone=home --change-interface=enp3s0
دعونا نلقي نظرة على المنطقة المنزلية، ونرى ما إذا كان التغيير الذي أجريناه قد تم.
sudo firewall-cmd --zone=home --list-all
وقد حدث ذلك بالفعل. تمت إضافة اتصال Ethernet الخاص بنا إلى المنطقة المنزلية.
ومع ذلك، هذا ليس تغييرًا دائمًا. لقد قمنا بتغيير تكوين التشغيل لجدار الحماية، وليس تكوينه المخزن. إذا أعدنا التشغيل أو استخدمنا --reload الخيار، سوف نعود إلى إعداداتنا السابقة.
ولجعل التغيير دائمًا، نحتاج إلى استخدام الاسم المناسب --permanent خيار.
هذا يعني أنه يمكننا تغيير جدار الحماية لتلبية متطلبات لمرة واحدة دون تغيير تكوين جدار الحماية المخزن. كما يمكننا اختبار التغييرات قبل إرسالها إلى التكوين. لجعل التغيير دائمًا، يجب أن يكون التنسيق الذي نستخدمه هو:
sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent
إذا قمت بإجراء بعض التغييرات ولكنك نسيت استخدامها --permanent في بعضها، يمكنك كتابة إعدادات جلسة التشغيل الحالية لجدار الحماية إلى التكوين باستخدام --runtime-to-permanent خيار.
sudo firewall-cmd --runtime-to-permanent
إضافة وإزالة الخدمات
firewalld يعرف الكثير من الخدمات. يمكنك إدراجها باستخدام --get-services خيار.
sudo firewall-cmd --get-services
نسختنا من firewalld تم إدراج 192 خدمة. لتمكين خدمة في منطقة، استخدم --add-service خيار.
يمكننا إضافة خدمة إلى منطقة باستخدام --add-service خيار.
sudo firewall-cmd --zone=public --add-service=http
يجب أن يتطابق اسم الخدمة مع إدخالها في قائمة الخدمات من firewalld.
لإزالة خدمة استبدلها --add-service مع --remove-service
إضافة وإزالة المنافذ والبروتوكولات
إذا كنت تفضل اختيار المنافذ والبروتوكولات التي تريد إضافتها، فيمكنك القيام بذلك أيضًا. ستحتاج إلى معرفة رقم المنفذ والبروتوكول لنوع حركة المرور التي تريد إضافتها.
دعنا نضيف حركة مرور HTTPS إلى المنطقة العامة. تستخدم هذه المنطقة المنفذ 443 وهي شكل من أشكال حركة مرور TCP.
sudo firewall-cmd --zone=public --add-port=443/tcp
يمكنك توفير مجموعة من المنافذ من خلال توفير المنفذين الأول والأخير بواصلة “-” بينهم مثل “400-450 “.
لإزالة المنفذ، استبدله --add-port مع --remove-port .
استخدام واجهة المستخدم الرسومية
اضغط على مفتاح “Super” وابدأ في كتابة “firewall”. سترى أيقونة جدار الطوب firewall-config طلب.
انقر على هذا الرمز لبدء تشغيل التطبيق.
لإضافة خدمة إلى firewalld يعد استخدام واجهة المستخدم الرسومية سهلاً مثل تحديد منطقة من قائمة المناطق وتحديد الخدمة من قائمة الخدمات.
بإمكانك اختيار تعديل جلسة التشغيل أو التكوين الدائم عن طريق تحديد “وقت التشغيل” أو “دائم” من القائمة المنسدلة “التكوين”.
لإجراء تغييرات على جلسة التشغيل وتنفيذ التغييرات فقط بعد اختبار نجاحها، اضبط قائمة “التكوين” على “وقت التشغيل”. قم بإجراء التغييرات التي تريدها. بمجرد التأكد من أنها تقوم بما تريد، استخدم خيار القائمة “خيارات > وقت التشغيل إلى دائم”.
لإضافة منفذ وإدخال بروتوكول إلى منطقة، حدد المنطقة من قائمة المناطق، وانقر فوق “المنافذ”. يتيح لك النقر فوق زر الإضافة توفير رقم المنفذ واختيار البروتوكول من القائمة.
لإضافة بروتوكول، انقر فوق “البروتوكولات”، وانقر فوق الزر “إضافة”، ثم حدد البروتوكول من القائمة المنبثقة.
لنقل واجهة من منطقة إلى أخرى، انقر نقرًا مزدوجًا فوق الواجهة في قائمة “الاتصالات”، ثم حدد المنطقة من القائمة المنبثقة.
قمة جبل الجليد
هناك الكثير مما يمكنك فعله firewalldولكن هذا يكفي لبدء العمل. وبفضل المعلومات التي قدمناها لك، ستتمكن من إنشاء قواعد مفيدة في مناطقك.