본문 바로가기
DevOps/Architecture

3tier아키텍쳐구성3-네트워크 설정(6.보안그룹 7.로드밸런서)

by 카프리썬 2020. 2. 11.
728x90

전체적인 3티어 아키텍쳐 목차 보고오기

https://pearlluck.tistory.com/78?category=830422

 

3tier아키텍쳐 전체적인 구성

1. 아키텍쳐구성도 2. 네트워크 구성 1. vpc생성 Ipv4 사이더주소 - 10.0.0.0/16 2. 서브넷 생성 3. 인터넷게이트웨이 생성 VPC와 외부인터넷을 연결해주는 하나의 관문으로 출발지가 ‘외부’ 외부인..

pearlluck.tistory.com

3티어 아키텍쳐1,2단계 보고오기

https://pearlluck.tistory.com/68

 

3tier아키텍쳐 구성1-네트워크 설정(1.VPC 2.서브넷)

▼▼▼전체적인 3티어 아키텍쳐 목차 보고오기▼▼ https://pearlluck.tistory.com/78?category=830422 3tier아키텍쳐 전체적인 구성 1. 아키텍쳐구성도 2. 네트워크 구성 1. vpc생성 Ipv4 사이더주소 - 10.0.0.0/..

pearlluck.tistory.com

3티어 아키텍쳐3,4,5단계 보고오기

https://pearlluck.tistory.com/69

 

3tier아키텍쳐구성2-네트워크 설정(3.IGW 4. NAT 5.라우팅테이블)

▼▼▼전체적인 3티어 아키텍쳐 목차 보고오기▼▼ https://pearlluck.tistory.com/78?category=830422 3tier아키텍쳐 전체적인 구성 1. 아키텍쳐구성도 2. 네트워크 구성 1. vpc생성 Ipv4 사이더주소 - 10.0.0.0/..

pearlluck.tistory.com

네트워크 설정

6. 보안그룹구성(+네트워크 ACL)

7. EC2생성 (+Bastion 호스트생성)

 

 

6. 보안그룹

방화벽, 각 구조마다 보안그룹만듬 -> 방화벽을 계층화 하는 의미

인스턴스하나에 설정하는게 아니라 여러 개의 인스턴스에 적용할 수 있음

기본적으로 차단, 서비스 설치하면 항상 보안그룹에서 해당하는 포트작업 열어주기
나가는거 제한하지 않지만 들어오는건 차단해서 열어줌

 

Name

Type

Port

Soure

B-SG

SSH

22

0.0.0.0/0

EX-ELB-SG

HTTP

80

0.0.0.0/0

WEB-SG

HTTP

80

0.0.0.0/0

IN-ELB-SG

HTTP

8080

WEB-SG

WAS-SG

HTTP

8080

IN-ELB-SG

DB-SG

HTTP

3306

WAS-SG

1-1. Bastion 보안그룹(b-sg) : 모든 ip에서 ssh접속을 할 수 있도록 22포트개방

1-2. 외부 로드밸런서 보안그룹(ex-elb-sg) : 모든ip에서 http접속을 할 수 있도록 80번포트개방 

1-3. 웹 보안그룹(web-sg) : 모든ip에서 http접속을 할 수 있도록 80번포트개방 

1-4. 내부로드밸런서 보안그룹(in-elb-sg) : web-sg을 통과한 트래픽에 대해서만 내부로 들어올 수 있도록 8080개방

1-5.앱 보안그룹(was-sg) : in-elb-sg을 통과한 트래픽에 대해서만 was로 들어올 수 있도록 8080개방

1-6.디비 보안그룹(db-sg) : in-elb-sg을 통과한 트래픽에 대해서만 db로 들어올 수 있도록 3306개방

 

*왜 80포트, 8080포트인가?

이후에 설치할 미들웨어에서 아파치, 톰켓쓸 예정

