토폴로지로 이해하는 Amazon 5부

minseok·2023년 10월 26일
0
post-thumbnail

보안 그룹, 네트워크 ACL이 접근을 제어하고 라우팅 테이블이 경로를 제어한다.

접근 제어

접근 제어(access control)는 컴퓨팅 서비스를 보호하는 안전 장치다.
(필요한 트래픽만 허용하고 불필요하면 차단)

일반적으로 온프레미스 환경은 방화벽으로 접근을 제어
VPC에서는 보안그룹네트워크 ACL이 방화벽 역할을 함

제어 방식 비교

크게 2가지가 존재

화이트 리스트 : 모든 트래픽을 기본 차단한 상태에서 접속이 필요한 트래픽만 허용
블랙 리스트 : 모든 트래픽을 허용한 상태에서 거부할 트래픽만 선별해 차단

현실적으로 허용과 차단 둘 다 필요하다.

화이트 리스트 기반 결합 방식 : 모두 거부 규칙을 최하단에 놓고 상단에 허용과 거부 규칙을 혼합 배치
블랙 리스트 기반 결합 방식 : 모두 허용 규칙을 최하단에 놓고 상단에 허용과 거부 규칙을 혼합 배치

모든 트래픽을 기본 허용하는 2가지 블랙 방식은 관리자가 차단 대상을 모두 알고 있어야 하므로 관리가 까다롭다.
화이트 리스트 방식과 이중 보안 체계를 구성하는 게 좋음
단일로 사용하려면 화이트 리스트화이트 기반 결합 방식을 사용해야 함



결합 방식을 사용하는 경우 최하단 규칙을 제외한 모든 트래픽을 허용 또는 차단하며
룰 적용 순서에 따라 허용 가능한 트래픽 범위가 다르다.
만약 허용 : 160.83.25.0/24 -> 차단 : 160.83.25.60 순서인 경우
160.83.25.60 첫 번째 규칙에서 이미 허용을 해서 트래픽을 차단할 수 없다.

그렇다면 규칙 순서가 변경되어도 똑같은 일이 일어날 것 이다.

중요한 것은 AWS에서 보안 그룹(Security Group)은 화이트 리스트 방식
네트워크 ACL은 결합 방식을 사용한다.
네트워크 ACL의 경우 규칙 번호를 잘 설정하자.



SG(보안 그룹, Security Group) 표면적 특징과 다중 연결성

SG는 VPC의 보안 통제 3요소 중 하나로 ENI로 들어오거나 나가는 트래픽을 접근 제어함

SG 특징
1. SG의 패런트는 VPC
2. SG의 연결 대상은 ENI, 수명 주기 동안 다른 ENI에 연결할 수 있다.
어떠한 ENI에도 연결하지 않은 상태로 존재할 수 있음
3. SG는 1:N, N:1 다중 연결 특징이 있다.
4. 기본 VPC를 포함한 모든 VPC가 생성될 때 기본 SG도 함께 생성

SG의 연결대상은 ENI이다.
SG에 ENI를 연결하는 것은 ENI에서 나가거나 들어오는 트래픽을 SG로 통제
그러므로 인바운드에서는 목적지가 필요없고 아웃바운드에서는 출발지가 필요없다.



서버에 접속하는 클라이언트 수가 많아지면?

AWS는 SG 규칙 관리 효율을 높이고자 소스와 대상에 SG를 지정할 수 있게 설계했다.
단순한 규칙만으로 다량의 IP를 허용할 수 있음

문제는 SG를 사용하는 모든 서비스를 허용한다는 뜻이다.(SG는 1:N 성질을 가짐)

SG의 소스나 대상에 SG가 지정된 것은 AWS 컴퓨팅 서비스를 허용한다는 뜻으로 접속 대상도 AWS에 한정된다.(IP보다 안심할 수 있는 규칙)




NACL(Network Access Control List)

VPC 보안 통제 3요소 중 하나로 서브넷을 통과하는 트래픽 접근을 제어

NACL 특징
1. NACL의 패런트는 VPC
2. NACL의 연결 대상은 서브넷, 수명 주기 동안 다른 서브넷에 연결할 수 있고, 어떤 서브넷과 연결되지 않은 상태로 존재할 수 있음
3. 서브넷은 반드시 단 1개의 NACL과 연결돼 있어야 한다.(다른 NACL과 바꿔 사용할 수 있음)
4. VPC가 생성될 때 기본 NACL도 함께 생성된다.
5. 서브넷 생성 단계에서는 NACL을 지정할 수 없음. 무조건 기본 NACL에 자동 연결

서브넷은 새로운 NACL에 연결하면 기존 NACL과의 연결은 자동으로 끊어진다.
그리고 NACL 연결이 해재되면 기본 NACL과 다시 연결된다.

NACL 규칙의 형태

NACL은 허용과 거부 규칙을 결합한 제어 방식을 쓰므로 차단 규칙도 적용할 수 있다.
또한 규칙 적용 순서가 중요하므로 규칙 번호순서에 따라 트래픽 접근을 제어함

리스트 최하단에 ['*', 'Deny']로 설정돼 있다. (기본 형태는 화이트 기반 결합 방식)
블랙 기반 결합 방식을 사용하고 싶다면
[제일 높은 규칙 번호, 모두, Allow] 규칙을 만들면 ['*', 'Deny'] 규칙이 무효화 되고 블랙 기반 결합 방식으로 변경된다.

접근 제어 방식 비교

TCP 통신은 3-way handshake 방식으로 논리적 세션을 형성하고, 클라이언트, 서버가 데이터를 주고 받는다.
이때 4가지 통신 요소가 필요하다.
client ip, client port, server ip, server port
client port는 운영체제에게 할당받으며 이를 동적 포트(dynamic port), 휘발성 포트(ephemeral prot)라 한다.

