AWS - VPC & Networking Basic Information
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
A VPC contains a network CIDR like 10.0.0.0/16 (with its routing table and network ACL).
이 VPC 네트워크는 서브네트워크로 나뉘어 있으며, 서브네트워크는 VPC, 라우팅 테이블 및 네트워크 ACL과 직접 연관되어 있습니다.
그 다음, 서비스(예: EC2 인스턴스)에 연결된 네트워크 인터페이스는 보안 그룹과 함께 서브네트워크에 연결됩니다.
따라서, 보안 그룹은 서브네트워크와 관계없이 사용하는 네트워크 인터페이스의 노출된 포트를 제한합니다. 그리고 네트워크 ACL은 전체 네트워크에 대한 노출된 포트를 제한합니다.
또한, 인터넷에 접근하기 위해 확인해야 할 몇 가지 흥미로운 구성 요소가 있습니다:
서브네트워크는 공용 IPv4 주소를 자동 할당할 수 있습니다.
IPv4 주소를 자동 할당할 수 있는 네트워크에서 생성된 인스턴스는 하나를 받을 수 있습니다.
인터넷 게이트웨이는 VPC에 연결되어야 합니다.
Egress-only 인터넷 게이트웨이를 사용할 수도 있습니다.
프라이빗 서브넷에 NAT 게이트웨이를 두어 해당 프라이빗 서브넷에서 외부 서비스에 연결할 수 있지만, 외부에서 그들에 도달하는 것은 불가능합니다.
NAT 게이트웨이는 공용(인터넷 접근) 또는 프라이빗(다른 VPC 접근)일 수 있습니다.
Amazon Virtual Private Cloud (Amazon VPC)는 정의한 가상 네트워크에 AWS 리소스를 시작할 수 있게 해줍니다. 이 가상 네트워크는 여러 서브넷, 인터넷 게이트웨이를 통해 인터넷에 접근하고, ACL, 보안 그룹, IP 등을 포함합니다.
서브넷은 더 높은 수준의 보안을 강화하는 데 도움을 줍니다. 유사한 리소스의 논리적 그룹화는 인프라 전반에 걸쳐 관리의 용이성을 유지하는 데도 도움이 됩니다.
유효한 CIDR은 /16 넷마스크에서 /28 넷마스크까지입니다.
서브넷은 동시에 서로 다른 가용 영역에 있을 수 없습니다.
AWS는 각 서브넷의 첫 세 호스트 IP 주소를 내부 AWS 사용을 위해 예약합니다: 첫 번째 호스트 주소는 VPC 라우터에 사용됩니다. 두 번째 주소는 AWS DNS에 예약되어 있으며, 세 번째 주소는 향후 사용을 위해 예약되어 있습니다.
인터넷에 직접 접근할 수 있는 서브넷을 공용 서브넷이라고 하며, 프라이빗 서브넷은 그렇지 않습니다.
라우팅 테이블은 VPC 내 서브넷의 트래픽 라우팅을 결정합니다. 이들은 어떤 네트워크 트래픽이 인터넷으로 또는 VPN 연결로 전달되는지를 결정합니다. 일반적으로 다음에 대한 접근을 찾을 수 있습니다:
로컬 VPC
NAT
인터넷 게이트웨이 / Egress-only 인터넷 게이트웨이 (VPC가 인터넷에 접근할 수 있도록 필요합니다).
서브넷을 공용으로 만들려면 인터넷 게이트웨이를 생성하고 VPC에 연결해야 합니다.
VPC 엔드포인트 (프라이빗 네트워크에서 S3에 접근하기 위해)
다음 이미지를 통해 기본 공용 네트워크와 프라이빗 네트워크의 차이를 확인할 수 있습니다:
네트워크 접근 제어 목록 (ACLs): 네트워크 ACL은 서브넷에 대한 수신 및 송신 네트워크 트래픽을 제어하는 방화벽 규칙입니다. 특정 IP 주소 또는 범위에 대한 트래픽을 허용하거나 거부하는 데 사용할 수 있습니다.
보안 그룹을 사용하여 접근을 허용/거부하는 것이 가장 일반적이지만, 이는 이미 설정된 리버스 셸을 완전히 차단하는 유일한 방법입니다. 보안 그룹의 수정된 규칙은 이미 설정된 연결을 중단하지 않습니다.
그러나 이는 전체 서브네트워크에 적용되므로 필요한 기능이 방해받을 수 있으니 주의해야 합니다.
보안 그룹은 VPC 내 인스턴스에 대한 수신 및 송신 네트워크 트래픽을 제어하는 가상 방화벽입니다. 1 SG와 M 인스턴스의 관계 (일반적으로 1 대 1). 일반적으로 이는 인스턴스에서 위험한 포트를 열기 위해 사용됩니다. 예를 들어 포트 22와 같은 경우입니다:
_Elastic IP 주소_는 동적 클라우드 컴퓨팅을 위해 설계된 정적 IPv4 주소입니다. Elastic IP 주소는 AWS 계정에 할당되며, 이를 해제할 때까지 귀하의 것입니다. Elastic IP 주소를 사용하면 인스턴스나 소프트웨어의 실패를 마스킹하여 주소를 계정 내 다른 인스턴스로 신속하게 재매핑할 수 있습니다.
기본적으로 모든 서브넷은 공용 IP 주소의 자동 할당이 꺼져 있습니다. 그러나 이를 켤 수 있습니다.
라우팅 테이블 내의 로컬 경로는 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과 VPC 2는 서로 직접 통신할 수 있으며, VPC 2와 VPC 3도 마찬가지입니다. 그러나 VPC 1과 VPC 3은 통신할 수 없습니다. 하나의 VPC를 통해 다른 VPC에 접근할 수 없습니다.
VPC 내에서 수백 또는 수천 개의 리소스가 서로 다른 공용 및 프라이빗 서브넷 간에 통신하고, VPC 피어링 연결을 통해 서로 다른 VPC 간에 통신할 수 있습니다. VPC Flow Logs는 VPC 내 리소스의 네트워크 인터페이스 간에 흐르는 IP 트래픽 정보를 캡처할 수 있게 해줍니다.
S3 접근 로그 및 CloudFront 접근 로그와 달리, VPC Flow Logs에 의해 생성된 로그 데이터는 S3에 저장되지 않습니다. 대신, 캡처된 로그 데이터는 CloudWatch 로그로 전송됩니다.
제한 사항:
VPC 피어링 연결을 실행하는 경우, 동일한 계정 내의 피어링된 VPC의 흐름 로그만 볼 수 있습니다.
EC2-Classic 환경 내에서 리소스를 실행하는 경우, 불행히도 그들의 인터페이스에서 정보를 검색할 수 없습니다.
VPC Flow Log가 생성된 후에는 변경할 수 없습니다. VPC Flow Log 구성을 변경하려면 삭제한 후 새로 생성해야 합니다.
다음 트래픽은 로그에 의해 모니터링되거나 캡처되지 않습니다. VPC 내의 DHCP 트래픽, Amazon DNS 서버를 대상으로 하는 인스턴스의 트래픽.
VPC 기본 라우터의 IP 주소로 향하는 트래픽과 인스턴스 메타데이터 수집에 사용되는 169.254.169.254 및 Amazon Time Sync Service에 사용되는 169.254.169.123으로의 트래픽.
Windows 인스턴스의 Amazon Windows 활성화 라이센스와 관련된 트래픽
네트워크 로드 밸런서 인터페이스와 엔드포인트 네트워크 인터페이스 간의 트래픽
CloudWatch 로그 그룹에 데이터를 게시하는 각 네트워크 인터페이스는 다른 로그 스트림을 사용합니다. 이러한 스트림 내에는 로그 항목의 내용을 보여주는 흐름 로그 이벤트 데이터가 포함됩니다. 각 로그는 약 10~15분 동안의 데이터를 캡처합니다.
Customer Gateway:
Customer Gateway는 VPN 연결의 귀하 측을 나타내기 위해 AWS에서 생성하는 리소스입니다.
이는 본질적으로 사이트 간 VPN 연결의 귀하 측에 있는 물리적 장치 또는 소프트웨어 애플리케이션입니다.
라우팅 정보를 제공하고 귀하의 네트워크 장치(예: 라우터 또는 방화벽)의 공용 IP 주소를 AWS에 제공하여 Customer Gateway를 생성합니다.
VPN 연결을 설정하기 위한 참조 지점 역할을 하며 추가 요금이 발생하지 않습니다.
Virtual Private Gateway:
Virtual Private Gateway (VPG)는 사이트 간 VPN 연결의 Amazon 측에 있는 VPN 집중기입니다.
VPC에 연결되어 있으며 VPN 연결의 대상 역할을 합니다.
VPG는 VPN 연결의 AWS 측 엔드포인트입니다.
귀하의 VPC와 온프레미스 네트워크 간의 안전한 통신을 처리합니다.
Site-to-Site VPN Connection:
Site-to-Site VPN 연결은 귀하의 온프레미스 네트워크를 VPC에 안전한 IPsec VPN 터널을 통해 연결합니다.
이 유형의 연결은 Customer Gateway와 Virtual Private Gateway가 필요합니다.
데이터 센터 또는 네트워크와 AWS 환경 간의 안전하고 안정적이며 일관된 통신을 위해 사용됩니다.
일반적으로 정기적이고 장기적인 연결에 사용되며, 연결을 통해 전송된 데이터 양에 따라 요금이 부과됩니다.
Client VPN Endpoint:
Client VPN 엔드포인트는 클라이언트 VPN 세션을 활성화하고 관리하기 위해 AWS에서 생성하는 리소스입니다.
개별 장치(예: 노트북, 스마트폰 등)가 AWS 리소스 또는 온프레미스 네트워크에 안전하게 연결할 수 있도록 사용됩니다.
전체 네트워크를 연결하는 것이 아니라 개별 클라이언트를 위해 설계되었다는 점에서 Site-to-Site VPN과 다릅니다.
Client VPN을 사용하면 각 클라이언트 장치가 VPN 클라이언트 소프트웨어를 사용하여 안전한 연결을 설정합니다.
온프레미스 네트워크를 VPC와 연결합니다.
VPN 연결: 온프레미스 장비와 VPC 간의 안전한 연결입니다.
VPN 터널: 고객 네트워크에서 AWS로 또는 그 반대로 데이터가 통과할 수 있는 암호화된 링크입니다.
각 VPN 연결에는 고가용성을 위해 동시에 사용할 수 있는 두 개의 VPN 터널이 포함됩니다.
Customer gateway: AWS에 고객 게이트웨이 장치에 대한 정보를 제공하는 AWS 리소스입니다.
Customer gateway device: 사이트 간 VPN 연결의 귀하 측에 있는 물리적 장치 또는 소프트웨어 애플리케이션입니다.
Virtual private gateway: 사이트 간 VPN 연결의 Amazon 측에 있는 VPN 집중기입니다. 사이트 간 VPN 연결의 Amazon 측 게이트웨이로 가상 프라이빗 게이트웨이 또는 전송 게이트웨이를 사용합니다.
Transit gateway: VPC와 온프레미스 네트워크를 상호 연결하는 데 사용할 수 있는 전송 허브입니다. 사이트 간 VPN 연결의 Amazon 측 게이트웨이로 전송 게이트웨이 또는 가상 프라이빗 게이트웨이를 사용합니다.
가상 프라이빗 게이트웨이에서 VPN 연결에 대한 IPv6 트래픽은 지원되지 않습니다.
AWS VPN 연결은 경로 MTU 발견을 지원하지 않습니다.
또한, 사이트 간 VPN을 사용할 때 다음 사항을 고려하십시오.
VPC를 공통 온프레미스 네트워크에 연결할 때는 네트워크에 대해 겹치지 않는 CIDR 블록을 사용하는 것이 좋습니다.
귀하의 머신에서 VPC로 연결합니다.
Client VPN endpoint: 클라이언트 VPN 세션을 활성화하고 관리하기 위해 생성하고 구성하는 리소스입니다. 모든 클라이언트 VPN 세션이 종료되는 리소스입니다.
Target network: Target network는 Client VPN 엔드포인트와 연결하는 네트워크입니다. VPC의 서브넷이 Target network입니다. 서브넷을 Client VPN 엔드포인트와 연결하면 VPN 세션을 설정할 수 있습니다. 고가용성을 위해 Client VPN 엔드포인트와 여러 서브넷을 연결할 수 있습니다. 모든 서브넷은 동일한 VPC에 속해야 하며, 각 서브넷은 서로 다른 가용 영역에 속해야 합니다.
Route: 각 Client VPN 엔드포인트에는 사용 가능한 목적지 네트워크 경로를 설명하는 라우팅 테이블이 있습니다. 라우팅 테이블의 각 경로는 특정 리소스 또는 네트워크로의 트래픽 경로를 지정합니다.
Authorization rules: 권한 부여 규칙은 네트워크에 접근할 수 있는 사용자를 제한합니다. 특정 네트워크에 대해 접근이 허용된 Active Directory 또는 ID 공급자(IdP) 그룹을 구성합니다. 이 그룹에 속한 사용자만 지정된 네트워크에 접근할 수 있습니다. 기본적으로 권한 부여 규칙이 없으며, 사용자가 리소스 및 네트워크에 접근할 수 있도록 권한 부여 규칙을 구성해야 합니다.
Client: VPN 세션을 설정하기 위해 Client VPN 엔드포인트에 연결하는 최종 사용자입니다. 최종 사용자는 OpenVPN 클라이언트를 다운로드하고, VPN 세션을 설정하기 위해 생성한 Client VPN 구성 파일을 사용해야 합니다.
Client CIDR range: 클라이언트 IP 주소를 할당할 IP 주소 범위입니다. Client VPN 엔드포인트에 대한 각 연결은 클라이언트 CIDR 범위에서 고유한 IP 주소가 할당됩니다. 클라이언트 CIDR 범위를 선택합니다. 예를 들어, 10.2.0.0/16
입니다.
Client VPN ports: AWS Client VPN은 TCP 및 UDP 모두에 대해 포트 443 및 1194를 지원합니다. 기본값은 포트 443입니다.
Client VPN network interfaces: 서브넷을 Client VPN 엔드포인트와 연결하면 해당 서브넷에 Client VPN 네트워크 인터페이스가 생성됩니다. Client VPN 엔드포인트에서 VPC로 전송되는 트래픽은 Client VPN 네트워크 인터페이스를 통해 전송됩니다. 그런 다음 소스 네트워크 주소 변환(SNAT)이 적용되어 클라이언트 CIDR 범위의 소스 IP 주소가 Client VPN 네트워크 인터페이스 IP 주소로 변환됩니다.
Connection logging: Client VPN 엔드포인트에 대한 연결 이벤트를 기록하기 위해 연결 로깅을 활성화할 수 있습니다. 이 정보를 사용하여 포렌식을 수행하거나 Client VPN 엔드포인트가 어떻게 사용되고 있는지 분석하거나 연결 문제를 디버깅할 수 있습니다.
Self-service portal: Client VPN 엔드포인트에 대한 셀프 서비스 포털을 활성화할 수 있습니다. 클라이언트는 자격 증명을 사용하여 웹 기반 포털에 로그인하고 Client VPN 엔드포인트 구성 파일의 최신 버전을 다운로드하거나 AWS에서 제공하는 클라이언트의 최신 버전을 다운로드할 수 있습니다.
클라이언트 CIDR 범위는 연결된 서브넷이 위치한 VPC의 로컬 CIDR과 겹칠 수 없습니다, 또는 Client VPN 엔드포인트의 라우팅 테이블에 수동으로 추가된 경로와 겹칠 수 없습니다.
클라이언트 CIDR 범위는 최소 /22의 블록 크기를 가져야 하며, /12보다 커서는 안 됩니다.
클라이언트 CIDR 범위의 일부 주소는 Client VPN 엔드포인트의 가용성 모델을 지원하는 데 사용되며, 클라이언트에 할당될 수 없습니다. 따라서 최대 동시 연결 수를 지원하기 위해 필요한 IP 주소 수의 두 배를 포함하는 CIDR 블록을 할당하는 것이 좋습니다.
클라이언트 CIDR 범위는 Client VPN 엔드포인트를 생성한 후 변경할 수 없습니다.
Client VPN 엔드포인트와 연결된 서브넷은 반드시 동일한 VPC에 있어야 합니다.
동일한 가용 영역의 여러 서브넷을 Client VPN 엔드포인트와 연결할 수 없습니다.
Client VPN 엔드포인트는 전용 테넌시 VPC에서 서브넷 연결을 지원하지 않습니다.
Client VPN은 IPv4 트래픽만 지원합니다.
Client VPN은 연방 정보 처리 표준(FIPS) 준수가 아닙니다.
다단계 인증(MFA)이 Active Directory에 대해 비활성화된 경우, 사용자 비밀번호는 다음 형식일 수 없습니다.
셀프 서비스 포털은 상호 인증을 사용하는 클라이언트에 대해 사용할 수 없습니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)