جدار حماية Windows وتطبيقات الأعمال ── سجِّلوا القواعد الواردة من المثبِّت
· غو كومورا · Windows, جدار حماية, شبكة, أمن, تطبيقات الأعمال, مثبِّت, PowerShell, نظم المعلومات
«يعمل جيّداً على آلة التطوير، لكن بعد التثبيت في موقع العميل لم يستطع العميل الاتّصال بالخادم.» «ظهر تحذير ما عند أوّل تشغيل، ويبدو أنّ من كان هناك ألغاه.» «netstat يُظهر أنّ المنفذ يستمع، لكنّه غير قابل للوصول من الحاسوب المجاور.» — في ميدان نشر تطبيقات الأعمال، شكاوى بهذا الشكل كلاسيكيّة الكلاسيكيّات. ويجلس قرب رأس قائمة الأسباب، بإصرار، جدار حماية Windows (Windows Defender Firewall).
ما يجعل الأمر محرجاً أنّ المشكلة غير مرئيّة على آلة التطوير. على آلة التطوير ضغطتم «السماح» بأنفسكم أثناء التنقيح في Visual Studio، أو كنتم ببساطة مديرين أصلاً، فتشحنون دون أن تلاحظوا حظر الوارد الافتراضيّ. في موقع العميل، بالمقابل، من يشغّل الجهاز مستخدم عاديّ بلا امتيازات مدير، والشبكة تُدار بـ GPO. ليست أنّ «شيئاً كان يجب أن يعمل لا يعمل» — الواقع أنّ «آلة التطوير صادف أن عملت».
يستهدف المقال مطوّري تطبيقات الأعمال الذين يواجهون «لا يتّصل في موقع العميل» مع تطبيقاتهم الداخليّة، وموظّفي تقنيّة المعلومات في المنشآت الصغيرة والمتوسّطة الذين يتلقّون تلك الشكاوى. بعد الحدّ الأدنى الذي تحتاجون معرفته عن السلوك الافتراضيّ لجدار حماية Windows وآليّة الملفّ الشخصيّ، يمرّ على تصميم القواعد الواردة، وعمليّات التسجيل من المثبِّت، وإجراءات العزل، والتحفّظات التي تنطبق تحت إدارة GPO/Intune — كلّ ذلك مستنداً إلى مصادر أوّليّة حتّى أغسطس 2026.
1. الخلاصة أوّلاً
- افتراضيّ جدار حماية Windows «حظر الوارد، السماح بالصادر». حركة الوارد التي ليست استجابة لطلب تُهمَل ما لم تطابق قاعدة.1
- القاعدة الواردة لازمة فقط لتطبيقات نوع الخادم التي تستمع على منفذ. تطبيق عميل يبادر بالاتّصالات يعمل بالافتراضيّات كما هي. ابدأوا العزل هنا.1
- ثمّة ثلاثة ملفّات شخصيّة (Domain/Private/Public). يُطبَّق Domain تلقائيّاً عند رصد متحكّم نطاق؛ وPublic افتراضيّ الشبكات غير المعرَّفة. تُفعَّل القواعد أو تُعطَّل لكلّ ملفّ شخصيّ.1
- لا تتركوا بيئة الإنتاج لحوار «تنبيه مهمّ» ذاك. إن ألغى مدير، تُنشَأ قاعدة حظر، ولدى مستخدم بلا امتيازات مدير تُنشَأ قاعدة حظر أيّاً كان الزرّ المضغوط. لا يُعاد عرض الحوار حتّى تُحذف القاعدة المُنشأة.2
- الخلاصة «سجِّلوا القواعد الواردة لتطبيق الأعمال من المثبِّت». توصي Microsoft نفسها بوضع القواعد قبل أوّل تشغيل، وتعطيل إشعارات الوارد.2
- صمِّموا القواعد بأدنى امتياز. بمحور برنامج + بروتوكول + منفذ، قصّروا الملفّ الشخصيّ على Domain/Private، وضيّقوا IP البعيد إلى النطاق الفرعيّ اللازم. أحرف البدل غير جائزة في مسار البرنامج.23
- العزل بالترتيب Test-NetConnection → Get-NetFirewallRule → pfirewall.log. سجلّ الجدار لا يُكتب افتراضيّاً؛ لا يظهر إلا بعد تفعيل تسجيل الحزم المُهمَلة.456
- التعطيل الكلّيّ بإيقاف الخدمة غير مدعوم. تحت إدارة GPO/Intune قد يُعطَّل «دمج القواعد المحلّيّة»، وعندئذٍ لا تعمل القواعد المحلّيّة. اطلبوا من تقنيّة المعلومات التوزيع المركزيّ للقواعد.12
خريطة المعرفة لهذه المقالة
افتراضيّ جدار حماية Windows حظر الوارد والسماح بالصادر، والقاعدة الواردة لازمة فقط لتطبيق أعمال من نوع خادم يستمع على منفذ. عندما يستمع تطبيق بلا قاعدة يُعرض حوار «تنبيه مهمّ»، لكن بحسب العمليّة تُحرَق قاعدة حظر فتصير سبب عطل «لا يمكن الاتّصال»، لذا المبدأ تسجيل القاعدة الواردة من المثبِّت. تحت إدارة GPO/Intune قد يُعطَّل دمج القواعد المحلّيّة فلا تُطبَّق قواعد سُجِّلت محلّيّاً.
flowchart LR
accTitle: خريطة معرفة جدار حماية Windows وتطبيقات الأعمال
accDescr: مخطّط يبيّن علاقات جدار حماية Windows، والقاعدة الواردة، وتطبيق الاستماع، وحوار «تنبيه مهمّ»، والمثبِّت وامتيازات المدير، وتضييق القاعدة (تعيين برنامج وتقييد IP البعيد)، ودمج القواعد المحلّيّة، وعطل «لا يمكن الاتّصال» وأوامر العزل
windows_firewall["جدار حماية Windows"]
inbound_rule["قاعدة واردة"]
listen_app["تطبيق أعمال من نوع الاستماع"]
installer["المثبِّت"]
network_profile["ملفّ الشبكة الشخصيّ"]
communication_failure["عطل «لا يمكن الاتّصال»"]
firewall_notification["حوار «تنبيه مهمّ»"]
exe_path_change["تغيير مسار ملفّ التنفيذ"]
pfirewall_log["سجلّ جدار الحماية (pfirewall.log)"]
group_policy["نهج المجموعة"]
intune["Microsoft Intune"]
local_policy_merge["دمج القواعد المحلّيّة"]
mpssvc["خدمة جدار الحماية (MpsSvc)"]
port_rule["قاعدة بتعيين منفذ"]
over_permission["إذن زائد في القاعدة"]
test_netconnection["Test-NetConnection"]
get_netfirewallrule["Get-NetFirewallRule"]
unsolicited_inbound["حركة واردة غير مطلوبة"]
netsh_advfirewall["netsh advfirewall"]
new_netfirewallrule["New-NetFirewallRule"]
admin_rights["امتيازات المدير"]
remote_ip_scope["تقييد IP البعيد"]
program_rule["قاعدة بتعيين برنامج"]
mpssvc_stop["إيقاف خدمة MpsSvc"]
firewall_disable["تعطيل جدار الحماية"]
named_pipe["أنبوب مسمّى"]
smb_445["SMB (TCP 445)"]
get_netconnectionprofile["Get-NetConnectionProfile"]
block_rule["قاعدة حظر"]
notify_disable["تعطيل إشعار الوارد"]
service_rule["قاعدة بتعيين خدمة"]
profile_limit["تقييد الملفّ الشخصيّ"]
updater_reregistration["إعادة تسجيل القاعدة عند التحديث"]
netstat["netstat"]
listen_app -->|"يشترط"| inbound_rule
installer -->|"موصى به لـ"| inbound_rule
network_profile -.->|"قد يسبّب"| communication_failure
firewall_notification -.->|"قد يسبّب"| communication_failure
exe_path_change -.->|"قد يسبّب"| communication_failure
communication_failure -->|"يُتحقّق بـ"| pfirewall_log
windows_firewall -->|"يُكوَّن بـ"| group_policy
windows_firewall -->|"يُكوَّن بـ"| intune
inbound_rule -.->|"يشترط"| local_policy_merge
mpssvc -->|"ينفّذ"| windows_firewall
windows_firewall -->|"يستخدم"| network_profile
port_rule -.->|"قد يسبّب"| over_permission
exe_path_change -.->|"قد يسبّب"| firewall_notification
firewall_notification -->|"يُكوَّن بـ"| group_policy
communication_failure -->|"يُتحقّق بـ"| test_netconnection
communication_failure -->|"يُتحقّق بـ"| get_netfirewallrule
windows_firewall -->|"يمنع"| unsolicited_inbound
inbound_rule -->|"يُكوَّن بـ"| netsh_advfirewall
inbound_rule -->|"يُكوَّن بـ"| new_netfirewallrule
inbound_rule -->|"يشترط"| admin_rights
remote_ip_scope -->|"يخفّف"| over_permission
program_rule -->|"يخفّف"| over_permission
firewall_notification -->|"غير موصى به لـ"| inbound_rule
mpssvc_stop -->|"غير موصى به لـ"| firewall_disable
remote_ip_scope -->|"موصى به لـ"| over_permission
program_rule -->|"موصى به لـ"| over_permission
named_pipe -->|"يستخدم"| smb_445
network_profile -->|"يُتحقّق بـ"| get_netconnectionprofile
firewall_notification -.->|"قد يسبّب"| block_rule
block_rule -->|"قد يسبّب"| communication_failure
notify_disable -->|"يمنع"| firewall_notification
service_rule -->|"يخفّف"| over_permission
profile_limit -->|"يخفّف"| over_permission
updater_reregistration -->|"موصى به لـ"| exe_path_change
communication_failure -->|"يُتحقّق بـ"| netstat
في المخطّط، يشير الخطّ المتّصل إلى علاقة قائمة دائماً، ويشير الخطّ المتقطّع إلى علاقة مشروطة (شروط قيامها مذكورة في شرح كلّ علاقة في الصفحة التفصيليّة). القائمة الكاملة للعلاقات (المجموع 35، مع الأدلّة ودرجة اليقين) وتعريفات المفاهيم الرئيسة مجمّعة في صفحة تفاصيل خريطة المعرفة (باليابانية). البيانات: JSON-LD / Turtle
2. فهم السلوك الافتراضيّ بدقّة ── الوارد محظور افتراضيّاً، والصادر مسموح افتراضيّاً
أوّلاً نثبّت الأساس بدقّة. جدار حماية Windows جدار مضيف مفعَّل افتراضيّاً على كلّ الإصدارات، وسلوكه الافتراضيّ ينحصر في هذين السطرين.1
- الوارد (inbound): يُحظَر الكلّ ما لم يكن استجابة لطلب (solicited) أو يطابق قاعدة
- الصادر (outbound): يُسمَح بالكلّ ما لم يطابق قاعدة
من هذين السطرين يخرج أهمّ عزل لتطبيق الأعمال. القاعدة الواردة لازمة لـ«طرف الاستماع» فقط.
- تطبيق عميل يتّصل بنفسه فقط بخادم ويب داخليّ أو خادم قاعدة بيانات أو نظام أساسيّ → كقاعدة، لا حاجة لقاعدة. حزم عودة الاتّصال «استجابة لطلب» فتمرّ افتراضيّاً.
- تطبيق أو خدمة Windows من نوع خادم يفتح منفذاً وينتظر الاتّصال بـ TCP أو gRPC أو بروتوكول مخصَّص → القاعدة الواردة إلزاميّة.
- تكوين يستخدم أنبوباً مسمّى من بُعد استثناء. الأنبوب المسمّى البعيد لا يمرّ عبر منفذ التطبيق نفسه بل عبر SMB (TCP 445)، فما يلزم ليس قاعدة التطبيق بل قاعدة جانب مشاركة الملفّات (SMB).
- الاستثناء بيئات عالية الأمن غيّرت افتراضيّ الصادر صراحة إلى الحظر. هذا التكوين لا يوجد إلا في بعض المنظّمات، وعندئذٍ يحتاج تطبيق العميل أيضاً طلب قاعدة صادرة.2
flowchart TB
accTitle: القاعدة الواردة لازمة لطرف الاستماع فقط
accDescr: إن اتّصلتم كعميل فقط فالقاعدة الواردة غير لازمة كقاعدة، وإن فتحتم منفذاً واستمعتم فسجِّلوا القاعدة الواردة من المثبِّت
APP["جرد اتّصالات تطبيقكم"] --> Q{"هل يفتح منفذاً<br/>وينتظر الاتّصال؟"}
Q -- "لا يستمع<br/>(يتّصل كعميل فقط)" --> C1["القاعدة الواردة غير لازمة كقاعدة<br/>عودة الاتّصال تمرّ بوصفها «استجابة»"]
Q -- "يستمع<br/>(نوع خادم أو تلقّي استدعاء راجع)" --> S1["القاعدة الواردة إلزاميّة<br/>→ سجِّلوها من المثبِّت (الفصل 5)"]
C1 -.-> EX["استثناء: في بيئة عالية الأمن<br/>بحظر صادر افتراضيّ اطلبوا قاعدة صادرة"]
الشكل 1: إن كان المنفذ يستمع فالقاعدة الواردة إلزاميّة؛ واتّصال العميل وحده لا يحتاج قاعدة كقاعدة.
حالة «تطبيق كان يُظَنّ عميلاً يستمع أيضاً» (تلقّي استدعاء راجع للنتيجة، منفذ إشعار من عمليّة أخرى، إلخ) سهلة الإغفال. إن التبس أيّ أسلوب اتّصال يستمع به تطبيقكم، أكّدوا أيضاً عند التصميم «كيف تختارون وسيلة الاتّصال بين العمليّات».
2.1. الملفّات الشخصيّة و«موضع الشبكة»
تُطبَّق القواعد لكلّ ملفّ شخصيّ للشبكة. الملفّات الشخصيّة ثلاثة.1
| الملفّ الشخصيّ | شرط التطبيق | الموضع المتصوَّر |
|---|---|---|
| Domain | يُطبَّق تلقائيّاً عندما يرصد حاسوب منضمّ لنطاق AD متحكّم نطاق. الضبط اليدويّ غير جائز | شبكة نطاق داخليّة |
| Private | يضبطه المدير يدوياً على واجهة الشبكة | LAN منزل أو مكتب صغير |
| Public | افتراضيّ الشبكات غير المعرَّفة. مصمَّم بأشدّ الافتراضات صرامة | Wi-Fi عامّ، فندق، مطار |
أيّ ملفّ شخصيّ مطبَّق الآن يُؤكَّد بـ Get-NetConnectionProfile، وتبديل Private/Public يتمّ بـ Set-NetConnectionProfile.1 الحادث الشائع في الميدان أنّ الشبكة في بيئة مجموعة عمل لدى العميل تُحكَم عليها بـ «Public»، فلا تُطبَّق قاعدة واردة صُنعت مقصورة على Domain/Private. عندما «القاعدة موجودة لكن لا تمرّ»، اشتبهوا بتطابق الملفّ الشخصيّ قبل محتوى القاعدة.
2.2. أولويّة القواعد
تقييم قواعد متعدّدة لا يتمّ بقائمة ترتيب مُوزونة، بل بالمبادئ المتّسقة التالية.2
- قاعدة سماح صريحة تتقدّم على الحظر الافتراضيّ
- قاعدة حظر صريحة تتقدّم على قاعدة سماح متعارضة
- في نطاق لا يخالف 1 و2 أعلاه، القاعدة الأكثر تحديداً تتقدّم
المعنى العمليّ أنّ «قاعدة حظر واحدة في مكان ما تغلب أيّ عدد من قواعد السماح تُضاف لاحقاً». وكما سيُرى في الفصل التالي، هذا الحوار بالضبط هو من يصنع قاعدة الحظر تلك بهدوء.
3. حقيقة حوار «تنبيه مهمّ» ── لماذا لا يجوز تركه له
عندما يبدأ تطبيق لأوّل مرّة الاستماع (listen) على منفذ، إن لم توجد قاعدة سماح لذلك التطبيق ولا قاعدة عرّفها مدير، يعرض Windows حوار «تنبيه أمن Windows المهمّ» المألوف: «حُظرت بعض ميزات هذا التطبيق بواسطة جدار حماية Windows Defender». مواصفات السلوك واضحة.2
- إن عُرض لمستخدم بامتيازات مدير: «السماح بالوصول» ينشئ قاعدة سماح. لكن الضغط على «إلغاء» ينشئ قاعدة حظر. عادة اثنتان، لـ TCP وUDP.
- إن عُرض لمستخدم بلا امتيازات مدير: أيّ خيار يُختار ينشئ قاعدة حظر.
- في الحالين، ما لم تُحذف القاعدة المُنشأة لا يُعرض الحوار ثانية أبداً، ويظلّ الاتّصال محظوراً.
flowchart TB
accTitle: تفرّع حوار تنبيه مهمّ
accDescr: إن لم توجد قاعدة وكان إشعار الوارد مفعَّلاً يظهر الحوار، وإلغاء المدير أو أيّ عمليّة لمستخدم عامّ ينشئان قاعدة حظر فلا يظهر الحوار ثانية أبداً
L["التطبيق يبدأ الاستماع على منفذ"] --> Q1{"هل توجد قاعدة<br/>تطابق ذلك التطبيق؟"}
Q1 -- "نعم" --> R1["يُتَّبع القاعدة<br/>(لا يظهر الحوار)"]
Q1 -- "لا" --> Q2{"هل إشعار الوارد<br/>مفعَّل؟"}
Q2 -- "معطَّل" --> R2["حظر صامت<br/>(لا تُنشَأ قاعدة)"]
Q2 -- "مفعَّل" --> DLG["حوار «تنبيه مهمّ»"]
DLG -- "المدير يختار «السماح بالوصول»" --> OK["تُنشَأ قاعدة سماح"]
DLG -- "المدير يختار «إلغاء»" --> NG1["تُنشَأ قاعدة حظر"]
DLG -- "مستخدم بلا امتيازات مدير<br/>(أيّ عمليّة)" --> NG2["تُنشَأ قاعدة حظر"]
NG1 --> NEVER["حتّى تُحذف القاعدة<br/>لا يظهر الحوار ثانية أبداً"]
NG2 --> NEVER
الشكل 2: إلغاء الحوار أو عمل مستخدم بلا امتيازات يحرق قاعدة حظر؛ ولا يظهر الحوار ثانية ما لم تُحذف.
أي أنّ هذا الحوار يبدو «آليّة تطلب الإذن من المستخدم»، لكنّه في ميدان تطبيقات الأعمال يعمل كـ «آليّة تحرق قاعدة حظر في اللحظة التي يلمس فيها مستخدم عامّ». إن شغّل مسؤول النشر أوّل مرّة بحساب مدير وسمح في الحوار، فقاعدة السماح المُنشأة تسري على الحاسوب كلّه، فيتواصل المستخدمون العامّون من الغد مبدئيّاً. ومع ذلك تبقى حوادث — عندما يطأ مستخدم عامّ استماعاً لم يُداس في التحقّق عند النشر، وعندما يختلف الملفّ الشخصيّ للشبكة المطبَّق عن وقت النشر، وعندما يتغيّر مسار الـ exe بتحديث (الفصلان 4 و5).
تصرّح Microsoft نفسها بأفضل الممارسات التالية للأجهزة التي يستخدمها غير المديرين.2
- ضعوا القواعد اللازمة قبل أوّل تشغيل للتطبيق (توزيع من المثبِّت أو من جانب الإدارة)
- عطّلوا إشعارات الوارد (بقطع الإشعار يتوقّف إنشاء القواعد التلقائيّ عند التشغيل نفسه)
تعطيل الإشعار يتمّ بـ Set-NetFirewallProfile -NotifyOnListen False، أو بنهج المجموعة.7 «إن ظهر الحوار فاطلبوا من الميدان الضغط على السماح» ليس إجراء تشغيل، بل حجز لحادث. سجِّلوا القواعد الواردة عند التثبيت ── هذه خلاصة المقال، وهي تتّفق مع توصية Microsoft.
4. تصميم القواعد الواردة ── تعيين البرنامج وتعيين المنفذ وتعيين الخدمة
نصمّم محتوى القاعدة التي ستُسجَّل. وسائل التعيين ثلاث عائلات كبيرة، وتحكمون باستخدامها منفردة أو مجتمعة.
| وسيلة التعيين | متى تناسب | الضعف / الانتباه |
|---|---|---|
تعيين البرنامج (program= / -Program) |
منفذ الاستماع ديناميكيّ أو متعدّد. تكوين يستمع فيه جسم تطبيق سطح المكتب | مسار كامل للـ exe فقط بلا أحرف بدل2. إن تغيّر المسار بتحديث تفقد القاعدة هدفها (القسم 5.4) |
تعيين المنفذ (localport= / -LocalPort) |
المنفذ ثابت. يسهل محاذاته مع طلب تقنيّة المعلومات وإعداد أجهزة الشبكة | يمرّر أيضاً عمليّة أخرى تستمع على المنفذ نفسه. يلزم سجلّ إدارة لأرقام المنافذ |
تعيين الخدمة (-Service) |
عمليّة استماع تعمل كخدمة Windows | تضييق الهدف باسم الخدمة (الاسم القصير)3. لا يُستخدم لشكل تشغيل exe مباشرة |
| الجمع (برنامج + بروتوكول + منفذ) | الشكل الأساسيّ لتطبيق أعمال إنتاجيّ | كلّما زادت الشروط ضعفت أمام تغيّر البيئة (تغيير مسار أو منفذ)، فوثّقوا محتوى القاعدة2 |
فوق ذلك، راكموا تقييد النطاق. توصية تصميم Microsoft أيضاً «اجعلوا القواعد الواردة محدَّدة قدر الإمكان».2
- تقييد الملفّ الشخصيّ: قواعد واردة لتطبيق أعمال لا يُستخدم إلا داخليّاً قصروها على Domain/Private، ولا تفعّلوها على Public. تمنعون حادث انفتاح منفذ الاستماع على العالم في اللحظة التي يتّصل فيها حاسوب محمول بـ Wi-Fi خارجيّ.
- تقييد IP البعيد: إن كان مصدر الاتّصال معلوماً، ضيّقوا
-RemoteAddressإلى ذلك النطاق الفرعيّ. للشبكات المنزليّة والصغيرة يُوصى بالتقييد بكلمةLocalSubnet.23 - الاتّجاه والعدد: إن كان الاستماع TCP فقط فقاعدة TCP واحدة تكفي. لا تصنعوا كسلاً قاعدتي TCP/UDP كاللتين يصنعهما الحوار تلقائيّاً.
«من الطرف اللازم، إلى المنفذ اللازم، البرنامج اللازم فقط» ── تصميم القواعد الواردة ينحصر في جملة أدنى الامتياز هذه.
5. التسجيل عمليّاً من المثبِّت ── netsh وNew-NetFirewallRule
5.1. المقدّمة: امتيازات مدير لازمة
إضافة قواعد الجدار وحذفها تغيير إعدادات الحاسوب كلّه، لذا يلزم التنفيذ بامتيازات مدير (عمليّة مرتفعة). 8 المثبِّت يعمل عادة بامتيازات مدير، فمن المعقول وضع تسجيل القاعدة داخل معالجة التثبيت. لا يصير ذلك سبباً لتشغيل جسم التطبيق كمدير. فكرة هذا الخطّ مشروحة تفصيلاً في «متى تصبح امتيازات المدير لازمة».
5.2. التسجيل بـ netsh advfirewall
كلاسيكيّ لكن سهل الاستدعاء من أيّ مثبِّت هو netsh advfirewall firewall add rule.8
rem add rule يلحق حتّى إن وُجدت قاعدة بالاسم نفسه، لذا استعداداً لإعادة التشغيل
rem عند إعادة التثبيت أو الإصلاح أو التحديث احذفوا القاعدة التي تحمل الاسم ثمّ سجِّلوا من جديد
netsh advfirewall firewall delete rule name="MyCompany OrderServer"
rem قاعدة سماح واردة بتعيين برنامج + منفذ + تقييد ملفّ شخصيّ
netsh advfirewall firewall add rule name="MyCompany OrderServer" dir=in action=allow program="C:\Program Files\MyCompany\OrderServer\OrderServer.exe" protocol=TCP localport=50051 profile=domain enable=yes
rem عند إلغاء التثبيت: الحذف بالاسم
netsh advfirewall firewall delete rule name="MyCompany OrderServer"
add rule لا يستبدل قاعدة موجودة بالاسم نفسه بل يضيفها بالاسم نفسه، فإن لم تنفّذوا delete rule أوّلاً تتكاثر القواعد عند كلّ إعادة تشغيل، وتبقى قاعدة السماح القديمة بعد تحديث غيّر المسار أو النطاق (عند أوّل تشغيل تُرجع delete rule الأولى رسالة «لا قاعدة مطابقة»، لكن تنفيذ الدفعة يتواصل، فلا مشكلة بهذا الترتيب. إن حكم المثبِّت على النجاح برمز الخروج فانظروا نتيجة add rule الأخيرة). يمكن تضييق مصدر الاتّصال أيضاً مثل remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet.8 الحذف يزيل القواعد المطابقة بالاسم جملة، لذا اجعلوا اسم القاعدة فريداً ببادئة شركتكم للأمان.
5.3. التسجيل بـ PowerShell (New-NetFirewallRule)
لتحكّم أدقّ، وحدة NetSecurity. -DisplayName إلزاميّ، ويمكن لـ -Profile تعيين عدّة قيم مفصولة بفاصلة (بلا مسافات).3
# التسجيل (نفِّذوه مرتفعاً من المثبِّت). -Name معرِّف فريد، لذا عند إعادة التشغيل
# لإعادة التثبيت أو الإصلاح أو التحديث يفشل إنشاء قاعدة بالاسم نفسه.
# اجعلوه عديم الأثر بحذف القاعدة التي تحمل الاسم ثمّ إنشائها من جديد
Remove-NetFirewallRule -Name "MyCompany-OrderServer-In" -ErrorAction SilentlyContinue
New-NetFirewallRule -Name "MyCompany-OrderServer-In" `
-DisplayName "MyCompany OrderServer (TCP 50051 وارد)" `
-Direction Inbound -Action Allow `
-Program "C:\Program Files\MyCompany\OrderServer\OrderServer.exe" `
-Protocol TCP -LocalPort 50051 `
-Profile Domain,Private -RemoteAddress LocalSubnet
# عند إلغاء التثبيت: لا خطأ إن لم توجد
Remove-NetFirewallRule -Name "MyCompany-OrderServer-In" -ErrorAction SilentlyContinue
التصريح بـ -Name هنا له سبب. -Name معرِّف فريد للقاعدة، وإن حُذف تُسنَد قيمة عشوائيّة. اسم العرض (-DisplayName) قد يتغيّر حسب الإعدادات المحلّيّة، لذا مفتاح تحديد القاعدة من السكربت هو -Name وفق إرشاد Microsoft.3 ولكي يحذف برنامج إلغاء التثبيت قاعدته هو فقط بيقين، اعتبروا تثبيت -Name إلزاميّاً.
5.4. عندما يتغيّر مسار الـ exe بالتحديث
قاعدة تعيين البرنامج تثبّت الهدف بالمسار الكامل. أي أنّ إن تغيّر موضع التثبيت أو اسم الـ exe بالتحديث، تبقى القاعدة لكن تفقد هدفها، فيُحظَر الاستماع من جديد. عندئذٍ يُعامَل exe المسار الجديد كـ«تطبيق بلا قاعدة»، فإن كان الإشعار مفعَّلاً يظهر حوار الفصل 3 مرّة أخرى، وإن لمسه مستخدم عامّ تُحرَق قاعدة حظر. في بيئة عُطِّل فيها الإشعار كما يُوصى في الفصل 3، يفشل صامتاً بلا حوار أصلاً. الحادث سهل الوقوع خصوصاً مع أسلوب وضع في مجلّد يحمل رقم إصدار، أو أسلوب تحديث ذاتيّ يحرّك موضع الوضع.
flowchart TB
accTitle: إن تغيّر مسار الـ exe بالتحديث تفقد القاعدة هدفها
accDescr: قاعدة تعيين البرنامج تثبّت المسار الكامل لذا إن تغيّر موضع الوضع تفقد الهدف، وبحسب الإشعار يُعاد عرض الحوار أو يصير حظراً صامتاً
V1["نشر v1.0<br/>القاعدة تشير إلى exe مجلّد v1.0"] --> UP["بالتحديث يُوضَع في مجلّد v1.1<br/>فيتغيّر مسار الـ exe المنفَّذ"]
UP --> MISS["قاعدة المسار القديم تفقد هدفها<br/>(القاعدة باقية لكن لا تعمل)"]
MISS --> Q{"هل إشعار الوارد<br/>مفعَّل؟"}
Q -- "مفعَّل" --> DLG["يُعاد عرض الحوار<br/>إن لمسه مستخدم عامّ فقاعدة حظر"]
Q -- "معطَّل" --> SILENT["بلا حوار أيضاً<br/>حظر صامت"]
MISS -.->|"العلاج"| FIX["ثبّتوا المسار عبر التحديثات<br/>أو احذفوا القاعدة القديمة وأعيدوا التسجيل في معالجة التحديث"]
الشكل 3: إن غيّر التحديث مسار الـ exe تفقد القاعدة القديمة هدفها؛ ثبّتوا المسار أو أعيدوا التسجيل عند التحديث.
العلاج بسيط، أحد التالي.
- ثبّتوا موضع التثبيت بحيث لا يتغيّر المسار الكامل للـ exe عبر التحديثات
- في تحديث يتغيّر فيه المسار، يحذف المحدِّث القاعدة القديمة ويعيد التسجيل بالمسار الجديد (نفّذوا أوامر 5.2/5.3 في معالجة التحديث أيضاً)
لمثبِّت MSI، القاعدة الكلاسيكيّة إدراج تسجيل القاعدة كـإجراء مخصَّص يُنفَّذ بعد وضع الملفّات (وعند إلغاء التثبيت إجراء مخصَّص لجانب الحذف). لمجموعات أدوات مثل WiX امتدادات تصف قواعد الجدار تصريحيّاً. موضع التنفيذ يتغيّر حسب أسلوب التوزيع المختار، فانظروا أيضاً «كيف تختارون نموذج توزيع تطبيق Windows». أمّا الكشف الخاطئ لمكافحة الفيروسات، وهو كلاسيكيّ آخر عند النشر لدى العميل، فمُعالَج في «التعامل مع الكشف الخاطئ في Microsoft Defender».
6. استكشاف الأخطاء ── تدفّق عزل «لا يمكن الاتّصال»
ثبّتوا الإجراء عند تلقّي استفسار، بالترتيب. المسار الكلّيّ كالتالي.
flowchart TB
accTitle: عزل لا يمكن الاتّصال
accDescr: تؤكّدون بالترتيب استماع الخادم ووصول العميل وتطابق الملفّ الشخصيّ وقواعد ActiveStore وإهمال DROP في السجلّ
S["«لا يمكن الاتّصال من العميل»"] --> N["جانب الخادم: netstat -ano"]
N -- "لا يستمع" --> APP["مشكلة قبل الجدار<br/>حقّقوا في جانب التطبيق أو الخدمة"]
N -- "LISTENING" --> T["جانب العميل: Test-NetConnection"]
T -- "TcpTestSucceeded=True" --> OTHER["الوصول سليم<br/>حقّقوا في طبقة التطبيق (مصادقة وبروتوكول)"]
T -- "False" --> P["جانب الخادم: Get-NetConnectionProfile<br/>أكّدوا الملفّ الشخصيّ المطبَّق"]
P -- "لا يطابق هدف القاعدة" --> FIXP["راجعوا تعيين الملفّ الشخصيّ للقاعدة"]
P -- "يطابق" --> R["Get-NetFirewallRule -PolicyStore ActiveStore<br/>أكّدوا وجود قاعدة سماح وخلط قاعدة حظر"]
R --> LOGCHK["قيسوا الإهمال (DROP) في pfirewall.log"]
الشكل 4: عزل آليّ بالترتيب netstat → Test-NetConnection → الملفّ الشخصيّ → قواعد ActiveStore → pfirewall.log.
| الخطوة | الأمر / العمليّة | ما تؤكّدونه |
|---|---|---|
| 1. تأكيد الاستماع (جانب الخادم) | netstat -ano |
هل المنفذ المستهدف LISTENING. إن لم يستمع أصلاً فالمشكلة قبل الجدار |
| 2. تأكيد الوصول (جانب العميل) | Test-NetConnection -ComputerName sv01 -Port 50051 |
هل TcpTestSucceeded يساوي True4 |
| 3. تأكيد الملفّ الشخصيّ (جانب الخادم) | Get-NetConnectionProfile |
هل الملفّ الشخصيّ المطبَّق يطابق الملفّ الشخصيّ الذي فُعِّلت عليه القاعدة1 |
| 4. تأكيد القواعد النافذة (جانب الخادم) | Get-NetFirewallRule -PolicyStore ActiveStore |
هل قاعدة السماح المقصودة ضمن القواعد «النافذة فعلاً» بما فيها الآتية من GPO. هل اختلطت قاعدة حظر آتية من الحوار5 |
| 5. التأكيد من السجلّ (جانب الخادم) | pfirewall.log | هل تُهمَل (DROP) حزم موجَّهة إلى المنفذ المستهدف6 |
تكملة للخطوة 4. شروط المنفذ والبرنامج ليست في جسم القاعدة بل في كائن المرشّح، لذا لعكس القاعدة من المنفذ استعلموا عبر المرشّح.57
# عكس القواعد المتعلّقة بالمنفذ 50051
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 50051 } | Get-NetFirewallRule
# تتبّع مصدر القاعدة (محلّيّ أم GPO)
Get-NetFirewallRule -PolicyStore ActiveStore -TracePolicyStore |
Select-Object Name, DisplayName, PolicyStoreSourceType, PolicyStoreSource
سجلّ الجدار في الخطوة 5 (pfirewall.log) لا يسجّل شيئاً افتراضيّاً. المسار الافتراضيّ %windir%\system32\logfiles\firewall\pfirewall.log، والحجم الأقصى الافتراضيّ 4,096 كيلوبايت، ولا يُكتب إلا بعد تفعيل «تسجيل الحزم المُهمَلة» أو «تسجيل الاتّصالات الناجحة».6 على آلة منفردة يمكن التفعيل كالتالي.6
netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging allowedconnections enable
السجلّ ملفّ نصّيّ، يُسجَّل فيه سطراً بسطر ما إذا كان إهمالاً (DROP) أم سماحاً (ALLOW)، والبروتوكول، وعنوان IP المصدر/الوجهة والمنفذ، فيمكن هنا حسم «هل وصل SYN من العميل ثمّ أُهمل، أم لم يصل أصلاً». لاحظوا أنّه في بيئة كُوِّن فيها السجلّ بالسياسة قد ينقص إذن الكتابة إلى مجلّد السجلّ (FullControl للخدمة mpssvc) فلا يُنشَأ الملفّ، وعندئذٍ يلزم إنشاء المجلّد ومنح ACL.6
للتعميق أكثر، تفعيل سياسة التدقيق «إهمال حزم منصّة التصفية» يسجّل الحدث الأمنيّ 5152 عند كلّ إهمال. غير أنّ كمّ الأحداث هائل جدّاً، لذا توصي Microsoft باستخدام الحدث 5157 (اتّصال منصّة التصفية) الذي يُسجَّل لكلّ اتّصال. أداة تُفعَّل أثناء العزل فقط، لا للاستخدام اليوميّ.9
أخيراً، نوضّح عزلاً لا يجوز فعله. التعطيل الكلّيّ بإيقاف خدمة الجدار (MpsSvc) غير مدعوم، ويسبّب مشاكل على جانب نظام التشغيل مثل تعطّل قائمة ابدأ وفشل تحديثات تطبيقات المتجر. إن أردتم التعطيل للتأكيد بأيّ ثمن، أبقوا الخدمة شغّالة وعطّلوا الملفّ الشخصيّ بـ Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False، وأعيدوه فور التأكيد.17 ومتى حُسم أنّ السبب الجدار، العلاج ليس تخليد التعطيل بل إضافة قاعدة صحيحة واحدة.
7. الانتباه تحت إدارة المنظّمة ── بيئات لا تعمل فيها القواعد المحلّيّة وأسلوب الطلب
حتّى إن سجّل المثبِّت قاعدة، ثمّة بيئات لا تعمل فيها. في منظّمات تدير الجدار مركزيّاً بـ GPO أو Intune (CSP)، يمكن تعطيل «دمج القواعد المحلّيّة» (AllowLocalPolicyMerge) لكلّ ملفّ شخصيّ. إن عُطِّل هذا الإعداد، لا تُطبَّق القواعد التي أنشأها مدير محلّيّ (بما فيه المثبِّت)، وتصير قواعد التطبيقات التي تحتاج اتّصالاً وارداً إلزاميّة التوزيع المركزيّ من GPO/CSP.2
flowchart TB
accTitle: إن عُطِّل دمج القواعد المحلّيّة لا يعمل تسجيل المثبِّت
accDescr: في بيئة عُطِّل فيها AllowLocalPolicyMerge لا تُطبَّق القواعد المحلّيّة وإن وُجدت، فانتقلوا إلى التوزيع المركزيّ عبر GPO أو CSP
GPOR["قواعد موزَّعة عبر GPO/Intune"] --> EFF["مجموعة القواعد النافذة فعلاً<br/>(ActiveStore)"]
LOCAL["قواعد أُنشئت محلّيّاً<br/>(بما فيها تسجيل المثبِّت)"] --> Q{"دمج القواعد المحلّيّة<br/>(AllowLocalPolicyMerge)"}
Q -- "مفعَّل (افتراضيّ)" --> EFF
Q -- "معطَّل" --> DROP["القاعدة موجودة لكن لا تُطبَّق<br/>→ انتقلوا إلى التوزيع المركزيّ عبر GPO/CSP"]
الشكل 5: إن عُطِّل دمج القواعد المحلّيّة لا تُطبَّق قواعد المثبِّت؛ فيلزم التوزيع المركزيّ عبر GPO/CSP.
الاستعداد الواقعيّ لجانب التطوير والنشر كالتالي.
- صمِّموا تسجيل قاعدة المثبِّت بحيث «لا يفشل» (التسجيل نفسه ينجح فلا يُرصَد بخطأ. أدرجوا تأكيد التوصيل بعد النشر في الإجراء)
- في الخطوة 4 من الفصل 6 (
-TracePolicyStore) أكّدوا ما إذا كان مصدر القاعدة النافذة محلّيّاً أم GPO5 - إن تبيّن أنّ القواعد المحلّيّة لا تعمل، انتقلوا إلى طلب توزيع القاعدة لقسم تقنيّة المعلومات
سلّموا الطلب بالمعلومات التالية كمجموعة. قاعدة الجدار لا تُصنع إلا باكتمال الاتّجاه والبرنامج والمنفذ والنطاق، فيصير هذا كما هو «مواصفات شبكة تطبيق الأعمال».
| البند | مثال ملء |
|---|---|
| اسم القاعدة (المعرِّف) | MyCompany-OrderServer-In |
| الاتّجاه | وارد |
| مسار البرنامج | C:\Program Files\MyCompany\OrderServer\OrderServer.exe |
| البروتوكول / المنفذ | TCP 50051 |
| نطاق IP البعيد | 172.16.10.0/24 (قطعة وضع عميل إدخال الطلبات) |
| الملفّ الشخصيّ | Domain فقط |
| الغرض / المسوّغ | قبول اتّصال من عميل إدخال الطلبات (اسم نظام الأعمال) |
| شرط الإلغاء | الحذف عند إزالة هذا النظام |
من منظور تقنيّة المعلومات، يختلف كمّ العمل تماماً بين طلب فيه هذا الجدول وطلب بلاه. بالمقابل، «افتحوا» برقم منفذ فقط يميل إلى الإذن الزائد كما في الفصل 4. لاحظوا أنّ متطلّبات الاتّصال حول مشاركة الملفّات والمصادقة في بيئة نطاق تتغيّر أيضاً بتضييق منفصل عن الجدار (مثل إلزام التوقيع). فانظروا معاً «توقيع SMB وربط قناة LDAP».
8. الخلاصة
- افتراضيّ جدار حماية Windows حظر الوارد والسماح بالصادر. القاعدة الواردة لازمة لتطبيقات نوع الخادم التي تستمع فقط، والاتّصال كعميل لا يحتاج قاعدة كقاعدة.
- تُطبَّق القواعد لكلّ ملفّ شخصيّ (Domain/Private/Public). المتّهم الأوّل لـ«القاعدة موجودة لكن لا تمرّ» عدم تطابق الملفّ الشخصيّ.
- حوار «تنبيه مهمّ» يصنع قاعدة حظر بالإلغاء أو بعمليّة مستخدم بلا امتيازات، ولا يُعاد عرضه بعد ذلك. لا تتركوا تشغيل الإنتاج لهذا الحوار.
- سجِّلوا القواعد الواردة لتطبيق الأعمال من المثبِّت ── هذا المبدأ الوحيد. التسجيل بامتيازات مدير، وثبّتوا
-Nameبما فيه الحذف. - ابنوا القاعدة حول برنامج + بروتوكول + منفذ، وضيّقوا بالملفّ الشخصيّ وIP البعيد. إن تغيّر مسار الـ exe بالتحديث فلا تنسوا إعادة تسجيل القاعدة.
- العزل آليّ بالترتيب netstat → Test-NetConnection → تأكيد الملفّ الشخصيّ → Get-NetFirewallRule (ActiveStore) → pfirewall.log. التعطيل بإيقاف الخدمة غير مدعوم.
- تحت إدارة GPO/Intune قد يُعطَّل دمج القواعد المحلّيّة. عندئذٍ اطلبوا التوزيع من تقنيّة المعلومات مكتملين اسم القاعدة والاتّجاه والبرنامج والمنفذ وIP البعيد والملفّ الشخصيّ.
مقالات ذات صلة
- كيف تختار وسيلة الاتّصال بين عمليّات Windows ── جدول قرار للأنابيب المسمّاة / TCP / gRPC / الذاكرة المشتركة / COM
- كيف تختار نموذج توزيع تطبيق Windows - MSI و MSIX و ClickOnce و xcopy والـ custom updaters
- متى يصبح Windows admin privilege ضروريّاً - UAC والمناطق المحميّة وكيفيّة التمييز على مستوى التصميم
- عندما يُعامَل تطبيق Windows الذي طوّرته شركتك بوصفه فيروساً ── التعامل مع الكشف الخاطئ في Microsoft Defender والتعايش مع أثره على الأداء
- توقيع SMB وربط قناة LDAP ── إغلاق «النصف الآخر» من دفاعات NTLM عمليّاً
- كيفيّة إنشاء خدمات Windows وتشغيلها ── من التمييز عن جدولة المهام إلى تحويل BackgroundService إلى خدمة
مجالات الاستشارة ذات الصلة
تتعامل شركة كومورا سوفت ذ.م.م. مع تصميم مثبِّتات تطبيقات أعمال من نوع خادم (بما فيه تسجيل قواعد الجدار وحذفها)، والتحقيق في سبب «لا يمكن الاتّصال» في بيئة العميل، وترتيب متطلّبات الشبكة مع استشراف النشر تحت إدارة GPO. يصحّ البدء من عزل «يعمل على آلة التطوير ولا يعمل لدى العميل».
- تطوير تطبيقات ويندوز
- التحقيق في الأخطاء وتحليل السبب الجذري
- الاستشارات التقنيّة ومراجعة التصميم
- التواصل معنا
روابط مرجعيّة
-
Microsoft Learn, Windows Firewall overview. حول كون جدار حماية Windows جدار مضيف مفعَّل افتراضيّاً على كلّ الإصدارات، والسلوك الافتراضيّ «حظر الوارد ما لم يكن استجابة لطلب أو مطابقة قاعدة، والسماح بالصادر ما لم يطابق قاعدة»، والملفّات الشخصيّة الثلاثة (Domain=تطبيق تلقائيّ عند رصد متحكّم نطاق بلا ضبط يدويّ، Private=ضبط يدويّ من المدير، Public=افتراضيّ الشبكات غير المعرَّفة)، وتأكيد فئة الشبكة وتغييرها بـ Get-NetConnectionProfile / Set-NetConnectionProfile، وكون التعطيل بإيقاف خدمة الجدار (MpsSvc) غير مدعوم ويسبّب توقّف قائمة ابدأ وفشل تحديثات تطبيقات المتجر وغيرها، وأنّ التعطيل الصحيح إبقاء الخدمة شغّالة وتعطيل الملفّ الشخصيّ. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
Microsoft Learn, Windows Firewall rules. حول أولويّة القواعد (السماح الصريح يتقدّم على الحظر الافتراضيّ، والحظر الصريح يتقدّم على السماح، والقاعدة الأكثر تحديداً تتقدّم، ولا ترتيب مُوزون)، وعرض الحوار عند بدء استماع التطبيق إن لم توجد قاعدة، وإنشاء قاعدة حظر (عادة اثنتان لـ TCP/UDP) عندما يختار مستخدم مدير «لا» أو إلغاء، وإنشاء قاعدة حظر لأيّ خيار لدى مستخدم ليس مديراً محلّيّاً، وعدم إعادة عرض الحوار واستمرار حظر الاتّصال حتّى تُحذف القاعدة المُنشأة، وأنّ إضافة القاعدة من التطبيق أو المثبِّت نفسه أمر شائع، والتوصية بوضع القواعد قبل أوّل تشغيل وتعطيل إشعارات الوارد، وعدم جواز أحرف البدل في قواعد البرنامج (مثل C:*\teams.exe) والمسار الكامل فقط، وإمكان تعطيل دمج القواعد المحلّيّة (AllowLocalPolicyMerge) لكلّ ملفّ شخصيّ وإلزام التوزيع المركزيّ لقواعد التطبيقات التي تحتاج اتّصالاً وارداً عند التعطيل، والتوصية بجعل القواعد الواردة محدَّدة قدر الإمكان وتقييد العنوان البعيد بـ LocalSubnet للشبكات المنزليّة والصغيرة، وأنّ حظر الصادر الافتراضيّ خيار لبيئات عالية الأمن لكن لا يجوز تغيير افتراضيّ الوارد إلى السماح. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, New-NetFirewallRule (NetSecurity). حول إلزام -DisplayName عند إنشاء القاعدة، وكون -Name معرِّفاً فريداً والافتراضيّ قيمة عشوائيّة والإرشاد إلى استخدام -Name في السكربتات، ومواصفات المعاملات -Direction (Inbound/Outbound) و-Action (Allow/Block) و-Program (مسار كامل) و-Protocol (TCP/UDP/ICMPv4/ICMPv6/رقم) و-LocalPort و-RemoteAddress (IP / نطاق فرعيّ / مدى / كلمات مثل LocalSubnet) و-Service و-Profile (Any/Domain/Private/Public بعدّة قيم مفصولة بفاصلة بلا مسافات)، ومثال إنشاء قاعدة تجمع تعيين البرنامج والبروتوكول والمنفذ. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Test-NetConnection (NetTCPIP). حول كون Test-NetConnection أمراً يعرض معلومات تشخيص لـ ping واتّصال TCP والمسار، واختبار اتّصال TCP إلى المنفذ المحدَّد بـ -ComputerName و-Port، وعودة النتيجة كـ TcpTestSucceeded. ↩ ↩2
-
Microsoft Learn, Get-NetFirewallRule (NetSecurity). حول إمكان جلب قواعد كلّ مخازن السياسة المطبَّقة (مجموعة السياسات الناتجة بما فيها الآتية من GPO) بـ -PolicyStore ActiveStore، وكون شروط المنفذ والعنوان وغيرها في كائن المرشّح لا جسم القاعدة والاستعلام عبر Get-NetFirewallPortFilter / Get-NetFirewallApplicationFilter، وتأكيد مصدر القاعدة (PolicyStoreSource / PolicyStoreSourceType من Local/GroupPolicy) بـ -TracePolicyStore. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Configure Windows Firewall logging. حول كون المسار الافتراضيّ للسجلّ %windir%\system32\logfiles\firewall\pfirewall.log، والحجم الأقصى الافتراضيّ 4,096 كيلوبايت وحذف الأقدم عند بلوغ الحدّ، وعدم تسجيل السجلّ حتّى تفعيل «الحزم المُهمَلة» أو «الاتّصالات الناجحة»، والتفعيل بـ netsh advfirewall set allprofiles logging droppedconnections/allowedconnections enable، وإمكان عدم إنشاء ملفّ السجلّ إن لم يملك مجلّد السجلّ إذن FullControl للخدمة mpssvc ولزوم إنشاء المجلّد يدوياً ومنح ACL. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Manage Windows Firewall with the command line. حول تكوين السلوك الافتراضيّ والإشعار (-NotifyOnListen False) وإعداد السجلّ بـ Set-NetFirewallProfile، ومثال إنشاء قاعدة برنامج بـ New-NetFirewallRule ومثال الحذف بـ Remove-NetFirewallRule / netsh advfirewall firewall delete rule، ونمط كبح الخطأ بـ -ErrorAction SilentlyContinue عندما لا توجد القاعدة، ومثال استعلام عكس القاعدة بشرط المنفذ من Get-NetFirewallPortFilter، وكون تعطيل الملفّ الشخصيّ بـ Set-NetFirewallProfile -Enabled False وسيلة التعطيل الصحيحة. ↩ ↩2 ↩3
-
Microsoft Learn, Use netsh advfirewall firewall context to control Windows Firewall behavior (KB947709). حول أمثلة إضافة قواعد برنامج ومنفذ بصيغة netsh advfirewall firewall add rule (name= / dir=in / action=allow / program= / enable=yes / remoteip= / profile= / protocol= / localport=)، ومثال الحذف بـ delete rule، ولزوم التنفيذ من موجِّه أوامر مرتفع عندما ينفّذ عضو مجموعة المديرين في بيئة UAC مفعَّلة، وإعداد السجلّ بـ netsh advfirewall set currentprofile logging. ↩ ↩2 ↩3
-
Microsoft Learn, Audit Filtering Platform Packet Drop. حول تسجيل الحدث 5152 (و5153) عندما تهمل منصّة تصفية Windows حزمة بعد تفعيل فئة التدقيق الفرعيّة «إهمال حزم منصّة التصفية»، وكون كمّ أحداث هذه الفئة الفرعيّة هائلاً جدّاً والتوصية لمراقبة الاتّصالات المحظورة باستخدام الحدث 5157 الذي يُسجَّل لكلّ اتّصال لا لكلّ حزمة. ↩
مقالات ذات صلة
أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.
دليل مخزن شهادات Windows العمليّ ── المستخدم أم الحاسوب، أين تضعونها
أين تُوضَع شهادة العميل، مخزن المستخدم أم مخزن الحاسوب؟ دليل عمليّ يُسقط حوادث الشهادات الكلاسيكيّة منهجيّاً: الفرق بين certmgr.msc وcert...
دليل Windows LAPS العمليّ ── التخلّي عن كلمة مرور مدير محلّيّ مشتركة لكلّ الحواسيب
كلمة مرور مدير محلّيّ مشتركة لكلّ الحواسيب مرتع لهجوم Pass-the-Hash ينتقل فيه اختراق جهاز واحد إلى الجميع. يشرح المقال التدوير التلقائيّ ...
نسخة الظلّ لوحدة التخزين (VSS): الآليّة والممارسة ── لماذا تستطيع برمجيّات النسخ الاحتياطيّ نسخ ملفّات قيد الاستخدام
الملفّات قيد الاستخدام لا تُنسَخ عادة بسبب انتهاك المشاركة، فكيف تتمكّن برمجيّات النسخ الاحتياطيّ من ذلك؟ يشرح المقال أدوار الطالب والكات...
استخدام WMI/CIM من C# وPowerShell ── دليل عمليّ لاسترجاع معلومات العتاد ومراقبة العمليّات والاستعلام عن بُعد
الإجابة الكلاسيكيّة للحصول على الرقم التسلسليّ للحاسوب، ومراقبة المساحة الحرّة على القرص، وكشف بدء عمليّة هي WMI/CIM. يشرح المقال أوامر C...
دليل عمليّ لنهج المجموعة (GPO) ── كيف يعمل، وتأكيد التطبيق، والاختيار بين GPO وIntune
هل تعمل في بيئة AD دون أن تعرف حقّاً ماذا يعني «موزَّع عبر GPO»؟ يشرح المقال عمليّاً كيف يعمل نهج المجموعة وترتيب تطبيق LSDOU، وتأكيد الا...
أين يتصل هذا الموضوع
ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.
تطوير تطبيقات ويندوز
ندعم تطوير برامج ويندوز للأعمال، وتكامل الأجهزة، وأدوات التواصل.
الأسئلة الشائعة
أسئلة شائعة حول موضوع هذه المقالة.
- هل يحتاج تطبيق يتّصل بالخادم كعميل فقط قاعدة جدار حماية أصلاً؟
- كقاعدة، لا. افتراضيّ جدار حماية Windows «حظر الوارد، السماح بالصادر»، فتطبيق عميل يبادر بالاتّصال إلى الخارج يتواصل جيّداً بالافتراضيّات. القاعدة الواردة لازمة فقط للطرف الذي يفتح منفذاً وينتظر الاتّصالات — أي تطبيقات من نوع خادم. غير أنّ ثمّة استثناءين. في البيئات عالية الأمن قد يُغيَّر افتراضيّ الصادر إلى الحظر أيضاً، فتلزمكم عندئذٍ طلب قاعدة صادرة أيضاً. وحتّى تطبيق «عميل» يحتاج قاعدة واردة لأيّ جزء منه مصمَّم ليستمع على منفذ لتلقّي إشعارات النتيجة.
- ألا يكفي الضغط على «السماح بالوصول» في حوار «تنبيه أمن Windows» والانتهاء؟
- ذلك يمرّركم في اللحظة، لكن لا يمكن ترك تشغيل الإنتاج له. إن ألغى مستخدم بامتيازات مدير هذا الحوار، تُنشَأ قاعدة حظر. والأسوأ، إن لم يكن للمستخدم امتيازات مدير، تُنشَأ قاعدة حظر أيّاً كان الزرّ المضغوط. متى أُنشئت قاعدة، لا يظهر الحوار ثانية ما لم تُحذف تلك القاعدة، ويواصل الاتّصال الفشل. في تطبيقات الأعمال حيث يشغّل الجهاز في الميدان مستخدم نهائيّ عاديّ، من السهل جدّاً الوصول إلى حالة «ألغى أحدهم مرّة، وصار لا يتّصل أبداً». توصي Microsoft نفسها بوضع القاعدة قبل أوّل تشغيل للتطبيق، تجنّباً لهذا بالضبط.
- أيُبنى القاعدة الواردة حول المنفذ أم حول البرنامج؟
- النهج الأساسيّ الجمع بينهما لا استخدام أحدهما وحده. قواعد البرنامج تثبّت الهدف بالمسار الكامل للـ exe، لكن إن غيّر تحديث ذلك المسار تفقد القاعدة هدفها (أحرف البدل غير مدعومة). قواعد المنفذ تجعل الطلب إلى تقنيّة المعلومات واضحاً، لكنّها تمرّر أيضاً أيّ عمليّة أخرى تصادف أن تستمع على المنفذ نفسه. لتطبيق أعمال إنتاجيّ، نمط الحدّ الأدنى من الامتياز بناء القاعدة حول برنامج + بروتوكول + منفذ، وتقييد الملفّ الشخصيّ بـ Domain/Private، وتقييد عنوان IP البعيد بنطاق العميل الفرعيّ. استخدموا قاعدة برنامج فقط عندما يكون المنفذ ديناميكيّاً.
- القاعدة التي سجّلها مثبِّتي لا تبدو نافذة على حاسوب العميل. لماذا؟
- الأرجح أنّ جدار حماية العميل يُدار مركزيّاً عبر GPO أو Intune، وأنّ «دمج القواعد المحلّيّة» (AllowLocalPolicyMerge) عُطِّل. عندما يُعطَّل ذلك الإعداد، قاعدة أُنشئت محلّيّاً توجد في الملفّ الشخصيّ لكن لا تُطبَّق — لا يمكن توزيع القواعد إلا مركزيّاً عبر GPO/CSP. افحصوا المجموعة الكاملة للقواعد النشطة بـ Get-NetFirewallRule -PolicyStore ActiveStore، واطلبوا من قسم تقنيّة المعلومات توزيع القاعدة. تمرّ الطلبات دفعة واحدة إن سلّمتم اسم القاعدة والاتّجاه ومسار البرنامج والبروتوكول والمنفذ ونطاق IP البعيد والملفّ الشخصيّ معاً.
- هل يجوز تعطيل الجدار مؤقّتاً لأغراض العزل؟
- تجنّبوا تماماً تعطيله بإيقاف الخدمة (MpsSvc). تلك العمليّة غير مدعومة من Microsoft وتسبّب مشاكل على مستوى نظام التشغيل مثل توقّف قائمة ابدأ أو فشل تحديثات تطبيقات المتجر. إن احتجتم حقّاً إلى التعطيل للعزل، فالمنهج الصحيح إبقاء الخدمة شغّالة وتعطيل الملفّ الشخصيّ بـ Set-NetFirewallProfile -Enabled False. ومع ذلك قصّروا هذا على دقائق قليلة لتأكيد ما إذا كان الجدار السبب، وأعيدوه فوراً بعد الجواب. تركه معطَّلاً يقايض دفاع الحاسوب كلّه بمشكلة كانت قاعدة واحدة مضافة ستحلّها.
الملف الشخصي للمؤلف
صفحة الملف الشخصي لمؤلف المقالة.
غو كومورا
مؤسّس شركة كومورا سوفت ذ.م.م.
يركّز على تطوير برامج ويندوز، والاستشارات التقنية، والتحقيق في الأخطاء، ويتميّز في المشاريع التي تبقى فيها الأصول القديمة ناشطة، وفي تشخيص الأعطال التي يصعب تحديد سببها.