أكثر من 25+ أوامر iptables مع أمثلة

إذا كنت تستخدم نظام Linux ، فلديك الكثير من الخيارات لحماية جهازك. يأتي مع iptables ، وهي أداة مساعدة لجدار حماية سطر الأوامر توفر المرونة والحماية الممتازة.

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

لذا ، إذا كنت مسؤول نظام أو متعلمًا لنظام Linux ، فأنت في المكان الصحيح حيث نتصفح أوامر iptables الشائعة مع أمثلة.

جدول المحتويات

ما هو iptables؟

iptables عبارة عن جدار حماية مدمج على نظام Linux قائم على البرامج. يسمح لمستخدمي Linux بإنشاء أو تحديد السياسات التي تؤثر بشكل مباشر وغير مباشر على حركة الإنترنت.

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

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

لاستخدام iptables ، عليك استخدام الأمر التالي.

$ iptables -L -n -v 

هنا ، المعلمات كما يلي:

  • -L لسرد جميع القواعد.
  • -n يجعل الإخراج الرقمي يقدم أداء أسرع.
  • -v لإظهار الإخراج بتنسيق مفصل.

بمجرد تشغيل الأمر iptables بدون أي معلمة ، سيعيد الإخراج التالي:

iptables v1.8.7 (nf_tables): no command specified

