설명
VPC의 기본 보안 그룹은 보안 그룹을 지정하지 않은 리소스에 연결될 수 있습니다. 기본 인바운드 규칙은 같은 그룹의 리소스 간 통신을 허용하며, 기본 아웃바운드 규칙은 모든 목적지로의 통신을 허용합니다. 기본 인바운드 규칙 자체가 인터넷 접근을 허용하는 것은 아닙니다.
이 공유 그룹에 광범위한 허용 규칙을 추가하면 나중에 연결되는 리소스에도 같은 권한이 적용됩니다. 용도별 전용 보안 그룹을 사용하고, 사용하지 않는 기본 그룹의 규칙을 제거하는 편이 접근 범위를 관리하기 쉽습니다.
잠재적 영향
- 불필요한 인바운드 규칙으로 내부 서비스나 관리 포트에 대한 접속 시도가 늘어날 수 있습니다.
- 광범위한 아웃바운드 허용은 침해된 리소스의 외부 통신 경로를 늘릴 수 있습니다.
해결 방법
- 기본 그룹에 연결된 리소스와 필요한 통신을 확인하고, 제한된 전용 그룹을 먼저 구성해 연결하세요.
- 필요한 연결이 동작하는지 확인한 뒤 기본 그룹의 불필요한 인바운드·아웃바운드 규칙을 제거하세요. 기본 그룹 자체는 삭제할 수 없습니다.
- 새 보안 그룹에서 아웃바운드 규칙을 생략하면 모든 목적지로의 허용 규칙이 추가됩니다. 필요한 목적지와 프로토콜을 명시하고 실제 규칙을 확인하세요.
예시
첫 예시는 기존 기본 그룹 ID를 입력받아 광범위한 SSH 규칙을 추가합니다. 두 번째는 필요한 SSH 출발지와 목적지만 허용하는 전용 그룹을 만듭니다. 실제 VPC와 승인된 CIDR을 제공하고, 필요한 다른 통신도 검토하세요. 전용 그룹 배포만으로 기존 리소스의 연결이나 기본 그룹 규칙이 변경되지는 않습니다.
변경 전
yaml
Parameters:
DefaultSecurityGroupId:
Type: AWS::EC2::SecurityGroup::Id
Resources:
SharedSSHIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref DefaultSecurityGroupId
IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
SharedSSHEgress:
Type: AWS::EC2::SecurityGroupEgress
Properties:
GroupId: !Ref DefaultSecurityGroupId
IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
같은 기본 그룹을 사용하는 리소스 전체에 영향을 줄 수 있습니다. 실제 외부 연결에는 라우팅과 주소 등 다른 네트워크 조건도 필요합니다.
변경 후
yaml
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
AdminCidr:
Type: String
SSHDestinationCidr:
Type: String
Resources:
DedicatedSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Restricted SSH connectivity
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: !Ref AdminCidr
SecurityGroupEgress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: !Ref SSHDestinationCidr
전용 그룹을 대상 리소스에 연결하고 통신을 시험한 뒤 기존 기본 그룹 연결과 불필요한 규칙을 정리하세요. 보안 그룹은 상태를 추적하므로 허용된 연결의 응답을 위해 별도 역방향 규칙을 추가할 필요는 없습니다.