본문 바로가기

Rookies 9기/클라우드 보안

클라우드 보안 4일차

728x90

• RDS 실습

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

- 장점 : DB서버 관리를 하지 않아도 됨(DB 대용량으로 교체, 백업, 관리 등을 AWS에서 관리해준다.)

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

     ‣ Slave DB는 Master DB에서 정보를 받고 사용자들이 읽기 요청을 할 때 처리해줌

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

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

 

• 서버, 가상 머신(EC2), 컨테이너(ECS), Lambda들이 부족하면?

⇒ Auto Scaling을 통해서 자동으로 확장 가능, 로드 밸런서(부하 분산장치) 사용

 

• 컴퓨팅 설비 운영 방식

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

- Hybrid : On-Premise와 Cloud를 섞어서 사용하는 방식

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

- Multi-Cloud : 여러 회사의 클라우드를 사용하는 것 AWS과 Azure, GCP, NCP 등을 사용하는 것  

 

• Hybrid Server 구축하기

- Ubuntu Web Server에는 Apache2,PHP등 9개, Vim, Gnuboard 설치
- DB는 RDS를 사용 DB에 대한 설정은 Workbench를 활용

1) 데이터베이스 만들기

RDS 생성

Workbench에서 RDS에 연결을 하기 위해서는 퍼블릭 액세스가 활성화되어있어야 한다.

RDS

hcmdb 데이터 베이스를 생성하였다.

hcmdb를 눌러보면 연결&보안을 볼 수 있다.(엔드포인트 및 포트 확인)

 

2) 그누보드 설치

sudo apt install apache2

sudo apt update를 해준 후 아파치 설치를 해준다.

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

PHP 언어에 사용할 것들을 설치해준다.

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

github에서 있는 그누보드를 가져와 설치를 해준다.

sudo service apache2 restart

아파치 서버를 재시작해준다.

ifconfig

ifconfig를 사용하기 위해서는 net-tools를 설치해줘야 한다. 

 

3) Workbench 연결 및 데이터베이스 생성

Workbench

RDS의 엔드포인트와 마스터 ID, PW를 넣어준다.

DB 생성

DB를 만들어 board 계정을 만들면서 gnuboard의 모든 테이블의 권한을 부여해줬다.

 

4) 실행

그누보드 설치

RDS의 엔드 포이트:3306를 호스트에 넣어준다.

결과 화면

잘 동작이 되는지 사진 업로드를 해보았다.

* RDS에 접속이 안되는 경유
- VPC를 여러분이 마든 VPC로 선택해야함(EC2와 연결하는 VPC를 선택한 경우)
- 보안 그룹 설정할 때 db_server로 선택(3306번 포트를 오픈하도록 설정한 보안 그룹)
- 퍼블릭 IP 활성화

 

•IAM

- Identification(식별) : 다른 사용자와 구부 되는 사용자의 정체성  ex) ID, ID카드, 학번, 주민등록번호 등

- Authentication(인증) : 지식기반, 소유 기반, 생체기반, 위치기반 ----> 본인임을 인증하는 방식

- Authorization(인가=권한 부여) : 읽기, 쓰기, 수정, 복사, 삭제, 출력 권한을 업무에 맞게 부여하는 것

 

•인증(Authentication)

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

‣ 지식기반 : 알고 있는 것을 증명하는 것

    - 대표적인 방법 : 패스워드(=암호), 패스프레이즈(패스워드보다 긴 문구), 암구호, 야구에서 사인 등

‣ 소유 기반 : 가지고 있는 것으로 증명하는 것

- 대표적인 방법 : 열쇠, 신분증, 카드, OTP, 공인인증서, 휴대폰 인증(SNS), 마패/호패

‣ 생체기반 : 생채적 특징으로 증명하는 것

지문, 홍채, 망막, 손바닥, 손 모양, 손등(정맥), 얼굴, 목소리, 제스처 등

‣ 위치기반 : 자신이 있는 위치로 증명하는 것

GPS, Wi-Fi(IP주소), 통신사, 기지국 삼각측량

 

인증에서 중요한 것은 Multi-Factor 인증을 사용해야 함

       ⇒ 네 가지 방식 중에 최소한 2가지 이상을 사용해야 안전함

‣ AWS에서는 Multi-Factor 인증을 권장 : 비밀번호 + 구글 OTP, Root계정의 경우 Email로 인증을 추가해서 사용

• Root계정을 개인 메일로 등록한 사람이 퇴사하면?이메일 회사에 반납 안하면?
    ⇒구글OTP를 사용해서 Multi-Factor 인증을 사용해야 함(퇴사한 사람은 구글OTP접근이 안되므로 PW변경할 수 없음)

• Root 계정 관리 방법

- AWS 가입할 때, root계정을 회사의 AWS용 계정을 별도로 만들어서 이걸로 등록해야 함(AWS담당자가 메일 관리를 해야 함)

• 프로젝트를 할 경우

- root 계정을 제공하면 안 됨

- 사용자를 생성하고 권한을 부여해야 함

- 권한은 최소한의 권한(Least Privilges)을 부여해야 함

- 권한을 너무 많이 주면?? 부정행위나 불법행위의 가능성이 높아짐

- 정보는 꼭 필요한 만큼만 알려줌 (Need to Know)  ---> 업무를 수행하는데 필요한 만큼만 알려줌

 

• 접근(Access)

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

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

- 접근 권한을 부여 : Subject가 Object에 접근하는 것을 통제(Control)

ex) EC2가 로그를 S3에 저장하려면? 접근 권한을 모아서 Role을 EC2에 부여해야 함

 

