دليل أمان وتصلب خادم الويب Apache

نشرت: 2015-02-14

دليل عملي لتأمين وتقوية خادم Apache HTTP.

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

يوفر وجود التكوين الافتراضي الكثير من المعلومات الحساسة التي قد تساعد المتسلل في الاستعداد لهجوم التطبيقات. تتم غالبية هجمات تطبيقات الويب من خلال هجمات XSS و Info Leakage و Session Management و SQL Injection والتي ترجع إلى ضعف كود البرمجة والفشل في تعقيم البنية التحتية لتطبيقات الويب.

يكشف بحث مثير للاهتمام أجرته شركة Positive Technologies ، أن 52٪ من التطبيقات الممسوحة ضوئيًا بها نقاط ضعف عالية.

تقرير الضعف

في هذه المقالة ، سأتحدث عن بعض أفضل الممارسات لتأمين خادم Apache HTTP على نظام Linux الأساسي.

تم اختبار ما يلي على إصدار Apache 2.4.x.

  • هذا يفترض أنك قمت بتثبيت Apache على منصة UNIX. إذا لم يكن كذلك ، يمكنك الاطلاع على دليل التثبيت.
  • سأقوم باستدعاء دليل تثبيت Apache / opt / apache كـ $ Web_Server خلال هذا الدليل.
  • يُنصح بأخذ نسخة احتياطية من ملف التكوين الحالي قبل أي تعديل.

جمهور

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

تعد المعرفة العادلة بخادم الويب Apache وأمر UNIX أمرًا إلزاميًا.

ملحوظات

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

  1. استخدم أدوات المطور المدمجة في المتصفح لفحص رؤوس HTTP. عادةً ما يكون ضمن علامة التبويب "الشبكة"
  2. استخدم أداة فحص رأس استجابة HTTP عبر الإنترنت

قم بإزالة شعار إصدار الخادم

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

سيعرض التكوين الافتراضي إصدار Apache ونوع نظام التشغيل كما هو موضح أدناه.

اباتشي خادم راية

  • انتقل إلى مجلد $ Web_Server / conf
  • قم بتعديل httpd.conf باستخدام محرر vi
  • أضف التوجيه التالي واحفظ httpd.conf
 ServerTokens Prod ServerSignature Off
  • أعد تشغيل اباتشي

سيقوم ServerSignature بإزالة معلومات الإصدار من الصفحة التي تم إنشاؤها بواسطة Apache.

سوف ServerTokens بتغيير Header إلى الإنتاج فقط ، أي Apache

كما ترى أدناه ، اختفت معلومات الإصدار ونظام التشغيل.

اباتشي خادم راية ملثمين

تعطيل قائمة متصفح الدليل

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

دعونا نختبر كيف تبدو في الإعدادات الافتراضية.

  • انتقل إلى دليل $ Web_Server / htdocs
  • قم بإنشاء مجلد وبعض الملفات بداخله
 # mkdir test # touch hi # touch hello

الآن ، دعنا نحاول الوصول إلى Apache عن طريق http: // localhost / test

اباتشي دليل القائمة

كما ترى فإنه يكشف عن كل الملفات / المجلدات التي لديك وأنا متأكد من أنك لا تريد كشف ذلك.

  • انتقل إلى دليل $ Web_Server / conf
  • افتح httpd.conf باستخدام vi
  • ابحث عن الدليل وقم بتغيير توجيه الخيارات إلى لا شيء أو - الفهارس
 <Directory /opt/apache/htdocs> Options -Indexes </Directory>

(أو)

 <Directory /opt/apache/htdocs> Options None </Directory>
  • أعد تشغيل Apache

ملاحظة : إذا كانت لديك توجيهات دليل متعددة في بيئتك ، فيجب أن تفكر في فعل الشيء نفسه للجميع.

الآن ، دعنا نحاول الوصول إلى Apache عن طريق http: // localhost / test

تعطيل قائمة الدليل

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

إيتاج

