حماية Apache ضد القوة الغاشمة أو هجمات DDoS باستخدام Mod_Security و Mod_evasive Modules

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

mod_security (محرك الكشف عن التسلل والوقاية مفتوح المصدر لتطبيقات الويب التي تتكامل بسلاسة مع خادم الويب) و معتدل هما أداتان مهمتان للغاية يمكن استخدامهما لحماية خادم الويب من القوة الغاشمة أو هجمات (D) DoS.

مقالات لها صلة: كيفية تثبيت Linux Malware Detect باستخدام ClamAV كمحرك مكافحة الفيروسات

معتدلكما يوحي اسمه ، يوفر إمكانات مراوغة أثناء التعرض للهجوم ، حيث يعمل كمظلة تحمي خوادم الويب من مثل هذه التهديدات.

قم بتثبيت Mod_Security Mod_Evasive في CentOS
قم بتثبيت Mod_Security و Mod_Evasive لحماية Apache

في هذه المقالة ، سنناقش كيفية تثبيتها وتكوينها وتشغيلها مع Apache RHEL/CentOS 8 و 7 إلى جانب فيدورا. بالإضافة إلى ذلك ، سنقوم بمحاكاة الهجمات للتحقق من أن الخادم يتفاعل وفقًا لذلك.

هذا يفترض أن لديك خادم LAMP مثبتًا على نظامك. إذا لم يكن كذلك ، يرجى مراجعة هذه المقالة قبل المضي قدما.

  • كيفية تثبيت LAMP Server على CentOS 8
  • كيفية تثبيت حزمة LAMP في RHEL / CentOS 7

ستحتاج أيضًا إلى الإعداد iptables كواجهة أمامية افتراضية لجدار الحماية بدلاً من جدار الحماية إذا كنت تجري RHEL / CentOS 8/7 أو فيدورا. نقوم بذلك من أجل استخدام نفس الأداة في كليهما RHEL/CentOS 8/7 و فيدورا.

الخطوة 1: تثبيت جدار حماية Iptables على RHEL / CentOS 8/7 و Fedora

للبدء ، توقف وتعطيل جدار الحماية:

# systemctl stop جدار الحماية. # systemctl تعطيل جدار الحماية. 
تعطيل خدمة جدار الحماية في CentOS 7
تعطيل خدمة جدار الحماية

ثم قم بتثبيت ملف خدمات iptables الحزمة قبل التمكين iptables:

# yum update && yum install iptables-services. # systemctl تمكين iptables. # systemctl ابدأ iptables. # systemctl status iptables. 
قم بتثبيت Iptables Firewall في CentOs 7
قم بتثبيت Iptables Firewall

الخطوة 2: تثبيت Mod_Security و Mod_evasive

بالإضافة إلى وجود إعداد LAMP في مكانه بالفعل ، سيتعين عليك أيضًا القيام بذلك تفعيل مستودع EPEL في RHEL/CentOS 8/7 من أجل تثبيت كلا الحزمتين. لا يحتاج مستخدمو Fedora إلى تمكين أي إعادة شراء ، لأن epel هو بالفعل جزء من مشروع Fedora.

# تحديث yum && yum install mod_security mod_evasive CentOS / RHEL 8 # dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm. # dnf --enablerepo = تثبيت الغراب - الإضافات mod_evasive. 

عند اكتمال التثبيت ، ستجد ملفات التكوين لكلتا الأداتين في /etc/httpd/conf.d.

# ls -l /etc/httpd/conf.d. 
mod_security + التكوينات mod_evasive
mod_security + التكوينات mod_evasive

الآن ، لدمج هاتين الوحدتين مع اباتشي واجعله يقوم بتحميلها عند البدء ، تأكد من ظهور الأسطر التالية في قسم المستوى الأعلى من mod_evasive.conf و mod_security.conf، على التوالى:

LoadModule evasive20_module modules / mod_evasive24.so. LoadModule security2_module modules / mod_security2.so. 

لاحظ أن وحدات / mod_security2.so و وحدات / mod_evasive24.so هي المسارات النسبية ، من /etc/httpd الدليل إلى الملف المصدر للوحدة. يمكنك التحقق من ذلك (وتغييره ، إذا لزم الأمر) من خلال سرد محتويات ملف /etc/httpd/modules الدليل:

# cd / etc / httpd / modules. # pwd. # ls -l | grep -Ei "(مراوغة | أمنية)"
تحقق من mod_security + mod_evasive Modules
تحقق من mod_security + mod_evasive Modules

ثم أعد تشغيل Apache وتحقق من تحميله معتدل و mod_security:

# systemctl إعادة تشغيل httpd 

تفريغ قائمة الوحدات الثابتة والمشتركة المحملة.

# httpd -M | grep -Ei "(مراوغة | أمنية)" 
تحقق من mod_security + mod_evasive Modules المحملة
تحقق من mod_security + mod_evasive Modules المحملة

