كيفية إعداد جدار حماية باستخدام UFW على Ubuntu

مقدمة

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

ستظهر هذه الدليلة كيفية إعداد جدار حماية بـ UFW على Ubuntu الإصدار v18.04 وما فوق.

المتطلبات الأساسية

إذا كنت تستخدم إصدار Ubuntu 16.04 أو أدناه، نوصي بترقية إلى إصدار أحدث حيث لم يعد Ubuntu يقدم الدعم لهذه الإصدارات. هذه مجموعة من الدلائل ستساعدك في ترقية إصدار Ubuntu الخاص بك.

لاتباع هذه الدليلة، ستحتاج إلى:

  • خوادم تشتغل على Ubuntu، ومستخدم غير رئيسي بالموارد الممولة بsudo، لمعلومات عن كيفية تأسيس هذه الخوادم، يرجى اختيار توزيع التعريفات الخاصة بك من هذه القائمة وتتبع دراسة بدائل الخوادم الأولية التي نوفر لكم

  • تم تثبيت UFW تلقائيًا في Ubuntu. إذا تم حذفه لسبب ما، يمكنك تثبيته باستخدامsudo apt install ufw.

إعداد جدار Ubuntu مع UFW

  1. تمكين IPv6
  2. إعداد سياسات تلقائية
  3. السماح باتصالات SSH
  4. تمكين UFW
  5. السماح بأي اتصالات أخرى مطلوبة
  6. رفض الاتصالات
  7. حذف قواعد الجدار الناري
  8. التحقق من حالة UFW والقواعد
  9. كيف تعطيل أو إعادة تعيين الجدار الناري على Ubuntu

خطوة 1 — التأكد من تمكين IPv6

في الإصدارات الأحدث من Ubuntu، يتم تمكين IPv6 بشكل افتراضي. وهذا يعني في الممارسة أن معظم قواعد الجدار الناري اللتي يتم إضافتها إلى الخادم ستشمل نسختين: IPv4 وIPv6، والتي الثانية تُحدد بـ v6 داخل خرائط الحالة لأمر UFW. للتأكد من تمكين IPv6، يمكنك فحص تكوين UFW الخاص بك في الملف /etc/default/ufw. افتح هذا الملف باستخدام nano أو محرر سطر الأوامر المفضل لديك:

  1. sudo nano /etc/default/ufw

ثم تأكد من أن القيمة لـ IPV6 محددة كـ yes. يجب أن يكون الشكل كالتالي:

/etc/default/ufw excerpt
  1. IPV6=yes

احفظ الملف وأغلقه. إذا كنت تستخدم nano، يمكنك القيام بذلك عن طريق الكتابة CTRL+X، ثم Y و ENTER للتأكيد.

عند تمكين UFW في خطوة لاحقة من هذا الدليل، سيتم تكوينه لكتابة قواعد جدار ناري IPv4 وIPv6.

خطوة 2 — إعداد سياسات الافتراضي

إذا كنت مبتدئًا في استخدام UFW، فإن خطوة أولى جيدة هي فحص سياسات جدار الناري الافتراضية الخاصة بك. هذه القواعد تتحكم في كيفية التعامل مع النقل الذي لا يتطابق بوضوح مع أي قواعد أخرى.

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

لضمان قدرتك على إتاحة المواصلات مع الجزء الأخر من هذا التعليمات، سيتم تأسيس سياسات الUFW الافتراضية للدخول والخروج.

لتعيين السياسة الافتراضية للدخول المتوفرة في UFW إلى deny، قم بتنفيذ الأمر التالي:

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

لتعيين السياسة الافتراضية للخروج في UFW إلى allow، قم بتنفيذ الأمر التالي:

  1. sudo ufw default allow outgoing
Output
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

هذه الأوامر تضع القواعد الافتراضية على رفض الاتصالات الداخلية وتسمح بالاتصالات الخارجية. تلك القواعد الحزبية بمفردها قد تكفي لحاسبة شخصية، ولكن الخوادم عادةً تحتاج إلى الاستجابة للدعوات الداخلية من المستخدمين من الخارج. سنبحث عن هذا في المرحلة القادمة.