Try `iptables -h' or 'iptables --help' for more information.

تحتاج إلى تثبيته إذا حدث خطأ ، مثل الأمر “iptables” غير موجود.

لتثبيت iptables في توزيعة Linux الخاصة بك ، قم بتشغيل الأمر التالي.

$ sudo apt-get install iptables

سيعيد ما يلي لأنه مثبت مسبقًا على توزيعة Linux الخاصة بي.

#output
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iptables is already the newest version (1.8.7-1ubuntu5).
iptables set to manually installed.
0 upgraded, 0 newly installed, 0 to remove, and 35 not upgraded.

ما هو جدار الحماية؟

الجدران النارية هي الشكل الأساسي لحماية الأنظمة والشبكات وأجهزة الكمبيوتر الشخصية. يمكن أن تكون قائمة على الأجهزة أو البرامج ، معتمدين على القواعد لتعمل بشكل صحيح.

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

إذا كنت تستخدم Linux ، فيمكنك الوصول إلى iptables المضمنة. ومع ذلك ، يمكنك أيضًا استخدام جدار حماية Linux مستقل لمساعدتك في عملية حماية نظامك.

لماذا تحتاج iptables لتكوين جدار الحماية؟

لكن لماذا يجب عليك استخدام iptables على الإطلاق؟ بعد كل شيء ، هناك أدوات مساعدة بديلة جيدة لجدار حماية سطر الأوامر مثل ufw و firewalld. أيضًا ، يمكنك استخدام جدران حماية Linux المستقلة التي تتميز بسهولة الاستخدام وتوفر المزيد من الميزات.

إذن ، ما الذي يجعل iptables جذابًا للغاية عند تكوين جدار حماية؟ تشمل أسباب استخدامه ما يلي:

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

وأكثر بكثير!

فهم هندسة iptables وعلاقتها بـ Netfilter

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

وعندما نتحدث عن iptables ، يظهر Netfilter أيضًا في الصورة. يمكنك التفكير في “Netfilter” على أنه الأخ الأكبر لـ iptables. إنه يعتمد على iptables ويقدم مجموعة ميزات أفضل لإدارة جدار الحماية الخاص بك. ومع ذلك ، فإنه يستخدم iptables كأحد الوسائل لتحقيق قدرات جدار حماية ممتازة.

Iptables عبارة عن واجهة سطر أوامر لخطافات على مستوى نواة Netfilter. يمكن أن تتفاعل هذه الخطافات مع مكدس شبكة Linux ، مما يؤثر على الحزم في المستوى الأعمق.

إذن ، كيف تبدو هندسة iptables:

الجداول

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

تشمل الطاولات المختلفة التي يوفرها iptables ما يلي:

  • جدول التصفية: يحدد نوع القرار لتصفية الحزم. بعبارات بسيطة ، فإنه يحدد ما إذا كان يجب أن تصل الحزمة إلى وجهتها أم لا.
  • جدول NAT: يحدد نوع القرار لترجمة العنوان. هنا ، يتم تحديد توجيه الحزم بناءً على شبكات NAT. على سبيل المثال ، إذا لم تتمكن الحزمة من الوصول إلى NAT ، فسوف تتخطى وتحاول البحث عن شبكة بخلاف شبكة NAT.
  • جدول Mangle: يدير احتياجات المعالجة الخاصة للحزمة. على سبيل المثال ، يمكنك تكوينه لتغيير معلومات رأس الحزمة ، مثل قيم TTL.
  • الجدول الأولي: يتيح لك الجدول الأولي العمل بجد مع الجانب الخاص بالحالة لجدار حماية iptables. باستخدام الجدول ، يمكنك توجيه الحزم بناءً على “حالتها” قبل أن تبدأ نواة Linux في تتبع حالتها. يتم استخدامه بشكل أساسي لتمييز الحزم ، سواء كان نظام تتبع الاتصال يتعامل معها أم لا. إذا لم يتم تعقب الحزمة ، يتم ضبطها على هدف NOTRACK.

السلاسل

وبعد ذلك ، لدينا “سلاسل” داخل “الجداول”.

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

  أكثر 8 تقاويم آمنة يمكنك استخدامها في عام 2022

تمامًا مثل الطاولات ، تحصل أيضًا على سلاسل مختلفة. وتشمل هذه:

  • السلسلة السابقة: هنا ، تتعامل القواعد مع الحزم التي وصلت للتو في واجهة الشبكة.
  • سلسلة الإدخال: تعالج القواعد المذكورة في سلسلة الإدخال سلوك الاتصال الوارد. بمجرد الانتهاء ، يتم إعطاؤهم للعملية المحلية.
  • سلسلة الإخراج: تتعامل سلسلة الإخراج مع الحزم التي تعالج المنتج.
  • سلسلة FORWARD: تدير سلسلة FORWARD الحزم غير المخصصة للأنظمة المحلية. إنه ناقل للأنظمة الموجهة الأخرى ، مثل جهاز التوجيه.
  • سلسلة POSTROUTING: أخيرًا ، لدينا سلسلة POSTROUTING ، والتي تتعامل مع الحزم على وشك المغادرة عبر واجهة الشبكة.

ليست كل السلاسل متوفرة في كل طاولة. على سبيل المثال ، لا تتوفر سلسلة FORWARD إلا في mangle و filter و security table. وبالمثل ، فإن سلسلة POSTROUTING متاحة على mangle و nat (SNAT). تتوفر فقط سلسلة الإخراج في جميع الجداول.

هدف

الآن ، لدينا “هدف”. بمجرد وصول الحزمة ، تتحرك عبر السلاسل لمعرفة وصف القاعدة الأنسب. إذا كانت تتناسب مع وصف القاعدة ، فإنها تنفذ الإجراء المرتبط بناءً عليها ثم تنقلها إلى الهدف – تختم مصير الحزمة.

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

يمكن أن تكون الأهداف “قبول” و “إسقاط” و “رفض”. هذه أهداف نهائية تقرر مصير الحزمة.

  • قبول: يقبل الحزم.
  • DROP: يسقط الحزمة ، مما يجعل المرسل غير قادر على معرفة ما إذا كان النظام موجودًا أم لا.
  • رفض: يرفض الحزمة.

هناك أيضًا أهداف غير منتهية تُستخدم بشكل أساسي لتخزين المعلومات حول الحزمة.

أوامر iptables الأكثر شيوعًا مع أمثلة

قبل القفز والبدء في تنفيذ الأمر iptables ، تأكد من:

  • لديك حق الوصول الإداري لتشغيل الأوامر. إذا فشل الأمر بسبب الامتيازات الإدارية ، أعد تشغيل الأمر باستخدام الأمر sudo أمامه.
  • المقال ليس برنامجًا تعليميًا حول كيفية تكوين iptables على Ubuntu.
  • سنستخدم الأمر iptables الذي يعمل مع IPv4. إذا كنت تنوي العمل مع IPv6 ، فستحتاج إلى استخدام ip6tables بدلاً من ذلك.

التحقق من حالة iptables

للتحقق من حالة iptables الحالية ، عليك تشغيل الأمر التالي.

$ iptables -L -n -v
#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

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

ستحتاج إلى البدء في إضافة قواعد لتنشيط جدار الحماية.

إضافة القواعد إلى السلسلة

عند إضافة قاعدة ، يتم إلحاقها دائمًا بالسلسلة. لذلك ، يجب عليك استخدام الخيار -A (إلحاق). بناء الجملة كما يلي:

$ sudo iptables - A

ومع ذلك ، عند تشغيله ، فإنه سيعيد ما يلي:

iptables v1.8.7 (nf_tables): option "-A" requires an argument

Try `iptables -h' or 'iptables --help' for more information.

