Web/AWS

EC2 방화벽(보안그룹) 설정

leonhong 2023. 8. 23. 11:50

EC2 방화벽 설정 개요

 EC2도 서버이므로 방화벽(인바운드 아웃바운드)설정을 해야 보안을 지킬수 있다. 그래서 해당 설정을 보안그룹을 이용하여 할 수 있다. EC2는 생성될 때, 기존에 생성된 보안그룹을 지정하지 않으면 인바운드는 모두 막고, 아웃바운드는 모두 풀어주는 기본 방화벽을 생성해준다.  

그리고 특이한 점은  EC2와 EC2간의 통신을 할때는 보안그룹을 인바운드 설정이 가능하다는 것이다.

 

보안그룹

 방화벽 설정을 미리 해놓은 파일이라고 생각하면 된다. 하나의 보안그룹을 만들면 그 안에 인바운드와 아웃바운드 설정을 할 수 있다. 그리고 EC2에 보안그룹을 추가하면 해당 보안그룹의 인바운드와 아웃바운드 설정이 적용된다. 하나의 보안 그룹을 만들면, 그것을 여러개의 EC2에 적용할수 있어서 유지보수에 편리하다.

  예를 들어 인바운드의 80포트를 모든 IP에 허용하는 ALL 이라는 보안그룹을 만들었다고 하자. 그리고 웹서비스를 하기 위해 EC2를 2개 만들때, 각각 EC2 보안그룹 설정에서 ALL을 선택하면 인바운드 80포트는 모두 열리게 된다. 그리고 운영을 하다가 나중에 SSL을 위해서 443포트를 열어야 할때는 ALL 보안그룹의 인바운드 설정에 443포트를 열어주면, 운영하는 EC2의 방화벽을 손대지 않아도 자동으로 443포트가 열리게 된다. 

 

동일한 네트워크(AWS에서는 VPC라고 부름)에서 EC2간에 방화벽 설정하기

1. 내부 IP와 포트로 설정

  동일한 네트워크상에 있으므로 내부IP로 설정해줘야 함.  

 

2. 보안그룹 자체를 방화벽(인바운드, 아웃바운드)에 설정

  AWS라서 가능한 방식 같은데, 인터넷에서 찾아보면 나름 권장하는 방법이다.

  보안그룹 secA와 보안그룹 secB를 만든다. EC2 ecA를 만들어서 보안그룹은 secA로 설정, EC2 ecB를 만들어서 secB로 설정한다. 

  secB의 인바운드 설정에 규칙을 추가하는데, 보안그룹 secA를 허용하게 해준다. 

  이렇게 설정하면 ecA에서 ecB로 요청이 가능하고, 그 반대는 불가능해진다. 보통 frontend와 backend 분리해서 운영할때 많이 사용하는 방식이다. 

 

 참고로 이렇게 하면 AutoScaling을 수행할때, 자동으로 늘어나는 개별 서버들에  방화벽에 일일이 설정하는것이 아닌, 보안그룹을 일괄적으로 적용이 가능해진다.

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

Lightsail의 Window 버전에서 Django 배포  (0) 2022.01.01