الخطوة 3 — تسمية اتصالات SSH

إذا قمت بتفعيل معانير الحزب البرمجي (UFW) الآن، سترفض جميع الاتصالات الداخلية. هذا يعني أن عليك إنشاء قوانين تسمي بوضوح الاتصالات الداخلية المشروعة — مثل اتصالات SSH أو HTTP، على سبيل المثال — إذا كنت تريد أن تستجيب

السماح بملف الملف التطبيقي لـ OpenSSH UFW

بعد التثبيت، ستقوم معظم التطبيقات التي تعتمد على الاتصالات الشبكية بتسجيل ملف تطبيقي داخل UFW، مما يمكن المستخدمين من السماح بسرعة أو الرفض للوصول الخارجي إلى الخدمة. يمكنك التحقق من الملفات التي تم تسجيلها حاليًا في UFW باستخدام:

  1. sudo ufw app list
Output
Available applications: OpenSSH

لتمكين ملف التطبيق الخاص بـ OpenSSH، اشرك:

  1. sudo ufw allow OpenSSH
Output
Rule added Rule added (v6)

سيقوم هذا بإنشاء قواعد الجدار الناري للسماح بجميع الاتصالات على المنفذ 22، وهو المنفذ الذي يستمع إليه خادم SSH بشكل افتراضي.

السماح بSSH بناءً على اسم الخدمة

وهناك طريقة أخرى لتكوين UFW للسماح بالاتصالات الواردة لـ SSH بمرجع اسم الخدمة: ssh.

  1. sudo ufw allow ssh
Output
Rule added Rule added (v6)

يعرف UFW أي منافذ وبروتوكولات يستخدمها الخدمة بناءً على الملف /etc/services.

السماح بSSH بناءً على رقم المنفذ

بلاستيكياً، يمكنك كتابة القاعدة المماثلة بتحديد المنبثق بدلاً من تشكيل التطبيق أو اسم الخدمة. على سبيل المثال، هذا الأمر يعمل بشكل متطابق مع الأمثلة السابقة:

  1. sudo ufw allow 22
Output
Rule added Rule added (v6)

إذا كنت قد قمت بتكوين داعم الSSH الخاص بك للاستخدام من قاعدة مختلفة، سيتوجب عليك تحديد المنبثق المناسب. على سبيل المثال، إذا كان مخزن الSSH الخاص بك يستمع على المنبثق 2222، يمكنك استخدام هذا الأمر لتسمح للاتصالات على هذا المنبثق:

  1. sudo ufw allow 2222
Output
Rule added Rule added (v6)

حالما تم تكوين جدارك لتسمح للاتصالات الداخلية للSSH، يمكنك تفعيله.

خطوة 4 — تفعيل UFW

يتم الآن تكوين جدارك لتسمح للاتصالات الSSH. للتحقق من أي قواعد تم إضافتها إلى الآن برغم أن الجدار معطل بالفعل، يمكنك استخدام:

  1. sudo ufw show added
Output
Added user rules (see 'ufw status' for running firewall): ufw allow OpenSSH

بعد تأكد أن لديك قاعدة تسمح للاتصالات الداخلية للSSH، يمكنك تفعيل الجدار ب:

  1. sudo ufw enable
Output
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup

سوف تحصل على تحذير يقول أن هذا الأمر قد يتثير الاتصالات القائمة على SSH. قمت بتكوين قاعدة لتسمح للاتصالات الSSH بالفعل، لذلك فإنه يمكن المضي قدماً. أجيب على التقاء بـ y وانقر على ENTER الآن.

الجدار الآن فعال. قم بتشغيل أمر sudo ufw status verbose لرؤية القواعد التي تم ضبطها. يغطي التورية الباقية كيفية استخدام UFW بصورة أكثر تفاصيلاً، مثل تسمية أو رفض أنواع مختلفة من الاتص

