공부/클라우드 보안

9월 27일 클라우드 보안 2

마준123 2022. 9. 27. 17:11

지난 시간 복습!

 * Srotage

 = 데이터를 저장하는 공간, 비교적 저렴함

 = Private 저장 : 외부에는 공개하지않고 비공개로 저장할 수도 있음

 = Public 저장 : 객체 ( Object : 파일, 디렉토리, DB등 ) 를 공개해서 많은 사용자에게 전달할 수도 있음

 = 정적 웹사이트 : index.html과 이미지(jpg) 를 업로드 해서 간단한 웹사이트를 만들 수 있음

             ex ) 비상시 : 공사중 페이지, 메인 페이지가 다운되었을 때 현재 접속이 되지 않습니다를 띄울 수 있음. ( DNS 장애기반 라우팅 )

             ex ) 일시적 공지를 위한 페이지 : 안내페이지 ( 주차 ), 이벤트 등 공지

 

 * S3 Class

 = 기본적으로 S3에 저장하면 3개 이상의 Zone에 분산해서 저장 ------> 재해 또는 재난에 대비하기 위해서 분산 저장

            * Zone : 가상의 데이터 센터, 실제 데이터 센터를 임차해서 가상화도구 ( VMware, Xen 등 ) 을 활용해서 가상의 데이터센터를 만듦

                             ex ) 한국에는 Amazon Datacenter 없고, KT등을 일부 빌려서 가상화도구 설치해서 가상의 데이터 센텨를 만듦 ---> Zone

                             ex ) 그니까 소프트웨어는 아마존 하드웨어는 KT라고 생각하면 될거같다.

 = Standard : 저장비용이 비싸지만, 언제든지 인출할 수 있고, 인출 비용은 없음

 = Standard - IA ( Infrequent Access : 덜 자주 접속 ) : 저장비용이 약간 저렴하지만, 약간의 인출 비용이 있음

 = One Zonde - IA : 하나의 Zone에만 저장하는 대신 비용이 좀더 저렴함

 = Glacier ( 빙하 ) : 오랫동안 보관할 데이터를 저장하는 곳, 인출 시간이 오래걸리고 인출 비용도 높음 ( 대신 저장 비용은 저렴함 )

 

 * 수명주기 관리 ( Life Cycle )

 = 일반적인 데이터의 특징 : 처음에는 자주 사용, 시간이 지나면 잘 안씀

 = 그래서 예를 들면 처음 한달동안은 Standard에 저장했다가 그 이후에는 Glacier에 저장하면 효율적임

 

이걸 자동화할 수는 없을까? 있다 -->S3

 

 * S3 Intelligent Tiering ( Tier는 Class와는 다름 )

 = 데이터를 자주 사용할 때는 Frequent Access Tier상태로 했다가 자주 사용하지 않으면 Infrequent Access Tier에 넣는 방법

 = 거의 사용 안하게 되면 Archive Access Tier로 이동

 = 자동차의 Automatic과 비슷

 

Standard : $ 0.025

Standard - IA : $ 0.0138  ( 거의 반값 )

One Zone - IA : $ 0.011

S3 Glacier instant Retrieval : 0.005            ---> 즉시 인출 가능 ex ) 학교 성적 증명서, 졸업증명서 ( 졸업후 5년 이상 )

S3 Glacier Flexible Retrieval : 0.0045

