EC2 세팅 - 보안 그룹

2026. 1. 28. 16:51·Infra/AWS

 

EC2 인스턴스를 “컴퓨터 한 대를 빌린 것”이라고 했는데,
이걸 좀 더 쉽게 비유하면 집 한 채를 빌린 것이랑 비슷하다.

그럼 보안 그룹(Security Group)은 뭐냐?

집 바깥에 쳐져 있는 울타리 + 대문이라고 생각하면 제일 이해가 빠르다.

인터넷에서 누가 내 EC2(집)에 접근하려고 하면,
바로 집 안으로 들어오는 게 아니라 대문 앞에서 먼저 검사를 받는다.

  • “너 들어와도 돼?”
  • “어디서 왔어?”
  • “어떤 문(포트)으로 들어오려고 해?”

이걸 **보안 그룹 규칙(Security Group Rules)**이 결정한다.

즉, 보안 그룹은 EC2 주변에서 방화벽 역할을 하는 놈이고,
규칙은 그 방화벽이 “어떤 트래픽을 허용/차단할지” 정하는 기준이다.

 

 

보안 그룹 규칙은 2가지 방향이 있다 (Inbound / Outbound)

보안 그룹 규칙은 크게 두 가지 방향으로 나뉜다.

1) 인바운드(Inbound) 트래픽

외부 → EC2로 들어오는 트래픽을 말한다.
즉, 인터넷에서 누가 내 서버로 요청을 보낼 때 그 요청이 여기 해당된다.

  • “외부에서 들어오는 요청을 어떤 조건에서만 허용할 것인가?”

이걸 정하는 게 인바운드 규칙이다.

2) 아웃바운드(Outbound) 트래픽

EC2 → 외부로 나가는 트래픽을 말한다.

예를 들면 EC2 안에서:

  • 패키지 설치할 때(apt update, apt install)
  • 다른 API를 호출할 때
  • 외부 DB에 붙을 때

같은 상황에서 밖으로 나가는 트래픽이 여기에 해당한다.

 

 

규칙에서 핵심으로 보는 건 “포트 + IP 범위”

보안 그룹을 설정할 때 핵심은 결국 두 가지다.

  • 포트(Port): 어떤 문으로 들어오려는지
  • IP 범위(Source): 누가 들어오려는지 (어디서 오는 요청인지)

그래서 결국 인바운드 규칙은 이런 형태로 이해하면 된다.

 

“어떤 IP(또는 범위)가, 어떤 포트로 들어오는 요청을 허용할 건가?”

 

 

EC2 생성 시 보안 그룹 설정 흐름

EC2 인스턴스를 만들 때 보안 그룹 설정을 하게 되는데,
여기서 내가 실제로 한 흐름을 정리하면 이렇다.

1) 보안 그룹 이름은 프로젝트 기준으로

나중에 서버가 여러 개 생기면 보안 그룹도 여러 개 생긴다.
그래서 보안 그룹 이름은 프로젝트에 맞게 지어두는 게 좋다.

2) 기본으로 SSH(22번 포트)가 열려 있다 — 왜냐면 “원격 접속”해야 하니까

EC2는 “원격 컴퓨터”다.
즉, 내가 직접 그 컴퓨터 안에 들어가서 작업을 해야 한다.

그때 사용하는 접속 방식이 SSH다.

SSH는 쉽게 말하면:

“내 로컬에서, EC2라는 원격 컴퓨터로 들어가는 통로”

그리고 SSH는 기본 포트가 22번이다.

그래서 EC2를 만들 때 보통 기본으로:

  • 유형: SSH
  • 포트: 22

가 설정되어 있다.

근데 여기서 중요한 포인트

소스(Source)가 “위치 무관(0.0.0.0/0)”로 되어 있으면,
전 세계 어디서든 내 EC2에 SSH 접속을 시도할 수 있는 상태가 된다.

이게 “접속 자체”는 편하지만, 보안상 위험해진다.

3) 만약 “내 IP에서만 접속”하게 하고 싶다면?

SSH는 특히 위험하다.
왜냐면 SSH가 열려 있으면 누가 내 서버에 로그인 시도를 할 수 있기 때문이다.