يسمح للمهاجمين عن بعد بالحصول على معلومات حساسة مثل رقم inode وحدود MIME متعددة الأجزاء والعملية الفرعية من خلال رأس Etag.

لمنع هذه الثغرة الأمنية ، دعنا ننفذها على النحو التالي. هذا مطلوب لإصلاح التوافق مع PCI.

  • انتقل إلى دليل $ Web_Server / conf
  • أضف التوجيه التالي واحفظ httpd.conf
 FileETag None
  • أعد تشغيل اباتشي

قم بتشغيل Apache من حساب غير مميز

يعمل التثبيت الافتراضي على أنه لا أحد أو برنامج خفي. يعد استخدام مستخدم منفصل غير مميز لـ Apache أمرًا جيدًا.

الفكرة هنا هي حماية الخدمات الأخرى التي تعمل في حالة وجود أي ثغرة أمنية.

  • قم بإنشاء مستخدم ومجموعة تسمى اباتشي
 # groupadd apache # useradd –G apache apache
  • غيّر ملكية دليل تثبيت apache إلى مستخدم غير مميز تم إنشاؤه حديثًا
 # chown –R apache:apache /opt/apache
  • انتقل إلى $ Web_Server / conf
  • قم بتعديل httpd.conf باستخدام vi
  • ابحث عن توجيه المستخدم والمجموعة وقم بالتغيير باعتباره apache غير مميز للحساب
 User apache Group apache
  • احفظ الملف httpd.conf
  • أعد تشغيل Apache

grep لتشغيل عملية http والتأكد من أنها تعمل مع مستخدم apache

 # ps –ef |grep http

يجب أن ترى عملية واحدة تعمل مع الجذر. هذا لأن Apache يستمع على المنفذ 80 ويجب أن يبدأ بجذر.

حماية إذن الدليل الثنائي والتكوين

بشكل افتراضي ، إذن للثنائي والتكوين هو 755 مما يعني أن أي مستخدم على الخادم يمكنه عرض التكوين. يمكنك عدم السماح لمستخدم آخر بالدخول إلى مجلد conf و bin.

  • انتقل إلى دليل Web_Server $
  • تغيير إذن مجلد bin و conf
 # chmod –R 750 bin conf

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

في التثبيت الافتراضي ، يمكن للمستخدمين تجاوز تكوين apache باستخدام htaccess. إذا كنت تريد منع المستخدمين من تغيير إعدادات خادم Apache ، فيمكنك إضافة AllowOverride إلى None كما هو موضح أدناه.

يجب أن يتم ذلك على مستوى الجذر.

  • انتقل إلى دليل $ Web_Server / conf
  • افتح httpd.conf باستخدام vi
  • ابحث عن الدليل على مستوى الجذر
 <Directory /> Options -Indexes AllowOverride None </Directory>
  • احفظ الملف httpd.conf
  • أعد تشغيل Apache

طرق طلب HTTP

يدعم بروتوكول HTTP 1.1 العديد من طرق الطلب التي قد لا تكون مطلوبة وبعضها ينطوي على مخاطر محتملة.

قد تحتاج عادةً إلى طرق طلب GET و HEAD و POST في تطبيق ويب ، والتي يمكن تهيئتها في توجيه الدليل المعني.

خيارات دعم التكوين الافتراضي ، GET ، HEAD ، POST ، PUT ، DELETE ، TRACE ، CONNECT طريقة في بروتوكول HTTP 1.1.

  • انتقل إلى دليل $ Web_Server / conf
  • افتح httpd.conf باستخدام vi
  • ابحث عن الدليل وأضف ما يلي
 <LimitExcept GET POST HEAD> deny from all </LimitExcept>
  • أعد تشغيل Apache

تعطيل طلب تتبع HTTP

يتم تمكين طريقة التتبع الافتراضية في خادم الويب Apache.

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

  • قم بعمل IP لخادم الويب telnet مع منفذ الاستماع
  • قم بإجراء طلب TRACE كما هو موضح أدناه
 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Sat, 31 Aug 2013 02:13:24 GMT Server: Apache Transfer-Encoding: chunked Content-Type: message/http 20 TRACE / HTTP/1.1 Host: test 0 Connection closed by foreign host. #

