• 『Security Group』보안그룹 관련
    AWS/EC2 2023. 7. 9. 23:45

    보안그룹(Security Group)이란?

    보안그룹은 초창기 AWS에서 사람들이 사용하던 거의 유일한 보안서비스였다.

    StatFul한 성질을 가지고 있어, 인바운드 혹은 아웃바운드로의 세션이 맺어지면 해당 세션을 기억하고 유지하는 습성이 있다.

    기본적으로 화이트리스트 기반으로 동작이 되는 서비스이기에 내가 사용할 프로토콜, IP, Port를 알고 있어야지 사용할 수 있다.

    단위는 서브넷 단위(실제론 ENI에 붙는다.)로 붙이는게 일반적이다.

    대표적으로 EC2와 같은 리소스 생성 시 서브넷을 지정할때 SG도 함께 붙는다.

    이렇게 보안그룹은 다양한 서비스에서 네트워크(VPC)를 사용한다면 대부분이 사용된다고 할 수 있다.

     

    최대 보안그룹 제한

    화이트 리스트 기반이기 때문에 허용 IP만 추가해야한다. IP가 너무 많다면?

    서버에 접속해서 하나하나 iptalbes같은 거로 막을 권한 까지는 없다면?

    "그러면 보안그룹 엄청 만들면 되겠네~~"

    아쉽게도 제한이 존재한다. 아래의 AWS공식 Docs를 참조하면 된다.

    https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-security-groups

     

    Amazon VPC 할당량 - Amazon Virtual Private Cloud

    이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

    docs.aws.amazon.com

    보안그룹은 제약이 3가지가 존재한다.
    1. 리전당 최대 보안그룹 갯수 제한

    2. 최대 규칙 제한

    3. ENI당 부여가능한 최대 보안그룹 갯수 제한

     

     

    리전당 2500개까지 밖에 생성이 되지 않는다.

    일반적인 규모의 회사는 2500개를 넘을 일이 없을 뿐더러 계정을 나누어 사용한다.

     

    또한 하나의 보안그룹 당 최대 60개까지 밖에 규칙을 추가 할 수 없다. 즉 아래와 같은 구성이 최대의 구성이다.

    인바운드 60

    아웃바운드 60

    다만 해당 규칙의 경우 IPv4와 v6가 별개로 동작하기 때문에 각각 최대 120개까지의 규칙이 사용가능하다고 보면 된다.

     

    위에서 말했던 서브넷 당(ENI라고 말했던 해당 부분)으로 보안그룹을 지정한다고 하였는데, 하나의 ENI당 최대 5개까지 보안그룹 지정이 가능하다.

    3가지 제약들은 모두 문의를 통해 일부 해소가 가능하다.

     

    "그러면 어떻게 해야하나요?"

    일반적으로 udp flood공격 같은 경우 회선을 마비시켜버린다.

    그렇기에 앞단에서 동작하는 ENI 단에서 차단(SG처리)하는 것이 제일 베스트이나, 아쉽게도 보안그룹은 제약이 존재하기에 힘들다.

    그렇다면 그나마 차선책으로 사용할만 한 서비스는 AWS WAF이다.

    비용적으로 너무나도 큰 내용이 따르지만 Auto Scaling을 적용하기 힘든 환경의 경우 WAF를 사용하는 것도 상당히 좋은 선택지이다.

    WAF는 조금 더 설정이 존재하기에 여기서는 다루지 않겠다.

     

    효율적인 보안그룹 사용법

    보안그룹에서는 보안그룹을 참조하여 허용시켜주는 일종의 체이닝 기능을 지원한다.

    각 서비스별로 보안그룹을 분리시켜 체이닝 시켜주는 것도 일종의 큰 방법이 될 수 있다.

     

    ---

    2023.07.09(일) 기준 글 작성중

    글 내용중 틀리거나 이상한 말, 완성되지 않은 문맥이 다수 있을 수 있습니다.

     

    ---

    2023.07.27 (목) 다시 작성

    ---

    그러나 하나의 ip당 하나의 소스 등을 적용하면 다수의 같은 종류의 ip를 관리하는데 문제가 있을 수 있으므로

    접두사 목록이라는 기능을 사용하여 이용하여도 좋다.

    비슷한, 혹은 같은 역할을하는 사람들끼리 묶어서 관리하는 것 이다.

    개발자들의 ip가 192.168.0.3부터 192.168.0.9까지 총합 7개의 ip사용 시 보안그룹이 더러워질 수 있으나, 이것을 접두사 목록으로 묶게 된다면 설명란에 development team(~07/30)과 같은 설명문으로 끝낼 수 있다.

    더욱더 간편하고 관리가 용이해진다.

     

    또한 여러 ip를 만약에 사용해야하는데 설명문을 일일 작성하고 포트를 일일이 사용하기 힘들다면

    192.168.0.3/32, 192.168.0.4/32, 192.168.0.4/32

    위 형식으로 작성하면 같은 설명문, 같은 port로 여러 ip가 같은 값을 갖게 된다.

    물론 적용 이후에는 따로따로 보이긴 한다.

    결론

    이정도만 확인하고 숙지하고 있어도 큰 문제는 없다.

     

    댓글