الخطوة 3: تثبيت مجموعة القواعد الأساسية وتكوين Mod_Security

في بضع كلمات ، أ مجموعة القواعد الأساسية (الملقب ب CRS) إلى خادم الويب بإرشادات حول كيفية التصرف في ظل ظروف معينة. الشركة المطورة لـ mod_security يوفر مجانًا CRS اتصل OWASP (افتح مشروع أمان تطبيق الويب) ModSecurity CRS الذي يمكن تنزيله وتثبيته على النحو التالي.

1. تحميل OWASP CRS إلى دليل تم إنشاؤه لهذا الغرض.

# mkdir / etc / httpd / crs-tecmint. # cd / etc / httpd / crs-tecmint. # wget -c https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz يا سيد. 
قم بتنزيل قواعد mod_security الأساسية
قم بتنزيل قواعد mod_security الأساسية

2. Untar ال CRS file وتغيير اسم الدليل لراحتنا.

# tar xzf سيد. # mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs. 

3. حان الوقت الآن لتهيئة mod_security. انسخ ملف العينة مع القواعد (owasp-modsecurity-crs / modsecurity_crs_10_setup.conf.example) في ملف آخر بدون الامتداد .مثال تمديد:

# cd owasp-modsecurity-crs / # cp crs-setup.conf.example crs-setup.conf.

وأقول اباتشي لاستخدام هذا الملف مع الوحدة عن طريق إدخال الأسطر التالية في ملف التكوين الرئيسي لخادم الويب /etc/httpd/conf/httpd.conf ملف. إذا اخترت فك حزمة tarball في دليل آخر ، فستحتاج إلى تعديل المسارات باتباع توجيهات Include:

 قم بتضمين crs-tecmint / owasp-modsecurity-crs / crs-setup.conf قم بتضمين crs-tecmint / owasp-modsecurity-crs / rules / *. conf. 

أخيرًا ، يوصى بإنشاء ملف التكوين الخاص بنا داخل ملف /etc/httpd/modsecurity.d الدليل حيث سنضع توجيهاتنا المخصصة (سنقوم بتسميته tecmint.conf في المثال التالي) بدلاً من تعديل CRS الملفات مباشرة. سيسمح القيام بذلك بترقية CRS بشكل أسهل مع إصدار إصدارات جديدة.

 SecRuleEngine On SecRequestBodyAccess على SecResponseBodyAccess على نص SecResponseBodyMimeType / نص عادي / نص html / تطبيق xml / دفق ثماني SecDataDir / tmp. 

يمكنك الرجوع إلى ModSecurity GitHub من SpiderLabs مستودع للحصول على دليل تفسيري كامل mod_security توجيهات التكوين.

الخطوة 4: ضبط Mod_Evasive

معتدل تم تكوينه باستخدام التوجيهات في /etc/httpd/conf.d/mod_evasive.conf. نظرًا لعدم وجود قواعد للتحديث أثناء ترقية الحزمة ، لا نحتاج إلى ملف منفصل لإضافة توجيهات مخصصة ، بدلاً من mod_security.

الافتراضي mod_evasive.conf تم تمكين التوجيهات التالية (لاحظ أن هذا الملف تم التعليق عليه بشدة ، لذلك قمنا بإزالة التعليقات لإبراز توجيهات التكوين أدناه):

 DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10. 

شرح التوجيهات:

  • الحجم: يحدد هذا التوجيه حجم جدول التجزئة الذي يتم استخدامه لتتبع النشاط على أساس كل عنوان IP. ستؤدي زيادة هذا العدد إلى توفير عملية بحث أسرع للمواقع التي زارها العميل في الماضي ، ولكن قد تؤثر على الأداء العام إذا تم تعيينه على مستوى عالٍ جدًا.
  • DOSPageCount: العدد الشرعي للطلبات المتطابقة لمعرف URI محدد (على سبيل المثال ، أي ملف يتم تقديمه بواسطة Apache) والذي يمكن للزائر إجراؤه عبر الفاصل الزمني DOSPageInterval.
  • DOSSiteCount: مشابه لـ DOSPageCount ، ولكنه يشير إلى عدد الطلبات الإجمالية التي يمكن إجراؤها على الموقع بأكمله عبر الفاصل الزمني DOSSiteInterval.
  • DOSBlocking الفترة: إذا تجاوز الزائر الحدود التي وضعها DOSSPageCount أو DOSSiteCount ، فسيتم إدراج عنوان IP المصدر الخاص به في القائمة السوداء خلال فترة DOSBlockingPeriod. أثناء DOSBlockingPeriod ، ستواجه أي طلبات واردة من عنوان IP هذا الخطأ 403 Forbidden Error.

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

