এই আর্টিকেলে বিল্ট-ইন Windows Defender Firewall with Advanced Security-এর সেটিংস এবং রুল ম্যানেজ করার বেসিকস PowerShell দিয়ে দেওয়া হয়েছে। আমরা দেখব কীভাবে আলাদা নেটওয়ার্ক প্রোফাইলের জন্য ফায়ারওয়াল এনেবল/ডিজেবল করা যায়, ফায়ারওয়াল রুল তৈরি বা রিমুভ করা যায়, এবং এক্টিভ ফায়ারওয়াল রুলের সুবিধাজনক টেবিল পাওয়ার জন্য একটি ছোট PS স্ক্রিপ্ট লেখা।
আপনি Windows Firewall সেটিংস গ্রাফিক্যাল কনসোল থেকে ম্যানেজ করতে পারেন: Control Panel → System and Security → Windows Defender Firewall। যাইহোক, Windows 8.1 (Windows Server 2012 R2) থেকে আপনি বিল্ট-ইন NetSecurity PowerShell মডিউল ব্যবহার করে ফায়ারওয়াল ম্যানেজ করতে পারেন।
পূর্বে Windows Firewall রুল এবং সেটিংস ম্যানেজ করার জন্য নিচের কমান্ড ব্যবহার হতো: netsh advfirewall firewall
Windows 10-এ NetSecurity মডিউলে ৮৫টি কমান্ড উপলব্ধ। পুরো তালিকা দেখতে:
Get-Command -Module NetSecurity

PowerShell দিয়ে Windows Firewall নেটওয়ার্ক প্রোফাইল ম্যানেজ করা
Windows Firewall-এ তিনটি টাইপের নেটওয়ার্ক প্রোফাইল রয়েছে:
- Domain — Active Directory ডোমেনের কম্পিউটারগুলোর জন্য প্রয়োগ হয়
- Private — হোম বা কর্পোরেট নেটওয়ার্ক
- Public — পাবলিক নেটওয়ার্ক

Network Location Awareness (NLA) তার ডেটাবেসে নেটওয়ার্ক টাইপের তথ্য রাখে। আপনি আপনার নেটওয়ার্ক প্রোফাইল (লোকেশন) পরিবর্তন করতে পারেন যদি সেটি ভুলভাবে ডিটেক্ট হয়।
প্রতিটি নেটওয়ার্ক প্রোফাইল (লোকেশন) ফায়ারওয়াল রুলের সেট ভিন্ন হতে পারে। ডিফল্টভাবে কম্পিউটারের সব নেটওয়ার্ক ইন্টারফেস ফায়ারওয়াল দ্বারা প্রটেক্টেড থাকে, এবং তিনটি টাইপের প্রোফাইল সেগুলোর ওপর প্রয়োগ হয়।
সব তিনটি নেটওয়ার্ক প্রোফাইল: Domain, Public এবং Private এনেবল করতে এই কমান্ড ব্যবহার করুন:
Set-NetFirewallProfile -All -Enabled True
বা All-র বদলে নির্দিষ্ট প্রোফাইল সেট করুন:
Set-NetFirewallProfile -Profile Public -Enabled True
সব তিনটি নেটওয়ার্ক লোকেশনের জন্য ফায়ারওয়াল ডিজেবল করতে কমান্ড:
Set-NetFirewallProfile -All -Enabled False
Set-NetFirewallProfile কমান্ডলেট ব্যবহার করে আপনি প্রোফাইল অপশন পরিবর্তন করতে পারেন (ডিফল্ট অ্যাকশন, লগিং, লগ ফাইলের পাথ এবং সাইজ, নোটিফিকেশন সেটিংস, ইত্যাদি)।
আপনি জানতে পারেন আধুনিক OS ভার্সনে Windows Firewall সব প্রোফাইলের জন্য এনেবল থাকে। সব আউটবাউন্ড কানেকশন অ্যালাউড এবং ইনবাউন্ড ব্লকড (অ্যালাউড কেস বাদে) প্রোফাইল সেটিংসে।
চলুন Public প্রোফাইলের ডিফল্ট অ্যাকশন পরিবর্তন করি সব ইনবাউন্ড কানেকশন ব্লক করতে।
Set-NetFirewallProfile –Name Public –DefaultInboundAction Block
বর্তমান প্রোফাইল সেটিংস নিচের মত দেখাতে পারেন:
Get-NetFirewallProfile -Name Public

