1. NACL
인스턴스에 대한 보안 설정 방법이 2가지 있다.
NACL - stateless
Security Group - stateful
* stateless와 stateful이란?
클라이언트 - 클라이언트 통신을 할 때 source와 target의 IP와 포트가 각각 존재한다.
그리고 request를 보내는 포트(Outbound)와 response를 받는 포트(Inbound)는 다르다.
보통 outbound 포트는 1025~65535 임시 포트를 사용한다.
- stateful 이란
EC2를 inbound : 80 / Outbound : none 인 Security Group 으로 감싼다면
outbound 포트는 허용은 안 했지만 방금 들어온 request 트래픽의 source와 target 정보는 기억하기 때문에 response(1025로)는 보내줄 수 있다는 의미.
- stateless 란
NACL의 Inbound / Outbound 룰을 무조건 따름.
트래픽의 발신지, 정보를 따지지 않는다.
- NACL이 더 엄격한 보안 정책이다.
2. NACL설정 실습
그림과 같이 VPC를 생성하면 자동으로 NACL 하나가 생성된다.(VPC ID를 보면 생성한 VPC 이름이 적혀있음)
이 default NACL을 private으로 이름만 바꿔준다. (private / public 서브넷이 별도로 존재하고, 각각 별도의 NACL을 생성하는 것이 목표이기 때문)
그리고 "네트워크 ACL 생성"버튼 클릭하여 public 서브넷용 NACL을 생성하고 VPC 도 사전에 생성한 fastcampus-customvpc를 선택해준다.
이제 NACL과 서브넷을 연결해주어야 한다!
서브넷 연결 탭에서 서브넷 연결 편집을 눌러 연결 설정해준다.
* VPC생성 시 자동으로 만들어진 NACL은 VPC 생성시 만들어진 기본 서브넷(앞 실습에서 private subnet으로 이름/설정값 바꿔줌)과 연결되어있는 것을 확인할 수 있음.
이제 인바운드/아웃바운드 규칙을 추가해주어야 한다.
public NACL에 대해 아래와 같이 설정해준다.
여기서 규칙 번호의 의미는 숫자의 크기에 따라 우선순위(100 > 200 > 300 순서로 )
만약 규칙 번호 101로 port : 22 거부로 추가한다면 100 번에 허용으로 설정한 규칙에 따라 inbound를 허용하게 된다.
마찬가지로 규칙번호 101으로 모든 포트에 대해 거부 규칙을 추가하면
22번 포트를 제외한 모든 포트에 대해 Inbound 거부하게 된다.(100번 규칙이 우선순위 먼저라서 22번 포트는 허용)
이제 아웃바운드 규칙을 추가하면
규칙 번호 : 100
포트 범위 : 1024 - 65535
허용/거부 : 허용
으로 추가해보자
* response는 임시 포트(1024-65535)로 주어지기 때문에 outbound로 허용해주어야 트래픽 연결/진행이 가능하기 때문.
3. EC2 두 개를 만들어 인바운드/아웃바운드 규칙이 적용되는지 보기!
public subnet 안에 EC2 하나 만들기
EC2를 검색하고 인스턴스 시작 누르기
이름 : public_ec2
키페 어는 없어서 새로 만들었다
* 간단한 실습이니 그냥 AWS Linux > t2.micro 선택
사전에 생성한 VPC를 선택하고 서브넷은 public-subnet으로 선택.
퍼블릭 IP 자동할당이 기본적으로 비활성화가 되어있다면
VPC > 서브넷 > public 서브넷 체크&작업 > 서브넷 설정 편집에서 아래와 같이 자동할당 IP 설정을 ~~ 활성화로 바꾼다.
EC2를 띄웠을 때 접근하기 위한 퍼블릭 IP주소가 있어야 하는데 "비활성화"상태는 퍼블릭 IP를 할당해주지 않는다는 의미
그리고 네트워크 설정에서 보안 그룹을 설정해준다. (그동안 NACL과 비교했던 Security Group)
이름/설명 : fastcampus_sg
80과 443 포트를 추가하면서 소스 유형을 위치 무관을 바꾸면 0.0.0.0/0 이 추가된다.
고급 세부 정보의 사용자 데이터 칸에
#!/bin/bash
yum install httpd -y
service httpd start
를 입력해준다.
NACL의 inbound 규칙에 80 번포트를 차단하는 규칙을 추가하면 화면 접근이 안되고 계속 로딩중으로 대기상태인 것을 확인할 수 있다!
'개발자 :-) > AWS' 카테고리의 다른 글
Python AWS Lambda Telegram bot 구축(1) - 개요 (0) | 2022.11.22 |
---|---|
AWS (VPC) Bastion Host 만들기(SSH 접속방법) (0) | 2022.10.11 |
(VPC) Internet Gateway와 라우팅 테이블생성 (1) | 2022.10.07 |
VPC와 Private, Public Subnet 만들기 (1) | 2022.10.07 |
AWS 기초와 VPC (1) | 2022.10.04 |
댓글