كما ترون في طلب TRACE أعلاه ، فقد رد على استفساري. دعونا نعطله ونختبره.

  • انتقل إلى دليل $ Web_Server / conf
  • أضف التوجيه التالي واحفظ httpd.conf
 TraceEnable off
  • أعد تشغيل اباتشي

قم بعمل عنوان IP لخادم ويب telnet مع منفذ الاستماع وقم بإجراء طلب TRACE كما هو موضح أدناه

 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 405 Method Not Allowed Date: Sat, 31 Aug 2013 02:18:27 GMT Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method TRACE is not allowed for the URL /.</p> </body></html> Connection closed by foreign host. #

كما ترون في طلب TRACE أعلاه ، فقد حظر طلبي باستخدام HTTP 405 Method Not Allowed.

الآن ، لا يسمح خادم الويب هذا بطلب TRACE ويساعد في منع هجوم Cross Site Tracing.

قم بتعيين ملف تعريف الارتباط مع HttpOnly وعلامة Secure

يمكنك التخفيف من معظم هجمات البرمجة النصية للمواقع الشائعة باستخدام HttpOnly وعلامة Secure في ملف تعريف الارتباط. بدون وجود HttpOnly و Secure ، من الممكن سرقة جلسة تطبيق الويب وملفات تعريف الارتباط أو التلاعب بها ، وهذا أمر خطير.

  • تأكد من تمكين mod_headers.so في httpd.conf
  • انتقل إلى دليل $ Web_Server / conf
  • أضف التوجيه التالي واحفظ httpd.conf
 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  • أعد تشغيل اباتشي

Clickjacking Attack

Clickjacking هو أحد ثغرات تطبيق الويب المعروفة.

  • تأكد من تمكين mod_headers.so في httpd.conf
  • انتقل إلى دليل $ Web_Server / conf
  • أضف التوجيه التالي واحفظ httpd.conf
 Header always append X-Frame-Options SAMEORIGIN
  • أعد تشغيل اباتشي

خيارات اباتشي x الإطار

تدعم X-Frame-Options أيضًا خيارين آخرين شرحتهما هنا.

تضمين جانب الخادم

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

يسمح هجوم SSI باستغلال تطبيق الويب عن طريق حقن البرامج النصية في صفحات HTML أو تنفيذ الرموز عن بُعد.

  • انتقل إلى دليل $ Web_Server / conf
  • افتح httpd.conf باستخدام vi
  • ابحث عن الدليل وأضف التضمينات في توجيه الخيارات
 <Directory /opt/apache/htdocs> Options –Indexes -Includes Order allow,denyAllow from all </Directory>
  • أعد تشغيل Apache

ملاحظة: إذا كانت لديك توجيهات دليل متعددة في بيئتك ، فيجب أن تفكر في فعل الشيء نفسه للجميع.

حماية X-XSS

يمكن تجاوز حماية البرمجة النصية عبر المواقع (XSS) في العديد من المتصفحات. يمكنك تطبيق هذه الحماية لتطبيق ويب إذا تم تعطيله من قبل المستخدم. يتم استخدام هذا من قبل غالبية شركات الويب العملاقة مثل Facebook و Twitter و Google وما إلى ذلك.

  • انتقل إلى دليل $ Web_Server / conf
  • افتح httpd.conf باستخدام vi وأضف توجيه الرأس التالي
 Header set X-XSS-Protection "1; mode=block"
  • أعد تشغيل Apache

كما ترى ، فإن XSS-Protection هي حقنة في رأس الاستجابة.

اباتشي xss

تعطيل بروتوكول HTTP 1.0

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

HTTP 1.0 لديه ضعف أمني متعلق باختطاف الجلسة. يمكننا تعطيل هذا باستخدام وحدة mod_rewrite.

  • تأكد من تحميل وحدة mod_rewrite في ملف httpd.conf
  • قم بتمكين توجيه RewriteEngine على النحو التالي وأضف شرط إعادة الكتابة للسماح فقط بـ HTTP 1.1
 RewriteEngine On RewriteCond %{THE_REQUEST} !HTTP/1.1$ RewriteRule .* - [F]

