Public Cloud에서의 Firewall, VPN 구축
Concepts of VPN
공용 네트워크를 통해 안전한 채널 만들기
• 두 액세스 지점 간 암호화 알고리즘 활용
• 한 액세스 포인트는 송신자 측, 다른 액세스 포인트는 수신자 측
• 각 측은 네트워크(사이트) 또는 디바이스(포인트)
VPN 배포의 목표
• 사용자 인증
• 데이터 무결성
• 메시지의 기밀성
VPN을 구성하기 위해 필요한 것
• 암호 체계
• 키 공유 방식
• 터널링을 위한 통신 계층
OSI Layer의 VPN
L2TP와 IPsec이 공존함
- 인증 및 암호화 기능이 없는 L2TP는 IPsec으로 구성
- L2TP는 터널링에 사용되며, IPsec은 암호 관련 도구를 제공
터널링
- 수신기가 아닌 VPN 서버로 전달하기 위한 새 엔벨로프(envelope)
- ex. 메시지를 봉투에 넣는 것
암호화된 터널을 사용하는 이유
- VPN 서버가 편지 봉투를 열어도 메시지는 읽을 수 없어야 함
=> 그 데이터 패킷은 공중 인터넷을 통과하기 때문
Concepts of Firewall
내부망과 외부망 분리
• 외부 네트워크를 신뢰할 수 없다고 가정
• 들어오고 나가는 트래픽을 제한하기 위한 규칙 작성 및 적용
세가지 카테고리
세가지 Action
• Accept(or Allow)
• Reject – 통화 거부(상대방이 알 수 있도록)
• Deny(or Drop) – 응답하지 않은 통화
vNet 재방문
• 가상 네트워크(vNet)와 서브넷
- 물리적 네트워크와 서브넷의 가상 대체물
- 관리자가 가상 머신(VM)과 관련시킬 때 네트워크 토폴로지 고려 필요
• vNet의 목적
- Azure 상의 리소스 간 안전한 통신
‣ VM-VM, VM-AzureServices, vNet-vNet
- on-premise(기업 내의) 리소스와 Azure 클라우드 리소스 간 안전한 통신
‣ on-premise(기업 내의) 리소스와 Azure 리소스 사이에 public 네트워크가 배치됨
기업 내의 리소스(on- premise)와 Azure 리소스 간의 안전한 통신을 제공하는 방법
=> VPN
Deployment of Firewall and VPN
east-us VGW, vNet, Subnet 생성
가상 게이트웨이(VGW)의 이름을 설정하고, Region을 East US로 설정해준다.
그리고, 가상 네트워크 생성을 눌러 가상 네트워크의 이름/리소스 그룹을 선택해준 후, 가상 네트워크의 주소를 설정하고 subnet 2개를 생성해준다.
이 때, 가상 네트워크의 네트워크 주소는 16바이트, 서브넷의 네트워크 주소는 24바이트로 설정한다.
게이트웨이 서브넷 주소 범위를 27바이트로 설정해주고, public IP 주소 이름을 정해주고, 검토 후 생성 -> 만들기를 누르면 게이트웨이를 생성할 수 있다.
South-East-Asia VGW, vNet, Subnet 생성
가상 게이트웨이의 생성은 East US와 같다.
Region만 Southeast Asia로 설정해준다.
게이트웨이 서브넷 주소 범위를 27바이트로 설정해주고, public IP 주소 이름을 정해주고, 검토 후 생성 -> 만들기를 누르면 게이트웨이를 생성할 수 있다.
East-US의 VM 생성
Region을 East US로 설정하고, Authentication type은 SSH public key로 설정한다.
그리고 Select inbound ports는 HTTP, HTTPS, SSH의 3개를 선택해준다.
OS Disk type은 Standard HDD로 설정하고,
Data Disk 생성 -> 사이즈는 가장 작은 4GB로 생성해준다.
이후, 검토 후 생성 -> 만들기를 누르면 가상 머신이 생성된다.
Southeast Asia VM 생성
Southeast Asia도 East US와 동일한데, Region만 Southeast Asia로 설정해준다.
Install a web server(Apache2)
방금 생성한 east us, southeast asia의 private key가 있는 파일 위치에서 powershell을 각각 실행한다.
sudo apt install apache2
그리고 각 powershell에 apache2를 설치하고,
sudo rm /var/www/html/index.html
echo "I am in ~~" | sudo tee -a /var/www/html/index.html
index.html을 삭제하고, ~~에 각각 East US/Singapore을 써준다.
그럼 각 가상 머신의 IP를 URL에 입력해서 들어갔을 떄, 내가 입력한 문구가 뜨는 것을 확인할 수 있다.
*public IP는 Azure Cloud의 각 가상머신에서, private IP는 powershell에서 ifconfig을 통해 알 수 있다.
wget #PublicIP
wget #PrivateIP
powershell에 다음과 같이 입력했을 때,
East US 가상머신은 public ip에는 연결이 가능하지만, private ip에는 연결하지 못하고
Southeast Asia 가상머신은 둘 다 연결이 가능하다.
각 가상 네트워크에 VGW(가상 게이트웨이) 연결
east us
Southeast Asia
private ip를 통한 east-us VM과 south-east-asia VM 사이의 연결
wget #privateip
각 가상머신에 wget 명령을 통해 eastus에는 seast private ip를, seast에는 eastus의 private ip를 적어 연결해준다.
East US에 NSG 생성
Region을 East US로 설정해준다.
앞서 만들었던 서브넷을 할당해준다.
East US 가상머신의 HTTP 연결 거부
nsg에서 add를 누르고, Service에서 HTTP를 선택하고 Action을 Deny로 설정해주면 된다.
(우선순위도 설정 가능)
이렇게 설정되어
HTTP 연결을 막는다.
East US 가상 머신의 SSH 연결 허락
nsg에서 add > Service SSH 설정 후, Action을 Allow로 선택하면 SSH 연결을 허락할 수 있다.
Southeast Asia의 NSG 생성
East US와 동일하고, Region을 Southeast Asia로 설정해준다.
Southeast Asia 가상 머신의 SSH 연결 거부
southeast asia의 nsg에서 add > service ssh 선택 후 action을 deny로 해주면 된다.