AWS(Amazon Web Service)

[AWS] EC2의 Security Groups(보안 그룹)

yunseohhe 2024. 9. 13. 15:00

Security Groups(보안 그룹)

  • EC2 인스턴스의 방화벽이다.
  • 네트워크 보안을 수행하는 데 있어서 기본이 된다.
  • 오직 allow(허용) 규칙만 포함되어 있어서 무엇이 들어가고 나갈 수 있는지 알 수 있다.
      - Inbound traffic(인바운드 트래픽) : 외부에서 EC2 인스턴스로 들어가는 것
      - Outbound traffic(아웃바운드 트래픽) : 인스턴스에서 인터넷으로 나가는 것
  • IP 주소를 기준으로 규칙을 설정할 수 있다.
      : 즉, 컴퓨터의 출발지이다. 또는 다른 보안 그룹을 참조하여 설정할 수 있다.

 

 

Security Groups Diagram

(출처 : saa 강의)

  • 파란색 박스 = EC2 인스턴스
  • 노란색 박스 = 인바운드 규칙과 아웃바운드 규칙이 있는 하나의 보안 그룹이 연결되어 있다.
  • 설명
      - 22번 포트에서 인증을 받게되고 트래픽은 컴퓨터에서 EC2 인스턴스로 이동할 수 있다. 하지만, 사용자의 IP 주소를 사용하지 않는 다른 사람의 컴퓨터가 EC2 인스턴스에 액세스 하려고 하면 방화벽이 차단되고 타임아웃이 되기 때문에 통과하지 못한다.
      - 아웃바운드 규칙의 경우, 기본적으로 모든 보안 그룹에 대한 EC2 인스턴스가 모든 트래픽이 나가는 것을 허용하는데 따라서, 위의 이미지와 같이 EC2 인스턴스가 웹 사이트에 액세스하여 연결을 시작하려고 하면 보안 그룹에서 허용하게 된다.

 

 

Security Groups에 대해 알아야 할 사항

  • 여러 인스턴스에 연결할 수 있다.
      : 보안 그룹과 인스턴스 사이에는 1대1 관계가 없다.
  • 보안 그룹은 특정 지역 VPC 조합에만 제한된다.
      : 다른 지역으로 전환하는 경우 또는 다른 VPC를 생성한 경우 보안 그룹을 다시 생성해야된다.
  • 보안 그룹은 EC2 외부에 있다.
      : 트래픽이 차단되면 EC2 인스턴스는 트래픽을 볼 수가 없다.
  • SSH 액세스를 위해서만 별도의 보안 그룹을 하나 유지하는 것이 좋다.
      : 일반적으로 SSH 액세스는 가장 복잡한 작업이므로 제대로 수행되었는지 확인하는 것이 좋다.
  • 애플리케이션에 접근할 수 없는 경우(즉 타임아웃의 경우), 이것은 보안 그룹의 문제이다.
      : 임의의 포트에 연결하려고 하는데 컴퓨터가 정지하고 대기하고 있다면 보안 그룹 문제일 가능성이 높다.
  • 연결 거부 오류가 발생하면 실제로 연결이 거부되었다는 응답을 받게 된다. 실제로 보안 그룹이 작동하고 트래픽이 통과했지만 애플리케이션이 오류가 나거나 실행되지 않은 것이다.
  • 기본적으로 모든 인바운드 트래픽은 차단되고 모든 아웃바운드 트래픽은 승인된다.

 

 

다른 보안 그룹을 참조하는 방법

(출처 : saa 강의)

  • 왼쪽 주황색 네모 = 1번 보안 그룹
     : 인바운드 규칙은 기본적으로 보안 그룹 1번 인바운드와 보안 그룹 2번을 승인한다는 의미이다.
  • 오른쪽 맨위에 있는 보안그룹 2
     : 다른 EC2 인스턴스를 시작하고 여기에 보안 그룹 2번이 연결되어 있다면 설정한 보안 그룹 실행 규칙을 사용하면 기본적으로 EC2 인스턴스가 포트를 통해 직접 연결 할 수 있다.
  • 오른쪽 가운데에 있는 보안그룹1
     : 보안 그룹이 연결된 다른 EC2 인스턴스가 있는 경우, 이 인스턴스로 바로 통신할 수 있는 권한도 부여한다.
     : 따라서 EC2 인스턴스의 IP에 관계없이 올바른 보안 그룹이 연결되어 있기 때문에 다른 인스턴스와 직접 통신할 수 있다. (= 항상 IP를 생각하지 않아도 되기 때문에 좋다.)
  • 오른쪽 맨밑에 있는 보안그룹3
     : 그룹 1번의 인바운드 보안 규칙에서 승인되지 않았기 때문에 거부되고 작동하지 않는다.
     

 

알아두면 좋은 Classic Ports

  • SSH(Secure Shell)
     - 22번 포트를 사용한다.
     - 리눅스에서 EC2 인스턴스에 로그인할 수 있다.
  • FTP(File Transfer Protocol)
     - 21번 포트를 사용한다.
     - 파일을 공유에 업로드하는데 사용된다.
  • SFTP(Secure File Transfer Protocol)
     - 22번 포트를 사용한다.
     - 안전한 파일 전송 프로토콜이여서 SSH를 사용한다.
  • HTTP
     - 80번 포트를 사용한다.
     - 보안되지 않은 웹사이트를 접속하기 위한 것이다.
  • HTTPS
     - 443번 포트를 사용한다.
     - 표준인 보안 웹사이트에 액세스하기 위한 것이다.
  • RDP(Remote Desktop Protocol)
     - 3389번 포트를 사용한다.
     - 윈도우 인스턴스에 로그인하는 데 사용한다.