이번 시간에는 클라우드 시스템 상의 VM 인스턴스에 웹 서버를 구축해보고, 클라우드 시스템의 방화벽을 설정하여 클라우드 외부로부터 VM 인스턴스로의 통신을 허용하는 방법에 대해 알아보도록 하겠습니다.
Compute 탭 하의 Instacnes 페이지에서, 인스턴스 리스트 목록의 IP Address 컬럼을 통하여 인스턴스에 할당된 IP 주소를 확인할 수 있습니다.
혹은 인스턴스 OS 내의 터미널에서 ip addr show 커맨드를 통하여 인스턴스의 IP 주소를 확인하는것도 가능합니다.
위 인스턴스의 IP 주소는 10.130.33.38 임을 확인할 수 있습니다.
웹 서버를 구축하는데에는 다양한 방법들이 있지만 apache2 패키지를 설치함으로써 간편하게 웹 서버를 준비 가능합니다.
apache2 패키지를 설치하고 있습니다.
VM 인스턴스 내에서 웹 브라우저를 실행시켜 주시기 바랍니다.
웹 브라우저의 주소창에 VM 인스턴스의 IP 주소를 입력한 뒤 접속하면 웹 서버가 작동중이라는것을 확인 가능합니다.
그러나 VM 인스턴스 내의 웹 브라우저가 아닌, 제 노트북의 웹 브라우저를 통해 접속을 시도하니 접속이 되지 않는군요. 왜 그럴까요?
컴퓨터, 휴대전화, 노트북 및 태블릿 등 네트워크를 이용하는 모든 장치들은 서로 패킷이라 불리우는 편지들을 주고 받으며 통신을 합니다. 네트워크 패킷의 대략적인 모습은 아래와 같습니다.
우리가 일상에서 주고 받는 편지처럼 패킷 또한 보내는이, 받는이 그리고 본문으로 구성되어 있습니다. 보내는이/받는이를 특정하기 위해서는 보내는 장치/받는 장치의 IP 주소와 프로토콜, 포트번호 세 가지의 정보가 필요합니다.
그러나 모든 편지들이 목적지로 전달되는것은 아닙니다. 저희 클라우드 시스템에는 방화벽이 작동하고 있기 때문입니다. 방화벽은 네트워크 패킷에 적혀있는 보내는이(IP주소, 프로토콜, 포트) 정보와 받는이(IP주소, 프로토콜, 포트)를 확인한 뒤, 두 장치간의 통신이 허용되어있는 상태가 아니라면 패킷을 받는이에게 전달하지 않고 버리는 일을 합니다. 우리가 교내망에서 VM 인스턴스 상에 구축된 웹 서버로 접속할 수 없었던 이유도 아직 방화벽에 통신을 허용하는 규칙을 설정하지 않았기 때문입니다.
VM 인스턴스의 네트워크 설정 정보를 확인하기 위해서 Instances 페이지에서 인스턴스의 이름을 클릭하여 주십시오.
Overview 페이지에서 아래로 스크롤을 내려 Security Groups 항목을 확인하면 본 인스턴스가 default 라는 이름의 Security Group에 속해있다는 사실을 알 수 있습니다.
Security Group 설정을 위해 Network 탭 하의 Security Groups 페이지로 이동하여 주십시오. 여기서 Security Group들을 확인하고 개별 Security Group들의 설정을 변경할 수 있습니다.
그럼 Security Group이란 과연 무엇일까요?
default Security Group의 설정을 확인하기 위해 우측의 Manage Rules 버튼을 클릭하여 주십시오.
default Security Group의 Rule 페이지에서 위와 같은 정보를 확인할 수 있습니다. Security Group 이란, 간단히 말해 아래와 같습니다.
default Security Group에 포함된 Rule들이 어떤 의미를 가지고 있는지 알아보겠습니다.
현재 default Security Group은 네 개의 Rule들로 구성되어 있습니다.
이제 Rule의 match 조건들을 구성하는, 컬럼들에 대해 알아보도록 하겠습니다.
위 4개의 Rule들로 이루어진 default Security Group을, 그림으로 나타낸다면 아래와 같습니다.
default Security Group의 필터링 기작은 다음과 같습니다. (IPv4 주소체계 Rule)
클라우드 외부에서 VM 인스턴스 상의 웹 서버에 접속하기 위해서는 새로 Security Group을 만들어 웹 통신을 허용할 필요가 있습니다. default Security Group은 모든 VM 인스턴스들에 기본적으로 적용되는 Security Group이기 때문에, default Security Group의 Rule을 수정하는것은 추천하지 않습니다. 대신 웹 통신을 허용하는 새 Security Group을 생성하고, 우리의 VM 인스턴스에 적용시킬 수 있습니다.
Network 탭 하의 Security Groups 페이지에서 새 Security Group을 생성할 수 있습니다. Security Group을 생성하기 위해 우측의 Create Security Group 버튼을 클릭하여 주십시오.
생성할 Security Group의 이름과 설명을 기입한 뒤 팝업 창 우측 하단의 Create Security Group 버튼을 클릭하여 주십시오.
새 Security Group이 생성된것을 확인할 수 있습니다. 생성된 새 Security Group의 Rule들을 설정하기 위해 생성된 Security Group 우측의 Manage Rules 버튼을 클릭하여 주십시오.
새로 생성된 Security Group에 기본적으로 두 개의 Rule들이 탑재되어 있는것을 확인할 수 있습니다. 그러나 위의 두 Rule들은 default Security group에 이미 포함이 되어 있기 때문에 우리에게 필요하지 않습니다.
두 Rule들을 좌측의 체크박스에서 선택한 뒤 우측의 Delete Rules 버튼을 클릭하여 주십시오.
Rule들이 삭제된것을 확인할 수 있습니다. 웹 패킷의 통과를 허용하는 새 Rule을 생성하기 위해 우측의 Add Rule 버튼을 클릭하여 주십시오.
새 Rule을 설정하기 위한 팝업 창이 생성됩니다.
맨 위의 Rule 드랍다운 메뉴를 클릭하면 자주 사용되는 패킷 match에 대한 Rule들이 이미 준비가 되어있는것을 확인하실 수 있습니다. 여기서 HTTP 항목을 클릭하면 웹 패킷을 통과시킨다는 목적은 달성이 되지만, 방화벽 기능 탐방을 위해 다른 방식으로 웹 패킷을 허용시켜 보도록 하겠습니다.
클라우드 외부에서 VM 인스턴스로 웹 패킷이 이동하는것을 통과시키기 위해서는 다음과 같은 설정이 필요합니다.
설정이 완료되면 팝업 창 우측 하단의 Add 버튼을 클릭하여 주십시오.
새 Rule이 Security Group에 추가된것을 확인할 수 있습니다.
웹 패킷을 통과시키는, 새로 생성한 Security Group을 우리의 VM 인스턴스에 적용시킬 차례입니다.
VM 인스턴스에 Security Group을 추가시키기 위하여 Compute 탭 하의 Instances 페이지로 이동하여 주십시오.
Actions 드랍다운 메뉴 하의 Edit Security Groups 버튼을 클릭하여 주십시오.
Security Group을 인스턴스에 추가하기 위합 팝업 창이 생성됩니다. 좌측의 리스트는 현재 인스턴스에 적용 가능한 Security Group들을 나타내고, 우측의 리스트는 현재 인스턴스에 적용이 되어 있는 Security Group을 나타냅니다. 좌측 리스트에서 새로 생성한 Security Group을 추가시키는 + 버튼을 클릭하여 주십시오.
Save 버튼을 클릭하면 인스턴스의 Security Group 편집 사항이 반영됩니다.
웹 패킷의 통과를 허용하는 Security Group이 VM 인스턴스에 적용되었습니다.
현재 VM 인스턴스에 적용되어 있는 Security Group의 배치는 위와 같습니다. default Security Group은 인스턴스가 밖으로 패킷을 보내는 것과, default Security Group에 속한 인스턴스로부터 패킷이 들어오는것을 허용합니다. Allow-Web Security Group은 TCP 프로토콜을 사용하며 목적지 포트 번호가 80번인 패킷이 외부로부터 인스턴스로 들어오는것을 허용합니다. default Security Group과 Allow-Web Security Group 둘 중 어느 곳에서도 match가 되지 않은 패킷들은 버려지게 됩니다.
이제 교내망에 위치한 제 노트북에서 웹 브라우저를 통해 VM 인스턴스 상의 웹 서버에 접속이 가능합니다. 이것은 목적지가 TCP 포트 80번인 패킷이 VM 인스턴스로 도달 가능하다는것을 의미합니다.
Security Group 조합 선택은 인스턴스를 생성한 뒤에만 설정 가능한것이 아니라, 새 VM 인스턴스를 생성할시에도 결정 가능합니다.
새 인스턴스를 생성하기 위해 Compute 탭 하의 Instances 페이지로 이동하여 주십시오. Launch Instance 버튼을 눌러 새 인스턴스를 생성할 수 있습니다.
인스턴스 생성 팝업 창에서 Security Groups 탭을 통해 새로 생성될 인스턴스에 적용될 Security Group 조합을 선택할 수 있습니다. default Security Group을 제거하거나, 하나 이상의 Security Group을 인스턴스에 적용시키는것이 가능합니다.
오늘은 인스턴스의 방화벽 설정에 대해 알아보았습니다. 다음 시간에는 SSH 접속을 통해 직접 인스턴스를 조작하는 방법에 대해 알아보도록 하겠습니다.
이용약관을 확인해주세요.
D-HUB 연구시설장비 통합정보시스템 ('ccrf.dgist.ac.kr'이하 'D-HUB')은(는) 개인정보보호법에 따라 이용자의 개인정보 보호 및
권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다.
본 웹사이트에 게시된 이메일 주소가 전자우편 수집프로그램이나 그밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며,
이를 위반시 정보통신망법에 의해 형사처벌됨을 유념하시기 바랍니다.
정보통신망법 제 50조의 2 (전자우편주소의 무단 수집행위 등 금지)
① 누구든지 전자우편주소의 수집을 거부하는 위사가 명시된 인터넷 홈페이지에서 자동으로 전자우편주소를 수집하는 프로그램 그 밖의 기술적 장치를 이용하여 전자우편주소를 수집하여서는 아니된다.