보안그룹

보안 그룹은 AWS 에서 제공하는 방화벽 모음이다.
서비스를 제공하는 애플리케이션이라면 상관 없지도 모르지만,

RDS나 S3처럼 외부에서 함부로 접근하면 안되는 인스턴스는 허용된 IP 에서만 접근하도록 설정해야한다.

  • 인바운드 (Inbound): 외부 -> EC2 인스턴스 내부 허용
  • 아웃바운드 (Outbound): EC2 인스턴스 내부 -> 외부 허용

1. EC2 인스턴스의 보안 그룹 설정

1-1. 인스턴스에 적용된 보안 그룹 확인

인스턴스의 보안 탭으로 이동하면 현재 인스턴스에 적용된 보안 그룹을 확인할 수 있다.

인스턴스를 생성할 때 설정했던 SSH 트래픽 허용 설정도 보인다.

이제 이 보안 그룹의 인바운드/아웃바운드 설정을 편집할것이다.

1-2. 사이드 바에서 보안 그룹으로 이동 후 편집 창으로 이동

1-3. 원하는 인바운드 규칙으로 편집

인바운드 규칙은 위에서 설명했듯 외부에서 EC2 인스턴스로의 접근을 관리한다.

우선 로컬에서 SSH로 접근하는것과 8080 포트로 오는 요청만 허용한다.

필요 시 다른 포트도 추가하면 된다.

아웃바운드 규칙은 딱히 건들 필요 없으니 모든 IP에 대해 열어두는 기본 설정을 유지한다.

1-4. 인스턴스로 이동해서 인바운드 규칙 변경 확인

EC2 인스턴스 정보에서 보안 규칙이 잘 변경 됐는지 확인한다.


2. 보안 그룹 설정 변경 후 EC2의 스프링 부트 서버 접속

변경된 보안 규칙이 적용되는데 시간이 조금 걸릴 수 있으니 조금 기다렸다가 접속한다.

다시 요청을 하면 아래처럼 서버가 제대로 떠있고, 접속할 수 있음을 확인할 수 있다.

(본인은 스프링 부트 서버를 8082 포트로 열어서 인바운드 규칙을 8082로 바꿨다.)

EC2 인스턴스에 Spring Boot 서버 띄우기

저번 글에서 EC2로 jar 파일을 이동시켰다.

이제 이 jar 파일로 서버를 띄우기만 하면 된다.

하지만 EC2는 아직 생성한 상태 그대로이기 때문에 자바가 설치되어있지 않기 때문에 설치해야한다.


1. EC2 인스턴스에 JDK 설치

1-1. OS에 맞는 패키지 관리자로 JDK 설치

OS마다 패키지 관리자가 다르기 때문에 OS에 맞는 패키지 관리자로 JDK를 설치하면 된다.

본인은 ubuntu로 OS를 설정했기 때문에 apt를 사용한다.

설치는 되게 간단하게 아래 두 줄이면 JDK를 바로 설치할 수 있다.

// EC2 인스턴스에서
sudo apt-get update
sudo apt-get install openjdk-17-jdk

// apt나 apt-get이나 큰 차이는 없어서 뭘 쓰든 상관없다.

1-2. 자바 버전 확인

아래처럼 java -version 명령어로 자바 버전을 확인해서 확인 가능하면 설치가 잘 된것이다.

2. EC2에서 스프링 부트 서버 띄우기

jar 파일이 있는 경로에서

아래처럼 명령어를 입력하면 jar 파일로 스프링부트 서버를 띄울 수 있다.

또한 종료는 ctrl + C로 스프링 부트 서버를 종료시킬 수 있다.(종료까지 시간이 좀 걸릴 수 있음)

java -jar {jar파일 이름} &   

// 위에서 &는 안붙여도 되지만 &를 붙이면 백그라운드에서 실행 시켜서 다른 작업 가능

3. EC2에서 띄운 스프링 부트 서버에 접속

이제 http://{탄력적 IP}:8080 으로 접속하면 아래와 같은 창을 확인할 수 있다.

(실패하는게 당연함)

4. 실패한 이유

다른 설정을 하지 않고 이대로 접속하면 접속이 차단되는것은 정상적인 응답이다.

인스턴스의 보안 그룹 설정을 하지 않았기 때문에 기본 설정이 외부에서 오는 차단을 막기 때문이다.

따라서 다음 글에서 처럼 인바운드/아웃바운드 보안 그룹 설정을 하도록 한다.

+ Recent posts