الوسيطات التي يمكنك استخدامها لإضافة القواعد هي:

  • – i: تعني الواجهة. هنا ، يمكنك ذكر الواجهة التي تضيف قواعد لها. يمكن أن يكون ppp0 و eth0 وما إلى ذلك.
  • – ع: إنها تعني البروتوكول. هنا ، ذكرت قاعدة استخدام بروتوكول الشبكة لتصفية الحزم. على سبيل المثال ، يمكنك نطق ICMP ، و TCP ، و UDP ، وما إلى ذلك. إذا كنت تريد أن تعمل القاعدة عبر جميع البروتوكولات ، فذكر “الكل” كقيمة الوسيطة.
  • – s: تأتي بعد ذلك الوسيطة المصدر ، والتي تشير إلى مصدر حركة المرور (مثل عنوان IP أو اسم المضيف)
  • – dport: يرمز dport إلى منفذ الوجهة ، حيث تذكر رقم المنفذ الذي تم توجيه الحزمة إليه.
  • – j: أخيرًا ، لدينا وسيطة TARGET حيث يمكنك ذكر اسم TARGET أو ACCEPT أو DROP أو RETURN

من الضروري أيضًا كتابة الأمر بالترتيب التالي:

$ sudo iptables -A <chain-name> -i <interface-name> - p <protocool-name> - s <source> --dport <port no.> -j <target>

حفظ التغييرات على iptables

بمجرد إضافة قاعدة ، يمكنك حفظها باستخدام الأمر iptables -save.

$ sudo iptables -save

الإخراج كالتالي:

[email protected]:~$ sudo iptables-save

# Generated by iptables-save v1.8.7 on Sun May 14 13:37:34 2023

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 392 -j REJECT --reject-with icmp-port-unreachable

-A OUTPUT -o lo -j ACCEPT

COMMIT

# Completed on Sun May 14 13:37:34 2023

استمرار القواعد يدويًا

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

لقواعد IPv4 ، اكتب الأمر:

$ sudo iptables-save > /etc/iptables/rules.v4

وبالنسبة لقواعد IPv6 ، اكتب الأمر:

$ sudo iptables-save > /etc/iptables/rules.v6

استمرار القواعد تلقائيًا

لجعل القواعد قائمة حتى بعد إعادة التشغيل ، وهذا أيضًا تلقائيًا ، ستحتاج إلى تثبيت الحزمة المسبقة iptables.

للقيام بذلك ، قم بتشغيل الأمر التالي.

$ sudo apt-get install iptables-persistent

ستفتح النافذة التالية. اضغط على Enter في <نعم>.

نظرًا لأننا نعمل مع جدول IPv4 ، فسوف يعرض فقط قواعد IPv4. إذا كنت تعمل على IPv6 ، فستظهر النافذة ذات الصلة.

ملاحظة: تُحمِّل الحزمة قواعد iptables المحفوظة فقط. لذلك ، عندما تقوم بتغيير iptables ، ستحتاج إلى حفظها باستخدام الأمر iptables -save.

إعادة تحميل القواعد بعد إعادة التشغيل

بمجرد حفظ القواعد ، يجب استعادتها باستخدام الأمر التالي.

$ sudo iptables-restore < /etc/iptables/rules.v4

و

$ sudo iptables-restore < /etc/iptables/rules.v6

تمكين المرور على المضيف المحلي / تمكين الاسترجاع

لتمكين حركة المرور على Localhost ، استخدم الأمر التالي:

$ sudo iptables -A INPUT -i lo -j ACCEPT

هنا ، يرمز lo إلى واجهة الاسترجاع لجميع اتصالات المضيف المحلي.

وبالمثل ، يمكننا السماح للحزم بالخروج من خلال واجهة الاسترجاع.

$ sudo iptables -A OUTPUT -o lo -j ACCEPT

للتحقق من كيفية تغيير القواعد ، قم بتشغيل iptables -L -n -V

#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

تمكين حركة المرور في منافذ معينة

يمكنك تمكين حركة المرور للقبول أو الرفض على منافذ معينة.

  كيفية تشغيل Mac OS Monterey على Ubuntu

على سبيل المثال ، تعد منافذ SSL و HTTP و SSH مهمة للتشغيل العادي لتطبيقاتك. يمكنك إضافة قواعد إلى حزمة “قبول” من خلال أرقام المنافذ للتأكد من أنها تعمل على النحو المنشود.

