공부/클라우드 보안

9월 29일 클라우드 보안 4

마준123 2022. 9. 29. 17:51

지난시간 복습~!

 

 * RDS 실습

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

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

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

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

 = Database에 대한 root권한이 없음 ( 그냥 권한이 높은 사용자 권한만 주어진다 )

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

 

* 서버, 가상머신(EC2), 컨테이너(EC2), Lambda 들이 부족하면?  Auto Scaling을 통해서 자동으로 확장 가능, 로드 밸런서 ( 부하 분산장치 ) 사용

 

 * 주의사항

 = EC2와 연결해서 사용하도록 설정 ( 퍼블릭 IP 받을 수 없음 )

 = Local에서 Workbench 를 사용할 수 없음

 = EC2에 로그인한 상태에서, RDS에 접속함

 = RDS에 주소를 부여하기 위해서 VPC의 호스트이름 사용 활성화

 

 * 컴퓨팅 설비 운영 방식

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

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

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

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

 

같이 튀어나오는 스쿼드 ( 짠거 아님 )

 

실습준비 ) 다른 VM 우분투에 설정하기

 =  지난번에 백업해둔 Ubuntu 22.04 LTS.zip 파일의 이름을 Ubuntu Web Server.zip으로 변경하고 압축을 푼다.

 = VMware를 실행해서 Player - File - Open을 클릭하고, 새로 압축 푼 폴더에서 vmx 파일을 선택하고 열기 한다.

 = VM 이름이 이전에 만든 우분투와 동일하기 때문에 새로 불러온 VM이름을 변경해준다.

 = Edit Virtual Machine Settings에서 Options 클릭, 이름을 Ubuntu web server only로 변경한다.

 

실습 ) Hybrid Server 구축하기

 = Ubuntu web server only에는 Apache2, PHP등 9개, VIM, Gnuboard 설치

 = DB는 RDS를 사용해보기. DB에 대한 설정은 Workbench를 활용한다.

 

 * RDS에 접속이 안되는 경우

 = VPC를 우리가 만든 VPC로 선택해야함 ( EC2와 연결하는 VPC를 선택하면 안됨 )

 = 보안 그룹 설정 할 때 , db_server로 선택 ( 3306번 포트 개방 된 것 )

 = 퍼블릭 IP활성화

 

 

 = 그냥 하던대로 하면 되는데 오늘은 워크벤치에서 DB와 연결이 안되었다.

 = 그래서 문제는 보안그룹에서 3306포트 개방이 안되어 있던건데.

 = EC2 - 보안그룹 에 들어가면 내가 만든 보안그룹도 있고 저절로 생긴 보안 그룹도 있는데

 = 그중 내가 사용할 보안 그룹의 인바운드 규칙을 설정해줘야한다.

 = 사진처럼 인바운드규칙 편집으로 들어가서 3306포트를 열어줘야하는데 강사님은 자기 노트북의 아이피로 열라고 하셨지만 나는 일단 0.0.0.0/0을 입력해서 전부 개방시켜버렸다....( 당장 안되는걸 우째 ㅜ )

 = 원래는 내 아이피로 해야하고 공유기가 자주 바뀌거나 할 경우에 뒤의 2칸을 0.0으로하고 /24를 하면 ( /24는 앞에 2칸만 확인하겠다는 의미 ) 뒷자리가 바뀌어도 접속 할 수 있다.

우여곡절 끝에 어거지로 성공...!

 ※ 실습하면서 무언가 중간에 막힌적이 한번도 없었는데... 오늘은 좀 힘들었다.....

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 * IAM

 = Identification ( 식별 ) : 다른 사용자와 구분되는 사용자의 정체성     ex) ID,ID카드,사번, 주민등록번호(사회보장번호) 등

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

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

 

 * 인증 (Authentication)

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

 

1. 지식기반 : 알고있는 것으로 증명하는 것 ( What you Know )

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

2. 소유기반 : 가지고있는 것으로 증명하는 것 (What you Have)

 = 방법 : 열쇠(key), 신분증(주민증, 여권, 사원증, 학생증) 카드 (신용/체크/현금), OTP, 공인인증서, 휴대폰인증(SMS), 마패/호패 등

3. 생체기반 : 생체적 특징으로 증명하는 것 (Who You Are)

 = 방법 : 지문, 홍채(iris), 망막, 손바닥 ( 융기선과 골짜기 ), 손모양, 손등(정맥), 얼굴, 목소리, 제스쳐 등등