تكوين قيمة المهلة

بشكل افتراضي ، تكون قيمة مهلة Apache 300 ثانية ، والتي يمكن أن تكون ضحية لهجوم Slow Loris و DoS. للتخفيف من ذلك ، يمكنك خفض قيمة المهلة إلى 60 ثانية على الأرجح.

  • انتقل إلى دليل $ Web_Server / conf
  • افتح httpd.conf باستخدام vi
  • أضف ما يلي في httpd.conf
 Timeout 60

SSL

يعد وجود SSL طبقة أمان إضافية تقوم بإضافتها إلى تطبيق الويب. ومع ذلك ، يؤدي تكوين SSL الافتراضي إلى بعض الثغرات الأمنية ، ويجب أن تفكر في تعديل هذه التكوينات.

مفتاح SSL

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

كما تعلم ، باستخدام جهاز كمبيوتر يعود إلى حقبة 2009 لمدة 73 يومًا تقريبًا ، يمكنك عكس هندسة مفتاح 512 بت.

لذلك كلما زاد طول المفتاح لديك ، كلما أصبح كسر مفتاح SSL أكثر تعقيدًا. تستخدم غالبية شركات الويب العملاقة مفتاح 2048 بت ، كما هو موضح أدناه ، فلماذا لا نفعل ذلك؟

  • Outlook.com
  • Microsoft.com
  • Live.com
  • Skype.com
  • Apple.com
  • Yahoo.com
  • Bing.com
  • Hotmail.com
  • Twitter.com

يمكنك استخدام OpenSSL لإنشاء CSR مع 2048 بت على النحو التالي.

 openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

سيُنشئ CSR الذي ستحتاج إلى إرساله إلى مرجع مصدق للتوقيع عليه. بمجرد استلام ملف الشهادة الموقعة ، يمكنك إضافتها في ملف httpd-ssl.conf

 SSLCertificateFile #Certificate signed by authority SSLCertificateChainFile #Certificate signer given by authority SSLCertificateKeyFile #Key file which you generated above
  • أعد تشغيل خادم الويب Apache وحاول الوصول إلى عنوان URL باستخدام https

تشفير SSL

تشفير SSL عبارة عن خوارزمية تشفير تُستخدم كمفتاح بين جهازي كمبيوتر عبر الإنترنت. تشفير البيانات هو عملية تحويل النص العادي إلى أكواد مشفرة سرية.

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

  • انتقل إلى المجلد $ Web_Server / conf / extra
  • قم بتعديل توجيه SSLCipherSuite في httpd-ssl.conf على النحو التالي لقبول خوارزميات تشفير أعلى فقط
 SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  • احفظ ملف التكوين وأعد تشغيل خادم اباتشي

ملاحظة: إذا كان لديك العديد من الأصفار الضعيفة في تقرير تدقيق SSL الخاص بك ، فيمكنك رفض إضافتها بسرعة! في البداية.

تعطيل SSL v2 و v3

يحتوي SSL v2 و v3 على العديد من العيوب الأمنية ، وإذا كنت تعمل من أجل اختبار الاختراق أو الامتثال لـ PCI ، فمن المتوقع أن تغلق البحث الأمني ​​لتعطيل SSL v2 / v3.

قد يكون أي اتصال SSL v2 / v3 عرضة لهجوم Man-in-The-Middle الذي قد يسمح بالتلاعب بالبيانات أو الكشف عنها.

دعنا ننفذ خادم الويب apache لقبول أحدث TLS فقط ورفض طلب اتصال SSL v2 / v3.

  • انتقل إلى المجلد $ Web_Server / conf / extra
  • قم بتعديل توجيه SSLProtocol في httpd-ssl.conf على النحو التالي لقبول TLS 1.2+ فقط
 SSLProtocol –ALL +TLSv1.2

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

وزارة الدفاع الأمن

