AWS - VPC & Networking Basic Information

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로**부터 **히어로**까지 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

AWS 네트워킹 요약

VPC에는 10.0.0.0/16과 같은 네트워크 CIDR(라우팅 테이블 및 네트워크 ACL이 함께 포함됨)가 포함됩니다.

이 VPC 네트워크는 서브네트워크로 나뉘며, 서브네트워크VPC, 라우팅 테이블네트워크 ACL과 직접적으로 관련이 있습니다.

그런 다음, 서비스(예: EC2 인스턴스)에 연결된 네트워크 인터페이스보안 그룹을 사용하여 서브네트워크연결됩니다.

따라서 보안 그룹사용 중인 네트워크 인터페이스의 노출된 포트를 제한하며, 서브네트워크와는 독립적으로 작동합니다. 네트워크 ACL전체 네트워크의 노출된 포트를 제한합니다.

또한, 인터넷에 액세스하기 위해 확인해야 할 몇 가지 흥미로운 구성이 있습니다:

  • 서브네트워크공개 IPv4 주소를 자동 할당할 수 있습니다.

  • IPv4 주소를 자동 할당하는 네트워크에서 생성된 인스턴스는 하나를 받을 수 있습니다.

  • 인터넷 게이트웨이VPC에 연결해야 합니다.

  • Egress-only 인터넷 게이트웨이를 사용할 수도 있습니다.

  • 사설 서브넷NAT 게이트웨이를 두어 해당 사설 서브넷에서 외부 서비스에 연결할 수 있지만 외부에서 해당 서비스에 연결할 수는 없습니다.

  • NAT 게이트웨이는 공개(인터넷 액세스) 또는 사설(다른 VPC 액세스)일 수 있습니다.

VPC

Amazon Virtual Private Cloud(Amazon VPC)를 사용하면 정의한 가상 네트워크로 AWS 리소스를 배포할 수 있습니다. 이 가상 네트워크에는 여러 서브넷, 인터넷 게이트웨이, ACL, 보안 그룹, IP 등이 포함됩니다.

서브넷

서브넷은 유사한 리소스의 논리적 그룹화를 통해 보안 수준을 강화합니다. 인프라 전체에서 관리의 용이성을 유지하는 데 도움이 됩니다.

  • 유효한 CIDR은 /16 넷마스크에서 /28 넷마스크까지입니다.

  • 서브넷은 동시에 다른 가용 영역에 있을 수 없습니다.

  • 각 서브넷의 첫 세 개의 호스트 IP 주소는 내부 AWS 사용을 위해 예약됩니다: 첫 번째 호스트 주소는 VPC 라우터용으로 사용됩니다. 두 번째 주소는 AWS DNS를 위해 예약되고 세 번째 주소는 미래 사용을 위해 예약됩니다.

  • 인터넷에 직접 액세스할 수 있는 서브넷을 공개 서브넷이라고 하며, 사설 서브넷은 그렇지 않습니다.

라우팅 테이블

라우팅 테이블은 VPC 내 서브넷의 트래픽 라우팅을 결정합니다. 인터넷이나 VPN 연결로 전달되는 네트워크 트래픽을 결정합니다. 일반적으로 다음에 액세스할 수 있습니다:

  • 로컬 VPC

  • NAT

  • 인터넷 게이트웨이 / Egress-only 인터넷 게이트웨이 (VPC가 인터넷에 액세스하려면 필요)

  • 서브넷을 공개하려면 VPC에 인터넷 게이트웨이를 생성하고 연결해야 합니다.

  • VPC 엔드포인트(사설 네트워크에서 S3에 액세스)

다음 이미지에서 기본 공개 네트워크와 사설 네트워크의 차이를 확인할 수 있습니다:

ACLs

