Amazon EC2의 인프라 보안
Amazon EC2의 인프라 보안
관리형 서비스로서 Amazon Elastic Compute Cloud는 AWS 글로벌 네트워크 보안으로 보호돼요. 이 절에서 네트워크 격리, 물리 호스트 격리, 네트워크 트래픽 제어에 대해 살펴볼게요.
출처: 문서
본문
관리형 서비스로서 Amazon Elastic Compute Cloud는 AWS 글로벌 네트워크 보안으로 보호돼요. AWS 보안 서비스와 AWS의 인프라 보호 방법에 대한 정보는 AWS Cloud Security을 참고하세요. 인프라 보안의 모범 사례를 사용해 AWS 환경을 설계하려면 Security Pillar AWS Well-Architected Framework의 Infrastructure Protection을 참고하세요.
네트워크를 통해 Amazon EC2에 접근하려면 AWS 게시 API 호출을 사용해요. 클라이언트는 다음을 지원해야 해요.
- TLS(Transport Layer Security). TLS 1.2가 필요하며 TLS 1.3을 권장해요.
- DHE(Ephemeral Diffie-Hellman) 또는 ECDHE(Elliptic Curve Ephemeral Diffie-Hellman) 같은 PFS(perfect forward secrecy)를 갖춘 암호 제품군. Java 7 이상 같은 대부분의 최신 시스템이 이러한 모드를 지원해요.
자세한 내용은 Security Pillar – AWS Well-Architected Framework의 Infrastructure Protection을 참고하세요.
네트워크 격리
VPC(가상 사설 클라우드)는 AWS 클라우드에서 논리적으로 격리된 내 영역의 가상 네트워크예요. 워크로드나 조직 단위로 인프라를 격리하려면 별도의 VPC를 사용하세요.
서브넷은 VPC의 IP 주소 범위예요. 인스턴스를 시작할 때 VPC의 서브넷에 시작해요. 단일 VPC 내에서 애플리케이션의 계층(예: 웹, 애플리케이션, 데이터베이스)을 격리하려면 서브넷을 사용하세요. 인스턴스를 인터넷에서 직접 접근하면 안 되는 경우 개인 서브넷을 사용하세요.
개인 IP 주소를 사용해 VPC에서 Amazon EC2 API를 호출하려면 AWS PrivateLink를 사용하세요. 자세한 내용은 Access Amazon EC2 using an interface VPC endpoint를 참고하세요.
물리 호스트에서의 격리
같은 물리 호스트의 서로 다른 EC2 인스턴스는 별도의 물리 호스트에 있는 것처럼 서로 격리돼요. 하이퍼바이저가 CPU와 메모리를 격리하고, 인스턴스는 원시 디스크 장치에 대한 접근 대신 가상화된 디스크를 제공받아요.
인스턴스를 중지하거나 종료하면 할당된 메모리는 새 인스턴스에 할당되기 전에 하이퍼바이저가 스크럽(0으로 설정)하고, 모든 스토리지 블록이 재설정돼요. 이렇게 하면 데이터가 다른 인스턴스에 의도치 않게 노출되지 않도록 보장해요.
네트워크 MAC 주소는 AWS 네트워크 인프라가 인스턴스에 동적으로 할당해요. IP 주소는 AWS 네트워크 인프라가 인스턴스에 동적으로 할당하거나, EC2 관리자가 인증된 API 요청을 통해 할당해요. AWS 네트워크는 인스턴스가 할당된 MAC 및 IP 주소에서만 트래픽을 보내도록 허용해요. 그렇지 않으면 트래픽을 버려요.
기본적으로 인스턴스는 구체적으로 자신에게 지정되지 않은 트래픽을 받을 수 없어요. 인스턴스에서 NAT(네트워크 주소 변환), 라우팅, 방화벽 서비스를 실행해야 한다면 네트워크 인터페이스의 소스/대상 확인을 비활성화할 수 있어요.
네트워크 트래픽 제어
EC2 인스턴스로의 네트워크 트래픽을 제어할 때 다음 옵션을 고려하세요.
- 보안 그룹으로 인스턴스에 대한 접근을 제한합니다. 최소한의 필요한 네트워크 트래픽만 허용하는 규칙을 구성하세요. 예를 들어 회사 네트워크의 주소 범위에서만 또는 HTTPS 같은 특정 프로토콜에만 트래픽을 허용할 수 있어요. Windows 인스턴스의 경우 Windows 관리 트래픽과 최소한의 아웃바운드 연결을 허용하세요.
- 보안 그룹을 Amazon EC2 인스턴스에 대한 네트워크 접근 제어의 기본 메커니즘으로 활용하세요. 필요할 때 네트워크 ACL을 아껴 사용해 무상태(stateless)의 조잡한 네트워크 제어를 제공하세요. 보안 그룹은 상태 저장(Stateful) 패킷 필터링을 수행하고 다른 보안 그룹을 참조하는 규칙을 만들 수 있기 때문에 네트워크 ACL보다 더 다재다능해요. 하지만 네트워크 ACL은 특정 트래픽 하위 집합을 거부하거나 높은 수준의 서브넷 가드레일을 제공하는 2차 제어로 효과적일 수 있어요. 또한 네트워크 ACL은 전체 서브넷에 적용되므로, 인스턴스가 올바른 보안 그룹 없이 실수로 시작되는 경우 심층 방어로 사용될 수 있어요.
- [Windows 인스턴스] 그룹 정책 개체(GPO)로 Windows Firewall 설정을 중앙 관리해 네트워크 제어를 더욱 강화하세요. 고객은 종종 Windows Firewall을 사용해 네트워크 트래픽에 대한 추가 가시성을 얻고 보안 그룹 필터를 보완해, 특정 애플리케이션이 네트워크에 접근하는 것을 차단하거나 IP 주소 하위 집합의 트래픽을 필터링하는 고급 규칙을 만들어요. 예를 들어 Windows Firewall은 EC2 메타데이터 서비스 IP 주소에 대한 접근을 특정 사용자나 애플리케이션으로 제한할 수 있어요. 또는 공개 서비스는 보안 그룹으로 특정 포트에 대한 트래픽을 제한하고 Windows Firewall로 명시적으로 차단된 IP 주소 목록을 유지할 수 있어요.
- 인스턴스를 인터넷에서 직접 접근하면 안 되는 경우 개인 서브넷을 사용하세요. 개인 서브넷의 인스턴스에서 인터넷에 접근하려면 배스천 호스트나 NAT 게이트웨이를 사용하세요.
- [Windows 인스턴스] SSL/TLS를 통한 RDP 캡슐화 같은 보안 관리 프로토콜을 사용하세요. Remote Desktop Gateway Quick Start는 RDP가 SSL/TLS를 사용하도록 구성하는 것을 포함해 원격 데스크톱 게이트웨이 배포 모범 사례를 제공해요.
- [Windows 인스턴스] Active Directory 또는 Directory Service를 사용해 Windows 인스턴스에 대한 대화형 사용자·그룹 접근을 긴밀하고 중앙에서 제어·모니터링하고, 로컬 사용자 권한을 피하세요. 또한 Domain Administrators 사용을 피하고 대신 더 세분화된 애플리케이션별 역할 기반 계정을 만드세요. JEA(Just Enough Administration)를 사용하면 대화형 또는 관리자 접근 없이 Windows 인스턴스에 대한 변경을 관리할 수 있어요. 또한 JEA는 조직이 인스턴스 관리에 필요한 Windows PowerShell 명령의 하위 집합으로 관리 접근을 잠글 수 있게 해줘요. 추가 정보는 Best Practices for Security, Identity, & Compliance을 참고하세요.
- [Windows 인스턴스] 시스템 관리자는 일상 활동에 제한적 접근 권한을 가진 Windows 계정을 사용하고, 특정 구성 변경을 수행할 때만 필요한 경우 접근을 승격해야 해요. 또한 절대적으로 필요한 경우에만 Windows 인스턴스에 직접 접근하세요. 대신 EC2 Run Command, Systems Center Configuration Manager(SCCM), Windows PowerShell DSC, Amazon EC2 Systems Manager(SSM) 같은 중앙 구성 관리 시스템을 활용해 Windows 서버에 변경 사항을 푸시하세요.
- Amazon VPC 서브넷 경로 테이블을 최소한의 필요한 네트워크 경로로 구성하세요. 예를 들어 인터넷 게이트웨이에 대한 경로가 있는 서브넷에는 인터넷에 직접 접근해야 하는 Amazon EC2 인스턴스만 배치하고, 내부 네트워크에 직접 접근해야 하는 Amazon EC2 인스턴스만 가상 프라이빗 게이트웨이에 대한 경로가 있는 서브넷에 배치하세요.
- 일반 애플리케이션 트래픽과 별도로 Amazon EC2 인스턴스 관리 트래픽을 제어·감사하려면 추가 보안 그룹이나 네트워크 인터페이스를 사용하는 것을 고려하세요. 이 접근 방식은 변경 제어를 위한 특별한 IAM 정책을 구현할 수 있게 해주어, 보안 그룹 규칙 변경을 감사하거나 규칙 검증 스크립트를 자동화하기 더 쉬워져요. 여러 네트워크 인터페이스를 사용하면 네트워크 트래픽을 제어하는 추가 옵션도 제공돼요. 여기에는 호스트 기반 라우팅 정책을 만들거나 네트워크 인터페이스의 할당된 서브넷에 따라 다른 VPC 서브넷 라우팅 규칙을 활용하는 능력이 포함돼요.
- 원격 네트워크에서 VPC로의 개인 연결을 설정하려면 AWS Virtual Private Network 또는 Direct Connect를 사용하세요. 자세한 내용은 Network-to-Amazon VPC Connectivity Options을 참고하세요.
- VPC Flow Logs를 사용해 인스턴스에 도달하는 트래픽을 모니터링하세요.
- GuardDuty Malware Protection을 사용해 워크로드를 손상시키고, 리소스를 악의적인 용도로 전용하며, 데이터에 대한 권한 없는 접근을 얻을 수 있는 인스턴스의 악성 소프트웨어를 나타내는 의심스러운 동작을 식별하세요.
- GuardDuty Runtime Monitoring을 사용해 인스턴스에 대한 잠재적 위협을 식별하고 대응하세요. 자세한 내용은 How Runtime Monitoring works with Amazon EC2 instances를 참고하세요.
- AWS Security Hub CSPM, Reachability Analyzer, Network Access Analyzer를 사용해 인스턴스의 의도치 않은 네트워크 접근 가능성을 확인하세요.
- EC2 Instance Connect를 사용해 SSH 키를 공유·관리할 필요 없이 SSH(Secure Shell)로 인스턴스에 연결하세요.
- AWS Systems Manager Session Manager를 사용해 인바운드 SSH 또는 RDP 포트를 열고 키 페어를 관리하는 대신 인스턴스에 원격으로 접근하세요.
- AWS Systems Manager Run Command를 사용해 인스턴스에 연결하는 대신 일반 관리 작업을 자동화하세요.
- [Windows 인스턴스] 많은 Windows OS 역할과 Microsoft 비즈니스 애플리케이션은 IIS 내 IP 주소 범위 제한, Microsoft SQL Server의 TCP/IP 필터링 정책, Microsoft Exchange의 연결 필터 정책 같은 향상된 기능도 제공해요. 애플리케이션 계층의 네트워크 제한 기능은 중요한 비즈니스 애플리케이션 서버에 추가 방어 계층을 제공할 수 있어요.
Amazon VPC는 게이트웨이, 프록시 서버, 네트워크 모니터링 옵션 같은 추가 네트워크 보안 제어를 지원해요. 자세한 내용은 Amazon VPC User Guide의 Control network traffic을 참고하세요.