Mod Security هو جدار حماية تطبيق ويب مفتوح المصدر ، يمكنك استخدامه مع Apache.

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

لتوفير حماية عامة لتطبيقات الويب ، تستخدم القواعد الأساسية الأساليب التالية:

  • حماية HTTP - الكشف عن انتهاكات بروتوكول HTTP وسياسة الاستخدام المحددة محليًا
  • عمليات البحث في القائمة السوداء في الوقت الفعلي - تستخدم سمعة طرف ثالث IP
  • اكتشاف البرامج الضارة المستند إلى الويب - يحدد محتوى الويب الضار عن طريق التحقق من واجهة برمجة تطبيقات Google للتصفح الآمن.
  • حماية رفض خدمة HTTP - دفاع ضد إغراق HTTP وهجمات HTTP DoS البطيئة.
  • الحماية العامة من هجمات الويب - الكشف عن هجوم أمان تطبيق الويب الشائع
  • كشف الأتمتة - اكتشاف الروبوتات وبرامج الزحف والماسحات الضوئية ونشاط سطح ضار آخر
  • التكامل مع AV Scanning for File Uploads - يحدد الملفات الضارة التي تم تحميلها من خلال تطبيق الويب.
  • تتبع البيانات الحساسة - يتتبع استخدام بطاقة الائتمان ويمنع التسرب.
  • حماية طروادة - الكشف عن الوصول إلى أحصنة طروادة.
  • تحديد عيوب التطبيق - تنبيهات حول التهيئة الخاطئة للتطبيق.
  • الكشف عن الخطأ والاختباء - إخفاء رسائل الخطأ المرسلة من قبل الخادم.

التنزيل والتثبيت

يجب تثبيت المتطلبات الأساسية التالية على الخادم حيث ترغب في استخدام Mod Security مع Apache. إذا لم يكن أي منها موجودًا ، فسيفشل تجميع Mod Security. يمكنك استخدام yum install على Linux أو Centos لتثبيت هذه الحزم.

  • اباتشي 2.x أو أعلى
  • حزمة libpcre
  • حزمة libxml2
  • حزمة liblua
  • حزمة libcurl
  • حزمة libapr و libapr-util
  • وحدة mod_unique_id مجمعة مع خادم الويب Apache

الآن ، لنقم بتنزيل أحدث إصدار مستقر من Mod Security 2.7.5 من هنا

  • انقل الملف الذي تم تنزيله إلى / opt / apache
  • استخراج modsecurity-apache_2.7.5.tar.gz
 # gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • انتقل إلى المجلد المستخرج modsecurity-apache_2.7.5
 # cd modsecurity-apache_2.7.5
  • قم بتشغيل برنامج التكوين النصي بما في ذلك مسار apxs إلى Apache الموجود
 # ./configure –with-apxs=/opt/apache/bin/apxs
  • ترجمة وتثبيت باستخدام البرنامج النصي
 # make # make install
  • بمجرد الانتهاء من التثبيت ، سترى mod_security2.so في مجلد الوحدات النمطية تحت / opt / apache

الآن ينتهي هذا ، لقد قمت بتثبيت وحدة Mod Security في خادم الويب Apache الحالي.

ترتيب

لاستخدام ميزة أمان Mod مع Apache ، يتعين علينا تحميل وحدة أمان mod في httpd.conf. تعد الوحدة النمطية mod_unique_id شرطًا مسبقًا لـ Mod Security.

توفر هذه الوحدة متغير بيئة بمعرف فريد لكل طلب ، والذي يتم تعقبه واستخدامه بواسطة Mod Security.

  • أضف السطر التالي لتحميل الوحدة النمطية لـ Mod Security في httpd.conf واحفظ ملف التكوين
 LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so
  • أعد تشغيل خادم الويب اباتشي

تم تثبيت Mod Security الآن!

الشيء التالي الذي عليك القيام به هو تثبيت قاعدة Mod Security الأساسية للاستفادة الكاملة من ميزتها.

