개발 환경 & 도구/AWS

[AWS]보안 그룹(Security Groups)

나맘임 2025. 6. 11. 23:59

보안 그룹(Security Groups)??

AWS에서 인프라를 다룰 때 가장 기본적이면서도 중요한 보안 요소 중 하나로 간단히 말해, EC2 인스턴스를 위한 가상 방화벽입니다. EC2 인스턴스에 적용해서 어떤 트래픽이 인스턴스로 들어오고(인바운드, Inbound), 어떤 트래픽이 인스턴스에서 나갈 수 있는지(아웃바운드, Outbound)를 제어하는 역할을 합니다. 서비스의 가장 앞단에서 네트워크 보안을 책임지는 기본적인 기술입니다.

보안 그룹은 규칙들의 모음이다.

각 규칙에는 다음과 같은 요소를 지정할 수 있습니다.

1. 프로토콜 : TCP, UDP, ICMP 등 트래픽의 종류

2. 포트 범위 : 허용할 포트 번호

3. 소스/대상 : 트래픽을 허용할 IP 주소 범위 또는 다른 보안 그룹

 

기본적으로 인바운드 규칙, 즉 인스턴스로 들어오는 모든 트래픽을 차단되어 있습니다. 이에 반해 아웃바운드 규칙, 인스턴스에서 밖으로 나가는 건 모두 허용되어 있습니다. 이는 외부에 접속을 차단하는 방화벽의 역할을 하고 있다는 뜻이기도 합니다. 

그림 1. 보안 그룹의 규칙 예시

 

위 그림 1처럼 프로토콜, 포트 범위, 유형, 소스/대상 을 설정할 수 있습니다.

0.0.0.0/0 은 모든 아이피를 의미합니다.

 

보안 그룹과 인스턴스의 연관 관계

간단히 생각했을 때, 하나의 인스턴스에 하나의 보안 그룹만 설정하실 수 있다고 볼 수 있습니다. 하지만, 전혀 그렇지 않습니다. 보안 그룹과 인스턴스는 1:1 관계가 아닙니다. N:N 관계입니다. 즉, 한 보안 그룹에 여러 인스턴스를 적용할 수도 있고, 인스턴스 하나에 여러 보안 그룹을 설정할 수도 있습니다.

 

여기서 N:N 관계와 모든 아웃바운드 규칙이 허용된다는 것을 이용하면 조금 괜찮은 설계를 할 수 있습니다. 

인스턴스 A에 보안 그룹 1, 보안 그룹 2를 부여했다고 가정해보겠습니다.

 

그림 2. 같은 보안 그룹을 가진 두 EC2 인스턴스 A,B

 

여기서 또 다른 인스턴스 B에 보안 그룹 1을 설정하면 B는 A에 접속할 수 있을까요??

접속이 가능합니다.

 

일단 B의 아웃바운드는 기본적으로 모두 허용이기 때문에 순조롭게 B는 나가게 됩니다.

A에 그 트래픽이 접속할 때가 문제죠.

하지만 A와 B는 같은 보안 그룹 1이기 때문에 인바운드 규칙이 같습니다.

그러므로 만약 그 트래픽이 인바운드 규칙에 속한 것이라면 통과하게 됩니다.

 

참고) 인스턴스 접속 시에 뜨는 버그로 보안 그룹 문제인지 파악하기

만약 인스턴스가 켜져있는데 타임아웃 발생 -> 보안 그룹 문제.

만약 "Connection refused" 발생 시엔 인스턴스 내부의 어플리케이션 에러이거나 실행이 안된 상태.