S3 Glacier Deep Retrieval : 0.002                  ex ) 법적으로 10년 보관 의무 ( 의료기록 ), 꺼내는데 12시간 걸림

 

 * S3 intellignet Tiering ( 자동으로 변경 )

 = Frequent Access Tier : 처음 Tier는 여기 시작

 = Infrequent Acess Tier : 30일 동안 사용을 안하면

 = Archive Access Tier : 90일 동안 사용을 안하면

 = 어떤 Tier에 있다가도 사용자의 요청이 발생하면 , Frequent Access Tier로 다시 이동하게 됨

 

 * Region & Zone

 * Region

 = 특정 지역 ( 국가 ) 에서 클라우드 서비스를 하기 위한 단위

 = 리전 내에서 온전한 서비스 가능

 = 다른 리전에 의존하지 않고도 독자적으로 모든 클라우드 서비스를 제공할 수 있음

 = 이름 : ap - northeast -2 (서울리전), ap - northeast -1 (도쿄리전), ap - northeast -3 (오사카리전), us - east - 1(버지니아리전, 아마존에서 최초로 만든 리전 ) 등등

 

 * Zone ( 가용역역 )

 = 가상의 데이터 센터 ( 물리적인 데이터 센터를 임차해서 사용 )

 = 가용성을 높이기 위해서 1~6개 까지의 실제 데이터 센터를 하나로 묶어서 Zone을 만듦

 = 실제로 어느 데이터 센터를 사용하는지는 알려주지 않음

 = 이름 : ap - northeast -2a, ap - northeast -2b, ap - northeast -2c, ap - northeast -2d

 = Zone을 가용영역이라고 함(가용영역=Zone=Availability Zone=AZ)

 

 * S3에 버킷을 생성하고, 버킷에 데이터를 저장 (Upload) 해서 사용, Bucket 단위로 관리

 - Bucket의 이름은? 전역에서 고유하게 설정 ( 전체에서 유일한 이름을 사용 )

 

 * VPC (Virtual Private Cloud)

 = 가상으로 만드는 나만의 클라우드

 = 우리회사 가상 네트워크

 

실습 ) 아마존 웹서비스 로그인~!

 

1. VPC 만들기 ( AWS 검색창에 VPC 검색 )
1) VPC 생성 클릭
2) VPC 이름 : 이니셜 (Majun_vpc)
3) IPv4 CIDR 수동 입력
4) IPv4 CIDR : 10.9.0.0/16
5) IPv6 CIDR 블록설정 없음
6) 테넌시 : 기본값
7) VPC 생성 클릭



2. 서브넷 생성
1) 서브넷 생성 클릭
2) VPC 선택(Majun_vpc)
3) 서브넷 이름 : Msub01
4) 가용영역 : ap-northeast-3a
5) IPv4 CIDR: 10.9.1.0/24
6) 서브넷 생성 클릭


7) 서브넷을 선택하고 작업에서 서브넷 설정 편집 선택
8) 퍼블릭 IPv4 주소 자동할당 활성화에 체크(퍼블릭 서브넷으로 변환)


9) 저장 클릭

 

 

 * 충돌이 발생하는 경우!

VPC와 Subnet을 모두 지우고 새로 만들면서 IP대역을 다르게 설정하면 충돌이 없을 것임!

ex )

VPC : 10.29.0.0/16

Subnet : 10.29.1.0/24, 10.29.2.0/24

 

VPC : 10.99.0.0/16                                                /16 ----> Subnet Mask 의 1의 개수 255.255.0.0

Subnet : 10.99.1.0/24, 10.99.2.0/24                      /24 ----> Subnet Mask ==========================

 

 * 서브넷 ID를 누르면 상세한 내용이 보이는데,

퍼블릭 IPv4 주소 자동 할당 ---> 아니요  ( Private Subnet : 인터넷과 연결 안되는 인터넷 )
퍼블릭 IPv4 주소 자동 할당 ---> 예  ( Public Subnet : 인터넷과 직접 연결되는 서브넷 ) : 인터넷에서 접근이 가능한 서브넷



3. 인터넷 게이트웨이
1) 인터넷 게이트웨이 생성 클릭
2) 이름태그: igw-Majun
3) 인터넷 게이트웨이 생성 클릭
4) igw-Majun선택하고 작업에서 VPC에 연결
5) 사용가능한 VPC에서 vpc선택
6) 인터넷 게이트웨이 연결 (Attached 확인)



4. 라우팅 테이블
1) 라우팅 테이블 목록에서 찾아봄 클릭 (생성 아님)
2) 해당 라우팅 테이블 ID를 클릭
3) 라우팅탭 클릭하고 라우팅 편집 클릭
4) 라우팅 추가 클릭, 0.0.0.0/0을 선택하고, 인터넷 게이트웨이 선택, igw-Majun선택, 변경사항 저장 

(퍼블릭 서브넷과 게이트웨이를 연결한 것 )


5) 서브넷 연결 탭에서 명시적 서브넷 연결의 서브넷 연결 편집 클릭
6) Msub01앞에 체크하고 연결 저장 클릭


