SK shieldus Rookies 9기/클라우드 보안

클라우드 보안 수업 5일차 (22/09/30)

ksh_5 2022. 9. 30. 10:34
  • Hash Function 활용법

 

- 출IP, 출Port, 목IP, 목Port 고려해 Hash 값 계산

   → 일치될 경우 같은 서버에 계속 고정해 연결 유지

 

 

  • ALB와  NLB

 

- ALB는 URL, HTTP 헤더에 따라 분산, 먼저 출시, Round Robin 지원

- NLB는 목적지 Port를 보고 분산, 나중 출시, Hash Function 지원(Sticky Session), EIP 부여 가능

 

 

  • EIP (Elastic IP Address)

 

- 탄력적 IP 주소 (탄력 : 변하지 않는다란 의미로 고정IP란 뜻)

- IP 주소가 바뀌지 않고 계속 같은 IP를 사용할 수 있는 서비스

- 용도 : 도메인 네임에 고정해놓을 때

 

 

 

Bastion Host 생성 실습)

- Public Subnet으로 생성 (Public, Private 모두 존재해야 하긴 함)

- 웹서버로 설정

 

더보기

① 인스턴스 생성

⑴ 이름 : Bastionhost-ksh

⑵ OS : Ubuntu

⑶ 인스턴스 유형 : t2.micro

⑷ 키 페어 : aws_ksh

⑸ vpc : ksh_vpc

⑹ subnet : kshsub01 (public)

⑺ 퍼블릭 IP 자동 할당 : 활성화

⑻ 기존 보안 그룹 선택 후 web_server

 

② ssh 연결 후 명령어

$ sudo apt update

$ sudo apt install apache2

$ cd /var/www/html

$ sudo rm index.html

$ sudo vi index.html

  (어제 작업했던 red server의 index.html 복사 후 넣기)

 

 

$ exit

부여된 IP로 들어가 잘 뜨는 지 확인

③ 웹서버로 이미지 생성 → 템플릿 생성 후 작업

⑴ 인스턴스 ID 오른쪽 마우스 클릭

⑵ 이미지 및 템플릿

⑶ 이미지 생성

⑷ 이미지 이름 : webser-ksh 적고 이미지 생성 클릭

 

이미지 생성된 화면

 

⑸ AMI로 인스턴스 시작 클릭

⑹ 이름 : Redserver

⑺ 인스턴스 유형 : t2.micro

⑻ 키 페어 : aws_ksh

⑼ vpc : ksh_vpc

⑽ subnet : kshsub01 (public)

⑾ 퍼블릭 IP 자동 할당 : 비활성화

⑿ 기존 보안 그룹 선택 후 web_server

⒀ 인스턴스 시작

⒁ AMI 클릭해 Yellowserver, Blueserver 모두 같은 방식으로 생성

 

 

④ 보안 그룹 수정

⑴ 보안 그룹 클릭

⑵ web_server 보안 그룹 ID 클릭

⑶ 인바운드 규칙 편집 클릭

⑷ 규칙 추가 > SSH > 자신이 생성한 vpc로 public subnet 등록 후 규칙 저장 클릭
⑸ 키 페어 Bucket에 업로드 시 일시적으로 public 허용 (업로드 전 권한 클릭해 변경)

 

 

⑹ 키 다운로드 후 권한 변경

$ sudo wget [key 객체 URL]

$ sudo chmod 400 aws_ksh.pem

※ 다 한 후 Bucket에서 무조건 삭제

 

⑤ Yellow, Blue 서버에 접속 (Bation Host에 접속된 상태에서 접속)

⑴ 권한 ubuntu로 변경

$ sudo  chown  ubuntu:ubuntu  aws_ksh.pem    // 키 소유권 ubuntu로 변경

$ ssh -i "aws_key.pem"  ubuntu@yellow 프라이빗  IPv4 주소     // root → ubuntu 변경

⑵ yellow, blue 서버 바탕 색상 바꾸기

$ cd  /var/www/html

$ sudo  vi  index.html

   red → yellow와 blue 변경

 

⑥ NLB 설정

⑴ 탄력적 IP (EIP) 사용하도록 설정

⑵ 탄력적 IP 주소 할당 클릭 > 할당 클릭

⑶ 로드밸런서 클릭 > 로드밸런서 생성 클릭 > Network Load Balancer 생성 클릭

⑷ NLB 이름 : NLB-ksh

⑸ 체계 : 인터넷 경계

⑹ IP 주소 유형 : IPv4

⑺ VPC : ksh_vpc

⑻ 매핑 : 두 군데의 가용영역에 클릭

⑼ IPv4 주소 : 탄력적 IP 주소 사용 클릭(퍼블릭 서버에서만) / AWS에서 할당(프라이빗 서버에서만)

⑽ 프로토콜 : TCP , 포트 : 80

⑾ 기본 작업 tg-ryb 클릭

대상 그룹 생성 : 인스턴스 > 대상 그룹 이름 : tg-ryb > 다음 > red, yellow, blue server만 체크 > 아래에 보류 중인 것으로 포함 클릭 > 대상 그룹 생성 클릭

 

 

⑿ 로드밸런서 생성 클릭

 

로드밸런서를 통해 접속하는 방법

- ALB : DNS 경로 통해 접속

- NLB : 탄력적 IP주소가 우선 적용 > DNS 경로를 통해서 접속 (둘중 하나만 됨)

 

DNS IP 주소로 들어가 새로고침을 할 경우 넣은 세 컬러의 사이트가 나온다

 

 

  • 오토스케일링

 

