방화벽을 통과하지 않고 지나가는 NIC 가
NIC 가 아닌 Routing 을 통해서 우회해서 접근해야한다. ( 보안성 )
방화벽을 우회하는 경우 다른 서버들도 NIC를 발판 삼아 DB로 접속 할 수 있다.
때문에 다른 네트워크로 접속할 땐 네으퉈크 인터페이스가 아닌 라우팅에 의존해야한다.
따라서 L3에 라우팅 설정하여 우측 프라이빗 서버로 보내는 트래픽을 방화벽에 전달 할수 있다.
(빨간색 공간: 프라이빗, 파란색 공간: 퍼블릭)
“ 점프 서버 , 점프 호스트 또는 점프 박스 는 별도의 보안 영역에 있는 장치에 액세스하고 관리하는 데 사용되는 네트워크 의 시스템입니다 . 점프 서버는 두 개의 서로 다른 보안 영역에 걸쳐 있고 이들 사이에 제어된 액세스 수단을 제공하는 강화 되고 모니터링되는 장치입니다." — 위키피디아
jump box - public network 에서 private network 와 소통할 때의 게이트웨이가 필요한데 이것을 EC2 서버에서 처리하려고 할 때 사용 하는듯 하다.
1부
1.VPC
2.Subnet
3.Internet G/W (VPC에 붙이기,
라우팅 테이블에서 퍼블릭/ 프라이빗 끼리 묶어서 사용하며 퍼블릭 라우팅 테이블에 IGW를 가져다가 붙였다.)
4.RouteTable 생성 => public + IGW => private
2부
5.EC2 => Public subnet, sg 설정
6.EIP (퍼블릭 아이피인 고정 IP 생성 및 EC2에 연결)
7.JUMP BOX 설정
Jumpbox
가 있는Public subnet
을 외부에서 관리하는 서버라 가정 (SSH 용 server 라고 하면)Private subnet
은 내부에서 외부와 소통하지 못하고Jumpbox
와만 소통 가능한 터널을 뜷어 둔다.- 포트포워딩을 통해 내 PC에서
Jumpbox
로 요청을 xxx.xxx.xxx.xxx:3900 으로 요청 보내면Private subnet
에 존재하는 XXX.XXX.XXX.XXX:5600 번으로 요청을 보내준다.
1. VPC 에 붙이기
2. 라우팅 테이블에서 퍼블릭/ 프라이빗 끼리 묶어서 사용하며 퍼블릭 라우팅 테이블에 IGW를 가져다가 붙였다.
#### 💘 private 라우팅테이블과 NAT(NAT 게이트웨이) 연결
VPC NAT Gateway
VPC Internet Gateway
- private subnet 안에 있는 private instance 가 외부의 인터넷과 통신하기 위한 방법, 외부의 internet 이 private instance 와 소통하는 방법은
Bastion host
를 이용
- NAT Instance는 단일 Instance (EC2)
- NAT Gateway는 aws에서 제공하는 서비스 (서비스)
- NAT Instance는 Public Subnet에 있어야 함.
- NAT 게이트 웨이 특징
- NAT 게이트웨이는 소스 IP 변환이 주 목적이다. 퍼블릭 유형과 프라이빗 유형이 있다.
- 퍼블릭 유형은 프라이빗 IP 만 소유한 서비스가 인터넷 접속이 필요할 때 사용하고, 프라이빗 유형은 인터넷 접속과 관계없이 소스 주소 변환의 목적으로만 사용한다.
- NAT 게이트웨이의 패런트는 서브넷이다.
- NAT 게이트웨이는 라우팅 ENI를 사용하는 서비스다.
- 라우팅 ENI는 SG를 사용하지 않으며 소스/대상 확인 옵션이 꺼져 있다. 즉, 트래픽을 단순 포워딩한다.
- NAT 게이트웨이의 ENI는 요청자 관리형이다. 그러므로 ENI 화면에서 옵션 변경이 불가능하다.
- 퍼블릭 유형의 NAT 게이트 웨이를 생성하려면 인터넷 접속에 필요한 탄력적 IP를 연결해야 한다. 연결할 시점에 리전에 할당된 탄력적 IP가 없으면 NAT 게이트웨이 생성 단계에서 탄력적 IP 할당과 동시에 연결할 수도 있다.
- NAT 게이트웨이를 라우팅 타깃으로 설정하면 라우팅 대상의 모든 트래픽은 NAT 게이트웨이로 전달된다.
- 퍼블릭 유형의 NAT 게이트웨이로 진입한 트래픽은 탄력적 IP로써 인터넷에 전송된다.
92.75.20.100
(프라이빗 인스턴스)의 접속 순서
①92.75.20.0/24
(프라이빗 서브넷) 라우팅 테이블은nat-08f62d78
(NAT 게이트웨이)을 타깃으로 설정했다.122.248.192.71
에 접속하는 트래픽은nat-08f62d78
을 전달된다.
②92.75.100./24
(퍼블릭 서브넷) 라우팅 테이블은igw-cd0794a6
을 타깃으로 설정했다.122.248.192.71
에 접속하는 트래픽은igw-cd0794a6
으로 전달돼 인터넷으로 나간다.
92.75.20.0/24
(프라이빗 서브넷) 에서122.248.192.71
(인터넷 서버)을 향하는 트래픽을 생성하면 먼저 Router 를 통해nat-08f62d78
(NAT 게이트웨이 / 퍼블릭 서브넷에 존재) 로 이동 ➡ 소스 IP가 NAT 게이트웨어의 프라이빗 IP 주소로 변환되어igw-cd0794a6
으로 전달 ➡ IGW(인터넷 게이트웨이)에서 소스 IP(NAT G/W IP)에서 매핑되는 주소Ex) 3.5.136.95
로 변환해 트래픽을 전송
(1) 인바운드 트래픽이 IGW(Internet gate way)로 유입되면 NAT 변환(퍼블릭 ➡ 프라이빗)을 수행한다.
(2-1) 엣지 연결(게이트웨이 라우팅 테이블)이 없으면 (1) 에서 변환한 프라이빗 IP로 트래픽을 전달 한다.
(2-2) 엣지 연결이 있으면 (1) 에서 변환된 프라이빗 IP를 게이트웨이 라우팅 테이블에서 확인한 후 관련 타깃으로 트래픽을 전달한다.
"" 서브넷이 인터넷 게이트웨이로 향하는 라우팅이 있는 라우팅 테이블과 연결되는 경우, 이를 퍼블릭 서브넷이라고 합니다. 서브넷이 인터넷 게이트웨이로 향하는 라우팅이 없는 라우팅 테이블과 연결되는 경우 이를 프라이빗 서브넷이라고 합니다. ""
"" 퍼블릭 서브넷의 라우팅 테이블에서 라우팅 테이블에 명시적으로 알려지지 않은 모든 대상에 대한 인터넷 게이트웨이의 라우팅을 지정할 수 있습니다(IPv4의 경우 0.0.0.0/0 또는 IPv6의 경우 ::/0). 또는 라우팅을 더 좁은 범위의 IP 주소(예: AWS 외부에 있는 회사 퍼블릭 엔드포인트의 퍼블릭 IPv4 주소 또는 VPC 외부에 있는 다른 Amazon EC2 인스턴스의 탄력적 IP 주소)로 지정할 수 있습니다. ""
"" 여기서 Public Subnet 은 Public 용 Routing Table 의 IGW 항목을 참조하게 되고 Private Subnet 은 Private 용 Routing Table 에 IGW 항목이 없기 때문에 인터넷 통신이 되지 않는 것입니다. 그래서 출발지가 Private Subnet 의 EC2 가 인터넷상의 통신을 하고자 한다면 NAT Gateway 를 통해야 하는 것입니다. ""
동적 클라우드 컴퓨팅을 위해 고안된 정적 IPv4 주소
인터넷에서 연결 가능한 퍼블릭 IPv4
문제가 생겨 인스턴스를 중지하고 다시 실행한다면 IP가 변경되기 때문에 정적인 탄력적 IP를 할당받아 사용
💥 주의
탄력적 IP 주소의 효율적인 사용을 위해 탄력적 IP 주소가 실행 중인 인스턴스와 연결되어 있지 않거나 중지된 인스턴스 또는 연결되지 않은 네트워크 인터페이스와 연결된 경우 소액의 시간당 요금이 부과됩니다.
🆘 인스턴스를 VPN 게이트 웨이로 활용하려면 전달된 트래픽을 NAT 처럼 단순히 다른 네트워크로 전송해야되기 때문에 소스/대상 확인 옵션을 꺼야한다.
$ sudo vi /etc/ssh/sshd_config
#port 22 # 이 줄의 주석을 제거하고 포트 번호를 2022로 변경
$ sudo systemctl restart sshd
AWS EC2 콘솔 - 보안 그룹으로 이동하여 사용자 지정 SSH 포트 2022에 대한 인바운드 규칙을 생성합니다. 소스를 공개 IP로 업데이트합니다. 이 규칙은 지정된 IP 주소 블록에서만 포트 2022에서 들어오는 연결을 허용
💥 일반적으로 AWS EC2 는, EC2 생성 시 발급 받은 pem key 를 사용해 SSH 접속한다. 이는, brute force 공격에 의해 암호가 탈취되는 것을 막기 위한 보안 조치이다.
따라서 pem key 없이 AWS EC2 에 SSH 접속하는 방식은 보안 측면에서 위험하나 특수한 상황에 따라 pem key 없이, 임시적으로 User 를 생성하여, User-password 방식으로 EC2 에 SSH 접속 가능하도록 설정해야 할 수도 있다. 보통, 협업 시 접근 편의성을 위해 해당 방식을 사용한다.
sudo adduser "유저명" # 유저 생성
sudo passwd "유저명" # 비밀번호 변경
# 파일 권한 변경
sudo chmod u+w /etc/sudoers
# 파일 접근
sudo vi /etc/sudoers
"유저명" ALL=(ALL:ALL) ALL
sudo vim /etc/ssh/sshd_config
PasswordAuthencation yes
sudo service sshd restart
ssh -p [변경한 포트] 생성한유저@ec2주소[or 도메인네임]
AWS EC2 에 putty로 연결하기 PuTTYgen으로 pem파일을 ppk로 변환 필수 + AWS PuTTY 연결하기 + PuTTY 한글 깨짐 해결
private EC2 생성
NAT 게이트웨이 생성( EIP 할당 및 (public) 서브넷 안에 생성)
private EC2 의 라우팅 테이블에 NAT 게이트 웨이 추가 (0.0.0.0/0 모든 요청)
VPC EndPoint 생성 하면 private ec2에 라우팅 테이블과 연동
SG 설정 및 라우팅 테이블 으로 Bastion Host 와 Resource 연결
VPC의CIDR블록의 사용이유와 설정방법
[네트워크] CIDR이란?(사이더 란?)
공통
RDS
VPC
Subnet
Routing Table
Internet Gateway
Elastic IP
Endpoint
NAT Gateway
Security Group