
نصوص PowerShell لإنشاء قواعد لـ Windows firewall تلقائياً

حل آلي بالكامل لجدار الحماية في Windows باستخدام PowerShell
يقوم Windows Firewall Ruleset بتكوين جدار حماية Windows تلقائياً ويطبق قواعد جدار حماية مقيدة خاصة بالنظام المستهدف والبرامج المثبتة عليه.
حالة هذا المشروع لا تزال ألفا، انقر على شارة "الحالة" أعلاه لمعرفة المزيد.
يتكون هذا المشروع من جزأين رئيسيين، قواعد جدار الحماية وإطار عمل جدار الحماية كما يلي:
قواعد جدار حماية Windows مرتبة في نصوص PowerShell فردية حسب:
مثل على سبيل المثال:
يتكون إطار عمل جدار الحماية من عدد من وحدات PowerShell، ونصوص برمجية وتوثيق يُستخدم لجمع معلومات البيئة ذات الصلة لبناء ونشر جدار حماية مخصص للنظام المستهدف مثل:
وبالتالي فإن هذا المستودع هو نقطة انطلاق جيدة لتوسيع جدار الحماية الخاص بك بسهولة لتشمل المزيد من القواعد والوظائف حسب الرغبة.
يوجد حالياً حوالي 800+ قاعدة لجدار الحماية، و10+ وحدات مع 100+ دالة، والعديد من النصوص البرمجية وجزء جيد من التوثيق المفيد.
يمكنك اختيار القواعد التي تريدها بشكل تفاعلي، ونشرها فقط، أو يمكنك أتمتة العملية ونشر جميع القواعد والإعدادات الضرورية على جدار الحماية الخاص بك.
تكوين جدار الحماية التفصيلي هو عملية تستغرق وقتاً طويلاً، وتتطلب الكثير من استكشاف الأخطاء وإصلاحها، وتتطلب التغييرات اختباراً وتدقيقاً أمنياً، وتزداد الأمور سوءاً إذا كنت بحاجة لنشر جدار الحماية لمئات أو آلاف أجهزة الكمبيوتر البعيدة، على سبيل المثال قد لا تحتوي جميع أجهزة الكمبيوتر على نفس البرامج أو متطلبات التقييد.
على عكس قواعد جدار الحماية في لوحة التحكم، يتم تحميل هذه القواعد في جدار حماية GPO (نهج المجموعة المحلي)، مما يعني أن تغييرات إعدادات النظام أو البرامج العشوائية التي تقوم بتثبيت قواعد كجزء من عملية التثبيت لن يكون لها أي تأثير على جدار الحماية ما لم تقم صراحةً بعمل استثناء.
القواعد المبنية على البرامج والخدمات سيتم التحقق من ملفها التنفيذي المحدد بحثاً عن التوقيع الرقمي وسيتم فحصها على VirusTotal في حالة فقدان التوقيع الرقمي، لأسباب أمنية لا يتم إنشاء القاعدة أو تحميلها في جدار الحماية إذا فشل هذا التحقق. (يمكن فرضه)
الاتجاه الافتراضي للصادر هو "منع" ما لم تكن هناك قاعدة للسماح بحركة مرور الشبكة، في معظم جدران الحماية هذا غير ممكن ما لم تحتفظ بقواعد لكل برنامج أو خدمة محتملة، وبفضل هذه المجموعة من القواعد، فإن تعيين الافتراضي للصادر على منع يتطلب القليل جداً من العمل الإضافي أو لا يتطلب أي عمل.
على عكس السيناريو المعتاد، ستعرف أي القواعد لم تعد لها تأثير أو أصبحت زائدة عن الحاجة بسبب مثلاً برنامج تم إلغاء تثبيته، أو خدمة نظام مفقودة لم تعد موجودة، أو ملف تنفيذي تمت إعادة تسميته بعد تحديث Windows وأسباب مشابهة.
على عكس قواعد جدار حماية Windows المحددة مسبقاً، هذه القواعد أكثر تقييداً مثل أنها مرتبطة بحسابات مستخدمين صريحة، تنطبق على منافذ محددة، واجهات شبكة، ملفات تنفيذية محددة، خدمات إلخ. وكل ذلك يتم تعلمه تلقائياً من النظام المستهدف.
تحديث أو تصفية أو البحث عن القواعد والسمات مثل المنافذ والعناوين وما شابه ذلك أسهل بكثير لأن هذه القواعد موجودة في نصوص برمجية، يمكنك استخدام أدوات المحرر مثل التعبير المنتظم، المؤشر المتعدد أو CTRL + F لإجراء عمليات مجمعة على قواعدك، القيام بذلك في أي واجهة مستخدم لجدار الحماية غير ممكن بسبب قيود واجهة المستخدم.
جزء كبير من الكود مخصص لتقديم حل آلي لبناء وتحديد جدار حماية متخصص للنظام المستهدف والمستخدمين، مما يقلل الحاجة للقيام بأي شيء يدوياً وبالتالي يوفر لك الكثير من الوقت الإداري الثمين.
هذا المشروع Windows Firewall Ruleset مرخص بموجب رخصة MIT.
بعض النصوص البرمجية، الملفات أو الوحدات ليست مرخصة بموجب MIT أو قد يكون لها أصحاب حقوق نشر خاصة بهم، لهذا السبب يتم الاحتفاظ بإشعارات الترخيص وحقوق النشر "لكل ملف".
يسرد الجدول التالي أنظمة التشغيل التي تم اختبار Windows Firewall Ruleset عليها
sigcheck64.exe (موصى به بشدة) تحميل sigcheckجميع أنظمة Windows 10.0 (الرئيسي 10، الثانوي 0) وما فوق باستثناء إصدارات Home مدعومة، ولكن فقط الإصدارات المدرجة في الجدول أعلاه تم اختبارها.
يشير عمود "الإصدار" إلى الإصدارات التي تم اختبارها، ومع ذلك يتم اختبار أحدث إصدارات النظام فقط بشكل مستمر.
قائمة الأنظمة المدعومة الأخرى غير المختبرة والميزات موجودة في المستقبل
PowerShell Core غير مدمج في Windows، ستحتاج إلى تثبيته بشكل منفصل أو استخدام Windows PowerShell وهو جزء من نظام التشغيل.
.NET Framework الحد الأدنى للإصدار 4.5 مطلوب إذا كنت تستخدم Windows PowerShell (إصدار سطح المكتب) بدلاً من PowerShell Core.
يأتي Windows 10 مع حد أدنى .NET 4.6 (الذي يتضمن .NET 4.5)، ويأتي Windows 11 مع حد أدنى .NET 4.8
sigcheck64.exe (أو sigcheck.exe 32 بت) هي أداة تحقق من التوقيع الرقمي يمكنك تنزيلها من موقع Microsoft ويجب وضعها إما في دليل C:\tools أو في متغير البيئة %PATH%.
سيستخدمها Windows Firewall Ruleset لإجراء تحليل ضار عبر الإنترنت يعتمد على التجزئة على VirusTotal لكل ملف قابل للتنفيذ غير موقع رقمياً قبل إنشاء قاعدة جدار حماية لذلك الملف القابل للتنفيذ.
هذه مجرد توصية، إذا لم يكن هناك sigcheck64.exe في فسيُعرض عليك تنزيله، وإذا رفضت فلن يتم إجراء تحليل ضار.
باستخدام هذه الوظيفة فإنك توافق على ، و
في الوقت الحالي، تم اختبار هذا الجدار الناري وتصميمه لأحدث إصدارات Windows Desktop/Servers وهي معروفة بالعمل، لاستخدامه على أنظمة أقدم يتطلب عملاً إضافياً.
يتم الاختبار على Windows 64 بت، وجزء صغير من القواعد لن يعمل على نظام 32 بت ويتطلب تعديلاً، والوظائف الكاملة لنظام 32 بت هي قيد العمل.
في الوقت الحالي يمكنك تحميل القواعد على نظام 32 بت بشكل جيد مع استثناء بعض القواعد التي ربما لا تكون ذات صلة بتكوينك.
للحصول على معلومات حول كيفية استخدام هذا الجدار الناري على أنظمة Windows القديمة مثل Windows 7 أو Windows Server 2008، انظر دعم الإصدارات القديمة
فيما يلي تحذيرات وإشعارات موجزة يجب أن يكون المستخدم الجديد على علم بها قبل نشر جدار الحماية
قد تفقد اتصال الإنترنت لبعض برامجك أو في حالات نادرة تفقد الاتصال بالإنترنت تماماً، إذا حدث ذلك، يمكنك إما السماح مؤقتاً بالشبكة الصادرة في GPO أو تشغيل
.\Scripts\Reset-Firewall.ps1 -Remoting -Service، لإعادة تعيين جدار حماية GPO إلى إعدادات النظام الافتراضية، وإزالة جميع القواعد واستعادة WinRM والخدمات المعدلة إلى الإعدادات الافتراضية للنظام.
(بعد ذلك يلزم إعادة تشغيل PowerShell)
داخل دليل docs يوجد ResetFirewall.md، دليل حول كيفية القيام بذلك يدوياً، يدوياً، إذا كنت غير قادر على تشغيل البرنامج النصي لسبب ما، أو أن البرنامج النصي لا يحل مشاكلك.
لن يتم حذف القواعد الموجودة لديك ما لم يكن لديك قواعد في GPO بنفس أسماء المجموعات تماماً مثل القواعد من هذه المجموعة، ومع ذلك لا ينطبق هذا على Scripts\Reset-Firewall.ps1 الذي سيقوم بمسح قواعد GPO بالكامل وترك فقط تلك الموجودة في لوحة التحكم.
إذا كنت تريد أن تكون متأكداً 100%، فيرجى تصدير قواعد GPO الخاصة بك كما هو موضح في تصدير/استيراد القواعد
سيُطلب منك تحديد القواعد التي سيتم تحميلها (إذا اخترت النشر التفاعلي، انظر لاحقاً)، لتقليل مشكلة اتصال الإنترنت، يجب نشر على الأقل جميع القواعد العامة للشبكات ونظام التشغيل المسماة "CoreNetworking"، "ICMP"، "WindowsSystem"، "WindowsServices"، "Multicast" بما في ذلك جميع القواعد التي لديك برامج مثبتة عليها في النظام، أيضاً لا تتجاهل IPv6، فـ Windows يحتاج IPv6 حتى لو كنت على شبكة IPv4.
سيكون من السهل حذف ما لا تحتاجه في GPO بدلاً من التنقيب لاحقاً في الكود للعثور على ما فاتك.
التكوين الافتراضي سيحدد سلوك جدار الحماية العام الذي لا يمكن تكوينه في GPO، مثل Stateful FTP و PPTP أو إعدادات IPSec العامة، إذا كنت بحاجة إلى إعداد معين، يرجى زيارة وإلقاء نظرة على .
لاحظ أن يتم استدعاؤه تلقائياً بواسطة
تحميل القواعد في GPO فارغ يجب أن يكون سريعاً جداً، ومع ذلك فإن التحميل في GPO يحتوي بالفعل على قواعد سيكون أبطأ بشكل ملحوظ (يعتمد على عدد القواعد الموجودة في GPO)
سيتم حفظ جميع الأخطاء والتحذيرات في دليل Logs، يمكنك مراجعة هذه السجلات لاحقاً إذا كنت ترغب في إصلاح مشكلة ما، يمكن تجاهل معظم التحذيرات وحتى بعض الأخطاء بأمان، في حالات معينة قد ترغب في حل الأخطاء إذا أمكن.
أي قاعدة ينتج عنها "تم رفض الوصول" أثناء التحميل يجب إعادة تحميلها عن طريق تنفيذ النص البرمجي المحدد مرة أخرى، انظر الأسئلة الشائعة لمزيد من المعلومات حول سبب حدوث ذلك.
إذا تم تنزيل المستودع يدوياً، أو نقله من كمبيوتر آخر أو وسيط، فيجب عليك أولاً إلغاء حظر جميع الملفات في المستودع لتجنب أسئلة YES/NO المزعجة لكل نص برمجي يتم تنفيذه، عن طريق تشغيل Scripts\Unblock-Project.ps1
النص البرمجي الرئيسي Scripts\Deploy-Firewall.ps1 يقوم بذلك في حال نسيت، ولكن أسئلة YES/NO الأولية ستظل موجودة في هذه الحالة.
إذا كان لديك "حماية من برامج الفدية" ممكّنة (في Windows Defender)، تأكد من إدراج pwsh.exe (إصدار Core) أو powershell.exe (إصدار سطح المكتب) أو كليهما في القائمة البيضاء، وإلا ستحدث أخطاء في وضع التطوير أثناء تثبيت الوحدات.
إذا تم تنزيل كود المستودع إلى مجلد تحت حماية برامج الفدية، فقد يتم حظر أي شيء.
قد تحتاج وحدة التحكم PowerShell إلى إعادة التشغيل حتى تسري تغييرات "الوصول المتحكم به إلى المجلد".
بشكل افتراضي، يتم إنشاء القواعد لمجموعة Users بينما لمجموعة Administrators فقط إذا لزم الأمر، التوصية هي أن يكون لديك حساب مستخدم قياسي تستخدمه للحوسبة اليومية لأسباب أمنية.
إذا كنت مسؤولاً ولا ترغب في إنشاء حساب قياسي على جهاز الكمبيوتر الخاص بك، فسيتعين عليك تعديل متغير في وتحديد .
إذا لم يكن لديك مفاتيح ssh وإعدادات أخرى مطلوبة للاستنساخ عبر SSH، فإما أن تستنسخ باستخدام HTTPS أو تقوم بتنزيل ملف zip من الإصدارات من Releases، ثم لأحدث إصدار تحت "assets" قم بتنزيل ملف zip.
هذه الخطوات هنا تفترض أنك قمت بتنزيل ملف zip من قسم "assets" ضمن "Releases".
قم باستخراج الأرشيف الذي تم تنزيله في مكان ما، هذه الخطوات تفترض أنك قمت باستخراج ملف zip (الدليل الجذر للمستودع) في محرك C:\ مباشرة.
إذا كنت ترغب في استخدام Windows PowerShell، انظر كيفية فتح Windows PowerShell
وإلا فإن الإجراء لكل من PowerShell Core و Windows PowerShell مشابه:
افتح المجلد المستخرج، انقر بزر الماوس الأيمن على مساحة فارغة وهناك خيار لتشغيل PowerShell Core كمسؤول (يفترض أنك قمت بتفعيل قائمة السياق أثناء تثبيت PowerShell Core) إذا لم يكن الأمر كذلك فافتحه يدوياً.
إذا لم يكن لديك قائمة سياق PowerShell، فانتقل إلى محرك C:\ الجذر عن طريق تنفيذ السطرين التاليين (اكتب أو انسخ/الصق الأوامر واضغط Enter لكل منهما)، هذا هو المكان الذي قمت باستخراج ملف zip الذي تم تنزيله فيه
c:
cd \
انتقل إلى المجلد الذي تم تنزيله:
cd WindowsFirewallRuleset*
لرؤية سياسة التنفيذ الحالية، اكتب الأمر التالي واضغط Enter:
(تلميح: يمكنك استخدام مفتاح TAB للإكمال التلقائي أثناء الكتابة)
Get-ExecutionPolicy
تذكر ناتج الأمر أعلاه، لاحظ أن PowerShell Core الافتراضي هو بينما Windows PowerShell الافتراضي هو على إصدارات غير الخادم.
إذا كنت بحاجة إلى مساعدة في تحديد ما إذا كنت ستشغّل مجموعة قواعد أم لا، اكتب ? عندما يُطلب منك تشغيل
مجموعة القواعد واضغط على Enter للحصول على مزيد من المعلومات.
إذا أردت لأي سبب مقاطعة وإلغاء النشر (مثلاً لبدء نشرة جديدة) اضغط
CTRL + C على لوحة المفاتيح أثناء تركيز PowerShell وأعد تشغيل وحدة تحكم PowerShell.
اتبع مخرجات المطالبة (مثل اضغط على Enter لقبول الإجراء الافتراضي)، سيستغرق الأمر حوالي 15 دقيقة من انتباهك.
ملاحظة: إذا كان حساب المسؤول يستخدم حساب Microsoft لتسجيل الدخول إلى الكمبيوتر، سيُطلب منك بيانات الاعتماد، والتي يجب أن تكون بريدًا إلكترونيًا وكلمة مرور من Microsoft بغض النظر عن استخدامك لـ Windows hello أم لا، فلن يعمل تحديد PIN مثلًا ولا تُدعم طرق مصادقة Windows hello الأخرى.
إذا تم تقديم بيانات اعتماد غير صالحة، ستحصل على خطأ يقول Access is denied.
إذا حدث هذا، ستحتاج إلى إعادة تشغيل وحدة تحكم PowerShell والمحاولة مرة أخرى.
لمزيد من المعلومات عن سبب ضرورة ذلك، راجع الأسئلة الشائعة
إذا واجهت أخطاء، يمكنك إما تجاهل الأخطاء أو تحديث البرنامج النصي الذي أنتج الخطأ ثم إعادة تشغيل ذلك البرنامج النصي المحدد مرة أخرى لاحقًا.
عند الانتهاء، قد ترغب في تعديل بعض القواعد في نهج المجموعة المحلي،
ليست كل القواعد مفعلة افتراضيًا أو قد ترغب في تبديل السلوك الافتراضي للسماح/المنع.
قد لا تغطي القواعد جميع البرامج المثبتة على نظامك، وفي هذه الحالة يجب إنشاء القواعد المفقودة.
الآن تفضل واختبر اتصالك بالإنترنت (مثل باستخدام متصفح ويب أو برنامج آخر)، إذا كنت غير قادر على الاتصال بالإنترنت بعد نشر هذه القواعد، فلديك عدة خيارات:
docs لمزيد من خيارات استكشاف الأخطاء وإصلاحها والوثائقكمتطلب مسبق لنشر جدار الحماية، تم بدء تشغيل بعض خدمات النظام وضبطها على
بدء تشغيل تلقائي، داخل دليل Logs ستجد ملف Services_<DATE>.log لمساعدتك في استعادة هذه
الخدمات إلى الوضع الافتراضي إذا رغبت في ذلك.
على سبيل المثال، يجب ألا تعمل خدمة إذا لم تكن مطلوبة
(الافتراضي هو بدء تشغيل "يدوي")
يقدم القسم التالي بعض التلميحات لإدارة جدار الحماية بسهولة
يدعم البرنامج النصي Deploy-Firewall.ps1 عدة وسائط لتتيح لك تخصيص أتمتة النشر
كما يلي:
- للمضي قدماً خطوة بخطوة والمطالبة بتأكيد أي مجموعات قواعد سيتم تحميلها
ومحاولة حل المشكلات أثناء التشغيل:```powershell
.\Scripts\Deploy-Firewall.ps1 -Interactive
Deploy-Firewall دون أي معلمات:```powershell
.\Scripts\Deploy-Firewall.ps1لتتعلم معنى المعاملات (parameters) لتتمكن من دمجها بنفسك، اطلع على تعليق السكربت `Deploy-Firewall.ps1` أو قم بتشغيل الأمر التالي:```powershell
Get-Help .\Scripts\Deploy-Firewall.ps1 -Detailed
هناك طريقتان لإدارة قواعد GPO:
استخدام نهج المجموعة المحلي، هذه الطريقة تمنحك حرية محدودة فيما يمكنك فعله بالقواعد
من هذا المستودع، مثل تعطيلها، أو تغيير بعض السمات، أو إضافة قواعد جديدة.
لمزيد من المعلومات انظر: إدارة جدار حماية GPO
تحرير نصوص PowerShell، هذه الطريقة تمنحك تحكمًا كاملاً، يمكنك تغيير أو إزالة القواعد الحالية بدون قيود أو إضافة قواعد جديدة.
مهما كانت خطتك أو إعداداتك، سترغب بالتأكيد في القيام بأعمال إضافية مثل تخصيص القواعد، أو إضافة قواعد لبرامج لم يتم تغطيتها بعد بواسطة جدار الحماية هذا.
يتم تحميل القواعد في نهج المجموعة المحلي، إذا قبلت أثناء إعداد جدار الحماية إنشاء اختصار لوحدة تحكم إدارة جدار الحماية الشخصية، يمكنك تشغيل الاختصار، وإلا اتبع الخطوات المذكورة في إدارة جدار حماية GPO
لمزيد من المعلومات حول GPO انظر: تكوين إعدادات نهج الأمان
إذا كنت تريد نشر قواعد محددة فقط، فهناك طريقتان للقيام بذلك:
تنفيذ Scripts\Deploy-Firewall.ps1 واختيار نعم فقط لمجموعات القواعد التي تريدها، وإلا اختر
لا واضغط على Enter لتخطي مجموعة القواعد الحالية.
في وحدة تحكم PowerShell، انتقل باستخدام cd إلى الدليل الذي يحتوي على برنامج مجموعة القواعد الذي تريده وقم بتنفيذ
البرنامج الفردي.
على سبيل المثال cd .\Rules\IPv4\Outbound\Software متبوعًا بـ .\Adobe.ps1 لتحميل قواعد Adobe.
قد ترغب في تشغيل Scripts\Complete-Firewall.ps1 بعد ذلك لتطبيق سلوك جدار الحماية الافتراضي
إذا لم يتم تعيينه بالفعل، أو يمكنك القيام بذلك يدويًا في GPO ولكن بقدرة محدودة.
"قدرة محدودة" تعني أن Scripts\Complete-Firewall.ps1 يقوم بتكوين بعض معلمات جدار الحماية التي
لا يمكن تعديلها في واجهة جدار الحماية الرسومية.
في كلتا الحالتين، سيتم حذف جميع القواعد التي تطابق مجموعة القواعد، DisplayGroup، قبل تحميل
القواعد في GPO.
يوجد حاليًا ثلاثة خيارات لحذف قواعد جدار الحماية:
الطريقة الأسهل هي تحديد جميع القواعد التي تريد حذفها في GPO، والنقر بزر الماوس الأيمن ثم الحذف.
لحذف القواعد وفقًا لملف، هناك وظيفة لهذا الغرض، موجودة في:
Modules\Ruleset.Firewall\Public\Remove-FirewallRule.ps1
ومع ذلك، تحتاج أولاً إلى تصدير جدار الحماية إلى ملف قبل استخدامها.
للعودة إلى حالة جدار الحماية القديمة (تلك الموجودة في لوحة التحكم)، ستحتاج إلى حذف جميع
القواعد من GPO، وتعيين جميع الخصائص إلى غير مكون بعد النقر بزر الماوس الأيمن على العقدة:
Windows Defender Firewall with Advanced Security - Local Group Policy Object
يمكن أيضًا حذف جميع القواعد أو العودة إلى الحالة السابقة باستخدام Scripts\Reset-Firewall.ps1
لاحظ أنك ستحتاج أيضًا إلى إعادة استيراد قواعد GPO المصدرة إذا كانت لديك.
إذا كنت تريد تصدير القواعد من GPO، فهناك طريقتان متاحتان:
التصدير في نهج المجموعة المحلي عن طريق النقر على قائمة تصدير السياسة...، بعد النقر بزر الماوس الأيمن على العقدة:
Windows Defender Firewall with Advanced Security - Local Group Policy Object
للتصدير باستخدام PowerShell، قم بتشغيل Scripts\Backup-Firewall.ps1
إذا كنت تريد تخصيص التصدير الخاص بك، فاطلع على وظيفة Export-RegistryRule الموجودة في وحدة Ruleset.Firewall
، والتي تتيح لك تخصيص التصدير بأي طريقة تقريبًا تريدها.
إذا كنت تريد استيراد القواعد، فإن الاستيراد باستخدام GPO هو نفسه بالنسبة للتصدير، وللاستيراد باستخدام
PowerShell، فقط قم بتشغيل Scripts\Restore-Firewall.ps1 والذي سيلتقط ملفات التصدير السابقة الخاصة بك.
لتخصيص التصدير/الاستيراد، يرجى إلقاء نظرة على Modules\Ruleset.Firewall\Public،
حيث ستجد وصفًا لكيفية استخدام وظائف وحدة التصدير/الاستيراد.
ملاحظة: وظيفة Export-FirewallRule بطيئة حقًا، يُنصح بتشغيل وظيفة Export-RegistryRule
بدلاً من ذلك فهي بأسرع ما يمكن.
هذا القسم والوظيفة حاليًا تجريبيان وغير مكتملين بالكامل، في الوقت الحالي يتم دعم النشر إلى كمبيوتر بعيد واحد.

في نشر جدار الحماية عن بُعد، هناك على الأقل جهازي كمبيوتر مشاركين،
يسمى أحدهما كمبيوتر الإدارة (العميل) ويسمى البعض الآخر أجهزة كمبيوتر مُدارة (خوادم).
يتم تنفيذ البرامج النصية بواسطة المسؤول على كمبيوتر الإدارة، ثم يتم نشر جدار الحماية على أو تكوينه على أجهزة كمبيوتر خادم متعددة في وقت واحد.
للحصول على تفاصيل التنفيذ، انظر وحدة Modules\Ruleset.Remote
ملاحظة: وظيفة الاتصال عن بُعد ليست حصرية لنشر جدار الحماية عن بُعد، فالنشر إلى localhost يتطلب بطبيعته تكوين WinRM و PS عن بُعد عاملاً أيضًا.
قبل أن يتم تنفيذ النشر عن بُعد، يجب تكوين الكمبيوتر البعيد (الخادم) لقبول الاتصال، مثال على كيفية إنشاء اتصال SSL كما يلي:
للسماح بالتنفيذ، قم بتكوين خدمة WinRM والتسجيل عن بُعد على كمبيوتر الخادم عن طريق تشغيل:
ملاحظة: إذا كنت تستخدم PowerShell core، فاحذف -Protocol HTTPS من Enable-WinRMServer أدناه، سيؤدي هذا إلى
تمكين كل من HTTP و HTTPS وهو حل مؤقت لتوافق الوحدة النمطية للعمل في
جلسة عن بُعد.```powershell
Set-ExecutionPolicy -Scope LocalMachine RemoteSigned Set-Location C:\Path\to\WindowsFirewallRuleset Import-Module .\Modules\Ruleset.Remote Enable-WinRMServer -Protocol HTTPS -KeepDefault -Confirm:$false Enable-RemoteRegistry -Confirm:$false
بعد تنفيذ هذه الخطوات، داخل دليل `\Exports` ستجد ملف شهادة SSL (*.cer)
والذي يجب نسخه إلى جهاز الإدارة أيضًا داخل دليل `\Exports`.\
افتراضيًا، يتم إنشاء شهادة SSL موقعة ذاتيًا إذا لم يكن جهاز الخادم يمتلك واحدة بالفعل.
**ملاحظة:** يتم تكوين جهاز الخادم يدويًا مرة واحدة فقط للإعداد الأولي،
لا تحتاج إلى تكرار ذلك للنشرات اللاحقة.
الخطوة التالية هي الانتقال إلى جهاز الإدارة وتشغيل البرامج النصية حسب الرغبة، على سبيل المثال:```powershell
# On management computer
cd C:\Path\to\WindowsFirewallRuleset\Scripts
Deploy-Firewall -Domain "RemoteComputerName"
يجب تشغيل مجموعتي الأوامر أعلاه في نفس الإصدار من PowerShell، على سبيل المثال إذا تم تكوين الخادم في PowerShell Core فإن جهاز العميل يحتاج أيضًا إلى PowerShell Core للنشر.
إذا كان الخادم أو جهاز الإدارة عبارة عن محطة عمل (على سبيل المثال ليس خادم Windows أو جزءًا من مجال) فيجب تعيين ملف تعريف الشبكة الخاص به إلى ملف تعريف خاص.
يمكن تخصيص النشر عن بعد بتفصيل كبير في المواقع التالية:
Modules\Ruleset.Remote\Scripts\WinRMSettings.ps1Modules\Ruleset.Remote\Scripts\*Firewall.psscModules\Ruleset.Remote\Public\Register-SslCertificate.ps1Modules\Ruleset.Remote\Scripts\SessionSettings.ps1لمزيد من المعلومات ونصائح استكشاف الأخطاء وإصلاحها، راجع أيضًا مساعدة عن بعد
للحصول على الدعم أو الإبلاغ عن المشكلات أو الاقتراحات أو تخصيص هذا المستودع وطرق تحديث جدار الحماية هذا بشكل دوري، يرجى الرجوع إلى SUPPORT.md
الميزات التالية مطلوبة وقد تكون متاحة في وقت ما في المستقبل:
إدارة جدار الحماية عن بعد
مجموعات شاملة لقواعد جدار الحماية لإصدارات Windows Server وأنظمة البوابة المخصصة.
فحص السجل عند الطلب أو بشكل مجدول للتحقق من سلامة سياسة تصفية جدار الحماية النشطة وإعدادات جدار الحماية
وظائف كاملة للإصدارات التالية غير المختبرة بعد من Windows 10.0
وظائف لأنظمة x86
| OS | الإصدار | الإصدار | البنية |
|---|
| Windows 10 | Pro | 1809 - 22H2 | x64 |
| Windows 10 | Pro Education | 20H2 | x64 |
| Windows 10 | Enterprise | 1809 - 20H2 | x64 |
| Windows 10 | Education | 20H2 - 22H2 | x64 |
| Windows 11 | Pro Education | 21H2 | x64 |
| Windows 11 | Pro | 22H2 - 23H2 | x64 |
| Windows 11 | Enterprise | 22H2 | x64 |
| Windows Server 2019 | Essentials | 1809 | x64 |
| Windows Server 2019 | Standard | 1809 | x64 |
| Windows Server 2019 | Datacenter | 1809 | x64 |
| Windows Server 2022 | Standard | 21H2 | x64 |
| Windows Server 2022 | Datacenter | 21H2 | x64 |
PATHقد ترغب في الحصول على git للتحقق من التحديثات، والتبديل بسهولة بين الفروع أو المساهمة بالكود.
VS Code هو المحرر المفضل والموصى به للتنقل في الكود و/أو تحرير النصوص البرمجية لاحتياجاتك الخاصة أو للمساهمة.
إذا حصلت على VSCode، فستحتاج أيضاً إلى إضافة PowerShell للتنقل في الكود وميزات لغة PowerShell.
للتنقل وتحرير الكود باستخدام VSCode، يُوصى بشدة باستخدام PSScriptAnalyzer، وإلا فقد تكون تجربة التحرير غريبة بسبب إعدادات المستودع المختلفة.
لا توجد متطلبات أجهزة، ولكن إذا كنت تخطط لكتابة وتصحيح الكود، فإن التوصية هي 8 جيجابايت على الأقل من الذاكرة وقرص SSD للعمل بشكل مريح على المشروع، وإلا لنشر القواعد فقط على جدار الحماية الشخصي الخاص بك، سيعمل أقل من ذلك بشكل جيد.
Scripts\Complete-Firewall.ps1Set-NetFirewallSettingScripts\Complete-Firewall.ps1Scripts\Deploy-Firewall.ps1تتطلب بعض النصوص البرمجية أن تكون (محول الشبكة) متصلاً بالشبكة، على سبيل المثال لتحديد عنوان البث IPv4. (وإلا قد يتم إنشاء أخطاء)
يجب أن يكون كل شيء على النظام محدثاً، وإلا قد يتم تخطي بعض القواعد أو تكون غير صحيحة، ويشمل ذلك تحديثات Windows، وتطبيقات متجر Microsoft وجميع البرامج الأخرى.
DefaultGroupConfig\ProjectSettings.ps1Administratorsانظر SecurityAndPrivacy.md لمزيد من المعلومات حول سبب عدم التوصية باستخدام حساب المسؤول لأسباب أمنية.
يجب أن يكون لحساب المسؤول الخاص بك المستخدم لنشر جدار الحماية كلمة مرور محددة.
قد تؤدي تحديثات البرامج أو Windows إلى إعادة تسمية الملفات القابلة للتنفيذ أو مواقعها، كما قد يتم إعادة تسمية حسابات المستخدمين بواسطة المسؤول، لذلك من المهم إعادة تحميل قواعد محددة من وقت لآخر حسب الحاجة لتحديث جدار الحماية لتغييرات النظام التي قد تحدث في أي وقت.
يسمى هذا السلوك التراجع البرمجي
قبل نشر جدار الحماية، يوصى بتحديث النظام وبرامج المستخدم على الكمبيوتر المستهدف بما في ذلك تطبيقات متجر Windows، خاصة إذا كان النظام مثبتاً حديثاً لأن التحديث لاحقاً قد يتطلب إعادة تحميل بعض القواعد.
RemoteSignedRestrictedقم بتعيين سياسة التنفيذ إلى unrestricted لتتمكن من إلغاء حظر ملفات المشروع،
(لاحظ أن RemoteSigned سيعمل فقط بمجرد إلغاء حظر النصوص البرمجية)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
قد يُطلب منك قبول تغيير سياسة التنفيذ، إذا كان الأمر كذلك، اكتب Y واضغط Enter للقبول.
لمزيد من المعلومات، انظر حول سياسات التنفيذ
في هذه المرحلة، يجب "إلغاء حظر" جميع ملفات المستودع أولاً عن طريق تنفيذ نص برمجي يسمى
Scripts\Unblock-Project.ps1، بالمناسبة، تم حظر ملفات المستودع بواسطة Windows لمنع المستخدمين من تشغيل كود نصي غير موثوق تم تنزيله من الإنترنت:
.\Scripts\Unblock-Project.ps1
إذا تم السؤال، تأكد من أن إجابتك هي R أي [R] تشغيل مرة واحدة عدة مرات حسب الحاجة لإلغاء حظر المشروع. (تقريباً حتى 8 مرات)
بمجرد إلغاء حظر ملفات المستودع، قم بتغيير سياسة التنفيذ إلى RemoteSigned:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
قد يُطلب منك مرة أخرى قبول تغيير سياسة التنفيذ، اكتب Y واضغط Enter للقبول.
تعتمد قواعد البرامج مثل متصفح الويب والألعاب وما إلى ذلك على متغيرات التثبيت.
يتم البحث عن معظم المسارات تلقائياً ويتم تحديث المتغيرات بشفافية، وإلا تحصل على تحذير ووصف لكيفية إصلاح المشكلة.
إذا لزم الأمر، يمكنك العثور على متغيرات التثبيت هذه في النصوص البرمجية الفردية داخل دليل Rules.
يوصى بإغلاق جميع وحدات تحكم إدارة MMC مثل gpedit.msc أو secpol.msc قبل تشغيل البرنامج النصي الرئيسي في الخطوة التالية.
عد إلى وحدة تحكم PowerShell وقم بتشغيل أحد أمرَي Deploy-Firewall أدناه:
لنشر جدار الحماية تلقائياً مع أقل عدد ممكن من المطالبات، قم بتشغيل:
.\Scripts\Deploy-Firewall.ps1 -Force
وإلا ليتم المطالبة بشكل تفاعلي حول القواعد التي سيتم تحميلها، قم بتشغيل:
.\Scripts\Deploy-Firewall.ps1
```اضغط على Enter وسيُطرح عليك أسئلة مثل نوع مجموعات القواعد التي تريدها.\
Windows Remote Management