خطوة 5 — السماح بالاتصالات الأخرى

في هذه المرحلة، يجب عليك السماح بجميع الاتصالات الأخرى التي يحتاج الخادم الخاص بك إلى الاستجابة إليها. الاتصالات التي يجب عليك السماح بها تعتمد على احتياجاتك المحددة. أنت بالفعل تعرف كيفية كتابة القواعد التي تسمح بالاتصالات بناءً على ملف شخصي للتطبيق، اسم الخدمة، أو المنفذ؛ لقد قمت بذلك بالفعل لـ SSH على المنفذ 22. يمكنك أيضًا القيام بذلك لـ:

  • HTTP على المنفذ 80، وهو ما يستخدمه الخوادم الويبية غير المشفرة، باستخدام sudo ufw allow http أو sudo ufw allow 80
  • HTTPS على المنفذ 443، وهو ما يستخدمه الخوادم الويبية المشفرة، باستخدام sudo ufw allow https أو sudo ufw allow 443
  • Apache مع HTTP و HTTPS، باستخدام sudo ufw allow ‘Apache Full’
  • Nginx مع HTTP و HTTPS، باستخدام sudo ufw allow ‘Nginx Full’

لا تنسَ أن تتحقق من ملفات التطبيقات المتاحة للخادم الخاص بك باستخدام sudo ufw app list.

هناك عدة طرق أخرى للسماح بالاتصالات، بعيدًا عن تحديد منفذ أو اسم خدمة معروفة. سنرى بعض من هذه في الخطوة التالية.

مدى محدد من المنافذ

يمكنك إدخال فترات منفصلة بواسطة جهاز UFW. بعض البرمجة تستخدم منافصل متعددة، بلغ عن ذلك حلقة من خالل منفصلة 60006007. لم نُشر هذا من قبلنا من قبل سيناء لأن لا تحتوي على سيناء من قبل سيناء.

ل لحصول على إمكانية إدخال فترات منفصلة بواسطة UFW، يجب إدخال معلومات البرمجة مثل tcp أو udp. لم نُشر هذا من قبلنا من قبل سيناء لأن لا تحتوي على سيناء من قبل سيناء.

  1. sudo ufw allow 6000:6007/tcp
  2. sudo ufw allow 6000:6007/udp

ل لحصول على إمكانية إدخال فترات منفصلة بواسطة UFW، يجب إدخال معلومات البرمجة مثل tcp أو udp. لم نُشر هذا من قبلنا من قبل سيناء لأن لا تحتوي على سيناء من قبل سيناء.

IP Addresses

إذا كانت سيناء إدخال فترات بواسطة UFW، يمكنك إدخال معلومات صفحة من خالل منفصلة. ل لحصول على إمكانية إدخال فترات بواسطة UFW، يجب إدخال معلومات صفحة من خالل منفصلة. ل لحصول على إمكانية إدخال فترات بواسطة UFW، يجب إدخال معلومات صفحة من خالل منفصلة.

  1. sudo ufw allow from 203.0.113.4
Output
Rule added

يمكنك إدخال معلومات صفحة من خالل منفصلة بواسطة UFW، يمكنك إدخال معلومات صفحة من خالل منفصلة. ل لحصول على إمكانية إدخال فترات بواسطة UFW، يجب إدخال معلومات صفحة من خالل منفصلة.

  1. sudo ufw allow from 203.0.113.4 to any port 22
Output
Rule added

Subnets

إذا كنت ترغب في السماح بشبكة فرعية من عناوين الـ IP، يمكنك القيام بذلك باستخدام تنسيق CIDR لتحديد قناع الشبكة. على سبيل المثال، إذا كنت ترغب في السماح بجميع عناوين الـ IP التي تتراوح بين 203.0.113.1 و 203.0.113.254 يمكنك استخدام هذا الأمر:

  1. sudo ufw allow from 203.0.113.0/24
Output
Rule added