4. 위치기반 : 자신이 있는 위치로 증명하는 것 ( Where You Are )

 = 방법 : GPS, Wi-Fi(IP주소), 통신사 기지국 삼각측량 등 ----> 출석체크(GPS)

 

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

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

     AWS에서는 Multi-Factor인증을 권장 : 비밀번호 + 구글OPT,  Root 계정의 경우 Email로 인증을 추가해서 사용 ( Email은 소유기반, 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 계정은 업무에 사용하지 않음
 = AdministratorAccess : 모든 서비스에 대해 모든 권한 ------> 최소한의 인력에게만 부여해야 함
 = 꼭 필요한 만큼만 제공
   ex) 프로젝트에 참여하지 않는 임원이 프로젝트 진행을 보려고하는 경우, 어떤 권한을 부여하면 될까요?   AmazonEC2ReadonlyAccess

 * Access Key
 = Command Line만 사용해야하는 상태에서 로그인 대신 사용할 수 있는 Access key(ID)와 Secret Key(PW)를 부여함
 = Amazon의 EC2, S3 등을 Command Line으로 확인, 생성, 관리할 수 있는 방식
 = API 연결이 가능 : API를 통해서 다른 Subject 또는 Object와 작업 가능
 = 인터넷에 절대 공개해서는 안됨!!!   ----> 채굴기가 Cloud에 연결될 수 있음 (시간당 1000만원씩 나옴) [이전 기수가 그랬다고 하니까 나는 주의하자! ]

 * Bucket을 Public으로 생성하고, 이미지(전체공개)를 업로드 합니다.

 

실습 ) 우분투에 CLI 설치

* AWS CLI 설치

$ sudo apt update

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

$ sudo apt install vim

$ sudo apt install net-tools

$ sudo pip install awscli

 * Access Key는 생성하지 않기로 했다! ( 실습 도중에 무언가 위험할거같아서 개인적으로 설정하지 않기로 했다! )

 

 

 * Load Balancing

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

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

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

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

 

 * 로드 밸런서의 종류

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

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

 

 * 여러대의 EC2를 생성하기

 = 정상적으로 동작하는 EC2 한대가 필요함 ( Apache만 설치, index.html을 vim으로 복사 )

 = 템플릿을 만듦

 

$ sudo apt update
$  sudo apt install vim
$ sudo apt install apache2
$ sudo mv index.html index.old

$ sudo vi index.html

    i

    ( 이전 시간에 사용했던 index.html 내용을 노트패드로 열어서 복사 붙여넣기 )

     ESC

    :wq

 

 * 템플릿 만들기

 = 해당 인스턴스 우클릭 - 이미지 및 템플릿 - 인스턴스에서 템플릿 생성 -  이름지어주고 아무것도 안건들고 만들기

 * 템플릿으로부터 인스턴스 만들기

 = 인스턴스 시작 누르고 템플릭으로 인스턴스 시작 하고 아무것도 안건드리고 아까만든거만 선택하고 생성하면됨

 

 = 그리고 나중에 만들어진거 이름을 블루로 바꿔주기 ( 햇갈릴까봐 실습 확인용 ㅎ )

 * 템플릿으로 만들면, 설정이 안들어 있음! ( 블루에서도 위와 같이 다시 설정 해야함 [vim이나 아파치2 설치같은것들])

레드와 똑같은거같지만 index.html의 내용이 살짝 다르다 (red가 blue로 바뀜 ㅋ)

 = 각각 만들어진 서버들

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 * 로드밸런싱

 = EC2 - 왼쪽에 로드벨런서 - 로드벨런서 생성 - Create Application Load Balance

( 내용이 너무 길어서 적기 불간ㅇ.....능... )

짜잔,,,,,,;

( 과정없이 결과만 나와서 죄송합니다. )

 = 이제 밑에 DNS 이름을 주소창에 넣고 새로고침을 ㅈㄴ게 눌러주면 레드와 블루가 번갈아 가면서 나온다 ( 로드밸런서가 자동으로 레드와 블루서버로 트래픽을 분산 시키는 것! )

 

 =  아까와 똑같다고 생각 할 수 있지만 이번엔 주소가 같은데 다른서버에 연결된 모습!!을 확인할 수 있다! ( 아까는 애초에 서버 주소가 다름 )

 

 * Load Balancer 생성시 주의사항

 = Subnet이 2개 이상

  - Public, Private 상관없이 2개면 됨

  - 가용영역 ( AZ ) 을 2개 지정 ( EC2가 한쪽에 있어도 됨 )

  - 모든 서브넷이 라우팅 테이블에 명시적으로 등록

 

 = Target Group을 생성

  -  인스턴스를 추가 --> Instance Pending Below

 

 = EC2의 개수와 Subnet을 Load Balancer에 등록하는 것은 상관 없음.

 

 * 오늘 실습한것중 삭제해야하는것

로드 밸런서, 시작 템플릿, 대상그룹,EC2 등은 삭제해야한다!

 

-------------------------------------------------------------------------------------------------------------------------------

 

오늘은 여러모로 앞쪽에서 버벅였지만 그래도 마무리는 잘 되어서 다행이다...

특히 로드밸런싱 부분은 디테일한 필기를 못해서 ppt 자료를 다시 보면서 복습하는게 좋을 것 같다.

rds.pptx
2.05MB

'공부 > 클라우드 보안' 카테고리의 다른 글

10월 05일 클라우드 보안 6  (0) 2022.10.05
9월 30일 클라우드 보안 5  (0) 2022.09.30
9월 28일 클라우드 보안 3  (0) 2022.09.28
9월 27일 클라우드 보안 2  (0) 2022.09.27
9월 26일 클라우드 보안 1  (0) 2022.09.26