إدارة حركة مرور الشبكة هي واحدة من أصعب الوظائف التي يتعين على مسؤولي النظام التعامل معها. يجب عليه تكوين جدار الحماية بطريقة تلبي متطلبات النظام والمستخدمين لكل من الاتصالات الواردة والصادرة ، دون ترك النظام عرضة للهجمات.
هذا هو المكان iptables
تأتي في متناول اليدين. Iptables هو جدار حماية لسطر أوامر Linux يسمح لمسؤولي النظام بإدارة حركة المرور الواردة والصادرة عبر مجموعة من قواعد الجدول القابلة للتكوين.
Iptables يستخدم مجموعة من الجداول التي تحتوي على سلاسل تحتوي على مجموعة من القواعد المضمنة أو المحددة من قبل المستخدم. بفضلهم ، يمكن لمسؤول النظام تصفية حركة مرور الشبكة لنظامه بشكل صحيح.
لكل دليل iptables ، يوجد حاليًا 3 أنواع من الجداول:
منقي
- هذا هو الجدول الافتراضي الذي يحتوي على السلاسل المضمنة من أجل: نات
- جدول يتم الرجوع إليه عندما تحاول الحزمة إنشاء اتصال جديد. يحتوي على ما يلي مدمج: فسد
- يستخدم هذا الجدول لتعديل الحزم. حتى إصدار النواة 2.4 يحتوي هذا الجدول على سلسلتين فقط ، لكنهما الآن 5: في هذه المقالة ، سترى بعض الأوامر المفيدة التي ستساعدك على إدارة جدار الحماية الخاص بـ Linux box من خلال iptables. لغرض هذه المقالة ، سأبدأ بأوامر أبسط وانتقل إلى أكثر تعقيدًا حتى النهاية.
أولاً ، يجب أن تعرف كيفية إدارة خدمة iptables في توزيعات Linux المختلفة. هذا سهل إلى حد ما:
On Cent / RHEL 7 و Fedora 22+ # systemctl ابدأ iptables. # systemctl stop iptables. # systemctl إعادة تشغيل iptables.
On Cent / RHEL 6/5 و Fedora # /etc/init.d/iptables ابدأ # /etc/init.d/iptables stop. # /etc/init.d/iptables إعادة التشغيل.
إذا كنت تريد التحقق من القواعد الموجودة لديك ، فاستخدم الأمر التالي:
# iptables -L -n -v.
يجب أن يعيد هذا إخراجًا مشابهًا للإخراج أدناه:
إدخال سلسلة (سياسة قبول 1129 كيلو حزم ، 415 ميغا بايت) pkts bytes target prot opt in source source 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 53 0 0 قبول udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 53 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 67 0 0 قبول udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 67
سلسلة FORWARD (السياسة تقبل 0 حزم ، 0 بايت) pkts bytes target prot opt in source source 0 0 ACCEPT all - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all - lxcbr0 * 0.0.0.0/ 0 0.0.0.0/0
إخراج السلسلة (قبول السياسة 354 كيلو حزم ، 185 ميغا بايت) pkts bytes target prot opt in out source Destination
إذا كنت تفضل التحقق من القواعد الخاصة بجدول معين ، فيمكنك استخدام -t
الخيار متبوعًا بالجدول الذي تريد التحقق منه. على سبيل المثال ، للتحقق من القواعد في ملف نات
الجدول ، يمكنك استخدام:
# iptables -t nat -L -v -n.
إذا وجدت نشاطًا غير عادي أو مسيء من عنوان IP ، فيمكنك حظر عنوان IP هذا بالقاعدة التالية:
# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP.
أين تريد التغيير "xxx.xxx.xxx.xxx"
بعنوان IP الفعلي. كن حذرًا جدًا عند تشغيل هذا الأمر حيث يمكنك حظر عنوان IP الخاص بك عن طريق الخطأ. ال -أ
الخيار يلحق القاعدة في نهاية السلسلة المحددة.
في حال كنت تريد فقط الحظر TCP حركة المرور من عنوان IP هذا ، يمكنك استخدام -p
الخيار الذي يحدد البروتوكول. بهذه الطريقة سيبدو الأمر كما يلي:
# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP.
إذا قررت أنك لم تعد ترغب في حظر الطلبات من عنوان IP محدد ، فيمكنك حذف قاعدة الحظر باستخدام الأمر التالي:
# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP.
ال -د
الخيار يحذف قاعدة واحدة أو أكثر من السلسلة المحددة. إذا كنت تفضل استخدام الخيار الأطول ، يمكنك استخدامه --حذف
.
في بعض الأحيان قد ترغب في حظر الاتصالات الواردة أو الصادرة على منفذ معين. إنه إجراء أمني جيد ويجب أن تفكر حقًا في هذا الأمر عند إعداد جدار الحماية الخاص بك.
لحظر الاتصالات الصادرة على منفذ معين ، استخدم:
# iptables -A الإخراج -p tcp --dport xxx -j DROP.
للسماح بالاتصالات الواردة ، استخدم:
# iptables -A INPUT -p tcp --dport xxx -j ACCEPT.
في كلا المثالين التغيير "xxx"
مع المنفذ الفعلي الذي ترغب في السماح به. إذا كنت تريد منع UDP حركة المرور بدلا من TCP، ببساطة تغير "tcp"
مع "udp"
في قاعدة iptables أعلاه.
يمكنك السماح لمنافذ متعددة في وقت واحد ، باستخدام متعدد المنافذ، يمكنك العثور أدناه على هذه القاعدة لكل من الاتصالات الواردة والصادرة:
# iptables -A INPUT -p tcp -m multortort --dports 22،80،443 -j ACCEPT. # iptables -A OUTPUT -p tcp -m multortort --sports 22،80،443 -j ACCEPT.
قد ترغب في تقييد اتصالات معينة على منفذ معين بشبكة معينة. لنفترض أنك تريد السماح بالاتصالات الصادرة على المنفذ 22
إلى الشبكة 192.168.100.0/24
.
يمكنك القيام بذلك باستخدام هذا الأمر:
# iptables -A الإخراج -p tcp -d 192.168.100.0/24 - dport 22 -j ACCEPT.
يحب بعض أصحاب العمل منع الوصول إلى فيسبوك لموظفيهم. فيما يلي مثال على كيفية منع حركة المرور إلى Facebook.
ملحوظة: إذا كنت مسؤول نظام وتحتاج إلى تطبيق هذه القواعد ، ضع في اعتبارك أن زملائك قد يتوقفون عن التحدث إليك :)
ابحث أولاً عن عناوين IP التي يستخدمها Facebook:
# host facebook.com facebook.com لديه عنوان 66.220.156.68.
# whois 66.220.156.68 | grep CIDR. CIDR: 66.220.144.0/20.
يمكنك بعد ذلك حظر شبكة Facebook هذه باستخدام:
# iptables -A الإخراج -p tcp -d 66.220.144.0/20 -j DROP.
ضع في اعتبارك أن نطاق عناوين IP الذي يستخدمه Facebook قد يختلف في بلدك.
في بعض الأحيان قد ترغب في إعادة توجيه حركة مرور خدمة ما إلى منفذ آخر. يمكنك تحقيق ذلك بالأمر التالي:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525.
يقوم الأمر أعلاه بإعادة توجيه كل حركة المرور الواردة على واجهة الشبكة eth0
، من الميناء 25
الى المرفئ 2525
. يمكنك تغيير المنافذ بالمنافذ التي تحتاجها.
في بعض الأحيان ، قد تطلب عناوين IP اتصالات كثيرة جدًا بمنافذ الويب على موقع الويب الخاص بك. يمكن أن يتسبب هذا في عدد من المشكلات ولمنع مثل هذه المشكلات ، يمكنك استخدام القاعدة التالية:
# iptables -A INPUT -p tcp --dport 80 -m حد - بحد 100 / دقيقة - Limit-burst 200 -j ACCEPT.
يحد الأمر أعلاه الاتصالات الواردة من كل دقيقة إلى 100
ويضع حدًا للانفجار 200
. يمكنك تعديل الحد والاندفاع إلى متطلباتك الخاصة.
يحب بعض مسؤولي النظام حظر طلبات ping الواردة بسبب مخاوف أمنية. على الرغم من أن التهديد ليس بهذه الضخامة ، إلا أنه من الجيد معرفة كيفية منع هذا الطلب:
# iptables -A INPUT -p icmp -i eth0 -j DROP.
وصول الاسترجاع (الوصول من 127.0.0.1
) مهم ويجب عليك دائمًا تركه نشطًا:
# iptables -A INPUT -i lo -j قبول. # iptables -A الإخراج -o lo -j ACCEPT.
إذا كنت تريد تسجيل الحزم التي تم إسقاطها على واجهة الشبكة eth0
، يمكنك استخدام الأمر التالي:
# iptables -A INPUT -i eth0 -j LOG - log-prefix "حزم IPtables المسقطة:"
يمكنك تغيير القيمة بعد "--log-بادئة"
بشيء من اختيارك. تم تسجيل الرسائل في /var/log/messages
ويمكنك البحث عنها باستخدام:
# grep "حزم IPtables المسقطة:" / var / log / messages.
يمكنك حظر الوصول إلى نظامك من عنوان MAC محدد باستخدام:
# iptables -A INPUT -m mac --mac-source 00: 00: 00: 00: 00: 00 -j DROP.
بالطبع ، سوف تحتاج إلى التغيير "00:00:00:00:00:00"
بعنوان MAC الفعلي الذي تريد حظره.
إذا كنت لا ترغب في إنشاء عدد كبير جدًا من الاتصالات المتزامنة من عنوان IP واحد على منفذ معين ، فيمكنك استخدام الأمر أدناه:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT.
الأمر أعلاه لا يسمح بأكثر من 3
اتصالات لكل عميل. بالطبع ، يمكنك تغيير رقم المنفذ لمطابقة الخدمة المختلفة. أيضا --connlimit- أعلاه
يجب تغييرها لتتناسب مع متطلباتك.
بمجرد تحديد قواعد iptables الخاصة بك ، ستحتاج إلى البحث من وقت لآخر وقد تحتاج إلى تعديلها. طريقة سهلة للبحث ضمن القواعد الخاصة بك هي استخدام:
# iptables -L $ table -v -n | grep $ string.
في المثال أعلاه ، سوف تحتاج إلى التغيير طاولة $
مع الجدول الفعلي الذي ترغب في البحث فيه و سلسلة $
مع السلسلة الفعلية التي تبحث عنها.
هنا مثال:
# iptables -L INPUT -v -n | grep 192.168.0.100.
باستخدام iptables ، يمكنك تحديد سلسلتك الخاصة وتخزين القواعد المخصصة فيها. لتحديد سلسلة ، استخدم:
# iptables -N مرشح مخصص.
يمكنك الآن التحقق مما إذا كان الفلتر الجديد موجودًا:
# iptables -L.
إدخال السلسلة (قبول السياسة) الهدف حماية وجهة المصدر.
سلسلة إلى الأمام (قبول السياسة) الهدف حماية وجهة المصدر
إخراج السلسلة (قبول السياسة) الهدف حماية وجهة المصدر
سلسلة تصفية مخصص(0 مراجع) الهدف حماية وجهة المصدر
إذا كنت تريد مسح سلاسل جدار الحماية ، فيمكنك استخدام:
# iptables -F.
يمكنك شطف السلاسل من طاولة معينة باستخدام:
# iptables -t nat -F.
يمكنك التغيير "نات"
مع الجدول الفعلي للسلاسل التي ترغب في شطفها.
إذا كنت تريد حفظ قواعد جدار الحماية ، فيمكنك استخدام ملحق iptables- حفظ
قيادة. يمكنك استخدام ما يلي لحفظ القواعد الخاصة بك وتخزينها في ملف:
# iptables-save> ~ / iptables.rules.
الأمر متروك لك حيث سيتم تخزين الملف وكيفية تسميته.
إذا كنت تريد استعادة قائمة قواعد iptables ، فيمكنك استخدام iptables- استعادة
. يبدو الأمر كما يلي:
# iptables-استعادةبالطبع قد يكون المسار إلى ملف القواعد مختلفًا.
21. قم بإعداد قواعد IPtables لتوافق PCI
قد يُطلب من بعض مسؤولي النظام تكوين خوادمهم لتكون متوافقة مع PCI. هناك العديد من المتطلبات من قبل موردي امتثال PCI المختلفين ، ولكن هناك القليل من المتطلبات الشائعة.
في كثير من الحالات ، ستحتاج إلى أكثر من عنوان IP واحد. ستحتاج إلى تطبيق القواعد أدناه على عنوان IP الخاص بالموقع. كن حذرًا جدًا عند استخدام القواعد أدناه واستخدمها فقط إذا كنت متأكدًا مما تفعله:
# iptables -I INPUT -d SITE -p tcp -m multiport --dports 21،25،110،143،465،587،993،995 -j DROP.إذا كنت تستخدم cPanel أو لوحة تحكم مشابهة ، فقد تحتاج إلى حظر منافذها أيضًا. هنا مثال:
# iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports 2082،2083،2095،2096،2525،2086،2087 -j DROP.ملحوظة: للتأكد من استيفاء متطلبات بائع PCI الخاص بك ، تحقق من تقريره بعناية وقم بتطبيق القواعد المطلوبة. في بعض الحالات ، قد تحتاج إلى حظر حركة مرور UDP على منافذ معينة أيضًا.
22. السماح بالاتصالات المنشأة وذات الصلة
نظرًا لأن حركة مرور الشبكة منفصلة عن حركة المرور الواردة والصادرة ، فستحتاج إلى السماح بحركة المرور الواردة القائمة وذات الصلة. للاتصالات الواردة ، قم بذلك باستخدام:
# iptables -A INPUT -m conntrack --ctstate ESTABLISHED، ذات الصلة -j ACCEPT.للاستخدام المنتهية ولايته:
# iptables -A الإخراج -m conntrack --ctstate ESTABLISHED -j ACCEPT.23. إسقاط الحزم غير الصالحة في IPtables
من الممكن وضع علامة على بعض حزم الشبكة على أنها غير صالحة. قد يفضل بعض الأشخاص تسجيل هذه الحزم ، لكن يفضل البعض الآخر إسقاطها. لإسقاط الحزم غير الصالحة ، يمكنك استخدام:
# iptables -A INPUT -m conntrack --ctstate غير صالح -j DROP24. حظر الاتصال على واجهة الشبكة
قد تحتوي بعض الأنظمة على أكثر من واجهة شبكة واحدة. يمكنك تقييد الوصول إلى واجهة الشبكة هذه أو حظر الاتصالات من عنوان IP معين.
فمثلا:
# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP.يتغيرون "xxx.xxx.xxx.xxx" باستخدام عنوان IP الفعلي (أو الشبكة) التي ترغب في حظرها.
25. تعطيل البريد الصادر من خلال IPTables
إذا كان يجب ألا يرسل نظامك أي رسائل بريد إلكتروني ، فيمكنك حظر المنافذ الصادرة على منافذ SMTP. على سبيل المثال يمكنك استخدام هذا:
# iptables -A OUTPUT -p tcp --dports 25،465،587 -j رفض.استنتاج
Iptables هو جدار حماية قوي يمكنك الاستفادة منه بسهولة. من الضروري أن يتعلم كل مسؤول نظام على الأقل أساسيات iptables. إذا كنت ترغب في العثور على مزيد من المعلومات التفصيلية حول iptables وخياراته ، فيوصى بشدة بقراءة دليله:
# رجل iptables.إذا كنت تعتقد أنه يجب علينا إضافة المزيد من الأوامر إلى هذه القائمة ، فيرجى مشاركتها معنا ، من خلال إرسالها في قسم التعليقات أدناه.