
विंडोज फ़ायरवॉल के लिए स्वचालित रूप से नियम बनाने हेतु PowerShell स्क्रिप्ट्स

पावरशेल के साथ विंडोज फ़ायरवॉल के लिए एक पूरी तरह से स्वचालित समाधान
Windows Firewall Ruleset विंडोज फ़ायरवॉल को स्वचालित रूप से कॉन्फ़िगर करता है और लक्ष्य प्रणाली और सिस्टम पर स्थापित सॉफ्टवेयर के लिए विशिष्ट प्रतिबंधात्मक फ़ायरवॉल नियम लागू करता है।
इस परियोजना की स्थिति अभी भी अल्फा है, अधिक जानने के लिए ऊपर "status" बैज पर क्लिक करें।
इस परियोजना में दो प्रमुख भाग हैं, फ़ायरवॉल नियम और फ़ायरवॉल ढाँचा इस प्रकार हैं:
विंडोज फ़ायरवॉल नियम निम्नलिखित के अनुसार अलग-अलग पावरशेल स्क्रिप्ट में क्रमबद्ध किए गए हैं:
जैसे उदाहरण के लिए:
फ़ायरवॉल ढाँचे में कई पावरशेल मॉड्यूल, स्क्रिप्ट और दस्तावेज़ शामिल हैं जो लक्ष्य प्रणाली के लिए विशिष्ट फ़ायरवॉल बनाने और तैनात करने के लिए प्रासंगिक पर्यावरण जानकारी एकत्र करने के लिए उपयोग किए जाते हैं, जैसे:
इस प्रकार यह रिपॉजिटरी आपके फ़ायरवॉल को इच्छानुसार अधिक नियम और कार्यक्षमताएँ शामिल करने के लिए आसानी से विस्तारित करने का एक अच्छा प्रारंभिक बिंदु है।
वर्तमान में लगभग 800+ फ़ायरवॉल नियम, 10+ मॉड्यूल (100+ फ़ंक्शन के साथ), कई स्क्रिप्ट और उपयोगी दस्तावेज़ का एक अच्छा हिस्सा है।
आप इंटरैक्टिव रूप से चुन सकते हैं कि आप कौन से नियम चाहते हैं, और केवल उन्हें तैनात कर सकते हैं या आप प्रक्रिया को स्वचालित कर सकते हैं और अपने फ़ायरवॉल पर सभी आवश्यक नियम और सेटिंग्स तैनात कर सकते हैं।
विस्तृत फ़ायरवॉल कॉन्फ़िगरेशन एक समय लेने वाली प्रक्रिया है, इसमें बहुत सारे समस्या निवारण की आवश्यकता होती है, परिवर्तनों के लिए परीक्षण और सुरक्षा ऑडिटिंग की आवश्यकता होती है और यदि आपको सैकड़ों या हजारों दूरस्थ कंप्यूटरों पर फ़ायरवॉल तैनात करने की आवश्यकता है तो यह और भी बदतर हो जाता है, उदाहरण के लिए सभी कंप्यूटरों पर समान सॉफ्टवेयर या प्रतिबंध आवश्यकताएँ नहीं हो सकती हैं।
कंट्रोल पैनल में फ़ायरवॉल नियमों के विपरीत, ये नियम GPO फ़ायरवॉल (स्थानीय समूह नीति) में लोड किए जाते हैं, जिसका अर्थ है कि सिस्टम सेटिंग्स में बदलाव या यादृच्छिक प्रोग्राम जो अपनी स्थापना प्रक्रिया के भाग के रूप में नियम स्थापित करते हैं, फ़ायरवॉल पर तब तक कोई प्रभाव नहीं डालेंगे जब तक कि आप स्पष्ट रूप से अपवाद न बनाएँ।
प्रोग्राम और सेवाओं पर आधारित नियमों में उनकी निर्दिष्ट निष्पादन योग्य फ़ाइल की डिजिटल हस्ताक्षर के लिए जाँच की जाएगी और यदि डिजिटल हस्ताक्षर गायब है तो VirusTotal पर स्कैन किया जाएगा, सुरक्षा कारणों से यदि यह सत्यापन विफल होता है तो नियम नहीं बनाया जाता या फ़ायरवॉल में लोड नहीं किया जाता। (बलपूर्वक किया जा सकता है)
डिफ़ॉल्ट आउटबाउंड "ब्लॉक" है जब तक कि नेटवर्क ट्रैफ़िक की अनुमति देने वाला कोई नियम न हो, अधिकांश फ़ायरवॉल में यह तब तक संभव नहीं है जब तक कि आप हर संभावित प्रोग्राम या सेवा के लिए नियम नहीं रखते हैं, नियमों के इस संग्रह के कारण, डिफ़ॉल्ट आउटबाउंड को ब्लॉक पर सेट करने के लिए बहुत कम या कोई अतिरिक्त कार्य की आवश्यकता नहीं है।
सामान्य परिदृश्य के विपरीत, आप जान पाएंगे कि कौन से नियम अब प्रभावी नहीं हैं या अनावश्यक हैं, उदा. अनइंस्टॉल किया गया प्रोग्राम, एक लापता सिस्टम सेवा जो अब मौजूद नहीं है, विंडोज अपडेट के बाद नाम बदली गई निष्पादन योग्य फ़ाइल और इसी तरह के कारण।
पूर्वनिर्धारित विंडोज फ़ायरवॉल नियमों के विपरीत, ये नियम अधिक प्रतिबंधात्मक हैं, जैसे कि स्पष्ट उपयोगकर्ता खातों से बंधे हुए, नियम विशिष्ट पोर्ट, नेटवर्क इंटरफेस, विशिष्ट निष्पादन योग्य फ़ाइलों, सेवाओं आदि पर लागू होते हैं, यह सब लक्ष्य प्रणाली से स्वचालित रूप से सीखा जाता है।
नियमों और विशेषताओं जैसे पोर्ट, पते और समान को अपडेट करना, फ़िल्टर करना या खोजना बहुत आसान है क्योंकि ये नियम स्क्रिप्ट में हैं, आप अपने नियमों पर बल्क ऑपरेशन करने के लिए regex, multicursor या CTRL + F जैसे संपादक टूल का उपयोग कर सकते हैं, किसी भी फ़ायरवॉल UI में ऐसा करना उपयोगकर्ता इंटरफ़ेस सीमाओं के कारण संभव नहीं है।
कोड का एक अच्छा हिस्सा लक्ष्य प्रणाली और उपयोगकर्ताओं के लिए विशिष्ट फ़ायरवॉल बनाने और परिभाषित करने के लिए स्वचालित समाधान प्रदान करने के लिए समर्पित है, जो कुछ मैन्युअल रूप से करने की आवश्यकता को कम करता है जिससे आपका बहुमूल्य प्रशासन समय बचता है।
यह प्रोजेक्ट Windows Firewall Ruleset MIT लाइसेंस के तहत लाइसेंस प्राप्त है।
कुछ स्क्रिप्ट, फ़ाइलें या मॉड्यूल MIT लाइसेंस प्राप्त नहीं हैं या उनके अपने कॉपीराइट धारक हो सकते हैं, इस कारण से लाइसेंस और कॉपीराइट सूचनाएँ "प्रति फ़ाइल" बनाए रखी जाती हैं।
निम्नलिखित तालिका उन ऑपरेटिंग सिस्टमों को सूचीबद्ध करती है जिन पर Windows Firewall Ruleset का परीक्षण किया गया है
sigcheck64.exe (अत्यधिक अनुशंसित) sigcheck डाउनलोड करेंWindows 10.0 (Major 10, Minor 0) और उससे ऊपर के सभी सिस्टम Home संस्करणों को छोड़कर समर्थित हैं, लेकिन केवल ऊपर तालिका में सूचीबद्ध संस्करणों का परीक्षण किया गया है।
"संस्करण" कॉलम परीक्षण किए गए रिलीज़ को सूचीबद्ध करता है, हालाँकि केवल नवीनतम OS बिल्ड का परीक्षण जारी है।
अन्य अप्रयुक्त लेकिन समर्थित सिस्टम और सुविधाओं की सूची भविष्य में है।
PowerShell Core विंडोज में अंतर्निर्मित नहीं है, आपको इसे अलग से स्थापित करने या Windows PowerShell का उपयोग करने की आवश्यकता होगी जो ऑपरेटिंग सिस्टम का हिस्सा है।
यदि पावरशेल कोर के बजाय विंडोज पावरशेल (डेस्कटॉप संस्करण) का उपयोग कर रहे हैं तो .NET Framework न्यूनतम संस्करण 4.5 आवश्यक है।
विंडोज 10 न्यूनतम .NET 4.6 (जिसमें .NET 4.5 शामिल है) के साथ आता है, और विंडोज 11 न्यूनतम .NET 4.8 के साथ आता है।
sigcheck64.exe (या 32 बिट sigcheck.exe) एक डिजिटल हस्ताक्षर सत्यापन उपकरण है जिसे आप माइक्रोसॉफ्ट साइट से डाउनलोड कर सकते हैं और इसे C:\tools निर्देशिका या %PATH% पर्यावरण चर में रखा जाना चाहिए।
Windows Firewall Ruleset इसका उपयोग प्रत्येक निष्पादन योग्य फ़ाइल के लिए VirusTotal पर हैश-आधारित ऑनलाइन मैलवेयर विश्लेषण करने के लिए करेगा जो उस निष्पादन योग्य फ़ाइल के लिए फ़ायरवॉल नियम बनाने से पहले डिजिटल रूप से हस्ताक्षरित नहीं है।
यह केवल एक अनुशंसा है, यदि में नहीं है तो आपको इसे डाउनलोड करने की पेशकश की जाती है और यदि आप मना करते हैं तो कोई मैलवेयर विश्लेषण नहीं किया जाता है।
इस कार्यक्षमता का उपयोग करके आप , और से सहमत होते हैं।
इस समय यह फ़ायरवॉल सबसे हाल के विंडोज डेस्कटॉप/सर्वर के लिए परीक्षण और डिज़ाइन किया गया है और यह काम करने के लिए जाना जाता है, पुराने सिस्टम पर इसका उपयोग करने के लिए अतिरिक्त कार्य की आवश्यकता है।
परीक्षण 64 बिट विंडोज पर किया गया है, नियमों का एक छोटा सा हिस्सा 32 बिट सिस्टम के लिए काम नहीं करेगा और समायोजन की आवश्यकता है, 32 बिट सिस्टम के लिए पूर्ण कार्यक्षमता प्रगति पर है।
अभी के लिए आप 32 बिट सिस्टम पर नियम ठीक से लोड कर सकते हैं, कुछ नियमों के अपवाद के साथ जो संभवतः आपके कॉन्फ़िगरेशन के लिए प्रासंगिक नहीं हैं।
Windows 7 या Windows Server 2008 जैसे पुराने विंडोज सिस्टम पर इस फ़ायरवॉल का उपयोग कैसे करें, इसकी जानकारी के लिए लेगेसी सपोर्ट देखें।
फ़ायरवॉल तैनात करने से पहले पहली बार उपयोगकर्ता को निम्नलिखित संक्षिप्त चेतावनियों और सूचनाओं के बारे में पता होना चाहिए
आप अपने कुछ प्रोग्रामों के लिए इंटरनेट कनेक्टिविटी खो सकते हैं या दुर्लभ मामलों में पूरी तरह से इंटरनेट कनेक्टिविटी खो सकते हैं, यदि ऐसा होता है, तो आप या तो GPO में आउटबाउंड नेटवर्क को अस्थायी रूप से अनुमति दे सकते हैं या GPO फ़ायरवॉल को सिस्टम डिफ़ॉल्ट पर रीसेट करने, सभी नियमों को हटाने और WinRM और संशोधित सेवाओं को सिस्टम डिफ़ॉल्ट पर पुनर्स्थापित करने के लिए .\Scripts\Reset-Firewall.ps1 -Remoting -Service चला सकते हैं। (बाद में पावरशेल पुनरारंभ आवश्यक है)
docs निर्देशिका के अंदर ResetFirewall.md है, जो इसे मैन्युअल रूप से, हाथ से करने के तरीके पर एक मार्गदर्शिका है, यदि किसी कारण से आप स्क्रिप्ट चलाने में असमर्थ हैं, या स्क्रिप्ट आपकी समस्याओं का समाधान नहीं करती है।
आपके मौजूदा नियम तब तक हटाए नहीं जाएंगे जब तक कि आपके पास GPO में इस नियमसेट के समान समूह नामों वाले नियम न हों, हालाँकि यह Scripts\Reset-Firewall.ps1 पर लागू नहीं होता जो GPO नियमों को पूरी तरह से साफ कर देगा और केवल कंट्रोल पैनल वाले छोड़ देगा।
यदि आप 100% सुनिश्चित होना चाहते हैं तो कृपया निर्यात/आयात नियम में बताए अनुसार अपने GPO नियमों को निर्यात करें।
आपसे पूछा जाएगा कि कौन से नियम लोड करने हैं (यदि आप इंटरैक्टिव तैनाती चुनते हैं, बाद में देखें), इंटरनेट कनेक्टिविटी की समस्या को कम करने के लिए आपको कम से कम सभी सामान्य नेटवर्किंग और OS से संबंधित नियमों को तैनात करना चाहिए जिन्हें "CoreNetworking", "ICMP", "WindowsSystem", "WindowsServices", "Multicast" कहा जाता है, जिसमें वे सभी नियम शामिल हैं जिनके लिए आपके सिस्टम पर प्रोग्राम स्थापित हैं, IPv6 को भी नजरअंदाज न करें, विंडोज को IPv6 की आवश्यकता है भले ही आप IPv4 नेटवर्क पर हों।
जो आपको GPO में नहीं चाहिए उसे हटाना आसान होगा, बाद में कोड में खुदाई करके यह पता लगाने की तुलना में कि आपने क्या छोड़ा है।
डिफ़ॉल्ट कॉन्फ़िगरेशन वैश्विक फ़ायरवॉल व्यवहार सेट करेगा जो GPO में कॉन्फ़िगर करने योग्य नहीं है, जैसे Stateful FTP और PPTP या वैश्विक सेटिंग्स, यदि आपको विशिष्ट सेटअप की आवश्यकता है तो कृपया पर जाएँ और पर एक नज़र डालें।
ध्यान दें कि स्वचालित रूप से द्वारा कॉल किया जाता है।
खाली GPO में नियम लोड करना बहुत तेज़ होना चाहिए, हालाँकि पहले से नियमों वाले GPO में लोड करना काफी धीमा होगा (GPO में मौजूद नियमों की संख्या पर निर्भर करता है)
सभी त्रुटियाँ और चेतावनियाँ Logs निर्देशिका में सहेजी जाएँगी, यदि आप किसी समस्या को ठीक करना चाहते हैं तो आप बाद में इन लॉग्स की समीक्षा कर सकते हैं, अधिकांश चेतावनियाँ और यहाँ तक कि कुछ त्रुटियों को सुरक्षित रूप से अनदेखा किया जा सकता है, कुछ मामलों में आप यदि संभव हो तो त्रुटियों को हल करना चाह सकते हैं।
लोड करते समय "एक्सेस नामंज़ूर" का परिणाम देने वाले किसी भी नियम को विशिष्ट स्क्रिप्ट को फिर से निष्पादित करके पुनः लोड किया जाना चाहिए, ऐसा क्यों हो सकता है, इसके बारे में अधिक जानकारी के लिए FAQ देखें।
यदि रिपॉजिटरी को मैन्युअल रूप से डाउनलोड किया गया था, किसी अन्य कंप्यूटर या मीडिया से स्थानांतरित किया गया था तो आपको प्रत्येक निष्पादित स्क्रिप्ट के लिए YES/NO स्पैम प्रश्नों से बचने के लिए पहले रिपॉजिटरी में सभी फ़ाइलों को अनब्लॉक करना चाहिए, Scripts\Unblock-Project.ps1 चलाकर।
मास्टर स्क्रिप्ट Scripts\Deploy-Firewall.ps1 यदि आप भूल जाते हैं तो ऐसा करती है, लेकिन उस स्थिति में प्रारंभिक हाँ/नहीं प्रश्न अभी भी मौजूद रहेंगे।
यदि आपने (विंडोज डिफेंडर में) "रैनसमवेयर सुरक्षा" सक्षम की है, तो सुनिश्चित करें कि pwsh.exe (कोर संस्करण) या powershell.exe (डेस्कटॉप संस्करण) या दोनों को श्वेतसूची में डालें, अन्यथा मॉड्यूल की स्थापना के दौरान डेवलप मोड में त्रुटियाँ होती हैं।
यदि रिपॉजिटरी कोड रैनसमवेयर सुरक्षा के अंतर्गत एक फ़ोल्डर में डाउनलोड किया गया है तो कुछ भी अवरुद्ध हो सकता है।
"नियंत्रित फ़ोल्डर एक्सेस" परिवर्तनों को प्रभावी करने के लिए पावरशेल कंसोल को पुनरारंभ करने की आवश्यकता हो सकती है।
डिफ़ॉल्ट रूप से नियम Users समूह के लिए बनाए जाते हैं जबकि समूह के लिए केवल आवश्यक होने पर, अनुशंसा है कि सुरक्षा कारणों से आपके पास एक मानक उपयोगकर्ता खाता हो जिसका उपयोग आप रोजमर्रा की कंप्यूटिंग के लिए करते हैं।
यदि आप व्यवस्थापक हैं और अपने कंप्यूटर पर मानक खाता बनाने को तैयार नहीं हैं, तो आपको में चर को संशोधित करना होगा और निर्दिष्ट करना होगा।
यदि आपके पास SSH के माध्यम से क्लोन करने के लिए ssh कुंजी और अन्य सेटअप नहीं है, तो या तो HTTPS से क्लोन करें या रिलीज़ से रिलीज़ की गई zip फ़ाइल डाउनलोड करें, और फिर नवीनतम रिलीज़ के लिए "एसेट्स" के अंतर्गत zip फ़ाइल डाउनलोड करें।
यहाँ दिए गए चरण मानते हैं कि आपने "रिलीज़" के अंतर्गत "एसेट्स" अनुभाग से एक zip फ़ाइल डाउनलोड की है।
डाउनलोड किए गए आर्काइव को कहीं निकालें, ये चरण मानते हैं कि आपने zip फ़ाइल (रिपॉजिटरी रूट निर्देशिका) को सीधे C:\ रूट ड्राइव में निकाला है।
यदि आप विंडोज पावरशेल का उपयोग करना चाहते हैं, तो विंडोज पावरशेल कैसे खोलें देखें अन्यथा पावरशेल कोर और विंडोज पावरशेल दोनों के लिए प्रक्रिया समान है:
निकाले गए फ़ोल्डर को खोलें, खाली जगह पर राइट क्लिक करें और पावरशेल कोर को व्यवस्थापक के रूप में चलाने का विकल्प है (मानता है कि आपने पावरशेल कोर की स्थापना के दौरान संदर्भ मेनू सक्षम किया है) यदि नहीं तो इसे मैन्युअल रूप से खोलें।
यदि आपके पास पावरशेल संदर्भ मेनू नहीं है तो निम्नलिखित दो पंक्तियों को निष्पादित करके C:\ रूट ड्राइव पर जाएँ (प्रत्येक के लिए कमांड टाइप करें या कॉपी/पेस्ट करें और एंटर दबाएँ), यह वह जगह है जहाँ आपने अपनी डाउनलोड की गई zip फ़ाइल निकाली है
c:
cd \
डाउनलोड किए गए फ़ोल्डर में cd करें:
cd WindowsFirewallRuleset*
वर्तमान निष्पादन नीति देखने के लिए निम्नलिखित कमांड टाइप करें और एंटर दबाएँ:
(संकेत: आप टाइप करते समय ऑटो पूर्ण करने के लिए TAB कुंजी का उपयोग कर सकते हैं)
Get-ExecutionPolicy
निम्नलिखित अनुभाग फ़ायरवॉल को आसानी से प्रबंधित करने के कुछ सुझाव देता है
Deploy-Firewall.ps1 स्क्रिप्ट कई पैरामीटर का समर्थन करती है जो आपको तैनाती स्वचालन को अनुकूलित करने देती है
इस प्रकार:
- चरण दर चरण जाने और किस नियम सेट को लोड करना है इस पर पुष्टि के लिए संकेत दिए जाने
तथा चलते-फिरते मुद्दों को हल करने का प्रयास करने के लिए चलाएँ:```powershell
.\Scripts\Deploy-Firewall.ps1 -Interactive
Deploy-Firewall बिना किसी पैरामीटर के चलाएँ:```powershell
.\Scripts\Deploy-Firewall.ps1पैरामीटर्स का अर्थ जानने के लिए ताकि आप उन्हें स्वयं संयोजित कर सकें, `Deploy-Firewall.ps1` स्क्रिप्ट कमेंट देखें या निम्नलिखित कमांड चलाएँ:```powershell
Get-Help .\Scripts\Deploy-Firewall.ps1 -Detailed
GPO नियमों को प्रबंधित करने के दो तरीके हैं:
स्थानीय समूह नीति (Local Group Policy) का उपयोग करना, यह विधि आपको इस रिपॉजिटरी के नियमों के साथ क्या कर सकते हैं, इसमें सीमित स्वतंत्रता देती है, जैसे कि उन्हें अक्षम करना, कुछ विशेषताओं को बदलना या नए नियम जोड़ना।
अधिक जानकारी के लिए देखें: Manage GPO Firewall
PowerShell स्क्रिप्ट संपादित करना, यह विधि आपको पूर्ण नियंत्रण देती है, आप बिना किसी प्रतिबंध के मौजूदा नियमों को बदल या हटा सकते हैं या नए जोड़ सकते हैं।
आपकी योजना या सेटअप जो भी हो, आप निश्चित रूप से अतिरिक्त कार्य करना चाहेंगे जैसे कि नियमों को अनुकूलित करना, या इस फ़ायरवॉल द्वारा अभी तक कवर न किए गए प्रोग्रामों के लिए नए नियम जोड़ना।
नियम स्थानीय समूह नीति में लोड किए जाते हैं, यदि फ़ायरवॉल सेटअप के दौरान आपने वैयक्तिकृत फ़ायरवॉल प्रबंधन कंसोल का शॉर्टकट बनाना स्वीकार किया था तो आप शॉर्टकट चला सकते हैं, अन्यथा Manage GPO Firewall में बताए गए चरणों का पालन करें।
GPO के बारे में अधिक जानकारी के लिए देखें: Configure security policy settings
यदि आप केवल विशिष्ट नियमों को तैनात करना चाहते हैं तो ऐसा करने के दो तरीके हैं:
Scripts\Deploy-Firewall.ps1 निष्पादित करें और केवल उन नियमसेट के लिए Yes चुनें जो आप चाहते हैं, अन्यथा No चुनें और वर्तमान नियमसेट को छोड़ने के लिए एंटर दबाएं।
PowerShell कंसोल में cd का उपयोग करके उस निर्देशिका पर जाएँ जिसमें आप चाहते हैं कि नियमसेट स्क्रिप्ट है और व्यक्तिगत स्क्रिप्ट निष्पादित करें।
उदाहरण के लिए Adobe के नियम लोड करने के लिए cd .\Rules\IPv4\Outbound\Software और फिर .\Adobe.ps1 चलाएँ।
आप बाद में Scripts\Complete-Firewall.ps1 चलाना चाह सकते हैं ताकि डिफ़ॉल्ट फ़ायरवॉल व्यवहार लागू हो सके यदि यह पहले से सेट नहीं है, या आप GPO में मैन्युअल रूप से कर सकते हैं लेकिन सीमित शक्ति के साथ। "सीमित शक्ति" का अर्थ है कि Scripts\Complete-Firewall.ps1 कुछ फ़ायरवॉल पैरामीटर कॉन्फ़िगर करता है जिन्हें फ़ायरवॉल GUI में समायोजित नहीं किया जा सकता।
दोनों ही मामलों में, नियमसेट समूह, DisplayGroup से मेल खाने वाले सभी नियम GPO में लोड करने से पहले हटा दिए जाएंगे।
फिलहाल फ़ायरवॉल नियमों को हटाने के तीन विकल्प हैं:
सबसे आसान तरीका है GPO में उन सभी नियमों को चुनें जिन्हें आप हटाना चाहते हैं, राइट क्लिक करें और हटाएं।
फ़ाइल के अनुसार नियम हटाने के लिए इस उद्देश्य के लिए एक फ़ंक्शन है, जो स्थित है:
Modules\Ruleset.Firewall\Public\Remove-FirewallRule.ps1
हालांकि इसका उपयोग करने से पहले आपको फ़ायरवॉल को फ़ाइल में निर्यात करना होगा।
अपनी पुरानी फ़ायरवॉल स्थिति (जो कंट्रोल पैनल में है) पर वापस जाने के लिए, आपको GPO से सभी नियम हटाने होंगे, और नोड पर राइट क्लिक करने के बाद सभी गुणों को Not configured पर सेट करना होगा:
Windows Defender Firewall with Advanced Security - Local Group Policy Object
सभी नियमों को हटाना या पिछली स्थिति में वापस जाना Scripts\Reset-Firewall.ps1 से भी किया जा सकता है।
ध्यान दें कि यदि आपके पास निर्यात किए गए GPO नियम थे, तो आपको उन्हें पुनः आयात करने की भी आवश्यकता होगी।
यदि आप GPO से नियम निर्यात करना चाहते हैं तो दो विधियाँ उपलब्ध हैं:
स्थानीय समूह नीति में Export Policy... मेनू पर क्लिक करके निर्यात करें, नोड पर राइट क्लिक करने के बाद:
Windows Defender Firewall with Advanced Security - Local Group Policy Object
PowerShell का उपयोग करके निर्यात करने के लिए Scripts\Backup-Firewall.ps1 चलाएँ
यदि आप अपने निर्यात को अनुकूलित करना चाहते हैं तो Ruleset.Firewall मॉड्यूल में स्थित Export-RegistryRule फ़ंक्शन देखें, जो आपको अपने निर्यात को लगभग किसी भी तरह से अनुकूलित करने देता है।
यदि आप नियम आयात करना चाहते हैं, तो GPO का उपयोग करके आयात करना निर्यात के समान है, और PowerShell के साथ आयात करने के लिए बस Scripts\Restore-Firewall.ps1 चलाएँ जो आपकी पिछली निर्यात फ़ाइलों को उठाएगा।
अपने निर्यात/आयात को अनुकूलित करने के लिए कृपया Modules\Ruleset.Firewall\Public में देखें, जहाँ आपको निर्यात/आयात मॉड्यूल फ़ंक्शन का उपयोग करने का विवरण मिलेगा।
नोट: Export-FirewallRule फ़ंक्शन वास्तव में धीमा है, आपको इसके बजाय Export-RegistryRule फ़ंक्शन चलाने की सलाह दी जाती है जो जितना हो सके उतना तेज़ है।
यह अनुभाग और कार्यक्षमता वर्तमान में प्रायोगिक है और पूरी तरह से पूर्ण नहीं है, फिलहाल एकल रिमोट कंप्यूटर पर तैनाती समर्थित है।

रिमोट फ़ायरवॉल तैनाती में कम से कम दो कंप्यूटर शामिल होते हैं,
एक को प्रबंधन कंप्यूटर (क्लाइंट) कहा जाता है और अन्य सभी को प्रबंधित कंप्यूटर (सर्वर) कहा जाता है।
स्क्रिप्ट प्रबंधन कंप्यूटर पर प्रशासक द्वारा निष्पादित की जाती हैं, और फिर फ़ायरवॉल एक साथ कई सर्वर कंप्यूटरों पर तैनात या कॉन्फ़िगर किया जाता है।
कार्यान्वयन विवरण के लिए Modules\Ruleset.Remote मॉड्यूल देखें
नोट: रिमोटिंग कार्यक्षमता केवल रिमोट फ़ायरवॉल तैनाती के लिए विशिष्ट नहीं है, लोकलहोस्ट पर तैनाती के लिए डिज़ाइन के अनुसार कार्यशील WinRM और PS रिमोटिंग कॉन्फ़िगरेशन की भी आवश्यकता होती है।
रिमोट तैनाती करने से पहले, रिमोट कंप्यूटर (सर्वर) को कनेक्शन स्वीकार करने के लिए कॉन्फ़िगर करने की आवश्यकता है, SSL कनेक्शन स्थापित करने का उदाहरण इस प्रकार है:
निष्पादन की अनुमति देने के लिए, सर्वर कंप्यूटर पर WinRM सेवा और रिमोट रजिस्ट्री को कॉन्फ़िगर करें, निम्न चलाकर:
नोट: यदि PowerShell कोर का उपयोग कर रहे हैं तो नीचे दिए गए Enable-WinRMServer से -Protocol HTTPS हटा दें, इससे 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 की आवश्यकता है।
यदि सर्वर या प्रबंधन कंप्यूटर वर्कस्टेशन है (जैसे कि विंडोज सर्वर या डोमेन का हिस्सा नहीं), तो इसका नेटवर्क प्रोफ़ाइल निजी प्रोफ़ाइल पर सेट होना चाहिए।
दूरस्थ तैनाती को निम्नलिखित स्थानों पर बड़ी विस्तार से अनुकूलित किया जा सकता है:
Modules\Ruleset.Remote\Scripts\WinRMSettings.ps1Modules\Ruleset.Remote\Scripts\*Firewall.psscModules\Ruleset.Remote\Public\Register-SslCertificate.ps1Modules\Ruleset.Remote\Scripts\SessionSettings.ps1अतिरिक्त जानकारी और समस्या निवारण युक्तियों के लिए दूरस्थ सहायता भी देखें
समर्थन, मुद्दा रिपोर्ट, सुझाव या इस रिपॉजिटरी के अनुकूलन और इस फ़ायरवॉल को समय-समय पर अपडेट करने के तरीकों के लिए कृपया SUPPORT.md देखें
निम्नलिखित सुविधाएँ वांछित हैं और भविष्य में किसी बिंदु पर उपलब्ध हो सकती हैं:
दूरस्थ फ़ायरवॉल प्रशासन
विंडोज सर्वर संस्करणों और समर्पित गेटवे सिस्टम के लिए व्यापक फ़ायरवॉल नियम सेट।
सक्रिय फ़ायरवॉल फ़िल्टरिंग नीति और फ़ायरवॉल सेटिंग्स की अखंडता को मान्य करने के लिए मांग पर या निर्धारित रजिस्ट्री स्कैन
निम्नलिखित अभी तक परीक्षण न किए गए विंडोज 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 |
PATHsigcheck64.exeआप अपडेट की जांच करने, शाखाओं के बीच आसानी से स्विच करने या कोड योगदान देने के लिए git रखना चाह सकते हैं।
VS Code कोड नेविगेट करने और अपनी आवश्यकताओं या योगदान के लिए स्क्रिप्ट संपादित करने के लिए पसंदीदा और अनुशंसित संपादक है।
यदि आप VSCode प्राप्त करते हैं, तो आपको कोड नेविगेशन और पावरशेल भाषा सुविधाओं के लिए पावरशेल एक्सटेंशन की भी आवश्यकता होगी।
VSCode के साथ कोड नेविगेट और संपादित करने के लिए PSScriptAnalyzer अत्यधिक अनुशंसित है, अन्यथा विभिन्न रिपॉजिटरी सेटिंग्स के कारण संपादन अनुभव अजीब व्यवहार कर सकता है।
कोई हार्डवेयर आवश्यकताएँ नहीं हैं, लेकिन यदि आप कोड लिखने और डीबग करने की योजना बनाते हैं तो परियोजना पर आराम से काम करने के लिए न्यूनतम 8GB मेमोरी और SSD ड्राइव की अनुशंसा है, अन्यथा केवल अपने व्यक्तिगत फ़ायरवॉल पर नियम तैनात करने के लिए इससे कम भी ठीक काम करेगा।
IPSecScripts\Complete-Firewall.ps1Set-NetFirewallSettingScripts\Complete-Firewall.ps1Scripts\Deploy-Firewall.ps1कुछ स्क्रिप्ट के लिए आवश्यक है कि आप (नेटवर्क एडॉप्टर) नेटवर्क से जुड़े हों, उदाहरण के लिए IPv4 ब्रॉडकास्ट पता निर्धारित करने के लिए। (अन्यथा त्रुटियाँ उत्पन्न हो सकती हैं)
सिस्टम पर सब कुछ अद्यतित होना चाहिए क्योंकि अन्यथा कुछ नियम छोड़े जा सकते हैं या गलत हो सकते हैं, इसमें विंडोज अपडेट, माइक्रोसॉफ्ट स्टोर ऐप्स और अन्य सभी सॉफ्टवेयर शामिल हैं।
AdministratorsConfig\ProjectSettings.ps1DefaultGroupAdministratorsसुरक्षा कारणों से व्यवस्थापक खाते का उपयोग क्यों अनुशंसित नहीं है, इसकी अधिक जानकारी के लिए SecurityAndPrivacy.md देखें।
फ़ायरवॉल तैनात करने के लिए उपयोग किए जाने वाले आपके प्रशासनिक खाते में पासवर्ड सेट होना चाहिए।
सॉफ्टवेयर या विंडोज अपडेट निष्पादन योग्य फ़ाइलों या उनके स्थानों का नाम बदल सकते हैं, साथ ही व्यवस्थापक द्वारा उपयोगकर्ता खातों का नाम बदला जा सकता है, इसलिए समय-समय पर आवश्यकतानुसार विशिष्ट नियमों को पुनः लोड करना महत्वपूर्ण है ताकि किसी भी समय होने वाले सिस्टम परिवर्तनों के लिए फ़ायरवॉल को अपडेट किया जा सके। इस व्यवहार को सॉफ्टवेयर प्रतिगमन कहा जाता है।
फ़ायरवॉल तैनात करने से पहले लक्ष्य कंप्यूटर पर सिस्टम और उपयोगकर्ता प्रोग्रामों को अपडेट करने की अनुशंसा की जाती है, जिसमें विंडोज स्टोर ऐप्स शामिल हैं, खासकर यदि सिस्टम ताज़ा स्थापित किया गया है क्योंकि बाद में अपडेट करने के लिए कुछ नियमों को पुनः लोड करने की आवश्यकता हो सकती है।
उपरोक्त कमांड के आउटपुट को याद रखें, ध्यान दें कि पावरशेल कोर डिफ़ॉल्ट रूप से RemoteSigned है जबकि विंडोज पावरशेल गैर-सर्वर संस्करणों पर Restricted डिफ़ॉल्ट है।
प्रोजेक्ट फ़ाइलों को अनब्लॉक करने में सक्षम होने के लिए निष्पादन नीति को अनरेस्ट्रिक्टेड पर सेट करें, (ध्यान दें कि RemoteSigned केवल तभी काम करेगा जब स्क्रिप्ट अनब्लॉक हो जाएँ)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
आपको निष्पादन नीति परिवर्तन स्वीकार करने के लिए संकेत दिया जा सकता है, यदि ऐसा है तो Y टाइप करें और स्वीकार करने के लिए एंटर दबाएँ।
अधिक जानकारी के लिए निष्पादन नीतियों के बारे में देखें।
इस बिंदु पर आपको पहले Scripts\Unblock-Project.ps1 नामक स्क्रिप्ट निष्पादित करके सभी रिपॉजिटरी फ़ाइलों को "अनब्लॉक" करना चाहिए, वैसे, रिपॉजिटरी फ़ाइलों को विंडोज द्वारा इंटरनेट से डाउनलोड किए गए अविश्वसनीय स्क्रिप्ट कोड को चलाने से रोकने के लिए ब्लॉक किया गया था:
.\Scripts\Unblock-Project.ps1
यदि पूछा जाए, तो सुनिश्चित करें कि आपका उत्तर R है जो [R] एक बार चलाएँ है, प्रोजेक्ट को अनब्लॉक करने के लिए जितनी बार आवश्यक हो उतनी बार। (लगभग 8 बार तक)
एक बार रिपॉजिटरी फ़ाइलें अनब्लॉक हो जाने पर निष्पादन नीति को RemoteSigned में बदलें:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
आपको फिर से निष्पादन नीति परिवर्तन स्वीकार करने के लिए संकेत दिया जा सकता है, Y टाइप करें और स्वीकार करने के लिए एंटर दबाएँ।
आपके वेब ब्राउज़र, गेम्स आदि जैसे प्रोग्रामों के नियम स्थापना चर पर निर्भर करते हैं।
अधिकांश पथ स्वचालित रूप से खोजे जाते हैं और चर पारदर्शी रूप से अपडेट किए जाते हैं, अन्यथा आपको समस्या को ठीक करने के तरीके पर चेतावनी और विवरण मिलता है।
यदि आवश्यक हो, तो आप इन स्थापना चरों को Rules निर्देशिका के अंदर अलग-अलग स्क्रिप्ट में पा सकते हैं।
अगले चरण में मास्टर स्क्रिप्ट चलाने से पहले सभी MMC प्रबंधन कंसोल जैसे gpedit.msc या secpol.msc को बंद करने की अनुशंसा की जाती है।
पावरशेल कंसोल पर वापस जाएँ और नीचे दिए गए दो Deploy-Firewall कमांड में से एक चलाएँ:
यथासंभव कम संकेतों के साथ स्वचालित रूप से फ़ायरवॉल तैनात करने के लिए चलाएँ:
.\Scripts\Deploy-Firewall.ps1 -Force
अन्यथा इंटरैक्टिव रूप से पूछे जाने पर कि कौन से नियम लोड करने हैं, चलाएँ:
.\Scripts\Deploy-Firewall.ps1
```एंटर दबाएँ और आपसे पूछा जाएगा कि आप किस प्रकार के नियम सेट चाहते हैं।\
यदि आपको यह तय करने में सहायता चाहिए कि कोई नियम सेट चलाना है या नहीं, तो `?` टाइप करें जब चलाने के लिए संकेत दिया जाए
और अधिक जानकारी के लिए एंटर दबाएँ।\
यदि किसी कारणवश आप तैनाती को बीच में रोकना और रद्द करना चाहते हैं (उदाहरण के लिए कोई नया शुरू करने के लिए) तो
अपने कीबोर्ड पर `CTRL + C` दबाएँ जब PowerShell फोकस में हो और PowerShell कंसोल को पुनरारंभ करें।
संकेत आउटपुट का पालन करें, (उदाहरण के लिए डिफ़ॉल्ट कार्रवाई स्वीकार करने के लिए एंटर दबाएँ), इसमें आपका लगभग 15 मिनट का ध्यान लगेगा।
नोट: यदि प्रशासक खाता कंप्यूटर में लॉग इन करने के लिए Microsoft खाते का उपयोग कर रहा है तो आपसे क्रेडेंशियल मांगे जाएंगे, जो Microsoft ईमेल और पासवर्ड होना चाहिए, चाहे आप Windows hello का उपयोग कर रहे हों या नहीं, PIN निर्दिष्ट करना काम नहीं करेगा और Windows hello की अन्य प्रमाणीकरण विधियाँ समर्थित नहीं हैं।
यदि अमान्य क्रेडेंशियल प्रदान किए जाते हैं तो आपको Access is denied त्रुटि मिलेगी।
यदि ऐसा होता है तो आपको PowerShell कंसोल को पुनरारंभ करके पुनः प्रयास करना होगा।
इसकी आवश्यकता क्यों है, इसके बारे में अधिक जानकारी के लिए देखें FAQ
यदि आपको त्रुटियाँ आती हैं, तो आप या तो त्रुटियों को अनदेखा कर सकते हैं या उस स्क्रिप्ट को अपडेट कर सकते हैं जिसने त्रुटि उत्पन्न की, फिर उस विशिष्ट स्क्रिप्ट को बाद में पुनः चलाएँ।
जब काम हो जाए तो आप स्थानीय समूह नीति में कुछ नियमों को समायोजित करना चाह सकते हैं,
सभी नियम डिफ़ॉल्ट रूप से सक्षम नहीं होते हैं या आप डिफ़ॉल्ट अनुमति/अवरोध व्यवहार को टॉगल करना चाह सकते हैं।
नियम आपके सिस्टम पर स्थापित सभी प्रोग्रामों को कवर नहीं कर सकते हैं, ऐसी स्थिति में लापता नियम बनाने की आवश्यकता होगी।
अब आगे बढ़ें और अपने इंटरनेट कनेक्शन का परीक्षण करें (उदाहरण के लिए वेब ब्राउज़र या किसी अन्य प्रोग्राम के साथ), यदि इन नियमों को तैनात करने के बाद आप इंटरनेट से कनेक्ट नहीं हो पाते हैं तो आपके पास कई विकल्प हैं:
docs निर्देशिका में देखेंफ़ायरवॉल तैनात करने के लिए एक पूर्वापेक्षा के रूप में, कुछ सिस्टम सेवाएँ शुरू की गई हैं और स्वचालित प्रारंभ पर सेट की गई हैं,
Logs निर्देशिका के अंदर आपको Services_<DATE>.log मिलेगा जो इन सेवाओं को वांछित होने पर डिफ़ॉल्ट पर पुनर्स्थापित करने में मदद करेगा।
उदाहरण के लिए Windows Remote Management सेवा को नहीं चलना चाहिए यदि इसकी आवश्यकता नहीं है
(डिफ़ॉल्ट "मैनुअल" प्रारंभ है)