▼▼▼전체적인 3티어 아키텍쳐 목차 보고오기▼▼
https://pearlluck.tistory.com/78?category=830422
▼▼▼3티어 아키텍쳐1,2단계 보고오기▼▼▼
https://pearlluck.tistory.com/68
▼▼▼3티어 아키텍쳐3,4,5단계 보고오기▼▼▼
https://pearlluck.tistory.com/69
네트워크 설정
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서버
'🌴 DevOps > Architecture' 카테고리의 다른 글
3tier아키텍쳐 구성6 - 미들웨어 구성 및 테스트(2.앱서버-Tomcat) (0) | 2020.02.14 |
---|---|
3tier아키텍쳐 구성5 - 미들웨어 구성 및 테스트(1.웹서버-Apache) (0) | 2020.02.13 |
3tier아키텍쳐구성4-네트워크 설정(8. ELB생성 9. RDS 생성) (0) | 2020.02.12 |
3tier아키텍쳐구성2-네트워크 설정(3.IGW 4. NAT 5.라우팅테이블) (0) | 2020.02.10 |
3tier아키텍쳐 구성1-네트워크 설정(1.VPC 2.서브넷) (0) | 2020.02.09 |
3tier아키텍쳐 전체적인 구성 (0) | 2020.02.08 |