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

클라우드 보안 수업 4일차 (22/09/29)

ksh_5 2022. 9. 29. 11:20
  • RDS 

 

- Database 서버를 클라우드에서 동작시키고, 이용자는 Database만 사용 → PaaS

- 장점 : DB 서버 관리 안 해도 됨 (DB 대용량으로 관리 전부 AWS에서 함)

- DB는 로드밸런서를 사용하기 어려움(★★★) : Master DB에서 수행하기 때문 (데이터 일관성) → 대용량 사용

  Slave DB는 Master DB에서 정보를 받고 사용자들이 읽기 요청 시 처리

- Database에 대한 root권한 없음 (높은 권한 사용자만 권한 주어짐)

- Database가 설치된 서버에 대한 통제권 없음 (OS 권한 없음) (★★)

 

 

  • 서버, 가상머신(EC2), 컨테이너, Lamda 부족 시 Auto Scaling 통해 자동 확장 가능, 로드 밸런서 사용

 

  • 컴퓨팅 설비 운영 방식

 

- On-Premise : 사용자들이 직접 자신의 회사 내에 서버, 네트워크 등 구성해 운영하는 것

- Hybrid : On-Premise + Cloud

- All in Cloud : 모든 서버와 네트워크를 클라우드에 구성하는 것

- Multi-Cloud : 여러 회사 클라우드 사용

 

 

Hybrid Server 구축 실습)

web server only에 apache2, PHP 등 9개, vim, Gnuboard 설치

더보기

$ sudo  apt  update

$ sudo  apt  install  vim

$ sudo  apt  install  apache2

$ sudo  apt  install   php   php-mysql   php-common  php-gd  php-fpm   php-xml  php-json  php-curl  git

$ cd  /var/www/html

$ sudo  git clone https://github.com/gnuboard/gnuboard5

$ cd  gnuboard5

$ sudo  mkdir  data

$ sudo  chmod  777   data

$ sudo service apache2 restart

 

-- rds 안넣음 --

 

- DB : RDS

- 사용 설정 : workbench

 

 

  • IAM

 

- Identification (식별) : 다른 사용자와 구분되는 사용자의 정체성

- Authentication (인증) : 지식, 소유, 생체, 위치기반

- Authorization (인가=권한부여) : 읽기, 쓰기, 수정, 등 권한 업무에 맞게 부여

 

 

  • 인증 (Authentication)

 

- 올바른 사용자임을 증명 (본인 인증)

 

① 지식기반 : 알고 있는 것으로 증명 (What You Know)

    방법 : 패스워드, 패스프레이즈 등

 

② 소유기반 : 가지고 있는 것으로 증명 (What You Have)

   방법 : 열쇠, 신분증, 카드, OTP 등

 

③ 생체기반 : 생체적 특징으로 증명 (What You Are)

   방법 : 지문, 홍채, 망막, 손바닥 등

 

④ 위치기반 : 자신이 있는 위치로 증명 (What You Are)

   방법 : GPS, Wi-Fi 등

 

→ 최소 2가지 이상 사용해야 안전

 

 

  • 접근 (Access)

 

- Subject (주체) : 접근하는 쪽 ex) User, Program, Process, Cloud Service 등

- Object (객체) : 접근받는 쪽 ex) Data, File, Database 등

- 접근 권한 부여 : Subject가 Object 접근 통제 (Control)

 

 

  • 클라우드 종류

 

- 클라우드 업체가 책임지는 범위 : laaS < Paas < SaaS

- SECaaS : Security as a Service (클라우드에서 보안 서비스 제공)

 

 

  • 계정의 종류

 

- 사용자 (User) : 1인당 1개 부여

- 사용자 그룹 (User Group) : 사용자가 많을 때, 권한 일괄적으로 부여, 제거 가능

- 정책 (Policy) : 세부적인 권한 모아 정책으로 만듦

- 역할 (Role) : 정책 모아 역할 생성 → 다른 클라우드 서비스 부여 (★★★)

 

 

  • 정책

 

- Root 계정 업무 사용X

- AdministratorAccess : 모든 서비스에 대해 모든 권한 → 최소한 인력에게만 부여

- 필요한 만큼만 제공

 

 

  • Access Key

 

- Command Line만 사용해야 하는 상태에서 로그인 대신 사용할 수 있는 Access key(ID)와 Secret Key(PW) 부여

- Amazon의 EC2, S3을 Command Line으로 확인, 생성, 관리할 수 있는 방식

- API 연결 가능 : API를 통해 다른 Subject or Object 작업 가능

- 인터넷에 공개 X

 

 

AWS CLI 설치

더보기

$ sudo apt update

$ sudo apt install python-setuptools python3-pip -y

$ sudo apt install net-tools

$ sudo apt install vim

$ sudo pip install awscli

 

공개형 Bucket 생성)

더보기

① S3 목록 > 버킷 만들기

② 버킷 이름 적기

③ 객체 소유권 ACL 활성화됨 클릭

④ 모든 퍼블릭 액세스 차단을 풀기

⑤ [현재 설정으로 인해 이 버킷과 그 안에 포함된 객체가 퍼블릭 상태가 될 수 있음을 알고 있습니다] 클릭

⑥ 버킷 만들기

⑦ 생성된 버킷 클릭 >  업로드 > 파일 추가

 

 