فقط تحذير صغير: إذا لم يتم تعيين هذه القيم بشكل صحيح ، فإنك تخاطر بأن ينتهي بك الأمر بحظر الزوار الشرعيين.

قد ترغب أيضًا في التفكير في توجيهات أخرى مفيدة:

DOSEmailNotify

إذا كان لديك خادم بريد قيد التشغيل ، فيمكنك إرسال رسائل تحذير عبر Apache. لاحظ أنك ستحتاج إلى منح مستخدم apache SELinux إذنًا لإرسال رسائل بريد إلكتروني إذا تم ضبط SELinux على فرض. يمكنك القيام بذلك عن طريق الجري

# setsebool -P httpd_can_sendmail 1. 

بعد ذلك ، أضف هذا التوجيه في ملف mod_evasive.conf ملف مع بقية التوجيهات الأخرى:

DOSEmailNotify [البريد الإلكتروني محمي]

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

DOSSystemCommand

هذا يحتاج إلى أمر نظام صالح كوسيطة ،

DOSSystemCommand 

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

اكتب نصًا برمجيًا يتعامل مع القائمة السوداء لعناوين IP على مستوى جدار الحماية

عندما يصبح عنوان IP مدرجًا في القائمة السوداء ، نحتاج إلى حظر الاتصالات القادمة منه. سنستخدم برنامج شل النصي التالي الذي يؤدي هذه المهمة. قم بإنشاء دليل باسم مخطوطات tecmint (أو أيا كان اسم من اختيارك) في /usr/local/bin وملف يسمى ban_ip.sh في هذا الدليل.

#! / بن / ش. # IP الذي سيتم حظره ، كما تم اكتشافه بواسطة mod_evasive. IP = 1 دولار. # المسار الكامل إلى iptables. IPTABLES = "/ sbin / iptables" # دليل قفل mod_evasive. MOD_EVASIVE_LOGDIR = / var / log / mod_evasive. # أضف قاعدة جدار الحماية التالية (منع كل حركة المرور القادمة من $ IP) IPTABLES $ -I INPUT -s $ IP -j DROP. # إزالة ملف القفل للشيكات المستقبلية. rm -f "$ MOD_EVASIVE_LOGDIR" / dos - "$ IP"

لنا DOSSystemCommand يجب قراءة التوجيه على النحو التالي:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh٪ s"

في السطر أعلاه ، ٪س يمثل عنوان IP المخالف كما اكتشفه معتدل.

أضف مستخدم اباتشي إلى ملف sudoers

لاحظ أن كل هذا لن يعمل إلا إذا منحت أذونات للمستخدم اباتشي لتشغيل البرنامج النصي الخاص بنا (وهذا البرنامج النصي فقط!) بدون محطة طرفية وكلمة مرور. كالعادة ، يمكنك فقط الكتابة visudo كجذر للوصول إلى /etc/sudoers ثم قم بإضافة السطرين التاليين كما هو موضح بالصورة أدناه:

apache ALL = NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh. الافتراضيات: اباتشي! 
أضف مستخدم Apache إلى Sudoers
أضف مستخدم Apache إلى Sudoers

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

# الإفتراضات مطلوبة. 
تعطيل tty لـ Sudo
تعطيل tty لـ Sudo

أخيرًا ، أعد تشغيل خادم الويب:

# systemctl إعادة تشغيل httpd. 

الخطوة 4: محاكاة هجمات DDoS على Apache

هناك العديد من الأدوات التي يمكنك استخدامها لمحاكاة هجوم خارجي على خادمك. يمكنك فقط البحث عن "أدوات لمحاكاة هجمات ddos"للعثور على العديد منهم.

لاحظ أنك وحدك ستكون مسؤولاً عن نتائج المحاكاة. لا تفكر حتى في شن هجوم محاكاة على خادم لا تستضيفه داخل شبكتك الخاصة.

إذا كنت ترغب في أن تفعل الشيء نفسه مع VPS الذي يستضيفه شخص آخر ، فأنت بحاجة إلى تحذير مزود الاستضافة بشكل مناسب أو طلب الإذن لمثل هذا التدفق المروري للمرور عبر شبكاتهم. Tecmint.com ليست مسؤولة بأي حال من الأحوال عن أفعالك!

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

تتكون بيئة الاختبار لدينا من أ CentOS 7 الخادم [IP 192.168.0.17] ومضيف Windows الذي سنطلق منه الهجوم [IP 192.168.0.103]:

قم بتأكيد عنوان IP للمضيف
قم بتأكيد عنوان IP للمضيف

يرجى تشغيل الفيديو أدناه واتباع الخطوات الموضحة بالترتيب المشار إليه لمحاكاة هجوم DoS البسيط:

ثم يتم حظر IP المخالف بواسطة iptables:

IP المهاجم المحظور
IP المهاجم المحظور

استنتاج

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

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

روابط مرجعية

https://www.modsecurity.org/

Teachs.ru