sol 개발 블로그 로고
Published on

AWS EC2의 보안그룹

Authors
  • avatar
    Name
    Chan Sol OH
    Twitter

목차

개요

Security Groups(SG)는 AWS에서 네트워크 보안에 기본적인 기능이다. 인바운드와 아웃바운드가 가능한 대상을 지정하는 규칙이다. SG는 유저의 IP나 다른 SG를 참조할 수 있다.

만약 인터넷으로 EC2에 접속하려면 EC2의 외부에서 EC2로 트래픽이 들어갈 수 있도록 SG에 인바운드 규칙을 작성하고, EC2가 외부로 트래픽을 보낼 수 있도록 아웃 바운드 규칙을 지정해야한다.

다만, EC2끼리 SG를 연결시키면 EC2의 IP와 상관없이 통신시킬 수 있고, 연결되지 않은 SG를 가진 EC2는 통신할 수 없게할 수 있다. 이처럼 SG 안에 다른 EC2와 연결된 SG들을 넣을 수 있다. - 로드벨런스에대해 공부할 때 자세히 다둘것

SG의 규칙

SG는 EC2 인스턴스의 방화벽 역할을 한다. 그러기 위해 인, 아웃 바운드 규칙에 대상을 지정하는데 다음과 같은 규칙을 사용한다.

  1. 트래픽 타입과 프로토콜
  2. 접근 포트
  3. 인증된 IP 범위 - IPv4, IPv6, 0.0.0.0/0와 같이 CIDR를 사용함
  4. 인 바운드인지 아웃 바운드인지

추가사항

  1. EC2 인스턴스는 여러 SG를 가질 수 있다.
  2. region과 VPC에 의존적이라 바뀌면 새롭게 만들어야한다.
  3. SG는 EC2 외부에 존재하기 때문에 트래픽은 EC2 외부에서 막힌다.
  4. SSH 접속을 위한 전용 SG를 만드는게 좋다
  5. 기본적으로 모든 인바운드 트래픽은 차단되고, 모든 아웃 바운드 트래픽은 열려있다.

Time out이 발생하면 무조건 SG 때문이고 접근을 차단하는 것은 EC2 웹 애플리케이션의 문제가 생긴 것이다.

SSH

서버에 접속하는 방법으로 보안이 적용된 프로토콜이다. 물론 비슷하게 브라우저를 통해서 EC2 Instance Connect를 사용해서 접속할 수 있다. SSH는 터미널이나 커맨드 라인에서 AWS를 다룰 때 주로 사용한다.

SSH 접속하는 방법 0. EC2의 SG는 인, 아웃 바운드에 SSH가 허용돼야함

  1. EC2의 pem 파일이 있는 디렉토리로 이동
  2. EC2 소유 계정과 EC2의 퍼블릭 IP를 이용해서 SSH 접속

EC2 IAM Role 적용 방법

빌드업 aws configure

  1. EC2 인스턴스에 접속 (SSH를 사용해도 무방)
  2. aws --version 으로 aws-cli가 설치됐는지 확인 (없으면 설치, aws linux는 기본 설치 제공)
  3. aws iam list-users 입력 -> iam 자격 증명이 안됐기 때문에 관련 정보를 aws configure를 통해 입력한다. 하지만, 이 방법은 매우매우매우 좋지 않은 방법이다. aws configure로 작성한 개인정보는 EC2에 접근할 수 있는 모든 유저가 볼 수 있기 때문이다!!! 그렇기에 EC2 인스턴스에 액세스 키 ID와 비밀 액세스 키를 입력하는 최악의 방법이다!!
  4. 그 대신에 IAM Role을 사용할 수 있다.

IAM Role 적용 방법

  1. EC2 인스턴스의 보안 탭으로 가서 IAM Role 확인 - 아무 것도 없을 것이다.
  2. 작업 -> 보안 -> IAM Role 수정 버튼 클릭
  3. 새 페이지가 뜨고 IAM Role을 선택할 수 있다. - 사전에 만들어둔 IAM Role을 사용할 수 있음! 그럼 다음과 같이 아무런 자격증명을 작성하지 않더라도 인스턴스가 aws 서비스를 사용할 수 있음
[ec2-user@ip-172-31-38-128 .aws]$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
[ec2-user@ip-172-31-38-128 .aws]$ aws iam list-users
{
    "Users": [
        {
            "UserName": "admin",
            "PasswordLastUsed": "2023-10-19T12:43:04Z",
            "CreateDate": "2023-10-17T14:53:11Z",
            "UserId": "AIDAXYMB4PYS4NGCLVEOP",
            "Path": "/",
            "Arn": "arn:aws:iam::533385215525:user/admin"
        }
    ]
}

