보안 그룹 실습
EC2 서비스에 들어와서 왼편을 스크롤해서 내리다보면 보안 그룹을 찾을 수 있다.
보안 그룹은 네트워킹을 통해 EC2 인스턴스에 대한 접근을 통제하는 방법이다.
두 개의 그룹이 있는데, launch-wizard 는 EC2 인스턴스를 생성했을 때 만들었던 것이고 default 로 되어있는 기본값 그룹이 있다.
얘는 alias 계정을 생성했을 때 기본값으로 생성된 것이다.
launch-wizard 를 클릭하고 스크롤을 내리면 자세한 내용을 확인할 수 있다.
보안 그룹 ID를 확인할 수 있고 계정 내에서 보안 그룹을 고유하게 식별해주는 식별자이다.
또 내리다보면 3개의 인바운드 룰과 하나의 아웃바운드 룰을 가진 것을 알 수 있다.
인바운드 규칙 탭을 클릭하면 보안 규칙에 대해서 자세하게 볼 수 있다.
이전에 확인했던 것처럼 들어오는 녀석들에 대한 방화벽을 열어주는 규칙들이 적혀있고 여기서는 HTTP, TCP 프로토콜로 80번 포트로 들어오는 모든 IPv4 IP 주소를 허용하고, 또한 80번 포트로 들어오는 모든 IPv6 IP 주소를 허용하며 SSH, TCP 프로토콜로 22번 포트로 들어오는 모든 IP 주소를 허용한다.
아웃바운드 규칙으로는 어떤 타입의 트래픽이든, 어떤 프로토콜을 사용하든, 어떤 포트를 사용하든, 어떤 IP 주소로 도착하든 상관없이 모두 허용한다는 것을 알 수있다. 모든 것이 허용된다.
다시 인바운드 룰로 돌아가서 EC2 인스턴스에서 인바운드 룰의 힘을 확인할 수 있다. EC2 인스턴스로 다시 돌아가서 public IPv4 주소를 열면 Hello World 가 나오는 것을 확인할 수 있다.
이제 인바운드 룰을 수정할 것이다. 인바운드 규칙 탭에 들어가서 인바운드 규칙 편집을 클릭한다. HTTP 와 관련된 룰들을 삭제할 것이다. SSH 에 대한 규칙만 존재하게 될 것이다.
수정을 다 했으면 완료 버튼을 눌러 인바운드 룰 수정을 끝낸다. SSH 에 대한 룰 하나만 남아있는 상태이다.
다시 public IPv4 주소로 접근을 하면 로딩만 될 뿐 EC2 인스턴스로 접근을 할 수 없다. 응답을 받을 수 없는 이유는 인바운드 룰에서 HTTP 룰을 삭제했기 때문에 EC2 인스턴스에 접근을 할 수 없는 상태가 된 것이다. 일반적으로 AWS 에서 Time out 이슈가 발생해서 EC2 인스턴스에 연결하지 못했다면 보안 그룹 룰을 살펴봐야 한다.
일반적으로 ERR_TIMED_OUT 이라는 에러코드가 발생한다.
그러면 아까 했던 것처럼 인바운드 룰을 편집해야 하고, HTTP 룰을 다시 추가해야 한다. HTTP, TCP 프로토콜 사용하고 포트는 80번 포트를 사용하며 소스 유형은 IPv4 와 IPv6 의 모든 IP 주소가 접근할 수 있도록 해야 한다.
미리 구성된 인바운드 룰 옵션이 많기 때문에 인바운드 룰을 만드는 데 좋은 선택지가 될 수 있다.
만약 커스텀하게 세팅을 해야하는 경우에는 사용자 지정 TCP 타입을 선택하여 커스텀한 포트를 사용할 수도 있다.
EC2 인스턴스는 많은 보안 그룹을 가질 수 있고, 보안 그룹은 동일한 AWS region/VPC 내의 여러 EC2 인스턴스에 연결될 수 있다.