يمكن تنزيل أحدث قاعدة أساسية من اتباع رابط ، وهو مجاني. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • انسخ ملف zip للقاعدة الأساسية الذي تم تنزيله إلى مجلد / opt / apache / conf
  • قم بفك ضغط ملف القاعدة الأساسية
  • قد ترغب في إعادة تسمية المجلد إلى شيء قصير ويسهل تذكره. في هذا المثال ، سأعيد تسمية crs.
  • انتقل إلى مجلد crs وأعد تسمية modsecurity_crs10_setup.conf.example إلى modsecurity_crs10_setup.conf

الآن ، لنقم بتمكين هذه القواعد لجعلها تعمل مع خادم الويب Apache.

  • أضف ما يلي في httpd.conf
 <IfModule security2_module> Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf </IfModule>

في التكوين أعلاه ، نقوم بتحميل modsecurity_crs_10_setup.conf ملف التكوين الرئيسي لـ Mod Security والقواعد الأساسية base_rules / *. conf المقدمة من قبل القواعد الأساسية للأمان Mod لحماية تطبيقات الويب.

  • أعد تشغيل خادم الويب اباتشي

لقد نجحت في تكوين Mod Security مع Apache!

أحسنت. الآن ، خادم الويب Apache محمي بواسطة جدار حماية تطبيق الويب Mod Security.

ابدء

لنبدأ ببعض التكوينات المهمة في Mod Security لتقوية وتأمين تطبيقات الويب.

في هذا القسم ، سنقوم بجميع تعديلات التكوين في /opt/apache/conf/crs/modsecurity_crs_10_setup.conf.

سنشير إلى /opt/apache/conf/crs/modsecurity_crs_10_setup.conf كـ setup.conf في هذا القسم على سبيل المثال الغرض.

من المهم أن تفهم ما هي قواعد OWASP المتوفرة مجانًا. هناك نوعان من القواعد التي تقدمها OWASP.

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

القواعد التجريبية - هذه القواعد لغرض تجريبي ، وقد يكون لديك إنذار كاذب كبير. من المهم التكوين والاختبار والتنفيذ في UAT قبل استخدامها في بيئة الإنتاج.

قواعد اختيارية - قد لا تكون هذه القواعد الاختيارية مناسبة للبيئة بأكملها. بناءً على متطلباتك ، يمكنك استخدامها.

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

يتوفر ملف تكوين القواعد في مجلد crs / base_rules و crs / Optional_rules و crs / trial_rules. دعنا نتعرف على بعض القواعد الأساسية.

  • modsecurity_crs_20_protocol_violations.conf: هذه القاعدة تحمي من ثغرات البروتوكول مثل تقسيم الاستجابة ، طلب التهريب ، باستخدام بروتوكول غير مسموح به (HTTP 1.0).
  • modsecurity_crs_21_protocol_anomalies.conf: هذا للحماية من طلب مفقود مع Host ، Accept ، User-Agent في الرأس.
  • modsecurity_crs_23_request_limits.conf: تعتمد هذه القاعدة على التطبيق المحدد مثل حجم الطلب وحجم التحميل وطول المعلمة وما إلى ذلك.
  • modsecurity_crs_30_http_policy.conf: هذا لتكوين وحماية الطريقة المسموح بها أو غير المسموح بها مثل CONNECT ، TRACE ، PUT ، DELETE ، إلخ.
  • modsecurity_crs_35_bad_robots.conf: كشف الروبوتات الخبيثة
  • modsecurity_crs_40_generic_attacks.conf: هذا للحماية من إدخال أوامر نظام التشغيل ، وإدراج الملفات عن بُعد ، وما إلى ذلك.
  • modsecurity_crs_41_sql_injection_attacks.conf: هذه القاعدة لحماية طلب حقن SQL و SQL الأعمى.
  • modsecurity_crs_41_xss_attacks.conf: الحماية من طلب البرمجة عبر المواقع.
  • modsecurity_crs_42_tight_security.conf: كشف وحماية اجتياز الدليل.
  • modsecurity_crs_45_trojans.conf: هذه القاعدة لاكتشاف مخرجات إدارة الملفات العامة ، وتحميل صفحة HTTP الخلفية ، والتوقيع المعروف.
  • modsecurity_crs_47_common_exceptions.conf: يتم استخدام هذا كآلية استثناء لإزالة الإيجابيات الزائفة الشائعة التي يمكن مواجهتها مثل اتصال Apache الداخلي الوهمي ، جهاز اختبار الاتصال SSL ، إلخ.