그래서 보통 운영에서는:

  • 소스를 “위치 무관”으로 두는 게 아니라
  • 내 IP만 허용하도록 바꾸는 게 훨씬 안전하다.

방법은 간단하다.

  • 소스 유형(Source type)을 사용자 지정(Custom)
  • 내 IP를 직접 입력

즉,

“내 집(내 IP)에서만 대문(22번)을 열어두겠다”

이런 느낌이다.

4) “보안 그룹 규칙 추가”로 HTTP(80번 포트)를 열어준다

이제 서버를 배포할 거니까,
외부에서 내 서버로 요청이 들어올 수 있어야 한다.

그래서 인바운드 규칙에서 추가(Add rule) 버튼을 눌러서 규칙을 하나 더 만든다.

여기서 내가 허용할 건 HTTP다.

  • 유형(Type): HTTP
  • 포트(Port): 80 (자동으로 잡힘)

이게 의미하는 건 딱 이거다.

 

“외부에서 80번 포트로 들어오는 HTTP 요청은 EC2로 들어오게 허용하겠다.”

 

5) 소스(Source)는 왜 “위치 무관”으로 두는가?

여기서 SSH랑 HTTP의 차이를 구분해야 한다.

  • SSH(22)는 “관리자(나)”만 들어오면 된다 → 내 IP만 허용하는 게 안전
  • HTTP(80)는 “사용자(불특정 다수)”가 들어와야 한다 → 위치 무관이 자연스럽다

즉, HTTP 요청은 결국 사용자들이 보내는 거니까,
특정 IP만 열어두면 서비스 자체가 동작을 못 한다.

그래서 HTTP는 보통:

  • 소스: 위치 무관(0.0.0.0/0)

으로 둔다.

 

 

 

정리: 지금 내가 만든 보안 그룹 상태

내가 지금 만든 보안 그룹 규칙을 문장으로 요약하면 이거다.

  • SSH(22): EC2에 원격 접속하기 위한 문 → 가능하면 내 IP만 열어두기
  • HTTP(80): 사용자 요청을 받기 위한 문 → 불특정 다수가 접속해야 하니까 위치 무관

즉,

“나는 EC2에 들어가서 작업할 수 있어야 하고(SSH)
다른 사용자도 인터넷으로 내 서버에 요청을 보낼 수 있어야 한다(HTTP)”

그래서 이 두 개의 문을 열어둔 것이다.

 

'Infra > AWS' 카테고리의 다른 글

맥에서 EC2 접속하기  (0) 2026.01.28
EC2 세팅 - 스토리지  (0) 2026.01.28
EC2 세팅 - 헷갈렸던 것들 정리  (0) 2026.01.28
EC2란?  (0) 2026.01.28
배포란? - localhost에서 끝나면 서비스가 아니다  (0) 2026.01.28
'Infra/AWS' 카테고리의 다른 글
  • 맥에서 EC2 접속하기
  • EC2 세팅 - 스토리지
  • EC2 세팅 - 헷갈렸던 것들 정리
  • EC2란?
sqaxe1
sqaxe1
woojoo-devlog 님의 블로그 입니다.
  • sqaxe1
    Woojoo's Devlog
    sqaxe1
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Backend (9)
        • Servlet (7)
        • Spring (2)
      • Frontend (1)
      • CS (0)
      • Book (33)
        • 자바 웹 프로그래밍 Next Step (30)
        • 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD.. (1)
        • 성공과 실패를 결정하는 1%의 네트워크 원리 (2)
      • Engineering (0)
        • Testing (0)
      • Infra (6)
        • AWS (6)
      • Java (4)
      • Network (1)
      • 김영한 (28)
        • 자바 입문 (8)
        • 실전 자바 - 기본편 (6)
        • 실전 자바 - 중급편 (10)
        • 실전 자바 - 고급편 (4)
      • Web (39)
        • Web Basics (39)
      • Project (24)
        • NeoSquare (0)
        • Memo Evolution (24)
      • 정보처리기사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발서적
    java
    aws
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sqaxe1
EC2 세팅 - 보안 그룹
상단으로

티스토리툴바