보안그룹 ( Security Group )

。NACL ( Network Access Control List )와 함께 AWS에서 방화벽의 역할을 수행하는 서비스
▶ AWS 인스턴스 ( EC2, RDS, Load Balancer 등 )의 컴퓨팅 Resource에 접근하는 모든 트래픽을 제어하여 네트워크 보안을 책임
。IP 주소 대역과 포트를 기반으로 AWS 인스턴스 에 대한 모든 Inbound Traffic / Outbound traffic을 규칙을 설정하여 제어하는 가상방화벽
。보안그룹은 기본값으로 Inbound Traffic에 대해 모두 차단하고, Outbound Traffic에 대해 모두 허용하도록 설정됨
▶ 보안 그룹 생성 시 허용할 IP주소의 CIDR Block과 포트를 설정하는 이유
。실무에서는 보안그룹을 서비스 별로 보안그룹을 구축하여 Inbound Traffic을 철저하게 규제
Traffic 종류
。Inbound Traffic : 외부에서 인스턴스로 전송하는 트래픽
▶ 보안그룹에 등재되지 않은 외부의 IP 대역과 포트에서 요청 시 차단
。Outbound Traffic : 인스턴스에서 외부로 전송하는 트래픽
보안그룹이 적용된 EC2 인스턴스에 접속 시 차단되는 증상
EC2 인스턴스 접속 시 타임아웃이 발생하는 경우
。보안그룹에 의해 차단됨
▶ 보안그룹에 해당 IP주소와 포트를 허용하도록 설정
EC2 인스턴스 접속 시 접근할 수 없는 페이지가 도출 시
。어플리케이션에 의해 차단됨
보안그룹 특징
EC2 인스턴스에 여러 보안그룹이 적용가능
。인스턴스에 여러 보안그룹 적용 시 모든 보안그룹 규칙을 중복해서 적용
▶ 인스턴스와 보안그룹 : M:N 관계
보안그룹은 리전 단위, ENI 단위 또는 VPC 단위로 적용됨
。특정 리전에서 설정된 보안그룹을 다른 리전에서 사용이 불가능
。 보안그룹을 VPC에 적용 시 VPC 내부에만 적용되며 VPC 외부는 적용되지않음.
。NACL은 서브넷 단위로 적용
보안그룹 설정 시 허용할 IP주소 범위와 포트( SSH / HTTP )를 설정하여 제어
。EC2 인스턴스는 기본적으로 모든 Port는 비활성화되어 있음.
▶ 보안그룹을 통해 EC2 인스턴스의 특정 Port를 활성화하여 트래픽을 송수신하도록 설정

。80, 0.0.0.0 : 포트번호 : 80의 모든 IP 주소에 대해 허용

。EC2 인스턴스에 적용된 보안그룹에서 80, 443의 포트를 허용하는 경우 포트 : 8080에서 EC2 인스턴스로 접속 시 차단
EC2 인스턴스는 외부로 Traffic을 전송 시 Ephemeral Port로서 임의의 포트번호를 선택하여 전송
보안그룹은 Stateful 특징을 지닌다.
。EC2 인스턴스에 전송되는 트래픽 중 오직 Inbound Traffic에 대해서만 규칙을 설정하여 검증을 수행하고 Outbound Traffic에 대해서는 검증을 수행하지 않는다.
Stateful :

。인스턴스에 유입하는 Inbound Traffic에 대해 검증을 수행하고 Outbound Traffic에 대한 별도의 검증을하지 않는다.
Stateless

。인스턴스에 유입하는 Inbound Traffic와 Outbound Traffic에 대해 모두 검증을 수행한다.
。일반적으로 송신 Port = Epemeral Port이므로 포트번호가 동적으로 변화하므로 Outbound Traffic 규칙 설정 시 포트가 동적으로 변화하는 범위를 지정하여 허용
。NACL은 Stateless한 특징을 지닌다.
보안그룹은 Source와 Destination으로 구성
Source
。IP Range ( = CIDR ) , 접두사 리스트, 다른 보안그룹으로 구성
접두사 리스트 ( Prefix List )
。하나 이상의 CIDR Block의 집합
。IPv4, IPv6 중 하나를 선택하여 사용.
。보안그룹 또는 라우팅 테이블에서 많은 Source을 참조하기위해 사용

。 좌측 접두사 리스트에 IP주소를 정의 시 해당 접두사 리스트를 참조하는 보안그룹에 자동으로 적용
▶ 각각의 보안그룹에 IP주소를 추가할 필요 없이 접두사 리스트에만 추가
。 IP주소는 동적으로 변동하기에 수많은 보안규칙을 접두사 리스트로 참조하도록 설정하여 접두사 리스트에서 IP주소를 관리하면 편리하다.
접두사 리스트 종류
고객 관리형
。사용자가 직접 IP주소의 생성 / 수정/ 삭제를 수행하는 접두사 리스트
AWS 관리형
。AWS 서비스 ( = S3, DynamoDB, CloudFront 등 )들을 위한 IP목록
▶ 사용자가 직접 수정 / 삭제 / 업데이트가 불가능.