📝 Velog 포스팅 목차 및 핵심 내용
1. Bastion Host: 보안의 시작이자 끝
- Bastion Host의 정의: 외부 인터넷에서 프라이빗 서브넷에 있는 자원에 안전하게 접근하기 위한 '프록시(Proxy)' 역할의 서버.
- 필요성: 프라이빗 서브넷은 공인 IP가 없어 직접 접속이 불가능하다. 하지만 관리자는 패치나 설정을 위해 접속해야 하므로, 퍼블릭에 '대문(Bastion)'을 하나 두고 이를 통해서만 들어가게 설계한다.
2. 아키텍처 설계: Multi-AZ 3-Tier 구성
오늘 구축한 네트워크의 핵심 설계를 공유합니다.
- VPC CIDR 설계:
10.0.0.0/20을 사용하여 총 4,096개의 IP 확보.
- 서브넷 전략: * Public: 로드밸런서(ALB), NAT 게이트웨이, Bastion 배치.
- App Private: 애플리케이션 서버 배치. EKS 파드 확장을 고려해
/22(1024개 IP)로 넉넉하게 할당.
- DB Private: 외부와 완전히 차단된 Isolated 영역.
- 고가용성(HA): 가용 영역(AZ) 1, 2에 각각 NAT 게이트웨이를 배치하여 데이터센터 장애에 대비.
3. 오늘의 삽질: 트러블슈팅 리포트 (핵심 섹션)
이슈 1: "서브넷은 퍼블릭인데, 인스턴스는 퍼블릭이 아니다?"
- 상황: Bastion 호스트에 접속하려니 "퍼블릭 서브넷에 있지 않다"는 에러 발생.
- 원인: CloudFormation의 경쟁 상태(Race Condition). 인터넷 게이트웨이(IGW)가 VPC에 완전히 붙기 전에 인스턴스가 먼저 생성되면서 경로를 찾지 못한 것.
- 해결:
DependsOn: VPCGatewayAttachment 속성을 통해 리소스 생성 순서를 명시적으로 제어.
이슈 2: error in libcrypto SSH 접속 실패
- 상황: Bastion에서 프라이빗 서버로 접속 시
.pem 키 로드 에러 발생.
- 원인: 키 파일의 권한(
chmod 400) 미비 및 복사 과정에서의 포맷 손상.
- 해결: PuttyGen을 통한 올바른
OpenSSH 포맷 변환 및 권한 설정의 중요성 확인.
4. 아키텍처적 고찰: ALB는 왜 퍼블릭에 있는가?
- 로드밸런서(ALB)는 사용자를 맞는 '정문'이므로 퍼블릭에 위치해야 한다.
- 하지만 실제 데이터가 있는 서버는 '안방(Private)'에 숨긴다.
- 결론: 로드밸런서가 퍼블릭에서 트래픽을 받아 프라이빗 타겟 그룹으로 넘겨주는 구조가 보안의 정석임을 실습으로 증명.