بالنسبة لـ SSL ، قم بتشغيل الأمر التالي.

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

بالنسبة إلى HTTPS ، قم بتشغيل الأمر التالي.

$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

للسماح لجميع حركات مرور HTTPS على واجهة eth0.

$ iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

بالنسبة لـ SSH ، قم بتشغيل الأمر التالي.

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

ولقبول جميع حركات مرور SSH الواردة على واجهة eth0 ، قم بتشغيل ما يلي:

$ iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

مثال آخر هو تمكين حركة مرور المنفذ على منفذ معين لتطبيقك المخصص. لنفترض المنفذ 233.

لفتح الاتصالات على هذا المنفذ ، قم بتشغيل.

$ sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT

وبالمثل ، يمكنك أيضًا تعطيل الاتصالات على منفذ معين باستخدام خيار REJECT target.

دعنا نحظر جميع الاتصالات في المنفذ 392.

$ sudo iptables -A INPUT -p tcp --dport 392 -j REJECT

للتحقق ، قم بتشغيل الأمر iptables -L -n -v.

#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:233

    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

 0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0

حذف القواعد الموجودة

لحذف القواعد الحالية ، ستحتاج إلى تشغيل الأمر التالي.

$ iptables -F

أو

$ iptables --flush

ملاحظة: إذا لم تكن قد حفظت القواعد الخاصة بك ، فستفقد إلى الأبد ولا يمكن استعادتها باستخدام iptables -restore

حذف القواعد بأرقام الأسطر

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

$ sudo iptables -L --line-numbers
#output

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh

2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

3    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:233

5    REJECT     tcp  --  anywhere             anywhere             tcp dpt:392 reject-with icmp-port-unreachable

قم بتشغيل الأمر التالي إذا كنت ترغب في إزالة القاعدة رقم 4 لسلسلة الإدخال.

$ sudo iptables -D INPUT 4

وإذا قمت بتشغيل الأمر iptables -n -v -L مرة أخرى.

#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

عرض قواعد سلسلة الإدخال أو الإخراج فقط

لعرض قواعد سلسلة الإدخال فقط ، قم بتشغيل الأمر التالي.

$ sudo iptables -L INPUT -n -v --line-numbers
#ouput

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

num   pkts bytes target     prot opt in     out     source               destination

1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

3        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

4        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

وبالمثل ، إذا كنت تريد رؤية قواعد سلسلة الإخراج فقط ، فقم بتشغيل:

$ sudo iptables -L OUTPUT -n -v --line-numbers
#output

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

num   pkts bytes target     prot opt in     out     source               destination

1        0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0

بدء / إيقاف / إعادة تشغيل جدار الحماية

إذا كنت تستخدم RHEL / Fedora Linux أو CentOS ، فيمكنك بدء / إيقاف أو إعادة تشغيل جدار الحماية عن طريق تشغيل الأوامر.

$ service iptables stop

$ service iptables start

$ service iptables restart

يمكنك أيضًا استخدام الأمر systemctl.

  14 من أفضل أدوات اختبار سرعة الإنترنت للتحقق من شبكة Wi-Fi والنطاق الترددي للجوال

ومع ذلك ، لن يعمل على Ubuntu.

أدخل القواعد في مكان محدد

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

أولاً ، تحقق من القواعد.

$ sudo iptables -L INPUT -n --line-numbers
#output

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443

4    REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

قم بتشغيل الأمر التالي إذا كنت تريد إدراج القواعد بين 2 و 3.

$ sudo iptables -I INPUT 3 -s 252.32.1.2 -j DROP

الآن ، تحقق من القواعد المحدثة.

#output

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

3    DROP       all  --  252.32.1.2           0.0.0.0/0

4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443

5    REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

منع حركة المرور الواردة مع السماح لحركة المرور الصادرة

ستحتاج إلى إدخال الأمر التالي لحظر كل حركة المرور الواردة.

$ iptables -P INPUT DROP

$ iptables -P FORWARD DROP

$ iptables -P OUTPUT ACCEPT

$ iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -L -v -n

بهذه الطريقة ، يمكنك تنفيذ الأمر ping أو تنزيل الحزم مع حظر أي حركة مرور واردة غير معروفة.

حظر عنوان IP معين

لحظر عنوان IP محدد ، قم بتشغيل الأمر التالي.

$ iptables -A INPUT -s 14.23.59.9 -J DROP