5. EC2생성

 

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

 

 * EC2 (Elastic Compute Cloud )

 = AWS에서 동작하는 가상 머신 ---> 웹서버를 만들어서 웹서비스

 = 키페어가 다운로드 되면 C:\Intel 경로에 넣어주면 나중에 편하다. ( 접근하기 쉬운 경로 )

C:\Intel

 

네트워크 설정
편집 눌러서 좀 더 디테일하게 바꾸었다. ( 시실 이름만 바꿈 )

 

 

 * Security Groups ( 보안 규칙 = 방화벽 )

 = 설정을 안하면, 모든 포트에 접근 가능하게 됨

 = 접근할 수 있는 포트를 제한해야 함

    SSH : 나만 접근할 수 있어야함

    HTTP, HTTPS : 누구나 접근 가능해야 함 

 

 

 

 = gp2 쓰면됨

 = 프로비저닝은 ㅈㄴ 빠른데 ㅈㄴ비쌈 ( 보통 카드결재 같은거에 씀 )

 = 마그네틱은 ㅈㄴ 느림 ( Glacier )

 

 = gp2 선택했으면 인스턴스 시작 클릭!

 

 =  aws_key.pem 우클릭 - 속성 - 보안 - 고급 - 상속 사용 안함

모두 제거

 = 추가 - 사용자 또는 구릅 선택 - 밑에다 컴퓨터 주인 ( 나는 user ) 입력 후 이름확인

 = 확인 후 읽기만 체크하고 확인

 

SSH로 접속하려면 반드시 권한을 400으로 설정 해줘야함 ( 리눅스에선 chmod 400 하면 끝인데 윈도우는 ㅈㄴ 어려움; )

 

 = 인스턴스 누르고

 = 연결 누르고 

 = SSH 클라이언트 연결

 

 

 = ssh -i "aws_key.pem" ubuntu@13.208.45.65 복사하고 

 = 명령 프롬프트에서 아까 받은 intel 로 디렉토리 이동한후 명령어 붙여넣기

 

 

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

 

실습 ) AWS에 있는 EC2 Ubuntu 서버 접속하면

$sudo apt update

 

그리고 어제 한 그누보트 설치를 그대로 하면된다.

 

접속은 저 퍼블릭 아이피 주소로 하면된다.

 

 

복습 ~~

EC2 인스턴스 종료후 누르기 ( 잠시후 삭제됨 )

 

 * EC2 Ubuntu를 새로 만들고 Gnuboard 까지 설치하기~~~

    aws_key.pem 삭제하고 새로 설정

 

 * 혹시, cd intel 해서 들어가려고 했더니 권한이 없다고 나오는 경우,

   aws_key.pem 파일을 다른 디렉토리에 옮겨놓고 사용하세요~~

 

여러번해보자!

 

 * EC2를 계속 켜놓으면 비용이 발생 ---> t2.micro 0.0144usd/시간 --> 한달에 15,000원 발생

 

 * Scale up : 더 고사양 스펙으로 바꾸는 것

   Scale down : 더 저사양 스펙으로 바꾸는 것

 

 * Amazon Linux

  = Red hat의 기본 커널에 최소화된 기능을 넣어서 Cloud 환경에 최적화시킨 운영체제

 =  가볍고 상당히 빠르게 동작 ---> 아마존에서는 많이 사용됨

 

 * EC2는 켜놓으면 비용 발생

 ---> 지울때 아깝다고 생각 할 수 있지만 하는 방법만 알면 다시 만들면되니까 아까워하지 말자!!

 

 

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

 

 = 이번엔 아마존 리눅스로 EC2를 만들어보자!

이 부분은 아까 만든부분을 사용하면 편하다
잘 만들어진 모습.

 

 = 이번엔 우분투에서 접속해보자

 

키파일을 VM웨어에 있는 우분투에 복사한다. ( 오른쪽 마우스로 복사&붙여넣기. )

 = 터미널 접속

  $  ls
  $  cd 바탕화면
   $  ls
   $  sudo chmod 400 Majun.pem
   $  ll

그리고 

ssh -i "Majun.pem" ec2-user@15.168.12.194 입력

