دليل تأمين خادم IIS ضد الهجمات السيبرانية (IIS Hardening)


تأمين خادم IIS

يُعد خادم Microsoft IIS أحد أكثر خوادم الويب استقراراً، ولكن تركه بالإعدادات الافتراضية يجعله هدفاً سهلاً للمهاجمين. تأمين الخادم أو ما يعرف بـ (Hardening) هو عملية تقليل مساحة الهجوم عبر إغلاق كافة الأبواب غير الضرورية وتعزيز الدفاعات البرمجية.

1. تأمين بروتوكولات التشفير (TLS 1.2/1.3)

البروتوكولات القديمة مثل SSL 3.0 و TLS 1.0 تعاني من نقاط ضعف هيكلية. يجب إجبار الخادم على استخدام TLS 1.2 كحد أدنى، ويفضل TLS 1.3 للأنظمة الحديثة.

أداة IIS Crypto:

أسرع طريقة هي استخدام أداة IIS Crypto وتطبيق زر Best Practices. هذا سيقوم آلياً بـ:

  • تعطيل SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1.
  • تفعيل Cipher Suites القوية مثل (ECDHE).
  • تعطيل الـ Ciphers الضعيفة مثل DES, MD5, RC4.

2. منع تسريب معلومات السيرفر (Server Fingerprinting)

كشف إصدار IIS يساعد المخترق في البحث عن ثغرات مخصصة. يجب إزالة رأس Server من كافة الاستجابات.

<!-- إضافة هذا الكود في ملف web.config لإزالة X-Powered-By --> <system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> </system.webServer>
لإزالة رأس Server، استخدم وحدة URL Rewrite وأنشئ "Outbound Rule" لتعطيل المتغير RESPONSE_SERVER.

3. تقييد الوصول وقيود الـ IP

يجب حماية مسارات الإدارة (مثل /admin) بحيث لا يمكن الوصول إليها إلا من عناوين IP موثوقة.

  • ثبّت ميزة IP and Domain Restrictions.
  • اضبط Access for Unspecified Clients على Deny.
  • أضف استثناءات (Allow) فقط لعنوان الـ IP الخاص بمكتبك أو نظامك الداخلي.
  • Dynamic IP Restrictions: فعل هذه الميزة لمنع هجمات Brute Force؛ حيث يقوم IIS بحظر أي IP يقوم بعدد طلبات هائل في ثوانٍ معدودة.

4. فلترة الطلبات واستخدام URL Scan

فلترة الطلبات (Request Filtering) هي خط الدفاع الأول ضد محاولات الاختراق عبر الروابط.

  • منع امتدادات الملفات: تأكد من منع الوصول لملفات .config, .log, .bak.
  • تحديد حجم الطلب: اضبط maxAllowedContentLength لمنع هجمات رفع الملفات الضخمة التي قد تسبب Denial of Service.
أداة URL Scan: إذا كنت تستخدم إصدارات قديمة من IIS، قم بتثبيت URL Scan لرفض الطلبات التي تحتوي على تسلسلات مريبة مثل ../ أو الرموز البرمجية في الـ URL.

5. معالجة الأخطاء وحماية المسارات الفنية

رسائل الخطأ الافتراضية قد تكشف عن مسارات الملفات البرمجية على السيرفر (مثل C:\inetpub\...).

قم بإعداد Custom Error Pages لكل من أخطاء 404 و 500. تأكد من ضبط الإعداد على ExistingResponse="Replace" لضمان عدم ظهور أي معلومات فنية للمستخدم النهائي.

6. رؤوس الأمان (HTTP Security Headers)

هذه الرؤوس تخبر المتصفح بكيفية التعامل مع موقعك بأمان:

  • Strict-Transport-Security (HSTS): لإجبار المتصفح على استخدام HTTPS دائماً.
  • X-Frame-Options: لمنع وضع موقعك داخل iframe (الحماية من هجمات Clickjacking).
  • X-Content-Type-Options: اضبطها على nosniff لمنع المتصفح من محاولة تخمين نوع الملف.

7. أمان حوض التطبيقات (Application Pool)

العزل هو مفتاح الأمان في الخوادم المشتركة:

  • Identity: لا تشغل حوض التطبيقات أبداً بحساب Administrator. استخدم حساب AppPoolIdentity المحدود.
  • Recycling: اضبط فترات إعادة تشغيل الحوض (Recycling) لتنظيف الذاكرة ومنع تسريبات الذاكرة (Memory Leaks) من التأثير على السيرفر.

قائمة الفحص النهائية (Checklist):

  • تعطيل خاصية Directory Browsing لجميع المواقع.
  • حذف وسم X-AspNet-Version من الاستجابات.
  • منع الوصول لملف web.config من المتصفح.
  • تفعيل Failed Request Tracing لتتبع الأخطاء أمنياً دون عرضها للجمهور.

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