هجمات DDoS وهجمات أخرى مقابل iptables (حماية ضد DDoS في iptables)

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

# Iptables

IPT="/sbin/iptables"
ETH="eth0"

#Todo el tráfico syn
$IPT -P INPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -P OUTPUT DROP
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -P FORWARD DROP
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A FORWARD -i lo -o lo -j ACCEPT

#Cuando sube la carga
$IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

#La que mejor va
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP

#Igual que el de arriba pero muy raw
$IPT -N syn-flood
$IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT

#Descartar paquetes mal formados
$IPT -N PKT_FAKE
$IPT -A PKT_FAKE -m state --state INVALID -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
$IPT -A PKT_FAKE -f -j DROP
$IPT -A PKT_FAKE -j RETURN

#Syn-flood
$IPT -N syn-flood
$IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
$IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
$IPT -A syn-flood -j DROP

#Requiere módulo "recent"
modprobe ipt_recent
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP

# explicación:
# Se añade cada ip que se conecte a la tabla de recent
# Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
$IPT -I INPUT -p tcp --syn -m recent --set
$IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP

#UDP Flood
$IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
$IPT -A OUTPUT -p udp -j DROP

ما يفعله هو حساب عدد حزم SYN (بدء اتصال TCP) لكل عنوان IP في آخر 10 ثوانٍ. إذا وصلت إلى 30 ، فإنها تتجاهل تلك الحزمة حتى لا يتم إنشاء الاتصال (سيعيد TCP المحاولة عدة مرات ، عندما ينخفض ​​إلى ما دون الحد ، يمكن تعيينه).

#Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
$IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j DROP

#Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
$IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp -j DROP

#Evitando que escaneen la máquina
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG –j DROP

هذا هو النص الموجود في اللصق الخاص بنا: Paste.FromLinux.net (البرنامج النصي السابق)

المراجع:

 


محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

