목표

different-types-of-firewalls-2
이번 시간에는 클라우드 시스템 상의 VM 인스턴스에 웹 서버를 구축해보고, 클라우드 시스템의 방화벽을 설정하여 클라우드 외부로부터 VM 인스턴스로의 통신을 허용하는 방법에 대해 알아보도록 하겠습니다.

VM 인스턴스 IP 확인

1-2
Compute 탭 하의 Instacnes 페이지에서, 인스턴스 리스트 목록의 IP Address 컬럼을 통하여 인스턴스에 할당된 IP 주소를 확인할 수 있습니다.
2
혹은 인스턴스 OS 내의 터미널에서 ip addr show 커맨드를 통하여 인스턴스의 IP 주소를 확인하는것도 가능합니다.
3
위 인스턴스의 IP 주소는 10.130.33.38 임을 확인할 수 있습니다.

웹 서버 구축

apache2 설치

4
웹 서버를 구축하는데에는 다양한 방법들이 있지만 apache2 패키지를 설치함으로써 간편하게 웹 서버를 준비 가능합니다.
5
apache2 패키지를 설치하고 있습니다.

웹 서버 작동 확인

6
VM 인스턴스 내에서 웹 브라우저를 실행시켜 주시기 바랍니다.
7
웹 브라우저의 주소창에 VM 인스턴스의 IP 주소를 입력한 뒤 접속하면 웹 서버가 작동중이라는것을 확인 가능합니다.
8
그러나 VM 인스턴스 내의 웹 브라우저가 아닌, 제 노트북의 웹 브라우저를 통해 접속을 시도하니 접속이 되지 않는군요. 왜 그럴까요?

방화벽

컴퓨터, 휴대전화, 노트북 및 태블릿 등 네트워크를 이용하는 모든 장치들은 서로 패킷이라 불리우는 편지들을 주고 받으며 통신을 합니다. 네트워크 패킷의 대략적인 모습은 아래와 같습니다.
Untitled-Diagram
우리가 일상에서 주고 받는 편지처럼 패킷 또한 보내는이, 받는이 그리고 본문으로 구성되어 있습니다. 보내는이/받는이를 특정하기 위해서는 보내는 장치/받는 장치의 IP 주소와 프로토콜, 포트번호 세 가지의 정보가 필요합니다.
10
그러나 모든 편지들이 목적지로 전달되는것은 아닙니다. 저희 클라우드 시스템에는 방화벽이 작동하고 있기 때문입니다. 방화벽은 네트워크 패킷에 적혀있는 보내는이(IP주소, 프로토콜, 포트) 정보와 받는이(IP주소, 프로토콜, 포트)를 확인한 뒤, 두 장치간의 통신이 허용되어있는 상태가 아니라면 패킷을 받는이에게 전달하지 않고 버리는 일을 합니다. 우리가 교내망에서 VM 인스턴스 상에 구축된 웹 서버로 접속할 수 없었던 이유도 아직 방화벽에 통신을 허용하는 규칙을 설정하지 않았기 때문입니다.

방화벽 설정

11
VM 인스턴스의 네트워크 설정 정보를 확인하기 위해서 Instances 페이지에서 인스턴스의 이름을 클릭하여 주십시오.
12
Overview 페이지에서 아래로 스크롤을 내려 Security Groups 항목을 확인하면 본 인스턴스가 default 라는 이름의 Security Group에 속해있다는 사실을 알 수 있습니다.
13
Security Group 설정을 위해 Network 탭 하의 Security Groups 페이지로 이동하여 주십시오. 여기서 Security Group들을 확인하고 개별 Security Group들의 설정을 변경할 수 있습니다.

Security Group

그럼 Security Group이란 과연 무엇일까요?
14
default Security Group의 설정을 확인하기 위해 우측의 Manage Rules 버튼을 클릭하여 주십시오.
15
default Security Group의 Rule 페이지에서 위와 같은 정보를 확인할 수 있습니다. Security Group 이란, 간단히 말해 아래와 같습니다.

  • Security Group은, 하나의 방화벽 입니다.
  • 하나의 Security Group은, 여러개의 Rule들로 이루어져 있습니다.
  • Security Group은, 포함하고 있는 Rule들에 따라 네트워크 패킷을 통과시킵니다.
  • 우리는 Security Group을 VM 인스턴스 앞에 배치하여 인스턴스로 오고 가는 네트워크 패킷들을 통제할 수 있습니다.

Rule 의미