كما يمكنك تحديد منفذ الوصول الوجهة الذي يُسمح لشبكة الفرعية 203.0.113.0/24 بالاتصال به. مرة أخرى، سنستخدم منفذ 22 (SSH) كمثال:

  1. sudo ufw allow from 203.0.113.0/24 to any port 22
Output
Rule added

الاتصالات بواجهة شبكة محددة

إذا كنت ترغب في إنشاء قاعدة حماية تُطبق فقط على واجهة شبكة محددة، يمكنك القيام بذلك عن طريق تحديد “allow in on” متبوعًا باسم واجهة الشبكة.

قد ترغب في البحث عن واجهات شبكتك قبل المتابعة. لفعل ذلك، استخدم هذا الأمر:

  1. ip addr
Output Excerpt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

الناتج المبرز يشير إلى أسماء واجهات الشبكة. يُطبق عادة أن يكون الأسماء مثل eth0 أو enp3s2.

إذا كان لخادمك واجهة شبكة عمومية تُدعى eth0، يمكنك السماح بتدفق HTTP (منفذ 80) إليها باستخدام هذا الأمر:

  1. sudo ufw allow in on eth0 to any port 80
Output
Rule added Rule added (v6)

القيام بذلك سيسمح لخادمك بتلقي طلبات HTTP من الإنترنت العام.

لو أردت جهوز قاعدة بيانات MySQL (المنفذ 3306) ليستمع للاتصالات على واجهة الشبكة الخاصة eth1, على سبيل المثال, يمكنك استخدام هذا الأمر:

  1. sudo ufw allow in on eth1 to any port 3306
Output
Rule added Rule added (v6)

هذا سيسمح للجهوز الأخرين في شبكتك الخاصة بالاتصال بقاعدة بيانات MySQL الخاصة بك.

خطوة 6 — رفض الاتصالات

إذا لم تغير سياسة الوصول الافتراضية للاتصالات المنازلة, يتم تكوين UFW لرفض جميع الاتصالات المنازلة. عامةً, هذا يبسط عملية إنشاء سياسة جدار آمنة بمجرد توجيهك لإنشاء قواعد تبين بوضوح تسمح بالاتصال بالأخصائيات والعناوين المحددة.

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

لكتابة قواعد رفض, يمكنك استخدام الأوامر الموضوعة من قبل, محاولاً 替سماح بالقواعد الجانبية رفض.

على سبيل المثال, لرفض اتصالات HTTP, يمكنك استخدام هذا الأمر:

  1. sudo ufw deny http
Output
Rule added Rule added (v6)

أو إذا أردت رفض جميع الاتصالات من 203.0.113.4, يمكن

  1. sudo ufw deny from 203.0.113.4
Output
Rule added

في حالات خاصة، 您也许也想阻止服务器外出连接。要拒绝所有用户使用服务器上的一个端口,例如端口25用于SMTP流量,您可以使用deny out后跟端口号:

  1. sudo ufw deny out 25
Output
Rule added Rule added (v6)

这将阻止服务器上所有外发SMTP流量。

第7步——删除规则

了解如何删除防火墙规则与了解如何创建它们同样重要。有两种不同的方式指定要删除哪些规则:按规则编号或按其人类可读的名称(类似于创建规则时指定的名称)。

通过编号删除UFW规则

要删除一个UFW规则的编号,首先需要获得一个带有每个规则编号的列表。UFW状态命令有一个选项可以显示每个规则旁边的编号,如下所示:

  1. sudo ufw status numbered
Numbered Output:
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

如果您决定删除规则编号为2的规则,该规则允许端口80(HTTP)连接,您可以像这样指定它:

  1. sudo ufw delete 2
Output
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted

这会提示您确认然后删除规则2,该规则允许HTTP连接。注意,如果您启用了IPv6,您还应该删除相应的IPv6规则。

الحذف من قاعدة قواعد UFW بالإسم