تسجيل

يعد التسجيل أحد الأشياء الأولى التي يجب تكوينها حتى تتمكن من إنشاء سجلات لما يقوم به Mod Security. يتوفر نوعان من التسجيل ؛ سجل التصحيح والتدقيق.

سجل التصحيح: هذا لتكرار خطأ Apache والتحذير والإشعار من سجل الأخطاء.

سجل التدقيق: هذا لكتابة سجلات المعاملات التي تم وضع علامة عليها بواسطة قاعدة أمان Mod يمنحك Mod Security المرونة لتكوين تسجيل التدقيق أو التصحيح أو كليهما.

بشكل افتراضي سوف يكتب التكوين كلا السجلين. ومع ذلك ، يمكنك التغيير بناءً على متطلباتك. يتم التحكم في السجل في توجيه SecDefaultAction . لنلقِ نظرة على تكوين التسجيل الافتراضي في setup.conf

 SecDefaultAction “phase:1,deny,log”

لتسجيل التصحيح ، سجل التدقيق - استخدم "السجل" لتسجيل سجل التدقيق فقط - استخدم "nolog، Auditlog" لتسجيل تصحيح الأخطاء فقط - استخدم "log، noauditlog" يمكنك تحديد موقع سجل التدقيق الذي سيتم تخزينه والذي يتحكم فيه SecAuditLog التوجيه.

دعنا نكتب سجل التدقيق في /opt/apache/logs/modsec_audit.log عن طريق الإضافة كما هو موضح أدناه.

  • أضف توجيه SecAuditLog في setup.conf وأعد تشغيل خادم الويب Apache
 SecAuditLog /opt/apache/logs/modsec_audit.log
  • بعد إعادة التشغيل ، يجب أن ترى يتم إنشاء modsec_audit.log

تمكين محرك القاعدة

بشكل افتراضي ، تكون قاعدة المحرك معطلة ، وهذا يعني أنه إذا لم تقم بتمكين Rule Engine ، فأنت لا تستخدم جميع مزايا Mod Security.

يتم التحكم في تمكين أو تعطيل محرك القاعدة بواسطة توجيه SecRuleEngine .

  • أضف توجيه SecRuleEngine في setup.conf وأعد تشغيل خادم الويب Apache
 SecRuleEngine On

هناك ثلاث قيم لـ SecRuleEngine:

  • تشغيل - لتمكين Rule Engine
  • إيقاف - لتعطيل محرك القاعدة
  • DetectionOnly - قم بتمكين Rule Engine ولكن لا ينفذ أبدًا أي إجراءات مثل الحظر أو الرفض أو الإفلات أو السماح أو الوكيل أو إعادة التوجيه

بمجرد تشغيل Rule Engine - يصبح Mod Security جاهزًا للحماية مع بعض أنواع الهجمات الشائعة.

الحماية من نوع الهجوم المشترك

أصبح خادم الويب الآن جاهزًا للحماية باستخدام أنواع الهجمات الشائعة مثل XSS و SQL Injection وانتهاك البروتوكول وما إلى ذلك حيث قمنا بتثبيت Core Rule وتشغيل Rule Engine. دعونا نختبر القليل منهم.

هجوم XSS

  • افتح Firefox وقم بالوصول إلى التطبيق الخاص بك وضع علامة <script> في النهاية أو عنوان URL
  • مراقبة modsec_audit.log في مجلد apache / logs

ستلاحظ طلب حظر Mod Security لأنه يحتوي على علامة <script> التي تعد جذر هجوم XSS.