EC2 구매 옵션

  1. On-Demand 인스턴스
    • 단기로 자주, 사용량을 예측할 수 없을 때 사용한다.
    • 가격이 제일 높지만, 장기 계약이 필요 없다.
  2. Reserve 인스턴스
    • 특정 인스턴스 속성(인스턴스 타입, region, OS, ...)을 1~3년 동안 예약한다.
    • Reserve 인스턴스의 스코프는 Resion을 지정할 수 있고, 특정 AZ에 사용량을 할당할 수 있다.
    • 안정적인 사용량이 있는 애플리케이션에 적합
    • 마켓플레이스에서 Reserved 인스턴스를 사고 팔 수 있다.
  3. Convertible Reserved 인스턴스
    • 인스턴스 속성(인스턴스 타입, OS, scope나 tenancy)를 변경할 수 있다.
    • 할인율은 줄어든다.
  4. Saving Plans
    • Reserved 인스턴스와 비슷하게 장기계약에 특화됐다.
    • 시간당 고정 가격으로 1~3년 계약한다. 초과하는 사용량은 On-demend 가격으로 청구한다.
    • AWS Region은 변경할 수 없는 대신, 인스턴스 사이즈, OS, tenancy를 변경할 수 있다.
  5. Spot 인스턴스
    • 가장 높은 할인율을 가지고 있다. 대신 인스턴스가 Spot 인스턴스에 지불하고자 하는 가격보다 많이 사용되면 인스턴스가 중단된다.
    • 가장 가격 효율적인 인스턴스이고, 서비스가 중단되어도 복구하기 쉬운 작업에 적합
    • Batch Jobs, Data 분석, 이미지 처리, 분산 처리 작업, 그리고 시작과 끝 시간이 유현한 작업에 적합하다.
    • 다만, 언제든지 인스턴스가 종료될 수 있으므로, 중요한 작업은 사용하면 안된다.
  6. Dedicated Hosts
    • EC2 인스턴스 크기의 물리 서버를 온전히 사용할 수 있다.
    • 강력한 규제나 규정 준수 요구 사항이 있거나ㅠ 기존의 서버 결합 소프트웨어 라이선스(BYOL - Bring Your Own License)를 사용해야하는 경우에 적합
    • 가격은 소켓 당, core 당, VM Software license 당 청구된다.
    • 걔약은 On-demend처럼 초당 예약이나 Reserved 인스턴스처럼 1~3년 계약을 할 수 있다.
    • 실제 물리서버를 예약하기 때문에 가장 비싸다
  7. Dedicated 인스턴스
    • 전용 하드웨어에서 실행되는 인스턴스, 물리서버와는 다르다.
    • 같은 계정의 다른 인스턴스와 하드웨어를 공유할 수 있다. 비어있는 서버를 예약하고 그 서버는 계정만 사용가능하다!
    • Dedicated Host와 차이점은 **Dedicated 인스턴스는 고유한 인스턴스 하드웨어를 갖는 것이고, Dedicated Host는 물리적 서버 자체에 액세스하여 low level 하드웨어에 대한 **
  8. Capacity Reservations
    • 특정한 AZ에 인스턴스를 예약할 수 있고, 필요할 때마다 EC2 Capacity에 접속할 수 있다.
    • 시간 약정이 없기 때문에 생성과 삭제가 자유롭다.
    • 요금 할인 받으려면 Reserved 인스턴스나 Saving Plans와 결합해야한다. 인스턴스가 실행하든 정지돼있든 On-Demand로 계속 청구된다.
    • 특정한 AZ에 위치하는 단기의 연속적인 워크로드에 적합하다.

리조트로 비유해서 정리하자면,

  • On demand : 리조트에 언제든지 나가고 들어올 수 있다.
  • Reserved : 장기계약 1~3년
  • Saving Plans : 특정 기간 동안 시간당 비용지불하고 장기계약, 따라서 시간에 따라 방을 바꿀 수 있다.
  • Spot instances : 예약 마감 할인. 그러나 누군가 내가 낸 돈 보다 더 많은 비용을 지불한다고 하면 강제로 나가야함
  • Dedicated Hosts : 리조트 전체를 빌려서 나만의 하드웨어를 가지게된다.
  • Capacity Reservations : 예약할건데 숙박할진 확실하지 않음. 그래서 원할 때만 숙박할 수 있다.