기술

EC2 서버 보안의 첫걸음: 웹 서버용 보안 그룹 만들기

스타스토리. 2025. 6. 24. 21:05
반응형
핵심 요약: 본 문서는 AWS의 핵심 보안 요소인 보안 그룹(Security Group)의 개념과 역할을 설명한다. 특히 상태 저장(Stateful) 특성과 네트워크 ACL과의 차이점을 비교하고, 웹 서버용 보안 그룹을 직접 생성하는 과정을 단계별로 안내하여 인스턴스 수준의 네트워크 보안을 구축하는 방법을 제시한다.

클라우드 환경에서 리소스의 보안을 확보하는 것은 가장 중요한 과제 중 하나이다. AWS는 이를 위해 여러 계층의 보안 기능을 제공하며, 그중 가장 기본적이면서도 강력한 것이 바로 보안 그룹(Security Group)이다. 보안 그룹은 EC2 인스턴스에 대한 가상의 방화벽 역할을 수행하며, 인스턴스로 들어오고 나가는 트래픽을 정밀하게 제어한다. 적절한 보안 그룹 설정은 허가되지 않은 접근을 차단하고 공격 표면을 최소화하는 클라우드 보안의 첫걸음이다.

1. 보안 그룹(Security Group) 핵심 개념

보안 그룹은 개별 인스턴스 수준에서 적용되는 네트워크 트래픽 필터이다. 특정 포트, 프로토콜, 소스 IP에 대해 '허용(Allow)' 규칙을 설정하는 방식으로 동작하며, 명시적으로 허용되지 않은 모든 트래픽은 기본적으로 차단된다.

1.1. 상태 저장(Stateful) 특성

보안 그룹의 가장 중요한 특징은 상태 저장(Stateful) 방식이라는 점이다. 이는 인스턴스로 들어오는 요청(Inbound)이 보안 그룹의 허용 규칙을 통과하면, 해당 요청에 대한 응답 트래픽(Outbound)은 별도의 아웃바운드 규칙 없이도 자동으로 허용됨을 의미한다. 예를 들어, 웹 서버로 들어오는 HTTP(포트 80) 요청을 허용했다면, 사용자의 웹 브라우저로 다시 나가는 웹 서버의 응답은 자동으로 허용된다. 이 특성 덕분에 관리자는 반환 트래픽에 대한 복잡한 규칙을 설정할 필요 없이 인바운드 규칙에만 집중할 수 있다.

1.2. 보안 그룹 vs. 네트워크 ACL 비교

VPC에는 보안 그룹 외에 네트워크 ACL(NACL)이라는 또 다른 방화벽이 존재한다. 두 기능은 적용 범위와 작동 방식에서 명확한 차이가 있다.

특징 보안 그룹 (Security Group) 네트워크 ACL (Network ACL)
적용 범위 인스턴스 레벨 (1차 방어선) 서브넷 레벨 (2차 방어선)
규칙 유형 허용(Allow) 규칙만 지원 허용(Allow) 및 거부(Deny) 규칙 지원
상태 관리 상태 저장 (Stateful) 상태 비저장 (Stateless)
규칙 평가 모든 규칙을 평가 규칙 번호 순서대로 평가

일반적으로 세분화된 제어가 가능한 보안 그룹을 주 방어 수단으로 사용하고, 네트워크 ACL은 특정 IP 대역의 악의적인 접근을 서브넷 수준에서 원천 차단하는 보조적인 역할로 활용한다.

2단계: 웹 서버용 보안 그룹 생성 실습

외부 사용자의 웹 접속(HTTP)과 관리자의 원격 접속(SSH)을 허용하는 웹 서버용 보안 그룹을 생성하는 과정을 진행한다.

2.1. 기본 정보 설정

  • AWS VPC 콘솔의 좌측 메뉴에서 '보안 > 보안 그룹'으로 이동한 후, '보안 그룹 생성' 버튼을 클릭한다.
  • '기본 정보' 섹션에 다음과 같이 입력한다. 이름과 설명은 그 용도를 명확히 알 수 있도록 작성하는 것이 관리 효율성을 높인다.
- 보안 그룹 이름: webserver-sg
- 설명: Security group for web servers
- VPC: VPC-Lab (이전에 생성한 VPC 선택)

2.2. 인바운드 규칙 설정

'인바운드 규칙' 섹션에서 '규칙 추가' 버튼을 눌러 아래 두 가지 규칙을 설정한다.

# 규칙 1: 관리자 원격 접속 허용
- 유형: SSH
- 프로토콜: TCP
- 포트 범위: 22
- 소스: 내 IP

# 규칙 2: 웹 서비스 접속 허용
- 유형: HTTP
- 프로토콜: TCP
- 포트 범위: 80
- 소스: 위치 무관 (0.0.0.0/0)
🧐 SSH 접근 제어의 중요성
SSH(포트 22)는 서버를 직접 제어할 수 있는 강력한 권한을 제공하므로, 접근을 매우 엄격하게 제한해야 한다. 소스를 0.0.0.0/0(위치 무관)으로 설정하는 것은 서버를 전 세계의 모든 공격자에게 노출시키는 것과 같아 매우 위험하다. 반드시 '내 IP'를 선택하여 현재 접속한 네트워크의 공인 IP에서만 접근을 허용하도록 설정하는 것이 보안의 기본 원칙이다.

2.3. 생성 완료

아웃바운드 규칙은 기본적으로 모든 트래픽을 허용(모든 트래픽 | 모든 위치 | 0.0.0.0/0)하도록 설정되어 있다. 이는 인스턴스가 소프트웨어 업데이트나 외부 API 호출 등을 위해 인터넷으로 나가는 통신을 허용하는 것이므로, 특별한 경우가 아니면 기본값을 유지한다. 모든 설정을 확인한 후 '보안 그룹 생성' 버튼을 클릭하여 생성을 완료한다.

3. 보안 그룹 관리 모범 사례

보안 그룹을 효과적으로 관리하기 위한 몇 가지 모범 사례는 다음과 같다.

  • 최소 권한의 원칙: 반드시 필요한 프로토콜과 포트만 최소한의 소스에 대해 허용하여 공격 표면을 최소화해야 한다.
  • 소스에 다른 보안 그룹 지정: 다중 계층(Multi-tier) 아키텍처에서 계층 간 통신을 허용할 때 유용하다. 예를 들어, 데이터베이스 서버의 보안 그룹은 애플리케이션 서버의 보안 그룹 ID를 소스로 지정하여, 해당 보안 그룹이 적용된 인스턴스들의 접근만 허용할 수 있다. 이는 IP 주소가 동적으로 변경되는 Auto Scaling 환경에서 매우 효과적이다.
  • 정기적인 검토: 불필요하게 열려 있거나 과도하게 허용된 규칙이 있는지 정기적으로 검토하고 정리해야 한다.

결론

지금까지 웹 서버용 보안 그룹을 생성하는 과정을 통해, 인스턴스 수준의 네트워크 트래픽을 제어하는 방법을 학습하였다. 보안 그룹은 그 자체로 강력한 보안 도구이며, 최소 권한 원칙에 따라 정교하게 설계하고 관리할 때 그 효과를 극대화할 수 있다.

이렇게 생성된 `webserver-sg`를 EC2 인스턴스에 적용하면, 허용된 규칙에 따라서만 외부와 통신하는 안전한 서버 환경을 구축할 수 있다. 보안 그룹의 올바른 이해와 활용은 AWS 클라우드 인프라 보안의 가장 중요한 기초이다.

반응형