যদি আপনি GPO ব্যবহার করে Windows Firewall সেটিংস ম্যানেজ করেন, তবে ফলাফলস্বরূপ বর্তমান প্রোফাইল সেটিংস এভাবে দেখাতে পারেন:
Get-NetFirewallProfile -policystore activestore
নিশ্চিত হন যে সব ফায়ারওয়াল সেটিংস কম্পিউটারের সব নেটওয়ার্ক ইন্টারফেসে প্রয়োগ হয়েছে।
Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases
যদি সব ইন্টারফেস প্রটেক্টেড থাকে, কমান্ডটি রিটার্ন করবে:
DisabledInterfaceAliases : {NotConfigured}

আপনি নির্দিষ্ট ইন্টারফেস প্রোফাইল ডিজেবল করতে পারেন (ইন্টারফেস নামের তালিকা পেতে Get-NetIPInterface ব্যবহার করুন):
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"
আপনি দেখতে পাচ্ছেন, Public প্রোফাইল আর Ethernet0-এ প্রয়োগ হচ্ছে না:
DisabledInterfaceAliases : {Ethernet0}

আপনি প্রোফাইল লেভেলে নেটওয়ার্ক কানেকশন লগিং অপশন সেট করতে পারেন। ডিফল্টভাবে Windows Firewall লগ %systemroot%\system32\LogFiles\Firewall-এ সেভ হয়, এবং ফাইল সাইজ 4MB। আপনি সব কানেকশন লগিং এনেবল করে Максимаম ফাইল সাইজ পরিবর্তন করতে পারেন:
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘%systemroot%\system32\LogFiles\Firewall\pfirewall.log’
PowerShell দিয়ে Windows Firewall Rules তৈরি, এডিট বা রিমুভ করা
ফায়ারওয়াল রুল ম্যানেজ করার জন্য ৯টি কমান্ডলেট রয়েছে:
- New-NetFirewallRule
- Copy-NetFirewallRule
- Disable-NetFirewallRule
- Enable-NetFirewallRule
- Get-NetFirewallRule
- Remove-NetFirewallRule
- Rename-NetFirewallRule
- Set-NetFirewallRule
- Show-NetFirewallRule
Windows Firewall-এ পোর্ট খোলার কিছু সিম্পল উদাহরণ দেখা যাক।
উদাহরণস্বরূপ, আপনি Domain এবং Private প্রোফাইলের জন্য ইনবাউন্ড TCP কানেকশন পোর্ট ৮০ এবং ৪৪৩-এ অ্যালাউ করতে চান, তবে এই কমান্ড ব্যবহার করুন:
New-NetFirewallRule -DisplayName 'HTTP-Inbound' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('80', '443')

