AWS(Amazon Web Services) 환경에서 EC2 가상 서버를 생성하고 운영할 때, 시스템의 안전을 책임지는 가장 1차적인 방어선이 바로 보안 그룹(Security Group)입니다. 보안 그룹은 클라우드 인프라 내에서 가상 서버의 인바운드(들어오는 트래픽) 및 아웃바운드(나가는 트래픽)를 통제하는 상태 저장형(Stateful) 방화벽 역할을 수행합니다.
특히 리눅스 서버에 원격으로 접속하여 명령어를 제어하는 경로인 22번 포트(SSH)는 해커들과 무차별 자동화 해킹 봇들이 지금 이 순간에도 가장 집중적으로 공격하는 취약점입니다. 만약 보안 그룹 설정을 소홀히 하여 22번 포트를 전 세계에 개방해 두면 순식간에 서버가 하이재킹당해 악성코드나 크립토재킹(가상화폐 채굴)의 숙주가 될 수 있습니다. 본 가이드에서는 AWS EC2 보안 그룹의 핵심 개념을 이해하고, 가장 안전하게 22번 포트를 관리하고 설정하는 방법을 상세히 정리합니다.
1. AWS 보안 그룹의 동작 원리와 기본 개념
클라우드 방화벽인 보안 그룹은 리눅스 운영체제 자체 내부에 설치하는 소프트웨어 방화벽(UFW, iptables 등)과 별개로, AWS 네트워크 가상화 인프라 단에서 트래픽을 필터링해 줍니다. 즉, 악성 트래픽이 내 서버의 CPU나 메모리 자원을 갉아먹기 전에 AWS 기본 망에서 원천 차단해 주는 고마운 존재입니다.
보안 그룹을 설정할 때는 반드시 두 가지 핵심 규칙을 숙지해야 합니다.
첫째는 허용 규칙만 지정할 수 있다는 점입니다. 보안 그룹은 기본적으로 모든 접근을 차단하는 기본 원칙(Deny All)을 가지고 있습니다. 신뢰할 수 있는 특정 포트와 IP 주소만 ‘허용(Allow)’하는 화이트리스트 방식으로 통제 체계를 구축해야 합니다. 특정 악성 IP만 골라서 차단하는 블랙리스트 방식의 설정은 불가능합니다.
둘째는 상태 저장형(Stateful) 방화벽이라는 점입니다. 인바운드 규칙을 통해 특정 트래픽이 서버 내부로 들어오는 것을 허용했다면, 그 요청에 대한 응답 트래픽이 서버 외부로 나갈 때는 아웃바운드 규칙을 확인하지 않고 무조건 통과시킵니다. 따라서 나가는 트래픽인 아웃바운드 규칙은 기본값인 모든 포트 개방 상태로 유지해도 무방합니다.
2. 22번 포트 SSH 보안 그룹 인바운드 설정 절차
인스턴스에 원격 접속하기 위한 22번 포트는 철저히 관리자 계정만 접근할 수 있도록 차단벽을 세워야 합니다. AWS 콘솔에서 보안 그룹 규칙을 수정하는 단계별 절차는 다음과 같습니다.
1단계: 보안 그룹 편집 메뉴 진입
AWS 콘솔의 EC2 대시보드로 이동한 뒤, 왼쪽 사이드바 메뉴에서 [네트워크 및 보안] 하위의 [보안 그룹]을 클릭합니다. 현재 내 EC2 인스턴스에 연결되어 있는 보안 그룹을 선택한 뒤, 하단 탭이나 우측 상단의 인바운드 규칙 편집(Edit inbound rules) 버튼을 누릅니다.
2단계: SSH 규칙 수정 및 내 IP 매핑
기존에 설정되어 있던 SSH 규칙 항목을 찾거나, 없다면 규칙 추가(Add rule) 버튼을 누릅니다.
- 유형(Type): SSH를 선택하면 자동으로 포트 범위가 22번으로 세팅됩니다.
- 소스(Source): 기본값으로 흔히 설정되는
0.0.0.0/0은 전 세계 모든 컴퓨터가 내 서버의 22번 대문을 두드릴 수 있다는 뜻이므로 매우 위험합니다. 소스 유형 드롭다운 메뉴를 클릭하고 내 IP(My IP)를 선택합니다.
내 IP를 선택하면 AWS가 현재 내가 접속해 있는 로컬 컴퓨터의 공인 IP 주소를 자동으로 감지하여 1.2.3.4/32와 같은 형태로 주입해 줍니다. 슬래시 뒤에 붙는 32 비트는 오직 이 단 한 개의 정확한 IP 주소만 매핑하겠다는 강력한 통제 신호입니다.
3단계: 규칙 저장 및 실시간 적용
하단의 규칙 저장(Save rules) 버튼을 누르면 별도의 서버 재시작 과정 없이 즉시 방화벽 규칙이 인프라 망에 실시간 반영됩니다. 이제 내 컴퓨터를 제외한 전 세계의 그 어떤 PC에서도 내 서버의 22번 포트로 접속하려는 시도 자체를 할 수 없게 됩니다.
3. 카페나 공유 오피스 등 유동 IP 환경에서의 대처 방법
내 IP 옵션을 사용하여 보안 그룹을 묶어두면 철통 보안을 유지할 수 있지만, 장소를 이동하여 카페나 공유 오피스의 공용 와이파이를 쓰거나 집의 인터넷 모뎀이 재부팅되면 내 PC의 공인 IP 주소가 바뀌게 됩니다. 이 경우 바뀐 컴퓨터에서 서버 접속을 시도하면 타인으로 간주하여 Connection timed out 에러가 발생하며 원격 접속이 차단됩니다.
이때 당황하지 말고 아래의 유연한 조치법을 활용하시면 편리합니다.
첫째는 장소가 바뀔 때마다 AWS 콘솔에 스마트폰이나 노트북으로 접속하여 보안 그룹의 22번 포트 소스 항목을 다시 내 IP로 새로고침해 주는 방법입니다. 다소 번거롭지만 가장 안전한 정석적인 방법입니다.
둘째는 고정된 특정 IP 대역을 서브넷 마스크 기법으로 통째로 허용하는 방법입니다. 예를 들어 회사 사무실의 IP 대역이 일정 범위 안에서만 바뀐다면 소스 주소 끝자리를 1.2.3.0/24 형태로 지정하여 해당 사무실 망 전체를 신뢰 그룹으로 묶을 수 있습니다.
셋째는 AWS에서 제공하는 브라우저 기반 원격 접속 도구인 EC2 인스턴스 연결(EC2 Instance Connect)이나 시스템 관리자 세션 관리자(SSM Session Manager)를 활용하는 방법입니다. 이 도구들을 이용하면 내 컴퓨터의 IP 주소와 상관없이, 인프라 보안 그룹에서 22번 포트를 완전히 닫아둔 상태에서도 AWS 내부 보안망을 통해 웹 브라우저 화면 안에서 안전하게 리눅스 터미널 제어가 가능해집니다.
결론: 지속 가능한 보안 거버넌스 구축
클라우드 인프라 운영에 있어서 보안 그룹 설정은 단 한 번의 실수도 허용하지 않는 엄격한 영역입니다. 개발의 편의성을 위해 혹은 귀찮다는 이유로 22번 포트의 빗장을 풀어두는 안일한 행동은 내 소중한 데이터 자산과 시스템 서버를 통째로 위협에 노출시키는 지름길입니다.
오늘 가이드해 드린 화이트리스트 기반의 내 IP 설정 원칙을 철저히 준수하고, 웹 서비스 구동을 위한 80번(HTTP) 및 443번(HTTPS) 포트만 전 세계 사용자(0.0.0.0/0)에게 개방하는 영리한 방화벽 설정을 생활화하시기 바랍니다. 이러한 촘촘하고 단단한 인프라 관리 습관이 기업 자산과 개인 프로젝트를 해킹의 위협으로부터 영구적으로 지켜내는 최고의 예방책입니다.