Azure Portal을 사용하여 Network Security Groups 배포
Azure의 NSG(네트워크 보안 그룹)를 사용하면 Azure 가상 네트워크에서 Azure 리소스와 주고받는 네트워크 트래픽을 필터링할 수 있습니다. 네트워크 보안 그룹에는 여러 종류의 Azure 리소스에서 오는 인바운드 트래픽 또는 이러한 리소스로 나가는 아웃바운드 네트워크 트래픽을 허용하거나 거부하는 보안 규칙이 포함됩니다. 규칙마다 원본 및 대상, 포트, 프로토콜을 지정할 수 있습니다.
NSG 보안 규칙
네트워크 보안 그룹은 Azure 구독 제한 내에서 필요한 만큼 0개 또는 많은 규칙을 포함합니다. 각 규칙에는 다음과 같은 속성이 있습니다.
- Name(이름): 네트워크 보안 그룹 내에서 고유한 이름이어야 합니다.
- 우선 순위. 100에서 4096 사이의 숫자가 될 수 있습니다. 낮은 번호의 우선 순위가 더 높기 때문에 규칙은 낮은 번호가 높은 번호보다 먼저 처리되는 우선 순위 순서로 처리됩니다. 트래픽이 규칙과 일치하면 처리가 중지됩니다. A
- 원본 또는 대상. 모든 IP 주소, 개별 IP 주소, CIDR(클래스 없는 도메인 간 라우팅) 블록(예: 10.0.0.0/24), 서비스 태그 또는 애플리케이션 보안 그룹으로 설정할 수 있습니다.
- 프로토콜. TCP, UDP, ICMP, ESP, AH 또는 Any가 될 수 있습니다.
- 방향. 인바운드 또는 아웃바운드 트래픽에 적용하도록 구성할 수 있습니다.
- 포트 범위. 개별 포트나 포트 범위로 지정할 수 있습니다. 예를 들어 80 또는 10000-10005과 같이 지정할 수 있습니다. 범위를 지정하면 더 적은 보안 규칙을 만들어도 됩니다.
- Action. 허용하거나 거부하도록 구성할 수 있습니다.
방화벽은 원본, 원본 포트, 대상, 대상 포트, 프로토콜을 사용하여 규칙을 평가합니다.
기본 보안 규칙
Azure는 다음과 같은 기본 규칙을 만듭니다.
방향 | 이름 | 우선 순위 | 원본 | 원본 포트 | 대상 | 대상 포트 | 프로토콜 | Access |
---|---|---|---|---|---|---|---|---|
인바운드 | AllowVNetInBound |
65000 | VirtualNetwork |
0-65535 | VirtualNetwork |
0-65535 | 모두 | 허용 |
인바운드 | AllowAzureLoadBalancerInBound |
65001 | AzureLoadBalancer |
0-65535 | 0.0.0.0/0 | 0-65535 | 모두 | 허용 |
인바운드 | DenyAllInbound |
65500 | 0.0.0.0/0 | 0-65535 | 0.0.0.0/0 | 0-65535 | 모두 | 거부 |
아웃바운드 | AllowVnetOutBound |
65000 | VirtualNetwork |
0-65535 | VirtualNetwork |
0-65535 | 모두 | 허용 |
아웃바운드 | AllowInternetOutBound |
65001 | 0.0.0.0/0 | 0-65535 | Internet |
0-65535 | 모두 | 허용 |
아웃바운드 | DenyAllOutBound |
65500 | 0.0.0.0/0 | 0-65535 | 0.0.0.0/0 | 0-65535 | 모두 | 거부 |
이 다이어그램과 요점은 네트워크 보안 그룹을 배포하는 다양한 시나리오를 보여 줍니다.
인바운드 트래픽의 경우 Azure는 서브넷에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 먼저 처리한 후, 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 처리합니다.
- VM1:
Subnet1
이 NSG1과 연결되므로 보안 규칙이 처리되고 VM1은Subnet1
에 있습니다. 포트 80 인바운드를 허용하는 규칙을 만들지 않은 이상,DenyAllInbound
기본 보안 규칙은 트래픽을 거부하며, NSG2가 네트워크 인터페이스에 연결되어 있으므로 NSG2에 의해 평가되지 않습니다. NSG1에 포트 80을 허용하는 보안 규칙이 있는 경우 NSG2는 트래픽을 처리합니다. 가상 머신에 포트 80을 허용하려면 NSG1 및 NSG2 모두 인터넷에서 포트 80을 허용하는 규칙이 있어야 합니다. - VM2: VM2도
Subnet1
에 있기 때문에 NSG1의 규칙이 처리됩니다. VM2은 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 없으므로 NSG1을 통해 허용된 트래픽 또는 NSG1에 의해 거부된 트래픽을 모두 수신합니다. 네트워크 보안 그룹이 서브넷에 연결된 경우 동일한 서브넷의 모든 리소스에 대한 트래픽이 허용되거나 거부됩니다. - VM3:
Subnet2
에 연결된 네트워크 보안 그룹이 없으므로, 해당 서브넷으로 가는 트래픽이 허용되고 NSG2에 의해 처리됩니다. 왜냐하면 NSG2는 VM3에 연결된 네트워크 인터페이스에 연결되기 때문입니다. - VM4: 네트워크 보안 그룹이
Subnet3
또는 가상 머신의 네트워크 인터페이스에 연결되지 않으므로 트래픽이 VM4로 허용됩니다. 서브넷 및 네트워크 인터페이스에 네트워크 보안 그룹이 연결되지 않으면 서브넷 및 네트워크 인터페이스를 통과하는 모든 네트워크 트래픽이 허용됩니다.
아웃바운드 트래픽의 경우 Azure는 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 먼저 처리한 후, 서브넷에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 처리합니다.
- VM1: NSG2의 보안 규칙이 처리됩니다. 인터넷으로 나가는 포트 80 아웃바운드를 거부하는 보안 규칙을 만들지 않은 이상, AllowInternetOutbound 기본 보안 규칙은 NSG1 및 NSG2 모두에서 트래픽을 허용합니다. NSG2에 포트 80을 거부하는 보안 규칙이 있는 경우, 트래픽이 거부되고 NSG1에서 해당 규칙이 평가되지 않습니다. 두 네트워크 보안 그룹 중 어느 하나 또는 둘 모두의 가상 머신에서 포트 80을 거부하려면 규칙이 네트워크 보안 그룹에 인터넷으로 나가는 포트 80을 거부하는 있어야 합니다.
- VM2: VM2에 연결된 네트워크 인터페이스에 네트워크 보안 그룹이 연결되지 않았기 때문에, 모든 트래픽이 네트워크 인터페이스를 통해 서브넷으로 전송됩니다. NSG1의 규칙이 처리됩니다.
- VM3: NSG2에 포트 80을 거부하는 보안 규칙이 있으면 트래픽이 거부됩니다. NSG2에 포트 80을 허용하는 보안 규칙이 있는 경우, 네트워크 보안 그룹이
Subnet2
에 연결되지 않으므로 포트 80에서는 인터넷으로 나가는 아웃바운드가 허용됩니다. - VM4: 네트워크 보안 그룹이 가상 머신에 연결된 네트워크 인터페이스 또는
Subnet3
에 연결되지 않으므로 VM4에서 나오는 모든 네트워크 트래픽이 허용됩니다.
애플리케이션 보안 그룹
ASG(애플리케이션 보안 그룹)를 사용하면 네트워크 보안을 애플리케이션 구조의 자연 확장으로 구성하여 가상 머신을 그룹화하고 해당 그룹에 따라 네트워크 보안 정책을 정의할 수 있습니다. 명시적 IP 주소를 수동으로 유지 관리하지 않고 대규모 보안 정책을 재사용할 수 있습니다. 플랫폼은 명시적 IP 주소 및 여러 규칙 집합의 복잡성을 처리하여 비즈니스 논리에 집중할 수 있도록 합니다.
필요한 보안 규칙의 수를 최소화하려면 서비스 태그나 애플리케이션 보안 그룹을 사용하여 규칙을 만듭니다. 개별 IP 주소나 IP 주소 범위를 사용하는 규칙은 방지합니다.
Azure Portal에서 NSG를 사용하여 네트워크 트래픽 필터링
네트워크 보안 그룹을 통해 가상 네트워크 서브넷의 인바운드 및 아웃바운드 네트워크 트래픽을 필터링할 수 있습니다. 네트워크 보안 그룹에는 IP 주소, 포트, 프로토콜에 따라 네트워크 트래픽을 필터링하는 보안 규칙이 포함됩니다. 보안 규칙은 서브넷에 배포된 리소스에 적용됩니다.
NSG로 네트워크 트래픽을 필터링하는 주요 단계는 다음과 같습니다.
- 리소스 그룹을 만듭니다.
- 가상 네트워크를 만듭니다.
- 애플리케이션 보안 그룹을 만듭니다.
- 네트워크 보안 그룹을 만듭니다.
- 서브넷에 네트워크 보안 그룹을 연결합니다.
- 보안 규칙 만들기
- NIC를 ASG에 연결합니다.
- 트래픽 필터를 테스트합니다.
이 모든 작업에 대한 자세한 단계를 보려면 자습서: Azure Portal을 사용하여 네트워크 보안 그룹을 통해 네트워크 트래픽 필터링을 참조하세요.