আপনি একটি অ্যাপের জন্য নেটওয়ার্ক এক্সেস অ্যালাউ বা ব্লক করতে পারেন। উদাহরণস্বরূপ, Firefox-এ আউটবাউন্ড কানেকশন ব্লক করতে চান:
New-NetFirewallRule -Program “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” -Action Block -Profile Domain, Private -DisplayName “Block Firefox browser” -Description “Block Firefox browser” -Direction Outbound
শুধু একটি IP অ্যাড্রেস থেকে ইনবাউন্ড RDP কানেকশন পোর্ট ৩৩৮৯-এ অ্যালাউ করতে:
New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
নির্দিষ্ট IP সাবনেট বা IP রেঞ্জ থেকে ping (ICMP) অ্যালাউ করতে এই কমান্ডগুলো ব্যবহার করুন:
$ips = @("192.168.2.15-192.168.2.40", "192.168.100.15-192.168.100.200", ”10.1.0.0/16”)
New-NetFirewallRule -DisplayName "Allow inbound ICMPv4" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow
পূর্বের আর্টিকেলে আমরা দেখিয়েছিলাম কীভাবে PowerShell দিয়ে সাইট এক্সেস ব্লক করা যায় IP অ্যাড্রেস এবং ডোমেন/সাইট DNS নাম দিয়ে।
বিদ্যমান ফায়ারওয়াল রুল এডিট করতে Set-NetFirewallRule কমান্ডলেট ব্যবহার করা হয়। উদাহরণস্বরূপ, আগে তৈরি করা রুলের জন্য নির্দিষ্ট IP অ্যাড্রেস থেকে ইনবাউন্ড কানেকশন অ্যালাউ করতে:
Get-NetFirewallrule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10
যদি আপনি একটি ফায়ারওয়াল রুলে একাধিক IP অ্যাড্রেস যোগ করতে চান, এই স্ক্রিপ্ট ব্যবহার করুন:
$ips = @("192.168.2.15", "192.168.2.17",”192.168.100.15”)
Get-NetFirewallrule -DisplayName 'WEB-Inbound'|Set-NetFirewallRule -RemoteAddress $ips
ফায়ারওয়াল রুলে সব IP অ্যাড্রেস দেখতে:
Get-NetFirewallrule -DisplayName 'Allow inbound ICMPv4'|Get-NetFirewallAddressFilter

Disable-NetFirewallRule এবং Enable-NetFirewallRule কমান্ডলেট ব্যবহার করে ফায়ারওয়াল রুল এনেবল/ডিজেবল করা যায়।
Disable-NetFirewallRule –DisplayName 'WEB-Inbound'
ICMP (ping) অ্যালাউ করতে এই কমান্ড চালান:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
ফায়ারওয়াল রুল রিমুভ করতে Remove-NetFirewallRule কমান্ডলেট ব্যবহার করা হয়।
PowerShell দিয়ে Windows Firewall Rules লিস্ট করা
আপনার ইনবাউন্ড ট্রাফিকের জন্য এক্টিভ ফায়ারওয়াল রুলের তালিকা এভাবে দেখাতে পারেন:
Get-NetFirewallRule | where {($_.enabled -eq $True) -and ($_.Direction -eq "Inbound")} |ft
যদি আপনি আউটবাউন্ড ব্লকিং রুলের তালিকা দেখতে চান:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound
রুলে অ্যাপের নাম দেখাতে:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | %{$_.Name; $_ | Get-NetFirewallApplicationFilter}

আপনি দেখতে পাচ্ছেন, Get-NetFirewallRule কমান্ডলেট আপনার ফায়ারওয়াল রুলের জন্য নেটওয়ার্ক পোর্ট এবং IP অ্যাড্রেস দেখায় না। অ্যালাউড ইনবাউন্ড (আউটবাউন্ড) কানেকশনের বিস্তারিত তথ্য আরও সুবিধাজনকভাবে পোর্ট নম্বর সহ দেখাতে নিচের PowerShell স্ক্রিপ্ট ব্যবহার করুন:
Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -Property Name,
@{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},
@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled,Profile,Direction,Action

PowerShell কমান্ড প্রম্পট থেকে Windows Firewall রুল ম্যানেজ করার 충분한 সুযোগ দেয়। আপনি নির্দিষ্ট ইভেন্ট হলে পোর্ট খোলা/বন্ধ করার জন্য PowerShell স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে চালাতে পারেন। পরবর্তী আর্টিকেলে আমরা একটি সিম্পল PowerShell- এবং Windows Firewall-ভিত্তিক সমাধান দেখব যা আপনার Windows VDS সার্ভারে RDP ওভার রিমোটে ব্রুট-ফোর্স পাসওয়ার্ড চেষ্টা করার IP অ্যাড্রেস স্বয়ংক্রিয়ভাবে ব্লক করবে।