- EC2을 필요한 만큼 숫자 자동으로 늘리거나 줄이는 것 (개수 제한 설정 가능: Max ~ Min)

   → 관리자의 개입 없이 자동 증감

- 가상머신이기 때문에 빠르게 늘리기 가능

- 오토스케일 적용 사례 : 티켓예매(KTS, 공연표 등), 게임, 블랙프라이데이, 수강신청 등

- Scale out : 서버 개수를 늘리는 것 (양적 증대, 양적 확장)

- Scale in  : 서버 개수를 줄이는 것 (양적 감소, 양적 축소)

- Scale up : 고사양 스펙으로 변경하는 것 (질적 증대)

- Scale down : 저사양 스펙으로 변경하는 것 (질적 감소)

 

※ EC2  요금제

더보기

- On Demand : 사용자가 필요할 때 시작해서 필요 없을 때 삭제 (할인X)   

  ex) 이벤트(월드컵, 올림픽, 행사), 프로젝트(시스템 개발) 등

- Spot Instance : 사용자가 구매 가격을 제시하면, 가장 높은 가격을 제시한 고객한테 EC2를 사용하게 해 줌 (경매)

   → 자주 중단될 수 있음, 작업이 계속 미뤄질 수도 있음

   ex) 급하지 않은 일 : 데이터 변환작업, 빅데이터를 분석 등

- 예약 인스턴스 : 약정을 하고 요금 지불하는 것 (선불, 월별 납부 가능) → 할인 적용 가능, 선불일 시 추가 할인

   → 장기간 사용하는 서비스   ex) 웹서비스

 

 

오토스케일링 with Load balancer (ALB) 실습)

더보기

① amazon linux로 ec2 생성 후, apache2만 설치

⑴ 인스턴스 생성 클릭

이름 : Amzn_webserver

⑶ 인스턴스 유형 : t2.micro

⑷ 키 페어 : aws_ksh

⑸ vpc : ksh_vpc

⑹ subnet : kshsub01 (public)

⑺ 퍼블릭 IP 자동 할당 : 활성화

⑻ 기존 보안 그룹 선택 후 web_server

⑼ 인스턴스 시작

⑽ ssh 연결

⑾ 명령어

$ sudo yum update
$ sudo yum install httpd
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
$ sudo usermod -a -G apache ec2-user
$ sudo chown -R ec2-user:apache /var/www
$ sudo chmod 2775  /var/www
$ cd  /var/www/html
$ sudo  vi  index.html
   (아까 redserver에서 설정했던 index.html 코드 복사, 붙여 넣기, bgcolor=pink로 수정)


$ exit

 

부여된 IP로 들어가 잘 뜨는 지 확인

 

② 스냅샷 설정

⑴ 스냅샷 > 스냅샷 생성 > 인스턴스 > 인스턴스 ID 선택 > 스냅샷 생성 클릭

⑵ 스냅샷에서 이미지 생성 클릭 > 이미지 이름 : img_amzn_webserver > 이미지 생성 클릭

⑶ 시작 구성 > 시작 구성 생성 클릭

이름 : lc-amzn-webserver

⑸ AMI : img_amzn_webserver

⑹ 인스턴스 유형 : t2.micro

⑺ 보안 그룹 : 기존 보안 그룹 선택 > web_server 체크

⑻ 키 페어 : 기존 키 페어 선택 > aws_ksh 클릭 > 시작 구성 생성 클릭

⑼ auto scaling 그룹 생성 클릭

⑽ auto scaling 그룹 이름 : as-amzn-webserver

⑾ 시작 템플릿으로 전환 클릭 > 시작 구성 : lc-amnz-webserver 클릭 > 다음

⑿ VPC : ksh_vpc

⒀ 가용 영역 및 서브넷 : kshsub01, kshsub02 (퍼블릭, 프라이빗 둘 다 넣기) > 다음

⒁ 새 로드 밸런서에 연결 클릭 > 로드밸런서 이름: alb-amzn-webserver > 로드 밸런서 체계 : Internet-facing 클릭

⒂ 기본 라우팅 : 대상 그룹 생성 클릭 > 새 대상 그룹 이름 : tg-amzn-webserver

     > 원하는 용량 : 2 , 최소 용량 : 1 , 최대 용량 : 3 > 다음 > 다음 > auto scaling 그룹 생성 클릭

 

 Auto Scaling 사용하는 이유

- 장애가 발생하거나 해킹을 당해 인스턴스가 응답을 하지 않는 경우에도 새로운 인스턴스를 생성해서 항상 서비스 가능한 상태 유지

- 트래픽이 높아지면 추가로 인스턴스를 실행할 수 있도록 설정 가능 → Target Tracking (티켓 구매)

 

 

  •  Target Tracking 기법

 

- 트래픽이 높아지는 경우 사용

- 기준 : CPU 사용률을 70% 지정하는 경우, 70%를 넘으면 인스턴스 추가로 늘림 → 개수 제한 설정 가능

   반대로, CPU 사용률이 70% 이하로 내려가면, 인스턴스를 줄이도록 설정하면 비용 절감

 

Q. 티켓 판매를 하려고 하는데, 예측 크기 조정 정책으로 설정해도 될까?

더보기

A. Target Tracking 기법을 사용

 

 

  • NACL과 Security Group의 차이점 ()

 

① NACL

- 서브넷에 배치

- 방화벽 룰셋과 동일 (허용과 거부 설정)

- 위에서부터 내려가면서 적용 (번호 작을수록 우선순위 높음)

 

② Security Group

- 허용만 설정

- Stateful 방식 (방화벽의 3세대 방식)

- 리턴 트래픽이 허용

- EC2, RDS, NLB/ALB, ECS 등 적용