네트웍 구성과 방화벽
서버의 용도와 제공하는 서비스의 종류, 신뢰 수준에 맞게 네트워크을 분류하고 이에 맞게 구역(zone)을 구성하는 것은 보안 측면에서 매우 중요한 작업입니다.
높은 보안을 요구하는 서버를 외부에서 연결이 가능한 네트워크 구역에 배치하거나 외부에 서비스를 제공해야 하는 웹 서버를 내부 구역에 위치시킨다면 보안상 큰 문제가 생기고 고객에게 원하는 서비스를 제공할 수도 없습니다.
먼저 해야할 작업은 용도에 맞게 네트워크를 분류하고 구역을 정의하는 것이며 이는 회사나 조직마다 조금씩 다를수 있습니다.
Fedora Linux와 CentOS 에는 이런 네트워크 분류와 구성을 조금 더 용이하게 하기 위해서 아래와 같이 네트워크 구역을 정의하고 있습니다.
구역 | 용도 |
---|---|
trusted | 모든 패킷을 신뢰하는 네트워크 구역. |
home internal work | 일부 서비스의 연결을 허용하는 구역이며 관리자가 오픈할 서비스를 정의함. |
dmz | 대부분이 신뢰할 수 없는 연결로 비무장지대(demilitarized zone)라고 함 |
public external | 대부분이 신뢰할 수 없는 연결로 관리자가 오픈할 서비스를 정의함 |
block | 모든 연결을 신뢰하지 않는 구간으로 모든 들어오는 트래픽을 허용하지 않음 |
drop | 모든 연결을 신뢰하지 않는 구간으로 모든 들어오는 트래픽을 즉시 삭제 |
네트워크 구분
AWS 에서는 이보다는 단순하고 명확하게 Subnet 을 기준으로 아래와 같이 네트워크를 분류하고 있습니다.
구역 | 용도 |
---|---|
Public | 공용 IP 주소를 가지는 서버가 위치하며 인터넷에서 액세스 할 수 있는 서브넷으로 이들은 전통적인 DMZ 네트워크와 유사합니다. |
Private | 사설 IP 주소를 가지는 서버가 위치하며 인터넷에서 액세스 할 수 없는 내부 서브넷으로 이 구역에 위치한 서버들은 NAT(Network Address Translation)를 통해 인터넷에 접근할 수 있습니다. |
Protected | 사설 IP 주소만 가지는 서버가 위치하며 인터넷에서 액세스 할 수 없는 내부 서브넷으로 서버들은 인터넷에 접속할 수 없습니다. 개인정보 DBMS 등 중요한 정보를 저장하는 서버가 위치합니다. |
AWS 의 네트워크 구역
이제 위와 같은 분류에 맞게 웹 서비스의 각 구성요소를 어떤 네트워크 구역에 어떻게 배치할지에 대해서 알아 봅시다.