네트워크 보안 그룹을 사용하여 Azure Virtual Network의 Azure 리소스에서 들어오고 나가는 인바운드 및 아웃바운드 네트워크 트래픽을 필터링할 수 있습니다.
네트워크 보안 그룹에는 IP 주소, 포트, 프로토콜에 따라 네트워크 트래픽을 필터링하는 보안 규칙이 포함됩니다. 네트워크 보안 그룹이 서브넷과 연결되면 해당 서브넷에 배포된 리소스에 보안 규칙이 적용됩니다.
이 자습서에서는 다음 작업 방법을 알아봅니다.
- 네트워크의 보안 그룹 및 보안 규칙을 만듭니다.
- 애플리케이션의 보안 그룹 만들기
- 가상 네트워크 만들기 및 서브넷에 네트워크 보안 그룹 연결
- 가상 머신을 배포하고 해당 네트워크 인터페이스를 애플리케이션 보안 그룹에 연결합니다.
필수 구성 요소
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만들 수 있습니다.
다음 절차에 따라 가상 네트워크를 리소스 서브넷과 만듭니다.
포털에서 가상 네트워크를 검색하여 선택합니다.
가상 네트워크 페이지에서 + 만들기를 선택합니다.
가상 네트워크 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 프로젝트 세부 정보 구독 구독을 선택합니다. 리소스 그룹 새로 만들기를 선택합니다.
Test-rg를 이름에 입력 합니다.
확인 을 선택합니다.인스턴스 세부 정보 이름 vnet-1을 입력하세요. 지역 미국 동부 2를 선택하세요. 다음 을 선택하여 보안 탭으로 이동합니다.
다음 을 선택하여 IP 주소 탭으로 이동합니다.
주소 공간 입력란서브넷에서 기본 서브넷을 선택합니다.
서브넷 편집 에서 다음 정보를 입력하거나 선택합니다.
설정 값 서브넷 세부 정보 서브넷 템플릿 기본값 을그대로 둡니다. 이름 subnet-1을 입력합니다. 시작 주소 10.0.0.0(기본값)을 그대로 둡니다. 서브넷의 크기: /24 기본값인 /24(256개 주소)를 그대로 둡니다.
저장을 선택합니다.
검토 + 만들기를 화면 아래쪽에서 선택합니다. 유효성 검사를 통과하면 만들기를 선택합니다.
애플리케이션의 보안 그룹 만들기
ASG(애플리케이션 보안 그룹) 을 사용하면 웹 서버와 같은 유사한 기능을 갖는 서버를 함께 그룹화할 수 있습니다.
검색 상자 포털 상단에 애플리케이션 보안 그룹을 입력합니다. Select Application security groups in the search results.
만들기를 선택합니다.
애플리케이션 보안 그룹 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 프로젝트 세부 정보 구독 구독을 선택합니다. 리소스 그룹 test-rg을 선택합니다. 인스턴스 세부 정보 이름 asg-web을 입력합니다. 지역 미국 서부 2을 선택합니다. 검토 + 만들기를 선택합니다.
만들기를 선택합니다.
다음 값을 지정하여 이전 단계를 반복합니다.
설정 값 프로젝트 세부 정보 구독 구독을 선택합니다. 리소스 그룹 test-rg을 선택합니다. 인스턴스 세부 정보 이름 asg-mgmt를 입력합니다. 지역 미국 서부 2을 선택합니다. 검토 + 만들기를 선택합니다.
만들기를 선택합니다.
네트워크 보안 그룹 만들기
NSG(네트워크 보안 그룹)는 가상 네트워크의 네트워크 트래픽을 보호합니다.
포털 상단의 검색 상자에 네트워크 보안 그룹을 입력합니다. 검색 결과에서 네트워크 보안 그룹을 선택합니다.
참고
네트워크 보안 그룹 검색 결과에서 클래식 네트워크 보안 그룹이 표시될 수 있습니다. 네트워크 보안 그룹을 선택합니다.
만들기를 선택합니다.
네트워크 보안 그룹 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 프로젝트 세부 정보 구독 구독을 선택합니다. 리소스 그룹 test-rg을 선택합니다. 인스턴스 세부 정보 이름 nsg-1을 입력합니다. 위치 미국 서부 2을 선택합니다. 검토 + 만들기를 선택합니다.
만들기를 선택합니다.
네트워크 보안 그룹을 서브넷에 연결
이 섹션에서는 앞서 생성한 가상 네트워크의 서브넷에 네트워크 보안 그룹을 연결합니다.
포털 상단의 검색 상자에 네트워크 보안 그룹을 입력합니다. 검색 결과에서 네트워크 보안 그룹을 선택합니다.
nsg-1을 선택합니다.
nsg-1의 설정 섹션에서 서브넷을 선택합니다.
서브넷 페이지에서 + 연결을 선택합니다.
서브넷 연결에서 가상 네트워크에 vnet-1 (test-rg)을 선택합니다.
서브넷에 대해 subnet-1을 선택한 후, 확인을 클릭합니다.
보안 규칙 만들기
nsg-1의 설정 섹션에서 인바운드 보안 규칙을 선택합니다.
인바운드 보안 규칙 페이지에서 + 추가를 선택하십시오.
asg-web 애플리케이션 보안 그룹에 포트 80을 허용하는 보안 규칙을 만듭니다. 인바운드 보안 규칙 추가 페이지에서 다음 정보를 입력하거나 선택합니다.
설정 값 출처 모두인 상태를 기본으로 합니다. 원본 포트 범위 (*)의 기본값을 그대로 둡니다. 대상 애플리케이션 보안 그룹을 선택합니다. 대상 애플리케이션 보안 그룹 asg-web을 선택합니다. 서비스 기본값을 사용자 지정을 그대로 유지합니다. 대상 포트 범위 80을 입력합니다. 프로토콜 TCP을 선택합니다. 작업 허용(기본값)을 그대로 둡니다. 우선 순위 100(기본값)을 그대로 둡니다. 이름 allow-http-web을 입력합니다. 추가를 선택합니다.
이전 단계를 다음 정보를 사용하여 완료합니다.
설정 값 출처 모두인 상태를 기본으로 합니다. 원본 포트 범위 (*)의 기본값을 그대로 둡니다. 대상 애플리케이션 보안 그룹을 선택합니다. 대상 애플리케이션 보안 그룹 asg-mgmt를 선택합니다. 서비스 기본값을 사용자 지정을 그대로 유지합니다. 대상 포트 범위 8080을 입력합니다. 프로토콜 TCP을 선택합니다. 작업 허용(기본값)을 그대로 둡니다. 우선 순위 110(기본값)을 그대로 둡니다. 이름 allow-8080-mgmt를 입력합니다. 추가를 선택합니다.
가상 머신 만들기
가상 네트워크에 두 개의 VM(가상 머신)을 만듭니다.
포털에서 >가상 머신을 검색하여 선택합니다.
가상 머신에서 + 만들기, 가상 머신을 선택합니다.
가상 머신 만들기에서 기본 사항 탭에 다음 정보를 입력하거나 선택합니다.
설정 값 프로젝트 세부 정보 구독 구독을 선택합니다. 리소스 그룹 test-rg을 선택합니다. 인스턴스 세부 정보 가상 머신 이름 vm-web을 입력합니다. 지역 (미국) 미국 서부 2를 선택합니다. 가용성 옵션 기본값인 인프라 중복 필요 없음을 그대로 둡니다. 보안 유형 표준을 선택합니다. 이미지 Ubuntu Server 24.04 LTS - x64 Gen2를 선택합니다. Azure Spot 인스턴스 기본값인 체크 해제 상태로 둡니다. 크기 크기를 선택합니다. 관리자 계정 인증 유형 SSH 공개 키를 선택합니다. 사용자 이름 azureuser를 입력합니다. SSH 공개 키 원본 새 키 쌍 생성을 선택합니다. 키 쌍 이름 vm-web-key를 입력합니다. 인바운드 포트 규칙 인바운드 포트 선택 없음을 선택합니다. 다음: 디스크를 선택하고 다음: 네트워킹을 선택합니다.
네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 네트워크 인터페이스 가상 네트워크 vnet-1을 선택합니다. 서브넷 subnet-1 (10.0.0.0/24)을 선택합니다. 공용 IP 새 공용 IP(기본값)를 그대로 둡니다. NIC 네트워크 보안 그룹 추가 없음을 선택합니다. 검토 + 만들기 탭을 선택하거나, 페이지 아래쪽에서 파란색 검토 + 만들기 단추를 선택합니다.
만들기를 선택합니다.
새 키 쌍을 생성하라는 메시지가 표시되면 프라이빗 키 다운로드를 선택하고 리소스를 만듭니다. 프라이빗 키가 로컬 컴퓨터에 다운로드됩니다. 가상 머신 배포에는 몇 분 정도 소요될 수 있습니다.
이전 단계를 반복하여 키 쌍 이름 vm-mgmt-key를 사용하여 vm-mgmt 라는 두 번째 가상 머신 을 만듭니다.
네트워크 인터페이스를 ASG에 연결합니다.
VM을 만들 때 Azure는 각 VM에 대한 네트워크 인터페이스를 만들고 VM에 연결했습니다.
이전에 생성한 애플리케이션 보안 그룹 중 하나에 각 VM의 네트워크 인터페이스를 추가합니다.
트래픽 필터 테스트
포털 맨 위에 있는 검색 상자에 가상 머신을 입력합니다. 검색 결과에서 가상 머신을 선택합니다.
vm-web을 선택합니다.
작업 섹션에서 실행 명령을 선택합니다.
RunShellScript를 선택합니다.
명령 스크립트 실행 창에서 다음 명령을 입력합니다.
sudo apt-get update -y sudo apt-get install -y nginx sudo systemctl enable nginx sudo systemctl start nginx실행을 선택합니다. 스크립트가 성공적으로 완료되기를 기다립니다.
vm-web의 개요 페이지에서 VM의 공용 IP 주소를 확인합니다.
vm-web 웹 서버에 포트 80을 통해 인터넷에서 액세스할 수 있는지 확인하려면, 컴퓨터에서 인터넷 브라우저를 열고
http://<public-ip-address-from-previous-step>으로 이동합니다.인터넷에서 asg-web 애플리케이션 보안 그룹으로의 인바운드 트래픽은 포트 80을 통해 허용되므로 nginx 기본 페이지가 표시됩니다.
vm-web에 연결된 네트워크 인터페이스는 asg-web 애플리케이션 보안 그룹과 연결되어 있으며, 연결을 허용합니다.
브라우저에서
https://<public-ip-address-vm-web>을(를) 탐색하여 포트 443에서 vm-web에 액세스해 보세요. asg-web의 보안 규칙에서 인터넷에서 포트 443 인바운드를 허용하지 않으므로 연결이 실패하거나 시간이 초과됩니다.이제 포트 8080에서 nginx를 사용하여 vm-mgmt 를 구성합니다. 가상 머신 페이지에서 vm-mgmt를 선택합니다.
작업 섹션에서 실행 명령을 선택합니다.
RunShellScript를 선택합니다.
명령 스크립트 실행 창에서 다음 명령을 입력하여 포트 8080에 nginx를 설치합니다.
sudo apt-get update -y sudo apt-get install -y nginx # Configure nginx to listen on port 8080 sudo tee /etc/nginx/sites-available/default > /dev/null <<EOF server { listen 8080 default_server; listen [::]:8080 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files \$uri \$uri/ =404; } } EOF sudo systemctl restart nginx실행을 선택합니다. 스크립트가 성공적으로 완료되기를 기다립니다.
vm-mgmt의 개요 페이지에서 VM의 공용 IP 주소를 확인합니다.
인터넷에서 포트 8080으로 vm-mgmt 웹 서버에 접속할 수 있는지 확인하려면, 컴퓨터에서 인터넷 브라우저를 열고
http://<public-ip-address-vm-mgmt>:8080로 이동합니다.인터넷에서 asg-mgmt 애플리케이션 보안 그룹으로의 인바운드 트래픽은 포트 8080을 통해 허용되므로 nginx 기본 페이지가 표시됩니다.
vm-mgmt을 포트 80에서 브라우저로 열어
http://<public-ip-address-vm-mgmt>에 액세스해 보세요. asg-mgmt 애플리케이션 보안 그룹에 포트 80 인바운드를 허용하는 보안 규칙이 없으므로 연결이 실패하거나 시간이 초과됩니다.
vm-web에 연결된 네트워크 인터페이스는 asg-web 애플리케이션 보안 그룹과 연결되어 있으며, 연결을 허용합니다.
생성한 리소스 사용을 마치면, 리소스 그룹과 그 안의 모든 리소스를 삭제할 수 있습니다.
Azure Portal에서 리소스 그룹을 검색하고 선택합니다.
리소스 그룹 페이지에서 test-rg 리소스 그룹을 선택합니다.
test-rg 페이지에서 리소스 그룹 삭제를 선택합니다.
리소스 그룹 삭제 확인을 위해 이름 입력에 test-rg를 입력한 후, 삭제를 선택합니다.
다음 단계
이 자습서에서는 다음을 수행합니다.
- 네트워크 보안 그룹을 생성하고 이를 가상 네트워크 서브넷에 연결했습니다.
- 웹 및 관리 트래픽에 대한 애플리케이션 보안 그룹을 만들었습니다.
- SSH 키 인증을 사용하여 두 개의 Linux 가상 머신을 만들고 해당 네트워크 인터페이스를 애플리케이션 보안 그룹과 연결했습니다.
- 서로 다른 포트 구성을 사용하는 두 VM에 nginx 웹 서버가 설치되었습니다.
- vm-web에서 포트 80(HTTP)을 허용하지만 포트 443을 거부하는 반면 vm-mgmt는 포트 8080을 허용하지만 포트 80(HTTP)을 거부한다는 것을 보여줌으로써 애플리케이션 보안 그룹 네트워크 필터링을 테스트했습니다.
네트워크 보안 그룹에 대한 자세한 내용은 네트워크 보안 그룹 개요 및 네트워크 보안 그룹 관리를 참조하세요.
Azure는 기본적으로 서브넷 간 트래픽을 라우팅합니다. 대신, 트래픽을 가상 머신을 통해 라우팅하도록 선택할 수 있습니다. 예를 들어, 가상 머신을 방화벽으로 사용할 수 있습니다.
라우팅 테이블 생성 방법을 알아보려면, 다음 튜토리얼로 진행하십시오.