• 클라우드의 종류

- 클라우드 업체가 책임을 지는 범위 : IaaS < PaaS < SaaS

- SECaaS : Security as a Service (클라우드에서 보안 서비스를 제공하는 것)   ex) 건물 충입(얼굴 정보가 Cloud에 저장), 통합 로그인

cf) RaaS : Ransomware as a Service (클라우드에서 랜섬웨어를 제공하는 것)

 

• 계정의 종류

- 사용자(User) : 1인당 1개씩 부여(여러 사람이 하나의 ID를 공유하면? 사고 발생 시, 책임소재를 찾을 수 없음)

- 사용자 그룹(User Group) : 사용자가 너무 많으면, 권한을 일괄적으로 부여하거나 제거할 수 있음

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

- 역할 (Role) : 정책을 모아서 역할(role)을 만듦 -> 다른 클라우드 서비스에 부여(CloudFormation 등 자동화 도구 등)⭐⭐

 

• 정책

- Root 계정은 업무에 사용하지 않음

- AdministratorAcess : 모든 서비스에 대해 모든 권한 --> 최소한의 인력에게만 부여해야 함

- 꼭 필요한 만큼만 제공

  ex) 프로젝트에 참여하지 않는 임원이 프로젝트 진행을 보려고 하는 경우, 어떤 권한을 부여하면 될까요? EC2 ReadOnlyAccess 권한만 준다.

 

• Access Key

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

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

- API 연결이 가능 : API를 통해서 다른 Subject 또는 Object와 작업 가능

- 인터넷에 절대 공개해서는 안됨 ---> 채굴기가 Cloud에 연결될 수 있음 (시간당 1000만 원씩 나옴)

 

• 로드밸런싱

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

- 서버들의 부하를 분산해주기 때문에 더 많은 클라이언트들이 접속할 수 있음

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

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

 

• 로드밸런서의 종류

- ALB (Application Load Balancer) : 7 계층 로드 밸런서 ----> URL 등을 보고 부하를 분산

- NLB (Network Load Balancer) : 4 계층 로드 밸런서 ----> Port번호를 보고 부하를 분산

 

• 로드밸런서 실습

로드밸런싱 구조

1) 여러 대의 EC2를 생성하기

- 정상적으로 동작하는 EC2 한대가 필요함

- 템플릿을 만든다

hcm_red

우분투 기반의 인스턴스를 생성해준다.

CMD

CMD에서 EC2에 접속을 해준다.

sudo apt install apache2

아파치를 설치해준다.

index.html

원래 있던 index.html을 old로 확장자를 바꿔주고 vi명령어로 새로운 index.html 파일을 만들어주자.

윈도우

지난 실습에 사용한 index.html를 nodepad++로 열어 소스코드를 수정후 복사를 해준다.

버킷에 있는 이미지를 넣어줬다.

index.html

복사한 소스 코드를 붙여 넣어준다. 

hcm_red

EC2 퍼블릭 주소로 웹 브라우저에 들어가면 내가 바꾼 index.html 파일이 실행이 된 걸 볼 수 있다.

EC2

EC2에서 작업 버튼을 눌러 인스턴승에서 템플릿 생성으로 이동을 해준다.

템플릿

hcm_temp 템플릿을 생성할 수 있다.

EC2

만든 템플릿을 시작하기 위해 템플릿으로 인스턴스 시작을 해준다.

그다음 시작된 템플릿의 이름을 hcm_blue로 수정을 해준다.

CMD

hcm_blue의 SSH클라이언트 주소를 복사해 EC2에 들어가 주고 hcm_red에서 한 명령어를 그대로 해준다.

index.html

index.html를 red에서 blue로 모두 수정을 해주고 이미지 또한 변경을 해주고 소스코드를 복사를 한다.

index.html

복사 소스 코드를 넣어준다.

hcm_blue

 

2) 로드밸런서 설치

※ Load Balancer 생성시 주의사항
• Subnet2개 이상
 ‣ Public, Private상관없이 2개면 됨
 ‣ 가용 영역(AZ)2개 지정(EC2가 한쪽에 있어도 됨)
 ‣ 모든 서브넷이 라우팅 테이블에 명시적으로 등록

Target Group을 생성
 ‣ 인스턴스를 추가 --> Instance Pending Below

EC2의 개수와 SubnetLoad Balancer에 등록하는 것은 상관 없음

위 두 개의 EC2를 만들었으면 로드밸런서를 클릭해준다.

 

로드밸런서

Application Load Balancer를 생성해준다.

로드밸런서 설정

web-alb 이름으로 만들어준다.

로드밸런서 설정

두개의 다른 리전에 서브넷을 연결해준다.

로드밸런서 설정
로드밸런서 설정

처음에는 target group이 없기 때문에 타깃 그룹을 만들어줘야 한다.

 

• target group 만들기

taget group 설정
taget group 설정

두 개의 EC2를 선택을 해주고 Include as pending below 해준다.

로드 밸런서 설정 완료

로드 밸런서가 설치가 다된 거다  DNS 주소로 들어가 확인을 해보자.

hcm_red

hcm_red EC2가 나왔고 새로 고침을 해주면

hcm_blue

hcm_blue EC2가 나온다. 

계속 새로고침 해줄 때마다 반복된다.

'Rookies 9기 > 클라우드 보안' 카테고리의 다른 글

클라우드 보안 6일차  (0) 2022.10.05
클라우드 보안 5일차  (0) 2022.09.30
클라우드 보안 3일차  (0) 2022.09.28
클라우드 보안 2일차  (0) 2022.09.27
클라우드 보안 1일차  (0) 2022.09.26