يمكنك أيضًا تحديد متغير لتخزين عنوان IP المحظور ثم تشغيل الأمر.

BLOCK_THE_IP = “a.b.c.d”

ثم قم بتشغيل:

$ iptables -A INPUT -s “BLOCK_THE_IP” -j DROP

ملاحظة: قم بتغيير “abcd” إلى عنوان IP المفضل لديك.

السماح للنظام باختبار الاتصال من الخارج

يمكنك حث المستخدمين الخارجيين على اختبار اتصال الخادم الخاص بك لجعل شبكتك قابلة للاكتشاف.

$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

$ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

السماح للشبكة الداخلية بالتحدث إلى الشبكة الخارجية

قم بتشغيل الأمر التالي للسماح للشبكة الداخلية (دعنا نقول eth0) للشبكة الخارجية (دعنا نقول eth1).

$ sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

السماح بالخارج DNS

للسماح باتصالات DNS بالخادم الخاص بك ، قم بتشغيل الأمر التالي.

$ iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT

$ iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

السماح لـ Rsycn من شبكة معينة

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

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

بلوك بورت

قم بتشغيل الأمر التالي لحظر منفذ معين وأي طلبات واردة.

iptables -A INPUT -p tcp --dport 80 -j DROP

iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

منع حركة المرور الصادرة إلى عنوان IP معين

يمكنك حظر حركة المرور إلى أي عنوان IP عن طريق تشغيل الأمر التالي.

$ host -t a admingate.org.com

#انتاج

موقع admingate.org.com له عنوان 172.66.40.93

لحظر حركة المرور الصادرة إلى عنوان IP المحدد ، قم بتشغيل الأمر التالي.

iptables -A OUTPUT -d 72.66.40.93 -j DROP

وبالمثل ، يمكنك أيضًا حظر منصات الوسائط الاجتماعية مثل Instagram و Twitter و Facebook.

ابحث عن عنوان IP الخاص بالوسائط الاجتماعية عن طريق تشغيل الأمر التالي:

$ host -t a social-media-web-adrress.com

على سبيل المثال ، بالنسبة إلى Instagram ، سيكون:

$ host -t a www.instagram.com

الآن ، ستحتاج إلى العثور على CIDR لعنوان IP الخاص بمنصة الوسائط الاجتماعية المحددة.

$ whois 185.89.219.11 | grep CIDR

ملاحظة: قد تحتاج إلى تثبيت حزمة whois عن طريق تشغيل sudo apt-get install whois

الآن ، أدخل قيمة CIDR بالطريقة التالية:

$ iptables - A OUTPUT -p tcp -d CIDR-value -j DROP

ملاحظة: تأكد من تغيير قيمة CIDR وفقًا لذلك.

السماح بطلب Ping لـ ICMP أو حظره

للسماح بطلبات ping لـ ICMP أو حظرها ، قم بتشغيل الأوامر التالية.

$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

$ iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP

افتح نطاقًا معينًا من المنافذ

لفتح نطاق من المنافذ ، قم بتشغيل الأمر التالي.

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8933: 8500 -j ACCEPT

قائمة قواعد NAT

لسرد قواعد NAT ، قم بتشغيل الأمر التالي:

$ sudo iptables -t nat -L -n -v

أو

$ sudo iptables -t nat -v -L -n --line-number

إعادة تعيين عدادات الحزمة

للتحقق من عداد iptables الحالي:

$ sudo iptables -L -n -v

لإعادة تعيين العدادات أو مسحها ، قم بتشغيل ما يلي:

$ sudo iptables -Z

$ sudo iptables -L -n -v

لإعادة تعيين عداد سلسلة الإدخال فقط ، قم بتشغيل:

$ iptables -Z INPUT

لإعادة تعيين عداد قاعدة معين ، قم بتشغيل ما يلي:

$ iptables -z INPUT RULE-NUMBER

تأكد من تغيير RULE-NUMBER إلى تلك القاعدة المحددة.

الكلمات الأخيرة

iptables هي أداة مساعدة قوية لسطر الأوامر لجدار الحماية. يمكنك تكوين كل شيء تقريبًا متعلق بموارد الشبكة والحزم والواجهات والسيناريوهات الخاصة.

كما يوفر iptables الكثير من الخيارات. تحقق من صفحتها الرئيسية باستخدام الأمر man للحصول على الصورة الكاملة.

$ man iptables
$ man ip6tables

بعد ذلك ، تحقق من جدار حماية الشبكة وكيف يساعد في إيقاف الهجمات.