네트워크 액세스 제어 목록 (ACLs): 네트워크 ACL은 서브넷으로의 들어오는 및 나가는 네트워크 트래픽을 제어하는 방화벽 규칙입니다. 특정 IP 주소 또는 범위로의 트래픽을 허용하거나 거부하는 데 사용할 수 있습니다.

  • 대부분의 경우 보안 그룹을 사용하여 액세스를 허용/거부하지만, 이미 설정된 역쉘을 완전히 차단하는 유일한 방법입니다. 보안 그룹의 수정된 규칙은 이미 설정된 연결을 중지시키지 않습니다.

  • 그러나 이는 전체 서브네트워크에 적용되므로 필요한 기능이 방해될 수 있으니 주의하세요.

보안 그룹

보안 그룹은 VPC 내의 인스턴스로의 들어오고 나가는 네트워크 트래픽을 제어하는 가상 방화벽입니다. 1개의 보안 그룹은 일반적으로 M개의 인스턴스에 대응됩니다 (보통 1:1). 일반적으로 이는 인스턴스에서 위험한 포트를 열기 위해 사용됩니다. 예를 들어 포트 22와 같은 포트:

탄력적 IP 주소

탄력적 IP 주소는 동적 클라우드 컴퓨팅을 위해 설계된 정적 IPv4 주소입니다. 탄력적 IP 주소는 AWS 계정에 할당되며 해제할 때까지 소유권이 유지됩니다. 탄력적 IP 주소를 사용하면 인스턴스나 소프트웨어의 장애를 다른 인스턴스로 빠르게 재매핑하여 가리킬 수 있습니다.

서브넷 간 연결

기본적으로 모든 서브넷은 공용 IP 주소 자동 할당이 꺼져 있지만 켤 수 있습니다.

라우트 테이블 내의 로컬 라우트를 통해 VPC 서브넷 간 통신이 가능해집니다.

다른 서브넷과 연결하는 경우 해당 서브넷에 연결된 서브넷에 액세스할 수 없으며 직접 연결해야 합니다. 이는 인터넷 게이트웨이에도 적용됩니다. 인터넷에 액세스하려면 서브넷에 인터넷 게이트웨이를 할당해야 합니다.

VPC 피어링

VPC 피어링을 사용하면 두 개 이상의 VPC를 IPV4 또는 IPV6을 사용하여 마치 동일한 네트워크의 일부인 것처럼 연결할 수 있습니다.

피어 연결이 설정되면 한 VPC의 리소스가 다른 VPC의 리소스에 액세스할 수 있습니다. VPC 간의 연결은 기존의 AWS 네트워크 인프라를 통해 구현되므로 대역폭 병목 현상 없이 고가용성을 제공합니다. 피어링된 연결은 마치 동일한 네트워크의 일부인 것처럼 작동하므로 사용 가능한 CIDR 블록 범위에 제한이 있습니다. VPC에 중복되는 CIDR 범위가 있는 경우 VPC를 피어링할 수 없습니다. 각 AWS VPC는 해당 피어와만 통신합니다. 예를 들어 VPC 1과 VPC 2 간에 피어링 연결이 있고 VPC 2와 VPC 3 간에 다른 연결이 있는 경우 VPC 1과 2는 서로 직접 통신할 수 있으며 VPC 2와 3도 직접 통신할 수 있지만 VPC 1과 3은 그렇지 않습니다. 한 VPC를 통해 다른 VPC로 라우팅할 수 없습니다.

VPC 플로우 로그

VPC 내에서는 수백 개 또는 수천 개의 리소스가 서로 다른 서브넷 간, 공용 및 사설 네트워크 간, VPC 피어링 연결을 통해 통신할 수 있습니다. VPC 플로우 로그를 사용하면 VPC 내의 리소스의 네트워크 인터페이스 간에 흐르는 IP 트래픽 정보를 캡처할 수 있습니다.

S3 액세스 로그 및 CloudFront 액세스 로그와 달리 VPC 플로우 로그가 생성하는 로그 데이터는 S3에 저장되지 않습니다. 대신 캡처된 로그 데이터는 CloudWatch 로그로 전송됩니다.

