1. 개요
1.1. 목적
- On-premise의 웹 서비스 사용량이 증가함에 따라 웹 서버를 Cloud로 이전하고 보안 장비를 추가하여 안전한 서비스를 제공하는 데 있습니다. 이를 통해 웹 서버의 침해사고 발생 위험을 제거하고 서비스의 안정성과 신뢰성을 제고할 수 있을 것으로 기대합니다.
1.2. 이전 대상
- 이전 대상은 아래와 같습니다.
| No | 분류 | OS | 파일 목록 |
| 1 | Web Server | Ubuntu 22.04 | comment.php, index.php, styles.css, view.php, write.php |
1.3. 이전 후 결과
- 이전 후 결과는 아래와 같습니다.
| No | 분류 | OS | 파일 목록 |
| 1 | WEB-1 | Rocky Linux 9 | comment.php, index.php, styles.css, view.php, write.php |
| 2 | WEB-2 | Rocky Linux 9 | comment.php, index.php, styles.css, view.php, write.php |
2. 이전 방안 및 구성도
2.1. 이전 방안
- On-premise 웹 서버 디스크를 추출하여 Cloud로 마이그레이션

2.2. 구성도

3. 상세기술 (Cloud)
3.1. 가상 네트워크 설정
| 대상 | Azure |
| 목적 | 클라우드 내 리소스를 생성하고 사용하기 위한 가상 네트워크 생성 |
| 내용 | VPN, DNS, 서버, 방화벽, Bastion 등이 사용할 서브넷 생성 |
| 메뉴 | 가상 네트워크 |
- VPN 연결을 위해 GatewaySubnet 서브넷 생성
- DNS Private Resolver 생성을 위해 DNS-IN, DNS-OUT 서브넷 생성
- 서버 생성을 위해 03-NET 서브넷 생성
- 방화벽 생성을 위해 AzureFirewallSubnet, AzureFirewallManagementSubnet 생성
- Bastion 생성을 위해 AzureBastionSubnet 생성

| 대상 | Azure |
| 목적 | 클라우드 내 리소스를 생성하고 사용하기 위한 가상 네트워크 생성 |
| 내용 | WAF에서 사용할 서브넷 생성 |
| 메뉴 | 가상 네트워크 |
- WAF 연결을 위해 ApplicationSubnet 서브넷 생성

3.2. 피어링 설정
| 대상 | Azure |
| 목적 | 가상 네트워크 간 통신을 위함 |
| 내용 | 03-DMZ와 03-WAF-NET 간 피어링 설정 |
| 메뉴 | 가상 네트워크 |
- 03-DMZ와 03-WAF-NET 연결을 위해 피어링 설정

3.3. 스토리지 계정 설정
| 대상 | Azure |
| 목적 | 웹 서버 마이그레이션을 위한 디스크 업로드 |
| 내용 | 디스크 업로드 |
| 메뉴 | 스토리지 계정 |
- 웹 서버 마이그레이션을 위해 스토리지 계정 생성
- 컨테이너에서 WEB_DATA.vhd 디스크 업로드 (.vhd 파일만 등록 가능)

3.4. 디스크 연결 설정
| 대상 | Azure |
| 목적 | 웹 서버 마이그레이션 |
| 내용 | 가상 머신 생성 및 업로드한 디스크 연결 |
| 메뉴 | 가상 머신 |
- 마이그레이션한 디스크를 연결하기 위해 가상 머신 생성
- 디스크를 연결해서 데이터 이전

3.5. DNS 영역 설정
| 대상 | Azure |
| 목적 | Azure DNS에 웹 서버 도메인 등록 |
| 내용 | DNS 레코드 설정 |
| 메뉴 | DNS 영역 |
- 호스팅 업체에서 등록한 IP 주소(4.218.19.203) 레코드 설정

3.6. 프라이빗 DNS 영역 설정
| 대상 | Azure |
| 목적 | 내부 서버 도메인 등록 |
| 내용 | DNS 레코드 설정 |
| 메뉴 | 프라이빗 DNS 영역 |
- 부하 분산 장치(172.16.22.13) 레코드 설정
- NTP 서버(172.16.22.31, 172.16.22.32) 레코드 설정
- 가상 네트워크에서 레코드 설정을 사용하기 위한 Virtaul Network 링크 설정


