Azure Network Security Group (NSG) VM-এ অ্যাটাচ করার সম্পূর্ণ গাইড
Azure-এ **Network Security Group (NSG)** হলো একটি Layer 3/4 ফায়ারওয়াল যা Azure রিসোর্স (VM, Subnet, NIC) ইনবাউন্ড/আউটবাউন্ড ট্রাফিক ফিল্টার করে। NSG-এ.Security Rules থাকে যা Priority, Source/Destination, Port, Protocol, Action (Allow/Deny) ডিফাইন করে।
NSG অ্যাটাচ করার দুটি লেভেল
| লেভেল | স্কোপ | ব্যবহার کیস |
|---|---|---|
| Subnet Level | সাবনেটের সব রিসোর্স (VM, App Service Environment, AKS Node Pool) | সেন্ট্রালাইজড ম্যানেজমেন্ট, কনসিস্টেন্ট পলিসি |
| NIC Level | নির্দিষ্ট VM-এর নেটওয়ার্ক ইন্টারফেস (NIC) | VM-স্পেসিফিক রুল, এক্সসেপশন হ্যান্ডলিং |
নোট: একই NSG একাধিক Subnet/NIC-এ অ্যাসোসিয়েট করা যায়। Subnet + NIC দুটোতে NSG থাকলে **Inbound: NIC NSG → Subnet NSG**, **Outbound: Subnet NSG → NIC NSG** ক্রমে প্রসেস হয়।
পদ্ধতি ১: Azure Portal দিয়ে NSG তৈরি ও VM-এ অ্যাটাচ
- Azure Portal → Create a resource → **Network Security Group** সার্চ → Create।
- Basics ট্যাব:
- Subscription, Resource Group সিলেক্ট করুন।
- Name:
nsg-vm-web-prod(নেমিং কনভেনশন ফলো করুন)। - Region: VM-এর রিজনেই রাখুন।
- Review + Create → Create।
- NSG রিসোর্স খুলুন → **Settings** → **Subnets** → + Associate → Virtual Network → Subnet সিলেক্ট → OK। (Subnet Label)
- বা **Network Interfaces** → + Associate → VM-এর NIC সিলেক্ট → OK। (NIC Label)
পদ্ধতি ২: Azure CLI (Automation/DevOps Friendly)
# ১. NSG তৈরি
az network nsg create \
--resource-group rg-prod-network \
--name nsg-vm-web-prod \
--location eastus
# ২. Inbound Rule যোগ করুন (HTTP/HTTPS/SSH/RDP উদাহরণ)
az network nsg rule create \
--resource-group rg-prod-network \
--nsg-name nsg-vm-web-prod \
--name Allow-HTTP \
--priority 100 \
--source-address-prefixes Internet \
--source-port-ranges '*' \
--destination-address-prefixes '*' \
--destination-port-ranges 80 \
--protocol Tcp \
--access Allow \
--description "Allow HTTP from Internet"
az network nsg rule create \
--resource-group rg-prod-network \
--nsg-name nsg-vm-web-prod \
--name Allow-HTTPS \
--priority 110 \
--destination-port-ranges 443 \
--protocol Tcp --access Allow
az network nsg rule create \
--resource-group rg-prod-network \
--nsg-name nsg-vm-web-prod \
--name Allow-SSH \
--priority 120 \
--source-address-prefixes 203.0.113.0/24 \ # Admin IP Range
--destination-port-ranges 22 \
--protocol Tcp --access Allow
# ৩. Subnet-এ অ্যাটাচ
az network vnet subnet update \
--resource-group rg-prod-network \
--vnet-name vnet-prod-eastus \
--name subnet-web \
--network-security-group nsg-vm-web-prod
# ৪. বা NIC-এ অ্যাটাচ
az network nic update \
--resource-group rg-prod-network \
--name nic-vm-web-01 \
--network-security-group nsg-vm-web-prod
পদ্ধতি ৩: PowerShell (Az Module)
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName "rg-prod-network" `
-Name "nsg-vm-web-prod" `
-Location "East US"
# Rule Add
$rule = New-AzNetworkSecurityRuleConfig `
-Name "Allow-HTTP" `
-Description "Allow HTTP from Internet" `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 100 `
-SourceAddressPrefix Internet `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80
$nsg | Add-AzNetworkSecurityRuleConfig -NetworkSecurityRule $rule
$nsg | Set-AzNetworkSecurityGroup
# Subnet Association
$vnet = Get-AzVirtualNetwork -ResourceGroupName "rg-prod-network" -Name "vnet-prod-eastus"
$subnet = $vnet.Subnets | Where-Object {$_.Name -eq "subnet-web"}
$subnet.NetworkSecurityGroup = $nsg
$vnet | Set-AzVirtualNetwork
পদ্ধতি ৪: ARM Template / Bicep / Terraform (IaC)
# Bicep Example
resource nsg 'Microsoft.Network/networkSecurityGroups@2023-05-01' = {
name: 'nsg-vm-web-prod'
location: resourceGroup().location
properties: {
securityRules: [
{
name: 'Allow-HTTP'
properties: {
protocol: 'Tcp'
sourcePortRange: '*'
destinationPortRange: '80'
sourceAddressPrefix: 'Internet'
destinationAddressPrefix: '*'
access: 'Allow'
priority: 100
direction: 'Inbound'
}
}
]
}
}
# Subnet Association (Existing Subnet Update)
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-05-01' existing = {
name: 'vnet-prod-eastus/subnet-web'
}
subnet.properties.networkSecurityGroup = nsg
NSG রুল ডিজাইন বেস্ট প্র্যাকটিস
- Priority: ১০০-৪০৯৬ (কম নম্বর = উচ্চ প্রায়োরিটি)। ডিফল্ট রুল ৬৫০০০+।
- Default Deny: ডিফল্ট Inbound Deny All (Priority 65500) থাকে—শুধু Allow রুল যোগ করুন।
- Least Privilege: Source IP Range ছোট রাখুন (Admin IP, Load Balancer IP, Partner CIDR)।
- Service Tags ব্যবহার করুন:
Internet,VirtualNetwork,AzureLoadBalancer,AzureCloud,Storage.Region—IP রেঞ্জ ম্যানুয়াল ম্যানেজ করতে হয় না। - Application Security Groups (ASG): VM ট্যাগ দিয়ে রুল লিখুন (যেমন: ASG "web-tier" → Port 80 Allow)。——
- Logging Enable করুন: NSG Flow Logs → Log Analytics / Storage Account → Traffic Analytics।
VM সিকিউর করার জন্য NSG বাইরেও কী কী লাগবে (Defense in Depth)
- Azure Firewall / Firewall Manager: Layer 7, Threat Intelligence, Centralized Egress Control।
- Microsoft Defender for Cloud: Secure Score, Adaptive Network Hardening (NSG রুল রিকমেন্ডেশন), Just-in-Time VM Access।
- Bastion: পাবলিক IP ছাড়া RDP/SSH (NSG-এ 3389/22 ব্লক থাকবে)।
- Private Endpoint / Service Endpoint: PaaS সার্ভিস (Storage, SQL, Key Vault) প্রাইভেটলি এক্সেস।
- Update Management / Patch Management: Azure Update Manager, Automanage।
NSG ফ্লো লগস ও ট্রাফিক অ্যানালিটিক্স ইনাবল করা
- NSG রিসোর্স → Monitoring → Flow logs → Create।
- Storage Account / Log Analytics Workspace সিলেক্ট করুন।
- Traffic Analytics On করুন (Geolocation, Protocol, Top Talkers, Malicious IP Detection)。——
- Retention: কমপক্ষে ৯০ দিন (Compliance এর জন্য)。——
সারমর্ম: NSG হলো Azure-এ VM নেটওয়ার্ক সিকিউরিটির ফান্ডামেন্টাল বিল্ডিং ব্লক। **Subnet Label-এ NSG অ্যাটাচ করুন** সেন্ট্রালাইজড ম্যানেজমেন্টের জন্য, NIC Label-এ এক্সসেপশন হ্যান্ডলিংয়ের জন্য। IaC (Bicep/Terraform) দিয়ে ডিপ্লয় করুন, Flow Logs + Traffic Analytics অন রাখুন, এবং Defender for Cloud-এর Adaptive Network Hardening রিকমেন্ডেশন ফলো করুন।