제한 사항:

  • VPC 피어링 연결을 실행 중인 경우 동일 계정 내에 있는 피어링된 VPC의 플로우 로그만 볼 수 있습니다.

  • 아직 EC2-Classic 환경에서 리소스를 실행 중인 경우 인터페이스에서 정보를 검색할 수 없습니다.

  • VPC 플로우 로그가 생성된 후에는 변경할 수 없습니다. VPC 플로우 로그 구성을 변경하려면 삭제한 다음 새로 만들어야 합니다.

  • 다음 트래픽은 로그로 모니터링되지 않습니다. VPC 내의 DHCP 트래픽, Amazon DNS 서버로 향하는 인스턴스의 트래픽.

  • VPC 기본 라우터의 IP 주소로 향하는 트래픽 및 다음 주소로부터의 트래픽, 인스턴스 메타데이터 수집에 사용되는 169.254.169.254 및 Amazon Time Sync Service에 사용되는 169.254.169.123.

  • Windows 인스턴스의 Amazon Windows 활성화 라이선스 간의 트래픽

  • 네트워크 로드 밸런서 인터페이스와 엔드포인트 네트워크 인터페이스 간의 트래픽

CloudWatch 로그 그룹에 데이터를 게시하는 각 네트워크 인터페이스는 다른 로그 스트림을 사용합니다. 이러한 스트림 각각에는 로그 항목 내용을 보여주는 플로우 로그 이벤트 데이터가 포함됩니다. 각 로그는 대략 10~15분의 창 기간 동안 데이터를 캡처합니다.

VPN

기본 AWS VPN 구성 요소

  1. 고객 게이트웨이:

  • 고객 게이트웨이는 VPN 연결의 당신 쪽을 나타내기 위해 AWS에서 생성하는 리소스입니다.

  • 사실상 사이트 간 VPN 연결의 당신 쪽에 있는 물리적 장치 또는 소프트웨어 응용 프로그램입니다.

  • 라우팅 정보와 네트워크 장치의 공용 IP 주소(라우터 또는 방화벽과 같은)를 AWS에 제공하여 고객 게이트웨이를 생성합니다.

  • VPN 연결 설정을 위한 참조점 역할을 하며 추가 요금이 청구되지 않습니다.

  1. 가상 사설 게이트웨이:

  • 가상 사설 게이트웨이(VPG)는 사이트 간 VPN 연결의 아마존 측 VPN 집중기입니다.

  • VPC에 연결되어 VPN 연결의 대상 역할을 합니다.

  • VPG는 VPN 연결의 AWS 측 엔드포인트입니다.

  • VPC와 온프레미스 네트워크 간의 안전한 통신을 처리합니다.

  1. 사이트 간 VPN 연결:

  • 사이트 간 VPN 연결은 안전한 IPsec VPN 터널을 통해 온프레미스 네트워크를 VPC에 연결합니다.

  • 이 유형의 연결에는 고객 게이트웨이와 가상 사설 게이트웨이가 필요합니다.

  • 데이터 센터 또는 네트워크와 AWS 환경 간의 안전하고 안정적인 통신에 사용됩니다.

  • 일반적으로 정기적이고 장기적인 연결에 사용되며 연결된 데이터 양에 따라 청구됩니다.

  1. 클라이언트 VPN 엔드포인트:

  • 클라이언트 VPN 엔드포인트는 클라이언트 VPN 세션을 활성화하고 관리하기 위해 AWS에서 생성하는 리소스입니다.

  • 개별 장치(노트북, 스마트폰 등)가 AWS 리소스 또는 온프레미스 네트워크에 안전하게 연결할 수 있도록 사용됩니다.

  • 전체 네트워크를 연결하는 대신 개별 클라이언트를 대상으로 설계되었습니다.

  • 클라이언트 VPN에서는 각 클라이언트 장치가 VPN 클라이언트 소프트웨어를 사용하여 안전한 연결을 설정합니다.