⑧ 권한은 퍼블릭 읽기 액세스 권한 부여 클릭

 

 

  • 로드 밸런싱 (Load Balance)

 

- 기기 여러 대에 분산하여 처리하는 방법

- 가용성(Availability) : 항상 사용 가능한 상태 유지

- 분산해 더 많은 클라이언트들 접속 가능

- 서버가 고장이 나더라도 다른 서버가 응답하기 때문에 가용성 향상

- 서버에 문제 발생을 확인(Health Check)하는 기능도 존재

 

 

※ Hot-Standby

 

1 2 3 4
Hot Standby    
Down Hot Standby  
Down Down Hot Standby

 

 

  • 로드 밸런서 종류

 

① ALB (Application Load Balancer)

     : 7계층 로드 밸런서, URL 등을 보고 부하를 분산

 

NLB (Network Load Balancer)

     : 4계층 로드 밸런서, Port번호를 보고 부하를 분산

 

 

※ 방화벽 로드밸런서 (Firewall Load balancing)

 

 

- 네트워크 중간에 있는 장비 앞뒤로 로드밸런서 배치

 

 

2대의 EC2 인스턴스 생성)

- 정상 동작하는 EC2 한 대 필요함
- Web Server 배경화면 레드, 블루로 설정

- Subnet 2개 이상 필요

  : 여러 개 Subnet에 로드밸런싱 가능 (Public, Private 상관X)

  : 가용영역 2개 지정 // ex) A에 4대 or C에 4대

  : 모든 Subnet 라우팅 테이블에 명시적 등록

 

더보기

① 인스턴스 시작 설정

⑴ 이름: ksh_red

⑵ OS : Ubuntu Sever 22.04 LTS

⑶ 인스턴스 유형 : tr.micro

⑷ VPC : Sh_vpc

⑸ Subnet : Shho

⑹ 퍼블릭 IP 자동 활당 : 활성화

⑺ 방화벽(보안그룹) : web_server

 

② 생성 후 인스턴스 > 연결 > ssh 클라이언트를 눌러 예에 있는 걸 복사

 

 

③ ssh 연결 통해 ubuntu 접속

 

 

④ 명령어

$ sudo apt update

$ sudo apt install vim

$ sudo apt install apache2

$ cd  /var/www/html

$ sudo mv index.html  index.old

 

※ index.html 파일 수정

- img src에 버킷에 있는 사진 링크 복사 붙여넣기

 

- 전부 복사 ([ctrl]+[A]) 한 후 $ sudo vi  index.html에 붙여 넣은 후 :wq

 

 

⑤ ksh_red에 부여된 Public IP 주소로 들어가기

 

Public IP로 들어갔을 때 나온 화면 - Red.ver

 

⑥ ksh-blue도 똑같이 적용하여 생성하기

 

※ 템플릿으로 생성 시 번거롭게 다시 설정해줄 필요없음

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

⑵ 이미지 및 탬플릿

⑶ 인스턴스에서 템플릿 생성

⑷ 이름 적고 시작 템플릿 생성 클릭

 

 

⑸ 템플릿으로 인스턴스 시작

⑹ ksh_temp 클릭

⑺ 인스턴스 시작

⑻ 이름 변경(ksh_blue)

 

 

※ ④의 명령어들은 다시 설정해야 함

 

ksh_red와 동일하게 index.html을 복사 붙여넣기한 후 'bgcolor=blue'로만 변경

 

 

⑼ 마찬가지로 ksh_blue에 부여된 Public IP 주소로 들어가기

 

Public IP로 들어갔을 때 나온 화면 - Blue.ver

 

 로드밸런싱 탭에 로드밸런서 경로로 이동 후 로드 밸런서 생성 클릭

⑧ 로드밸런서 유형 > Application Load Balancer > ALB 생성 클릭

 

 

⑨ 기본 구성

⑴ 이름 : web-alb

⑵ 체계 : 인터넷 경계, IP 주소 유형 : IPv4

⑶ vpc : ksh_vpc

⑷ subnet : 2a, 2c (Public, Private 상관X)

 

 

※ 명시적 서브넷 연결이 모두 되어있어야 하므로 설정

  VPC > 라우팅 테이블 > 서브넷 연결 편집

 

 

⑸ 보안 그룹 : web_server

⑹ 리스너 HTTP : 80

 

※ 대상 그룹 생성해줘야 함

⑴ 대상 그룹 생성 > 인스턴스 > 대상그룹 이름(tg-web)

⑵ 프로토콜 : HTTP

⑶ 포트 : 80

⑷ vpc : ksh_vpc

⑸ 프로토콜 버전 : HTTP1

⑹ 서버 다운 여부를 HTTP 프로토콜로 확인

   → 서버 다운 시, 해당 서버로 트래픽 전송X

⑺ 생성 후, 타겟 등록을 위해 밖에 있는 인스턴스들을 체크해 '아래에 보류 중인 것으로 포함' 클릭

⑻ 대상 그룹 생성 클릭

 

옮기기 전

 

옮긴 후 화면

 

⑼ 새로고침 후, 만든 타겟 (tg-web) 클릭

 

 

⑽ 로드 밸런서 생성 클릭

 

생성된 화면

 

⑩ 생성된 로드밸런서의 DNS 이름의 URL 복사해 웹 사이트 접속 가능

 

 

⑪ 새로고침 시 Red와 Blue가 번갈아가면서 나타남