14 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   KZKG ^ جارا قال

    وهذا هو سبب وضع برنامج تعليمي قبل هجمات DDoS 😉
    لوضع / شرح السبب أو المشكلة (البرنامج التعليمي السابق) ، وإعطائك الحل (هذا البرنامج التعليمي) 🙂

    1.    ديازيبان قال

      الكمال.

  2.   كوراتسوكي قال

    حلوى الأطفال ...

  3.   هوغو قال

    مقالة جيدة.

    سنتى:

    في حالة حزم UDP ، لا توجد علامة SYN لأنها بروتوكول بدون تحكم الدولة. ومع ذلك ، وللمفارقة ، فإن الحالتين NEW و ESTABLISHED موجودان لأن iptables داخليًا يحمل جداول لهذا الغرض.

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

    شيء آخر هو أنه في حالة بروتوكول ICMP (وبشكل عام) من الملائم تنظيم كل من الطلبات والاستجابات ، لأننا ربما نكون مهتمين في مرحلة ما باختبار اتصال أنفسنا ، ومن خلال تمكين هذه الوظيفة ، يمكن لأي شخص استخدام botnet وتزوير عنوان المصدر لإجراء اختبار ping على العديد من أجهزة الكمبيوتر المخترقة هذه دون نهاية ، وستذهب الردود إلى خادمنا ، مما يؤدي إلى انهيارها إذا لم يتم فرض أي قيود.

    عادةً ما أسمح بأنواع ICMP 0,3,8,11،12،XNUMX،XNUMX و XNUMX بحد إدخال واحد في الثانية واندفاع من اثنين أو أربعة كحد أقصى ، ويترك كل شيء آخر لـ DROP.

    في الواقع ، باستثناء بروتوكول TCP الذي يمكن تنظيمه بشكل أفضل ، يجب حماية جميع الآخرين من خلال إجراء مضاد لـ DDoS من خلال تطابق نوع حديث. فيما يتعلق بهذا ، من باب الفضول ، يحب مؤلف هذه الوحدة وضع التحديث أولاً ثم المجموعة.

    إن Iptables مرنة وقوية للغاية حقًا ، حتى الآن الشيء الوحيد الذي اقترحت القيام به ولم أحققه بعد (على الرغم من أنني على وشك تحقيق ذلك) ، هو تمكين وحدة psd من تجنب portcans ، ولكن حتى مع كل شيء لقد تعلمت عن هذه الأداة ، وأعتقد أنني لم أخدش السطح حتى الآن. 😉

    على أي حال ، في هذا العالم عليك دائمًا أن تدرس.

  4.   كوراتسوكي قال

    نقاط جيدة هوغو ، في ملف مسرد المصطلحات الخاص بنا: د ، كما هو الحال دائمًا ، التعلم ...

    1.    هوغو قال

      بالمناسبة ، لقد حصلت بالفعل على وحدة psd للعمل من أجلي. كانت المشكلة أنها اعتمدت في البداية على وظيفة النواة التي تم إهمالها مع patch-o-matic ، لذلك تمت إزالتها من الوحدات المدمجة في netfilter افتراضيًا. لذا الآن في دبيان لاستخدام امتداد psd ، عليك أولاً القيام بذلك:


      aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
      module-assistant auto-install xtables-addons-source

      يمكن بعد ذلك استخدامه بشكل طبيعي حسب التعليمات:

      man xtables-addons

      1.    بعيدا قال

        Hugo ، لماذا لا تنشر iptables.sh مع اقتراحاتك لتحسين نص هذا المنشور (وهو أمر جيد) بما في ذلك psd

        شكرا

  5.   نيلسون قال

    مقال ممتاز و iptables ممتاز وشرح ممتاز منhugo. أصبحت مقتنعًا أكثر فأكثر بأنه لا يزال لدي الكثير لأتعلمه.

  6.   كوراتسوكي قال

    لست وحدك ، على الأقل أنا ... أنا أفتقد مليون ... 😀

  7.   ميغيل انخيل قال

    مرحباً بالجميع ، وشكرًا على المساهمة ، ولكن الحقيقة هي أننا يائسون لا نعرف ماذا نفعل الآن ، ونأتي إليكم من أجل هذا من iptables الذي نعرف أنك خبراء في الأنظمة.
    أنا قائد مجتمع في إسبانيا من مصدر الهجوم المضاد ونحن واحد من القلائل الذين ما زالوا صامدين بالكاد ، نتلقى هجمات مستمرة من الجهاز وهجمات أخرى على فترات زمنية ، يزيل الثابت القليل ولكنه يقطع الخادم قليلًا ولكن ذلك الوقت يسبب المزيد من الضرر. تم تركيب آلتنا على 6.2 سنتو
    ولدينا tcadmin للتحكم في الخوادم. يمكنك أن تجعلنا تكوينًا يمكنه إيقاف هذا النوع من الهجوم ولو قليلاً ، نحن بالفعل يائسون ،
    ولا نعرف من نلجأ إليه ، فنحن نعلم أن هناك نوعين من الروبوتات أحدهما محلي الصنع والآخر مدفوع للوقت والقوة. لقد عانينا بالتالي من هجمات وحشية من هذا النوع لمدة عام تقريبًا ، إذا كان بإمكانك مساعدتنا ، فسنكون ممتنين إلى الأبد لأنه غير مستدام الآن ، فأنا أحب تكوين خوادم مثل hoobie ، وأنا لست طفلًا أؤكد لك ذلك ولكن هذا كثير بالنسبة لي. إذا كنت تريد أن تتحدث ts3 أو أي شيء أحب إذا كان بإمكانك مساعدتنا ، فسننشر هنا النتائج وكل ما تم حله لصالح العديد من الأشخاص ، فستكون المدونة الأكثر زيارة في العام التي أؤكد لك عليها لأنه أمر لا يصدق كيف يزعج هذه الهجمات ddos. نظرًا لأننا حاولنا تكوينه بأنفسنا وحظرنا الوصول إلى الجهاز ، كان علينا تنسيقه من السير ، لذا تخيل كيف نحن.
    أرسل تحية ودية. وتهنئتي على المدونة المفقودة ، يجد الكثير من الناس واحدة تم تحديثها بهذه المدونة. -ميجيل انجيل-

    1.    KZKG ^ جارا قال

      مرحبا كيف حالك 🙂
      اكتب لي على بريدي الإلكتروني ، وسنساعدك بكل سرور 😀 - »kzkggaara [@] desdelinux [.] Net

  8.   آرثر شيلبي قال

    مرحبًا يا شباب ، حتى الآن بعد أن أعمل ، خذ هذا النص ، جيد جدًا بالمناسبة ... شك واحد فقط: هل الوحدة "الأخيرة" لا تقلل من الأداء؟

    تحياتي - شكرا لك / من مثلك؟

  9.   خوسيه تابيا قال

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

  10.   كريستيان مارفيل رينسو قال

    مرحبا،

    لا يمكن استخدام البرنامج النصي على منافذ متعددة؟
    لدي خادم ألعاب وأحصل على هجمات على منافذ الويب وخادم اللعبة.

    تحية.