사이트 간 VPN

온프레미스 네트워크를 VPC와 연결합니다.

  • VPN 연결: 온프레미스 장비와 VPC 간의 안전한 연결.

  • VPN 터널: 고객 네트워크에서 AWS로 데이터가 전달되는 암호화된 링크.

각 VPN 연결에는 고가용성을 위해 동시에 사용할 수 있는 두 개의 VPN 터널이 포함됩니다.

  • 고객 게이트웨이: AWS에 고객 게이트웨이 장치에 대한 정보를 제공하는 리소스.

  • 고객 게이트웨이 장치: 사이트 간 VPN 연결의 당신 쪽에 있는 물리적 장치 또는 소프트웨어 응용 프로그램.

  • 가상 사설 게이트웨이: 사이트 간 VPN 연결의 아마존 측 VPN 집중기. 사이트 간 VPN 연결의 아마존 측 게이트웨이로 가상 사설 게이트웨이 또는 트랜지트 게이트웨이를 사용합니다.

  • 트랜지트 게이트웨이: VPC와 온프레미스 네트워크를 상호 연결하는 데 사용할 수 있는 트랜지트 허브. 사이트 간 VPN 연결의 아마존 측 게이트웨이로 트랜지트 게이트웨이 또는 가상 사설 게이트웨이를 사용합니다.

제한 사항

  • 가상 사설 게이트웨이의 VPN 연결에서는 IPv6 트래픽을 지원하지 않습니다.

  • AWS VPN 연결은 Path MTU Discovery를 지원하지 않습니다.

또한 Site-to-Site VPN을 사용할 때 다음 사항을 고려하십시오.

  • VPC를 온프레미스 네트워크에 연결할 때 네트워크에 중첩되지 않는 CIDR 블록을 사용하는 것이 좋습니다.

클라이언트 VPN

자신의 기기에서 VPC로 연결

개념

  • 클라이언트 VPN 엔드포인트: 클라이언트 VPN 세션을 활성화하고 관리하기 위해 생성하고 구성하는 리소스입니다. 모든 클라이언트 VPN 세션이 종료되는 리소스입니다.

  • 대상 네트워크: 대상 네트워크는 클라이언트 VPN 엔드포인트와 연관된 네트워크입니다. VPC의 서브넷은 대상 네트워크입니다. 서브넷을 클라이언트 VPN 엔드포인트와 연결하면 VPN 세션을 설정할 수 있습니다. 고가용성을 위해 여러 서브넷을 클라이언트 VPN 엔드포인트에 연결할 수 있습니다. 모든 서브넷은 동일한 VPC에 속해야 합니다. 각 서브넷은 서로 다른 가용 영역에 속해야 합니다.

  • 경로: 각 클라이언트 VPN 엔드포인트에는 사용 가능한 대상 네트워크 경로를 설명하는 경로 테이블이 있습니다. 경로 테이블의 각 경로는 특정 리소스 또는 네트워크로의 트래픽 경로를 지정합니다.

  • 인가 규칙: 인가 규칙은 네트워크에 액세스할 수 있는 사용자를 제한합니다. 지정된 네트워크에 대해 액세스가 허용된 Active Directory 또는 식별 제공자(IdP) 그룹을 구성합니다. 이 그룹에 속한 사용자만 지정된 네트워크에 액세스할 수 있습니다. 기본적으로 인가 규칙이 없으며, 사용자가 리소스 및 네트워크에 액세스하려면 인가 규칙을 구성해야 합니다.

  • 클라이언트: VPN 세션을 설정하기 위해 클라이언트 VPN 엔드포인트에 연결하는 최종 사용자입니다. 사용자는 OpenVPN 클라이언트를 다운로드하고 생성한 클라이언트 VPN 구성 파일을 사용하여 VPN 세션을 설정해야 합니다.

  • 클라이언트 CIDR 범위: 클라이언트 IP 주소를 할당할 범위입니다. 클라이언트 VPN 엔드포인트에 대한 각 연결은 클라이언트 CIDR 범위에서 고유한 IP 주소가 할당됩니다. 예를 들어 10.2.0.0/16과 같은 클라이언트 CIDR 범위를 선택할 수 있습니다.

  • 클라이언트 VPN 포트: AWS 클라이언트 VPN은 TCP 및 UDP의 포트 443 및 1194를 지원합니다. 기본값은 포트 443입니다.

  • 클라이언트 VPN 네트워크 인터페이스: 서브넷을 클라이언트 VPN 엔드포인트에 연결하면 해당 서브넷에 클라이언트 VPN 네트워크 인터페이스가 생성됩니다. 클라이언트 VPN 엔드포인트에서 VPC로 전송된 트래픽은 클라이언트 VPN 네트워크 인터페이스를 통해 전송됩니다. 그런 다음 클라이언트 CIDR 범위의 소스 네트워크 주소 변환(SNAT)이 적용되어 클라이언트 VPN 네트워크 인터페이스 IP 주소로 변환됩니다.

  • 연결 로깅: 클라이언트 VPN 엔드포인트에 대한 연결 로깅을 활성화하여 연결 이벤트를 기록할 수 있습니다. 이 정보를 사용하여 포렌식을 실행하거나 클라이언트 VPN 엔드포인트의 사용 방법을 분석하거나 연결 문제를 해결할 수 있습니다.

  • 셀프 서비스 포털: 클라이언트 VPN 엔드포인트에 대한 셀프 서비스 포털을 활성화할 수 있습니다. 클라이언트는 자격 증명을 사용하여 웹 기반 포털에 로그인하고 클라이언트 VPN 엔드포인트 구성 파일의 최신 버전 또는 AWS에서 제공하는 클라이언트의 최신 버전을 다운로드할 수 있습니다.