이 동적 포트 번호는 일전 범위 내에서 변한다.
운영체제 종류마다 이 기본 범위는 정해져 있지만 변경할 수 있다.

그러나 SG는 최초 접속 규칙만 입력해도 통신할 수 있도록 설계돼 있음.
인바운드만 있어도 된다.

요청으로 온 client Ip, client Port를 저장한 후 서버가 다시 응답해 준다.
이런 방식을 상태 저장(Stateful) 방식이라고 하며 그 반대를 상태 비저장(Stateless)방식이라 한다.

SG는 상태 저장, NACL은 상태 비저장 방식을 사용한다.

NACL은 아웃바운드 허용 규칙에 클라이언트 허용 포트 범위를 입력해야 하나
운영체제 종류마다 동적 포트 범위가 달라 그냥 모든 포트 허용을 권장한다.

NACL을 화이트 방식으로 사용하면 아래와 같은 문제가 발생한다.

  1. 인바운드 규칙에 허용된 IP를 아웃바운드에도 적용
  2. 클라이언트의 동적 포트를 허용해야 함
  3. SG에 신규 허용 규칙을 등록할 때 마다 NACL도 함께 등록해야 한다.
    (NACL은 서브넷에 속한 모든 서비스의 접근 제어에 관여해야 함 <- 화이트 방식의 문제)

아래의 방식처럼 문제를 해결할 수 있다.

  • 개별 인스턴스의 접근 제어는 SG로 관리 서브넷 접근은 NACL로 관리
  • NACL은 블랙 기반 결합 방식을 사용, NACL 최하단에 모두 허용 규칙을 적용한 후 블랙 방식 NACL로 변경하고, 서브넷에 속한 인스턴스가 공통으로 차단할 트래픽만 NACL에 적용




경로 제어 : 라우팅 테이블

경로 제어(Routing Control)은 트래픽이 가는 방향을 안내하는 이정표다.
트래픽 경로에 이정표가 없으면 트래픽은 소멸된다.

트래픽은 앞으로 나아갈 힘만 있을 뿐, 어디로 가야할지는 이정표가 결정한다.

AWS에서는 목적지를 대상(Destination)이라 하고 방향을 타깃(Target), 게이트웨이(Gateway)라 한다.

AWS에서는 Destination, Target 모두 대상이라 번역한다...


Destination, Target 설정으로는 목적지까지 도달은 할 수 있으나 응답을 받을 수 없다.
응답 트래픽, 반환 트래픽을 받을 수 있도록 해야한다.


On-link(로컬) 라우팅

PC가 네트워크(CIDR) 내부에서는 특별한 라우팅 없이도 서로 접속할 수 있다.
사용자는 CIDR 범위 내 미사용 IP를 찾은 다음 할당한다.(DHCP 방식으로도 가능하다.)

아무튼 할당이 되었다면 { "Destination": "MyIP", "Target": "On-link"}같은 라우팅을 PC에 자동 생성한다.

만약 Destination : 92.75.100.0/24, Gateway : On-link, Interface : 92.75.100.128 라면
"목적지가 92.75.100.0/24의 범위라면 연결된 인터페이스(92.75.100.128)로 트래픽을 전달하세요."의 의미가 된다.
이런 메커니즘으로 트래픽은 라우팅 장치를 이동하며 목적지에 도달하게 된다.
(응답도 동일하다.)


VPC 라우팅

VPC 라우팅 특징
1. 라우팅 기본 개념은 온프레미스와 같음
2. VPC 라우팅은 라우팅 테이블로 관리
3. 라우팅 테이블은 서브넷 단위로 사용
4. 인스턴스나 서비스 내부 라우팅은 설정하지 않는다. 서비스가 놓인 서브넷의 라우팅이 곧 서비스의 라우팅
5. VPC 환경의 On-link는 Local로 표기하며 로컬 라우팅이라 함
대상은 VPC CIDR이다.

PC와 서버는 인스턴스, 소규모 네트워크는 서브넷으로 대체한다.

인터넷 게이트웨이(IGW)와 NAT 테이블

인터넷 게이트웨이는 VPC 내부 서비스가 인터넷으로 접속하게 해주는 리소스
(IGW를 통과한 트래픽은 인터넷으로 전송된다.)

IGW의 패런트는 리전이고 연결 대상은 VPC이므로 수명 주기 동안 리전 내부의 모든 VPC에 1:1 연결하고 해제할 수 있다.


VPC가 인터넷에 접속하려면 다음 요건을 만족해야 한다.

  • VPC에 IGW를 연결해야 함
  • 서비스가 놓인 서브넷 라우팅에 IGW를 타깃으로 설정해야 함
  • 서비스에 퍼블릭 IP 혹은 탄력적 IP를 할당해야 함



컴퓨팅 서비스가 퍼블릭 IP나 탄력적 IP와 연결되면 IGW는 NAT 테이블에 서비스의 주소 매핑 정보를 저장한다.

만약 인스턴스에 연결된 ENI의 프라이빗IP(92.75.100.128)와 퍼블릭IP(108.125.15.25)의 매핑 정보를 보관해 뒀다가, 서비스가 인터넷 접속을 시도하면 프라이빗 IP를 퍼블릭 IP로 변환해 인터넷으로 보낸다.
-> NAT 테이블에 프라이빗 IP와 매핑되는 퍼블릭 IP(혹은 탄력적 IP)가 없다면 트래픽을 보낼 수 없다.

profile
즐겁게 개발하기

0개의 댓글