3.7. DNS Private Resolver 설정
| 대상 | Azure |
| 목적 | On-premise에서 DNS 사용 |
| 내용 | On-premise에서 DNS를 사용하기 위해 IP할당 |
| 메뉴 | DNS Private Resolver |
- 내부에서 바라보는 DNS 주소인 인바운드 엔드포인트 설정
- 프라이빗 DNS에 등록되지 않은 DNS 주소를 가져오기 위해 아웃바운드 엔드포인트 설정

3.8. 부하 분산 장치 설정
| 대상 | Azure |
| 목적 | 웹 트래픽의 부하 분산 |
| 내용 | 80/tcp, 443/tcp에 대해 웹 서버로 부하 분산 수행 |
| 메뉴 | 부하 분산 장치 |
- 웹 서버 IP로 백 엔드 풀 설정
- 웹 서비스 포트인 80/tcp, 443/tcp에 대한 상태 프로브 설정



3.9. 애플리케이션 게이트웨이 설정
| 대상 | Azure |
| 목적 | 웹 공격 방어 |
| 내용 | 애플리케이션 게이트웨이를 WAF로 동작시켜 웹 공격 방어 수행 |
| 메뉴 | 애플리케이션 게이트웨이 |
- 부하 분산 장치 IP로 백 엔드 풀 설정
- 웹 서비스 포트인 80/tcp, 443/tcp에 대한 백 엔드 설정 (SSL 인증서 사용 시 백 엔드 설정에 인증서 업로드)
- 웹 서비스 포트인 80/tcp, 443/tcp에 대한 상태 프로브 설정
- 공용 IP 대역과 프라이빗 IP 대역에서 들어오는 트래픽 수신을 위한 수신기 설정
- 수신기에서 수신한 트래픽을 보내주기 위한 규칙 설정
- 애플리케이션 게이트웨이 정책 설정






3.10. 방화벽 설정
| 대상 | Azure |
| 목적 | 트래픽 제어 및 DNAT 수행 |
| 내용 | 불필요한 트래픽을 제어하고 웹 서버에 대한 80/tcp, 443/tcp 트래픽을 애플리케이션 게이트웨이(WAF)로 전달하여 웹 트래픽에 대한 검사 수행 |
| 메뉴 | 방화벽 |
- 공용 IP 구성에 방화벽에서 사용할 IP 등록 (방화벽에 등록된 공인 IP만 DNAT 수행 가능)
- 웹 트래픽에 대해 애플리케이션 게이트웨이의 공인 IP로 DNAT 설정
- 인터넷 사용이 필요할 시 개인 IP 범위(SNAT)에서 SNAT 설정 가능 (SNAT 사용 시 별도의 경로 테이블을 추가하여 방화벽으로 패킷 전달 필요)
- 방화벽 로그를 확인하기 위해 진단 설정
- 로그 확인





3.11. VPN 설정
| 대상 | Azure |
| 목적 | On-premise와 Cloud 연결 |
| 내용 | VPN 설정 시 Cloud가 센터, On-premise가 지점으로 연결해야 되기 때문에 센터 설정 진행 |
| 메뉴 | 가상 네트워크 게이트웨이, 로컬 네트워크 게이트웨이, 연결 |
- On-premise 방화벽과 IPSec VPN 연결을 위해 가상 네트워크 게이트웨이 생성 (가상 네트워크 게이트웨이는 Cloud 연결점)
- On-premise 방화벽과 IPSec VPN 연결을 위해 로컬 네트워크 게이트웨이 생성 (로컬 네트워크 게이트웨이는 On-premise 연결점)
- 두 연결점을 연결하기 위해 연결 생성 (IPSec VPN 세부 설정 수행)



4. 상세기술 (On-premise)
4.1. 방화벽 설정
| 대상 | 방화벽(Secui) |
| 목적 | On-premise와 Cloud 연결 |
| 내용 | VPN 설정 시 Cloud가 센터, On-premise가 지점으로 연결해야 되기 때문에 지점 설정 진행 |
| 메뉴 | 지점 연결 설정 |
- 가상 네트워크 게이트웨이 IP를 센터 장비 IP로 설정하고 연결에서 설정한 ID/PW 입력
- 연결 설정에서 설정한 암호화 방식 및 IKE SA, IPSec SA 생명주기 설정