제한 사항

  • 클라이언트 CIDR 범위는 연결된 서브넷이 위치한 VPC의 로컬 CIDR과 중첩될 수 없습니다 또는 클라이언트 VPN 엔드포인트의 경로 테이블에 수동으로 추가된 경로.

  • 클라이언트 CIDR 범위는 최소 /22의 블록 크기를 가져야 하며 /12보다 크지 않아야 합니다.

  • 클라이언트 CIDR 범위의 일부 주소는 클라이언트 VPN 엔드포인트의 가용성 모델을 지원하기 위해 사용되어 클라이언트에 할당할 수 없습니다. 따라서 클라이언트 VPN 엔드포인트에서 지원할 최대 동시 연결 수를 활성화하기 위해 필요한 IP 주소의 두 배를 포함하는 CIDR 블록을 할당하는 것이 좋습니다.

  • 클라이언트 CIDR 범위는 클라이언트 VPN 엔드포인트를 생성한 후에는 변경할 수 없습니다.

  • 클라이언트 VPN 엔드포인트에 연결된 서브넷은 동일한 VPC에 있어야 합니다.

  • 동일한 가용 영역에서 여러 서브넷을 클라이언트 VPN 엔드포인트에 연결할 수 없습니다.

  • 클라이언트 VPN 엔드포인트는 전용 테넌시 VPC에서 서브넷 연결을 지원하지 않습니다.

  • 클라이언트 VPN은 IPv4 트래픽만 지원합니다.

  • 클라이언트 VPN은 연방 정보 처리 표준(FIPS)을 준수하지 않습니다.

  • 만약 Active Directory에서 다중 요소 인증(MFA)가 비활성화된 경우 사용자 암호는 다음 형식이어서는 안됩니다.

SCRV1:<base64_encoded_string>:<base64_encoded_string>
  • 상호 인증을 사용하여 인증하는 클라이언트에 대해 셀프 서비스 포털을 사용할 수 없습니다.

最終更新