Network Security Group to filtr sieciowy (firewall) zawierający listę reguł bezpieczeństwa, który zezwala lub blokuje ruch do konkretnego zasobu sieciowego. NSG mogą być przypisane do podsieci i o takich NSG mówi się, że filtrują ruch północ/południe. Natomiast o NSG przypisanych do interfejsu sieciowego mówi się, że filtrują ruch wschód/zachód.
Reguły NSG są stosowane wg ich priorytetu. Wartości priorytetów zaczynają się od 100 a kończą na 4096. Czytane są i egzekwowane reguły od 100 wzwyż, czyli 101, 102 ….. 4096. 100 ma większy priorytet niż 101 czy 4096. Jeżeli np. będzie reguła o priorytecie 250, która pozwala na ruch TCP na porcie 80 oraz reguła o priorytecie 125, która zakazuje ruchu TCP na takim porcie to ruch TCP na porcie 80 będzie zakazany. 125 jest bliżej do 100 niż 250.
Reguły bezpieczeństwa są aplikowane do ruchu sieciowego wg następującego porządku:
Ruch przychodzący
- NSG zaaplikowane do podsieci – jeżeli NSG ma reguły, które zakazują ruchu pakiet jest odrzucany.
- NSG zaaplikowane do interfejsu sieciowego (NIC) – jeżeli NSG ma reguły, które zakazują ruchu pakiet jest odrzucany, nawet jeżeli NSG zaaplikowane do podsieci miało regułę, która dopuszczała ruch.
Ruch wychodzący
- NSG zaaplikowane do interfejsu sieciowego (NIC) – jeżeli NSG ma reguły, które zakazują ruchu pakiet jest odrzucany.
- NSG zaaplikowane do podsieci – jeżeli NSG ma reguły, które zakazują ruchu pakiet jest odrzucany, nawet jeżeli NSG zaaplikowane do interfejsu sieciowego miało regułę, która dopuszczała ruch.
Reguły domyślne
Wszystkie NSG miają przyporządkowane domyślne reguły, których nie można usunąć. Mają one jednak najniższy możliwy priorytet i mogą być napisane przez reguły o wyższym priorytecie.
- Sieć wirtualna – ruch pochodzący i kończący się w sieci wirtualnej jest dozwolony w dwóch (przychodzący i wychodzący) kierunkach.
- Internet – ruch wychodzący do Internetu jest dopuszczany, ruch przychodzący z Internetu jest blokowany.
- Load balancer – zezwala load balancerowi Azure na sprawdzanie “stanu zdrowia” twoich VM i instancji ról.
Reguły domyślne dla ruchu przychodzącego
Nazwa | Priorytet | IP źrodłowy | Port źródłowy | Port docelowy | Protokół | Dostęp |
AllowVNetInBound | 65000 | VirtualNetwork | * | VirtualNetwork | * | Allow |
AllowAzureLoadBalanceInBound | 65001 | AzureLoadBalancer | * | * | Allow | |
DenyAllInBound | 65500 | * | * | * | * | Deny |
Reguły domyślne dla ruchu wychodzącego
Nazwa | Priorytet | IP źrodłowy | Port źródłowy | Port docelowy | Protokół | Dostęp |
AllowVNetOutBound | 65000 | VirtualNetwork | * | VirtualNetwork | * | Allow |
AllowAzureLoadBalanceOutBound | 65001 | * | * | internet | * | Allow |
DenyAllOutBound | 65500 | * | * | * | * | Deny |
Czyli NSG bez przypisanych przez użytkownika reguł mają sześć reguł domyślnych.
NSG można utworzyć w portalu Azure klikając:
+ Create resource -> Networking -> Network security group
(reguły można dodawać w ustawieniach utworzonego NSG)
Lub przy pomocy PowerShella:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$rgName="RG01" $location='West Europe' $rule1 = New-AzureRmNetworkSecurityRuleConfig ` -Name PORT_HTTP_80 ` -Access Allow ` -Protocol Tcp ` -Direction Inbound ` -Priority 100 ` -SourceAddressPrefix * ` -SourcePortRange * ` -DestinationAddressPrefix 10.0.0.0/24 ` -DestinationPortRange 80 $nsg = New-AzureRmNetworkSecurityGroup ` -ResourceGroupName $rgName ` -Location $location ` -Name 'AppsNSG' ` -SecurityRules $rule1 |
Utworzona została reguła $rule1 dla NSG AppNSG, teraz trzeba zaaplikować je na konkretnej podsieci.
1 2 3 4 5 6 7 8 9 10 11 12 |
$vnet = Get-AzureRmVirtualNetwork ` -ResourceGroupName $rgName ` -Name MyNet01 Set-AzureRmVirtualNetworkSubnetConfig ` -VirtualNetwork $vnet ` -Name Apps ` -AddressPrefix 10.0.0.0/24 ` -NetworkSecurityGroup $nsg # Zapisanie konfiguracji w Azure Set-AzureRmVirtualNetwork -VirtualNetwork $vnet |
Więcej o NSG:
https://docs.microsoft.com/en-us/azure/virtual-network/security-overview