بدلاً من استخدام أعداد القواعد، يمكنك أيضًا الاشتراك بقواعد المرشدة البشرية، وهي مبنية على نوع القاعدة (عاملًا allow أو deny) وأسم الخدمة أو رقم قناة التي كانت هي هدف هذه القاعدة، أو إسم النموذج التطبيقي في حالة أنه تم استخدامه. على سبيل المثال، إذا كنت تريد حذف قاعدة allow لنموذج التطبيق Apache Full التي تم تفعيلها مسبقًا، يمكنك الاستخدام:

  1. sudo ufw delete allow "Apache Full"
Output
Rule deleted Rule deleted (v6)

يعمل أمر الحذف بنفس الطريقة للقواعد التي تم إنشاؤها من خلال إشارة إلى خدمة بإسمها أو قناة. على سبيل المثال، إذا قمت مسبقًا بتعيين قاعدة تسمح بالاتصالات HTTP بواسطة sudo ufw allow http، هذا كيف يمكنك حذف هذه القاعدة:

  1. sudo ufw delete allow http
Output
Rule deleted Rule deleted (v6)

لأن أسماء الخدمات قابلة للتبديل مع أعداد القناة عندما تشير القواعد إليهم، يمكنك أيضًا الاشارة إلى نفس القاعدة بـ allow 80 بدلًا من allow http:

  1. sudo ufw delete allow 80
Output
Rule deleted Rule deleted (v6)

عندما تحذف قواعد UFW بالإسم، يتم حذف القواعد الIPv4 والIPv6 إذا كانت موجودة.

خطوة 8 — فحص حالة UFW والقواعد

يمكنك في أي وقت، التحقق من حالة UFW مع هذا الأمر:

  1. sudo ufw status verbose

إذا كان UFW غير مفعل، وهو هكذا بشكل افتراضي، سترى شيئًا مثل هذا:

Output
Status: inactive

إذا كان UFW نشطًا، ويجب أن يكون كذلك إذا اتبعت الخطوة 3، فإن الناتج سيقول بأنه نشط وسيسرد أي قواعد محددة. على سبيل المثال، إذا كان الجدار الناري يتم تمكينه للسماح باتصال SSH (المنفذ 22) من أي مكان، قد يبدو الناتج شيئًا مثل هذا:

Output
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 للجدار الناري.

الخطوة 9 — تعطيل أو إعادة تعيين الجدار الناري

إذا قررت أنك لا تريد استخدام جدار ناري UFW، يمكنك تعطيله باستخدام هذا الأمر:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

أي قواعد قمت بإنشاؤها باستخدام UFW لن تكون نشطة بعد الآن. يمكنك دائمًا تشغيل sudo ufw enable إذا كنت بحاجة إلى تفعيله لاحقًا.

إذا كان لديك بالفعل قواعد UFW مكونة لكن قررت أنك تريد البدء من جديد، يمكنك استخدام الأمر إعادة التعيين:

  1. sudo ufw reset
Output
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20210729_170353' Backing up 'before.rules' to '/etc/ufw/before.rules.20210729_170353' Backing up 'after.rules' to '/etc/ufw/after.rules.20210729_170353' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210729_170353' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210729_170353' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210729_170353'

سيقوم هذا بتعطيل UFW وحذف أي قواعد كانت محددة مسبقًا. سيمنحك هذا ببداية نظيفة بUFW. تأكد من أن السياسات الافتراضية لن تتغير إلى تفاصيلها الأصلية، إذا قمت بتعديلها في أي نقطة.

استخدم DigitalOcean App Platform لنشر تطبيقات واجهةك من GitHub. دع DigitalOcean يركز على تكييف حجم تطبيقك.

ختام

تم إعداد جدارك السيكيري بشكل يسمح بالاتصالات (على الأقل) بالSSH. تأكد من تسميح أي اتصالات داخلية أخرى تحتاجها خوادمك وفي الوقت نفسه يتم قياس أي اتصالات غير ضرورية لكي تكون خوادمك فعالة وآمنة.

لمعرفة مزيد من تكوينات UFW عامة ، تفقد الدرس التعليمي أساسيات UFW: قوالب القوانين العامة والأوامر الشائعة في الجدارالتعليمي.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04