default Security Group에 포함된 Rule들이 어떤 의미를 가지고 있는지 알아보겠습니다.
현재 default Security Group은 네 개의 Rule들로 구성되어 있습니다.

  • 각 Rule은 여러 match 조건들로 이루어져 있습니다.
  • 패킷이 어떤 Rule을 만족하기 위해서는, 그 Rule 내의 모든 match 조건들을 만족해야 합니다.
  • 패킷이 어떤 Rule을 만족한다면, 그 패킷은 목적지로 진행되는것이 허락됩니다.
  • 패킷이 아무 Rule도 만족하지 않는다면, 그 패킷은 다음 Security Group으로 넘겨지게 됩니다.
  • 만약 더 이상 패킷을 넘길 Security Group이 존재하지 않는다면, match 되지 않은 패킷들은 버려지게 됩니다.

이제 Rule의 match 조건들을 구성하는, 컬럼들에 대해 알아보도록 하겠습니다.
16

  • Direction: 방향을 의미합니다. Egress는 인스턴스로부터 나가는 패킷을, Ingress는 외부로부터 인스턴스로 들어오는 패킷을 선택합니다.
  • Ether Type: 주소체계를 의미합니다. IPv4 혹은 IPv6 주소 체계가 있지만 교내 네트워크는 IPv4 체계만을 사용하기 때문에 IPv6는 신경쓰지 않아도 됩니다.
  • IP Protocol: 통신 프로토콜을 의미합니다. TCP, UDP 혹은 Any(모두)가 있습니다.
  • Port Range: 포트번호를 의미합니다. 1 ~ 65535 사이의 숫자 하나, 숫자 범위, 혹은 Any(모두)를 설정 가능합니다.
  • Remote IP Prefix: 출발지/도착지를 IP 주소를 통해 선택합니다. 0.0.0.0/0 혹은 ::/0은 Any의 의미를 가집니다. Remote Security Group과 동시에 사용될 수 없습니다.
  • Remote Security Group: 출발지/도착지를 Security Group을 통해 선택합니다. VM 인스턴스가 같은 Security Group에 속한 다른 인스턴스, 혹은 특정 Security Group에 속한 다른 인스턴스와 통신할 수 있도록 하기 위해 사용합니다. Remote IP Prefix와 동시에 사용될 수 없습니다.

위 4개의 Rule들로 이루어진 default Security Group을, 그림으로 나타낸다면 아래와 같습니다.
--
default Security Group의 필터링 기작은 다음과 같습니다. (IPv4 주소체계 Rule)

  • 프로토콜, 포트번호, 목적지 IP에 상관 없이, 인스턴스로부터 밖으로 나가는 패킷들은 모두 지나가는것을 허락합니다.
  • 프로토콜, 포트번호에 상관 없이, default Security Group에 속한 인스턴스들로부터 오는 패킷이라면 지나가도록 허락합니다.

Security Group 생성

클라우드 외부에서 VM 인스턴스 상의 웹 서버에 접속하기 위해서는 새로 Security Group을 만들어 웹 통신을 허용할 필요가 있습니다. default Security Group은 모든 VM 인스턴스들에 기본적으로 적용되는 Security Group이기 때문에, default Security Group의 Rule을 수정하는것은 추천하지 않습니다. 대신 웹 통신을 허용하는 새 Security Group을 생성하고, 우리의 VM 인스턴스에 적용시킬 수 있습니다.
17
Network 탭 하의 Security Groups 페이지에서 새 Security Group을 생성할 수 있습니다. Security Group을 생성하기 위해 우측의 Create Security Group 버튼을 클릭하여 주십시오.
18
생성할 Security Group의 이름과 설명을 기입한 뒤 팝업 창 우측 하단의 Create Security Group 버튼을 클릭하여 주십시오.
19
새 Security Group이 생성된것을 확인할 수 있습니다. 생성된 새 Security Group의 Rule들을 설정하기 위해 생성된 Security Group 우측의 Manage Rules 버튼을 클릭하여 주십시오.
20
새로 생성된 Security Group에 기본적으로 두 개의 Rule들이 탑재되어 있는것을 확인할 수 있습니다. 그러나 위의 두 Rule들은 default Security group에 이미 포함이 되어 있기 때문에 우리에게 필요하지 않습니다.
21
두 Rule들을 좌측의 체크박스에서 선택한 뒤 우측의 Delete Rules 버튼을 클릭하여 주십시오.
22
Rule들이 삭제된것을 확인할 수 있습니다. 웹 패킷의 통과를 허용하는 새 Rule을 생성하기 위해 우측의 Add Rule 버튼을 클릭하여 주십시오.
23
새 Rule을 설정하기 위한 팝업 창이 생성됩니다.
24
맨 위의 Rule 드랍다운 메뉴를 클릭하면 자주 사용되는 패킷 match에 대한 Rule들이 이미 준비가 되어있는것을 확인하실 수 있습니다. 여기서 HTTP 항목을 클릭하면 웹 패킷을 통과시킨다는 목적은 달성이 되지만, 방화벽 기능 탐방을 위해 다른 방식으로 웹 패킷을 허용시켜 보도록 하겠습니다.
25
클라우드 외부에서 VM 인스턴스로 웹 패킷이 이동하는것을 통과시키기 위해서는 다음과 같은 설정이 필요합니다.

  • 웹 트래픽은 TCP 프로토콜을 이용하기 때문에, Rule 항목에서 Custom TCP Rule을 선택하여 주십시오.
  • 인스턴스로 패킷이 들어오는것을 허용해야 하기 때문에, Direction 항목에서 Ingress를 선택하여 주십시오.
  • 웹 패킷 중 HTTP 패킷은 80번 포트를 사용합니다. 하나의 포트만 열면 되기 때문에 Open Port 항목에서 Port를 선택하여 주십시오.
  • Port 항목에서 80을 입력하여 주십시오.
  • Remote에서는 CIDR를 선택하여 주십시오.
  • CIDR 항목에서 0.0.0.0/0를 입력하여 주십시오. 패킷의 보내는이 IP 주소에 상관하지 않겠다는 의미입니다.