윈도우랑 다르게 복잡한 과정없이 엄청빨리 접속이 가능하다!

 

이제 AmazonLinux_lamp_gnuboard.txt 보고 그대로 따라하자!

 

AmazonLinux_lamp_gnuboard.txt의 내용

$ sudo  yum  update  -y                                     // -y는 미리 yes로 설정
$ sudo  yum  install  httpd                                  // 아파치 웹서버 설치
$ sudo  amazon-linux-extras  install  -y  lamp-mariadb10.2-php7.2  php7.2          // lamp : Linux 용 Apache2 MySQL PHP( 웹서버 세트)
$ sudo  yum  install  -y  mariadb-server
$ sudo  systemctl  start  httpd                             // 아마존 리눅스에서는 아파치 시작명령을 사용해야 아파치가 시작함
$ sudo  systemctl  enable  httpd                          // 부팅할 때마다 시작하도록 등록함
$ sudo  usermod -a -G apache ec2-user                 // 아파치 그룹(-G apache)에 ec2-user를 추가(-a : add)함
$ sudo  chown -R ec2-user:apache  /var/www           // 웹서버 루트 디렉토리(/var/www)의 소유권을 apache그룹의 ec2-user로 변경함
$ sudo  chmod 2775  /var/www                             // 웹서버 루트 디렉토리의 권한을 2775로 변경(other는 read와 executable만 가능)
$ sudo  find  /var/www  -type d -exec chmod  2775 {} \;              // 웹서버 루트 디렉토리의 하위 디렉토리가 2775로 되어있는지 확인
$ sudo  find  /var/www  -type f -exec chmod  0664 {} \;               // 웹서버 루트 디렉토리의 하위 파일이 0664로 되어 있는지 확인
$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
------> 웹브라우저를 열고 접속해서 잘 실행되는지 확인해봅니다.    http://IP주소/phpinfo.php

실습) 그누보드 추가 설치하기  (각자)
1) DB설정
$ sudo systemctl start mariadb
$ sudo mysql -u root -p                   // 초기에는 패스워드가 없어서 그냥 들어감
create database gnuboard;
create user board@localhost identified by 'cyber12#$';
grant all privileges on gnuboard.* to board@localhost;
flush privileges;
exit;
2) gnuboard source 코드 다운로드 (git 설치되어 있어야 함)
$ sudo  yum  install  git
$ cd   /var/www/html
$ sudo git clone https://github.com/gnuboard/gnuboard5
$ cd  gnuboard5
$ sudo mkdir data
$ sudo chmod 707 data                             // 777과 707의 차이는 그룹에 권한을 주느냐 안주느냐의 차이입니다 
$ sudo  yum  install  php  php-mariadb  php-common  php-gd  php-fpm  php-xml  php-json  php-curl  git  -y
                ( lamp-mariadb10.2-php7.2를 설치했기 때문에 php-mysql은 설치할 필요 없음)
$ sudo  systemctl  restart  httpd

 

나머지는 그누보드 설치방법과 동일!

 

완료~

 

 

혹시 잘 안되면

$ sudo chmod 0777 data              //데이터 디렉토리 권한 설정 변경!!

 

Ubuntu : apt 로 자동설정

Amazon Linux : yum 으로 자동설정

 

복습 실습 & 블로그 작성 ~~~

실습이 끝나면 EC2는 종료합니다~~~

종료 안하면 돈이 쭉쭉 빠져나간다~

 

실제로 나는 과거에 종료를 안헀다가 돈도 안내서 계정이 폐쇄당한적이 있다....

사실 이 전에도 30통가량의 메일이 왔는데 ( 돈내라고 )

돈을 내고싶어도 어떻게 내는지 몰라서 방치해두었더니 이래되었다....

관리를 잘하자.....( 그래도 한 1년정도의 유예기간은 준다...착한놈들 )

 

 

 * 참고

접속할때 사설IP로 접속하면 안된다~~ 10.x.x.x

AWS 내부는 모두 사설IP이고, 필요한 경우에만 공인IP를 제공함

 

 * 비용관련

 = VPC와 Subnet은 별도 비용이 발생하지 않습니다.

 = S3는 아주 조금 나온다.

 = EC2만 잘 종료하면된다!

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

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