هجوم اجتياز الدليل: - يمكن أن تحدث هجمات اجتياز الدليل الكثير من الضرر من خلال الاستفادة من هذه الثغرات الأمنية والوصول إلى الملف المرتبط بالنظام. مثال - / etc / passwd و .htaccess وما إلى ذلك.

  • افتح Firefox وقم بالوصول إلى التطبيق الخاص بك من خلال اجتياز الدليل
  • مراقبة modsec_audit.log في مجلد apache / logs
 http://localhost/?../.../boot
  • ستلاحظ طلب حظر Mod Security لأنه يحتوي على اجتياز الدليل.

تغيير شعار الخادم

في وقت سابق من هذا الدليل ، تعلمت كيفية إزالة نوع Apache و OS ، تعليمات الإصدار من توجيه ServerTokens.

دعنا نمضي خطوة للأمام ، ماذا عن الاحتفاظ باسم الخادم كما تشاء؟ هذا ممكن مع توجيه SecServerSignature في Mod Security. ترى أنه مثير للاهتمام.

ملاحظة: لاستخدام Mod Security لمعالجة Server Banner من رأس ، يجب عليك تعيين ServerTokesn إلى Full في httpd.conf من خادم الويب Apache.

  • أضف توجيه SecServerSignature باستخدام اسم الخادم الذي تريده في setup.conf وأعد تشغيل خادم الويب Apache
 SecServerSignature YourServerName

السابق:

 [/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf SecServerSignature geekflare.com [/opt/apache/conf/crs] #

التكوين العام

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

تكوين الاستماع

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

عندما تترك تكوين apache للاستماع على جميع عناوين IP مع بعض رقم المنفذ ، فقد يؤدي ذلك إلى حدوث مشكلة في إعادة توجيه طلب HTTP إلى خادم ويب آخر. هذا شائع جدًا في البيئة المشتركة.

  • قم بتكوين توجيه الاستماع في httpd.conf باستخدام IP المطلق والمنفذ كمثال موضح أدناه
 Listen 10.10.10.1:80

الوصول إلى التسجيل

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

بشكل افتراضي ، لم يتم تكوين Apache لالتقاط هذه البيانات. يجب عليك تكوينها يدويًا على النحو التالي.

  • لالتقاط الوقت المستغرق لخدمة الطلب ومعرف الجلسة في سجل الوصول
  • أضف٪ T &٪ sessionID في httpd.conf تحت توجيه LogFormat
 LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

يمكنك الرجوع إلى http://httpd.apache.org/docs/2.2/mod/mod_log_config.html للحصول على قائمة كاملة بالمعلمات المدعومة في توجيه LogFormat في خادم ويب Apache.

تعطيل تحميل الوحدات غير المرغوب فيها

إذا قمت بترجمة جميع الوحدات وتثبيتها ، فهناك فرص كبيرة في أن يكون لديك العديد من الوحدات المحملة في Apache ، والتي قد لا تكون مطلوبة.

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

WebDAV (التأليف الموزع وتعيين الإصدار المستند إلى الويب) تسمح هذه الوحدة للعملاء البعيدين بمعالجة الملفات الموجودة على الخادم والخضوع لهجمات رفض الخدمة المتنوعة. لتعطيل التعليق التالي في httpd.conf

 #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #Include conf/extra/httpd-dav.conf

وحدة المعلومات يمكن لوحدة المعلومات mod_info تسريب معلومات حساسة باستخدام .htaccess بمجرد تحميل هذه الوحدة. لتعطيل التعليق التالي في httpd.conf

 #LoadModule info_module modules/mod_info.so

المرجع: لن يكون هذا ممكنًا بدون التوجيه من الرابط التالي:

  • http://httpd.apache.org/docs/2.4/
  • http://www.modsecurity.org/documentation/
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

كانت هذه بعضًا من أفضل الممارسات التي يمكنك استخدامها لتأمين خادم الويب Apache.

تحقق من هذا الارتباط إذا كنت تريد تنفيذ صفحة خطأ مخصصة في Apache.

إذا كنت جديدًا على Apache HTTP ، فإنني أوصي بأخذ دورة إدارة Apache HTTP.