설정이 완료되면 팝업 창 우측 하단의 Add 버튼을 클릭하여 주십시오.
26
새 Rule이 Security Group에 추가된것을 확인할 수 있습니다.

Security Group 적용 - 기존 인스턴스에 적용

웹 패킷을 통과시키는, 새로 생성한 Security Group을 우리의 VM 인스턴스에 적용시킬 차례입니다.
27
VM 인스턴스에 Security Group을 추가시키기 위하여 Compute 탭 하의 Instances 페이지로 이동하여 주십시오.
28
Actions 드랍다운 메뉴 하의 Edit Security Groups 버튼을 클릭하여 주십시오.
29-1
Security Group을 인스턴스에 추가하기 위합 팝업 창이 생성됩니다. 좌측의 리스트는 현재 인스턴스에 적용 가능한 Security Group들을 나타내고, 우측의 리스트는 현재 인스턴스에 적용이 되어 있는 Security Group을 나타냅니다. 좌측 리스트에서 새로 생성한 Security Group을 추가시키는 + 버튼을 클릭하여 주십시오.
30
Save 버튼을 클릭하면 인스턴스의 Security Group 편집 사항이 반영됩니다.
31
웹 패킷의 통과를 허용하는 Security Group이 VM 인스턴스에 적용되었습니다.
32
현재 VM 인스턴스에 적용되어 있는 Security Group의 배치는 위와 같습니다. default Security Group은 인스턴스가 밖으로 패킷을 보내는 것과, default Security Group에 속한 인스턴스로부터 패킷이 들어오는것을 허용합니다. Allow-Web Security Group은 TCP 프로토콜을 사용하며 목적지 포트 번호가 80번인 패킷이 외부로부터 인스턴스로 들어오는것을 허용합니다. default Security Group과 Allow-Web Security Group 둘 중 어느 곳에서도 match가 되지 않은 패킷들은 버려지게 됩니다.
33
이제 교내망에 위치한 제 노트북에서 웹 브라우저를 통해 VM 인스턴스 상의 웹 서버에 접속이 가능합니다. 이것은 목적지가 TCP 포트 80번인 패킷이 VM 인스턴스로 도달 가능하다는것을 의미합니다.

Security Group 적용 - 새 인스턴스 생성

Security Group 조합 선택은 인스턴스를 생성한 뒤에만 설정 가능한것이 아니라, 새 VM 인스턴스를 생성할시에도 결정 가능합니다.
34
새 인스턴스를 생성하기 위해 Compute 탭 하의 Instances 페이지로 이동하여 주십시오. Launch Instance 버튼을 눌러 새 인스턴스를 생성할 수 있습니다.
35
인스턴스 생성 팝업 창에서 Security Groups 탭을 통해 새로 생성될 인스턴스에 적용될 Security Group 조합을 선택할 수 있습니다. default Security Group을 제거하거나, 하나 이상의 Security Group을 인스턴스에 적용시키는것이 가능합니다.

마침

오늘은 인스턴스의 방화벽 설정에 대해 알아보았습니다. 다음 시간에는 SSH 접속을 통해 직접 인스턴스를 조작하는 방법에 대해 알아보도록 하겠습니다.