Network Service 2
가용 영역이란?
Multi-Avilability Zone(Multi-AZ)로, AWS에서 제공되는 한 리전의 데이터센터의 묶음.
서울 리전은 2a, 2c, 2b, 2d 총 4개의 가용영역으로 구성되어 있다.
가용 영역 간 데이터 통신 비용
1. 같은 가용 영역 간 통신은 무료: 가용 영역 내 사설 IP 통신은 무료이다.
* 하지만 A 인스턴스에서 외부로 나간 트래픽(공인 IP로 변환되어 외부로 나가게 됨)을 같은 가용 영역의 B 인스턴스로 전송하는 것은 과금!
2. 다른 가용 영역 간 통신은 유료: 다른 가용영역과 통신하기 위해서는 VPC 밖인 인터넷을 통해 다른 가용 영역으로 가게 되기 때문에 비용이 발생된다.
AWS의 보안 서비스
1. 보안 그룹(Security Group)
- 들어오는 트래픽(인바운드 트래픽)과 나가는 트래픽(아웃바운드 트래픽)을 제어하는 방화벽 서비스이다.
- Stateful 방식으로 인/아웃 트래픽의 정보를 기억하고 있다.
- 화이트리스트: 허용 중심. 특정 트래픽을 거부(DENY)하는 방법은 존재하지 않는다.
- 서비스 1개에 최대 5개의 보안 그룹을 연결할 수 있다. 여러 개의 보안 그룹이 존재할 때, 한 개의 보안 그룹에서 트래픽이 허용될 경우 트래픽이 허용된다.
- AWS에서 기본으로 제공하는 Default-sg와 직접 생성하는 sg는 다르기 때문에 유의해야 한다.
Default-sg | custom-sg | |
인바운드 | 자신의 ID | 모든 트래픽 거부 |
아웃바운드 | 모든 트래픽 허용 | 모든 트래픽 허용 |
* EC2에서 보안 그룹을 새로 설정할 때는 접속 포트 하나만 인바운드 규칙에 추가되어 생성된다.
Security Group 심화
위에서 말했 듯 보안 그룹은 특정 트래픽을 허용하는 구조로 되어 있다.
한 ip만 콕 찝어 트래픽을 허용할 수도 있고, 서브넷 단위로 192.168.0.0/24 같은 방법으로 네트워크 대역 전체를 허용할 수 있다.
그런데, 만약 10개의 서버만 인바운드 규칙에 등록하고 싶을 땐 어떻게 해야할까?
1. 10개 전부 등록해주기 -> 서버가 2000대면...? 끔찍하다
2. 10개의 서버가 포함된 서브넷 범위를 설정해주기
1번보다 2번 방법이 훨씬 나아보인다. 그렇지만 주의할 점은 10대를 제외하고도 같은 네트워크 대역에 존재하는 모르는 서버들까지 접속할 수 있는 상태가 되어버린 것이다.
그리고 만약 10개의 서버 중에 한 대가 해킹당해버리면 어떻게 해야할까?
일단 급한대로 보안 그룹 인바운드 트래픽 허용 취소하면 될까?
-> 잘 작동되는 9개의 서버까지 이용할 수 없기 때문에 가용성 폭망하고 운영에 문제가 생겨버림
그래서 우리는 보안 그룹 ID를 활용할 일이 많아질 것이다.
인바운드 트래픽 source로 넣어주게 되면, 같은 보안 그룹에 연결된 서버만 트래픽을 주고 받을 수 있기 때문이다.
위처럼 10대의 서버 중 1대의 서버가 고장나거나 해킹당할 경우, 보안 그룹에서 해킹된 인스턴스만 빼고 새로운 보안 그룹을 달아주면 해결 가능하다.
2. NACL(Network Access Control List):
- 특정 트래픽을 허용, 거부할 수 있는 방화벽 서비스이다.
- Stateless 방식으로 인/아웃 트래픽 정보를 기억하지 못한다. 들어가면 들어간대로 끝, 나가면 나가는 대로 끝. 나간 녀석이 다시 들어오려고 해도 정보가 저장되어 있지 않기 때문에 들어올 수가 없다.
ex. NACL에 저장된 규칙이 아래와 같을 경우 처음 규칙만 적용된다.
sequence 60 - 192.168.31.1 거부
sequence 80 - 192.158.31.1 허용
=> 192.168.31.1 주소는 60번 규칙에 의해 거부당한다. 이후 80번 규칙에서 해당 주소를 허용해도 이미 거부되었기 때문에 트래픽 들어올 수 없다.
- 블랙리스트: 거부 중심. 보안 그룹과 비교하면 허용은 물론, 거부할 수도 있다.
* 나클은 독특한 게, defualt에서 인바운드, 아웃바운드 모두 허용하고 있지만, 한 번이라도 수정하게 되면 전부 트래픽이 거부되는 것으로 변경된다... 굉장히 까다로운 녀석이라 웬만하면 보안그룹을 사용하고 나클은 만지지 않는 것이 좋음!
EIP(Elastic Internet Protocol)
- AWS에서 제공되는 고정 공인 IP 서비스이다.
- AWS EC2 인스턴스를 새로 생성하거나, 재부팅할 경우 공인 IP가 변경된다. 유동적이기 때문에 public IP를 고정하고 싶을 경우 생성해서 사용할 수 있다.
- NAT Gateway에는 EIP를 적용해야 한다. -> 결국 NAT Gateway 사용하려면 돈이 든단 뜻.
* 예전에는 EIP를 생성하고 인스턴스에 연결하지 않을 경우에만 과금되었는데, 이제는 생성하기만 해도 과금이 되어버린다. . .
VPC Peering
- VPC와 VPC를 연결하는 서비스( = Direct Connect 역할)
- 다른 회사간, 혹은 외국 지사와 연결할 때 사용하게 된다. (국제 회선 개념으로 실제 국제 회선보다 빠르고 안전하게 연결된다.)
- VPC Peering 연결시 인터넷 통신을 하지 않으므로 보안에 굉장히 좋다! 피어링 자체가 전용회선 역할을 한다.
VPC Peering 사용 시 주의할 점
- 같은 IP 대역일 경우 연결 불가능. VPC 생성할 때 꼭 다른 IP 대역으로 설정해야 한다.
- 피어링은 Transit 불가능이다. 무조건 1:1 연결이므로 A-B, B-C 피어링일 경우, A와 C는 서로의 데이터를 주고받을 수 없다.
* 이를 해결하기 위해 AWS에서 Transit Gateway를 개발하긴 했다.
- 피어링 요청 시 요청 받은 사람이 '수락' 버튼을 눌러줘야 피어링이 활성화된다.
- 각각의 라우팅 테이블 설정을 꼭! 해줘야 한다. ex. 싱가폴 - 서울
- 보안 그룹 인바운드 규칙 수정도 마찬가지로 해줘야 한다. 어차피 인터넷 통신이 안 되기 때문에 인바운드 트래픽을 모든 트래픽으로 설정하여도 안전하다.