근데 아파치의 디폴트포트가 80포트, 톰켓의 디폴트 포트가 8080포트

포트는 연결고리의 규약 중 하나일 뿐 통신할 endpoint끼리 서로 맞추기만 하면됌.

 

7. 로드밸런서

 

외부 로드밸런서 : 외부랑 통신하는 용

사용하는 포트 : 80 (아파치 디폴트)

 

가용영역 : 이 ALB가 있을 위치

private 서브넷에 있는 ec2들(web)을 로드밸런싱하지만, 앞에서 외부랑 통신하기 위해 퍼블릭 서브넷에 있어야함

내부 로드밸런서 : 내부에서 통신하는 용

사용하는 포트 : 8080(톰캣 디폴트)

가용영역 : 이 ALB가 있을 위치

private 서브넷에 있는 ec2(was)들을 로드밸런싱하기 위해, 그 앞에인 프라이빗 서브넷에 있어야함

*네트워크 ACL?

서브넷 경계의 방화벽

기본적으로 허용, 
VPC만들고 인스턴스 생성할 때 보안그룹만 설정하면 되고, ACL은 기본적으로 열려있음
상태비저장 : 들어온 인바운드 열면 나가는 것도 설정해야함
보안그룹은 해당 세션 기억하고 있다가 나가는 거 자동으로 나가는데
이건 들어오는 세션, 나가는 세션 둘다 따로 만들어야함, 허용거부를 수립할 수있음
해당IP차단, 일시적으로 빠르게 대응할 수 있는 방법(디도스공격)
룰넘버가 작은 순서대로 순차적으로 검사, 모든 트래픽허용

 

*외부에서 접근이 안된다면?

1. 지금까지 배치한 서비스가 어떻게 넘어가는지 확인해볼것
인터넷게이트웨이 타고 -> 내부 VPC안에 들어옴->라우팅테이블에서 위치찾고 -> 보안그룹통과-> 서브넷으로 들어감

2. 어디에서 막혔는지 찾기

게이트웨이 확인
라우팅테이블확인
퍼블릭이나 탄력적 IP주소확인
네트워크 ACL
과 보안그룹확인

 

7.EC2생성

이제 어느정도 다 만들어져서 프라이빗 서브넷에 안에 EC2 인스턴스를 설치하려고 했는데,

이곳은 외부에서 ssh로 접근을 할 수가 없다!! 

하지만, 서브넷 안에 기본설치를 하는 운영자는 서버관리를 하기 위해서 ssh접속이 필요한 상황

이때 Bastion을 통해서 외부접근이 가능하도록 함! 

 

+Bastion host 생성

Private 네트워크 환경에 접근하기 위한 일종의 Proxy 역할을 하는 서버

Private subnet에 배포된 모든 instance 들은 bastion을 통해 SSH 접속.

접근 허용을 한 곳으로 한정 지음으로 좀 더 보안성을 높이고자 하는 목적이 있으며

bastion host의 logging 만 관리하면 private subnet에 접속하는 모든 기록을 관리할 수 있다. 

단, bastion host 가 공격 당하면 내부 네트워크가 모두 위험해 질 수 있으므로 bastion host에 대한 접근을 최대한 철저히 관리하는게 좋다.

 

7-1.Bastion호스트생성

만든 VPC안에 생성, Public Subnet에 위치, EC2인스턴스 생성

외부사용자가  Bastion host 를 통해 접속할 수 있도록

따로 보안그룹과 ACL설정 : 외부사용자의 특정IP(설치하는 운영자의 IP)만 허용

Bastion host 를 통해 Private Subnet에 상주한 instance 로 접속 

 

7-2. 탄력적ip할당받기 

이 IP주소를 가지고 SSH연결할 수 있음

 

 

bastion으로 들어와서 private 서브넷에 접속하기

10.0.0.144 : bastion 서버

10.0.5.61 : private서브넷에 있는 web서버

 

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });