본문 바로가기

Rookies 9기/클라우드 보안

클라우드 보안 2일차

728x90

복습

• S3(Simple Storage Service)

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

- Public 저장 : 객체(Object : 파일 등)를 공개해서 많은 사용자에게 전달할 수도 있음

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

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

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

 

• S3 Class

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

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

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

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

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

 

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

- 데이터를 자주 사용할 때는 Frequent Access Tier상태로 사용하다가 자주 사용하지 않으면 Infrequent Access Tier로 이동을 을 자동으로 하는 방법

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

- 자동차의 Automatic과 비슷

• S3 Intelligent Tiering(자동으로 변경)

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

- Infrequent Access Tier : 30일 동안 사용을 안 하면

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

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

 

•S3 클래스 가격 비교

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 Archive     : 0.002                 ex) 법적으로 10년 보관 의무 (의료기록)

 

• Region & Zone

‣ Reigon(리전) : 특정 지역(국가)에서 클라우드 서비스를 하기 위한 단위, 리전 내에서 온전한 클라우드 서비스 가능(다른 리전에 의존하지 않고도 독자적으로 모든 클라우드 서비스를 제공할 수 있음

이름 : ap-northeast-2 (서울 리전),   ap-northeast-1(도쿄리전),  ap-northeast-3(오사카리전),  us-east-1(버지니아리전, 최 초리 전)

‣ Zone : 가상의 데이터센터, 실제 데이터센터를 임차해서 가상화 도구(VMware, Xen 등)를 활용해서 가상의 데이터센터를 만듦, 가용성을 높이기 위해서 1개에서 6개까지의 실제 데이터센터를 하나로 묶어서 Zone을 만듦, 실제로 어느 데이터센터를 사용하는지는 알려주지 않음(Cloud : 알려줄 필요 없음), Zone을 가용 영역이라고 함 가 용역 역(=Zone=Availability Zone =AZ)

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

※ 우리나라에는 Amazon Datacenter 없고, KT/SKB 등을 일부 빌려서 가상화 도구 설치해서 가상의 데이터센터를 만듦

 

• 수명주기 관리(Life Cycle) ⇒ 스케줄링 

- 일반적인 데이터의 특징 : 처음에는 자주 사용하다가 시간이 지나면 잘 사용하지 않음

- 예를 들면, 한 달 동안은 Standard에 저장했다가 그 이후에는 Glacier에 저장하면 효율적임

 

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

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

 

Quiz) 1T를 Standard에 저장하면 한달에 얼마를 낼까요?  (GB당 0.025USD/월)  :  약 36,000원/월  (HDD 2T 80,000원/10년)

 

오늘 배운 내용

 

 VPC(Virtual Private Cloud)

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

- 우리 회사의 가상 네트워크

 

1) VPC 만들기

VPC 생성

VPC생성 버튼을 클릭한다.

VPC 설정

위 그림과 같이 설정을 해준다.

VPC 생성

VPC가 생성이 된 걸 확인할 수 있다.

 

2) 서브넷 만들기

서브넷 생성

왼쪽 화면에 보이는 서브넷을 클릭하여 이동후 서브넷 생성을 눌러준다.

VPC ID는 아까 위에서 만든 VPC를 연결을 해준다.

그리고 서브넷 이름(hcmsub01)과  가용 영역(us-west-1b) 및 IPv4(10.9.10.0/24)를 설정을 해준다.

서브넷 세부 정보

세부 정보를 보면 퍼블릭 IPv4 주소가 자동 할당이 안되어있다.(Private Subnet : 인터넷과 연결 안 되는 서브넷)

서브넷 설정 편집

오른쪽 화면에 있는 작업에서 서브넷 설정 편집에 들어간다.

자동 할당 IP 설정

퍼블릭 IPv4 주소 자동 할당 활성화를 체크해준 후 저장을 한다.

활성화

퍼블릭 IPv4가 활성화되었다(Pubilc Subnet : 인터넷과 직접 연결되는 서브넷으로 인터넷에서 접근이 가능한 웹서버, 메일 서버 등이 접근할 수 있다)

서브넷 생성

서브넷이 생성된 화면이다.

 

3) 인터넷 게이트웨이

게이트웨이 생성

인터넷 게이트웨이로 이동 후 인터넷 게이트웨이를 생성해주자.

이름 태그만 설정을 해주고 생성 버튼을 눌러준다.

그다음 작업에서 VPC에 연결로 이동을 한다.

인터넷 게이트웨이를 Hcm_VPC에 연결을 해준다.

 

4) 라우터 테이블

라우팅 테이블로 이동을 하면 자동으로 생성된 라이팅 테이블이 있다.

라우팅 테이블 ID를 클릭을 하면 라우팅 편집 버튼을 볼 수가 있다.

라우팅 테이블 주소는 불특정 네트워크 주소인 0.0.0.0/0으로 설정을 하고 대상을 게이트웨이(igw_hcm)로 설정을 해준다.

설정을 다 한 후에 서브넷 연결에서 서브넷 연결 편집 버튼을 클릭한다.

 hcmsun01 서브넷을 연결을 시키면 명시적 서브넷 연결 창에 hcmsub01 서브넷가 연결이 된 걸 확인할 수 있다.

 

※ 충돌이 발생하는 경우

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

 

※ 인터넷이 안 되는 이유

- 서브넷이 Public이 아니다.

- IGW와 연결이 안 되어 있다.

- 라우팅 테이블에 인터넷(0.0.0.0/0:불특정 네트워크) 연결 안 되어 있거나, 명시적인 서브넷에 등록 안되어있다.

- IP 설정을 잘못했다

• EC2(Elastic Compute Cloud) Ubnutu

EC2 검색

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

인스턴스 시작을 눌러 인스턴스 생성을 시작한다.

인스턴스 기본 설정
인스턴스 기본 설정

키 페어는 내가 가지고 있어야 하는 개인키를 생성하는 거다.(아마존 서버에 나를 증명하는 키)

aws_key.pem 이름으로 새 키 페어 생성

인스턴스 기본 설정

모든 트랙 피를 허용하지만 SSH 트래픽은 나 자신 IP만 허용을 한다.

인스턴스 기본 설정

네트워크 설정 편집에 들어가 보안 그룹의 이름을 수정을 한다.

인스턴스 실행

저장을 하면 인스턴스가 자동으로 실행 중인 상태인걸 확인할 수 있다.

 

※Key pair 설정( C:\intel 위치로 이동 (Command Line을 사용할 때, 접근하기 쉬운 위치이기 때문에))

속성 창

aws_key.pem 에서 오른쪽 마우스를 눌러 속성 창으로 이동을 한다.

속성 창

속성 창 중에서 보안으로 이동을 한 후 고급 버튼을 눌러준다.

고급 보안 설정

상속 사용 안 함 버튼을 클릭한다.

상속 차단

이 개체에서 상속된 사용 권한을 모두 제거를 한다.

보안 주체

그다음 보안 주체 선택을 눌러 user을 입력한 후 이름 확인 버튼을 눌러준다.

user는 지금 사용하고 있는 개인의 계정(윈도우 계정)을 입력하면 된다.

기본 권한

기본 권한은 읽기 권한만 추가한다.

속성 창

이제 확인을 누르면 aws_key.pem 설정을 다 한 것이다.

 

• AWS에 있는 EC2 Ubuntu 서버 접속하기

AWS gnuboard 인스턴스

실행 중인 gnuboard 인스턴스에서 연결 버튼을 클릭한다.

AWS gnuboard 인스턴스

SSH 클라이언트 주소와 명령어를 볼 수 있다.  이 주소를 복사를 한다.

CMD

CMD를 실행시켜 aws_key.pem 파일이 있는 폴더로 이동 후 복사한 명령어를 입력을 한다.

CMD

CMD에 AWS에서 만든 gnuboard 인스턴스가 실행이 된 걸 볼 수 있다.

 

• 그누보드 설치

sudo  apt  install  apache2

웹 서버를 설치해준다.

sudo  apt  install  mysql-server

MySQL 데이터베이스를 설치해준다.

sudo  mysql  -u root  -p

MySQL에 접속을 한다.

create  database  gnuboard

이름이 gnuboard 인 DB를 만들어 준다.

create  user  board@localhost  identified by 'cyber12#$';  grant  all  privileges  on  gnuboard.*  to  board@localhost;

첫 번째 명령어로 사용자 및 비밀번호를 생성을 하고 두 번째 명령어로 board에게 gnuboard의 모든 테이블에 대한 권한을 부여한다.

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

웹 서버에서 사용할 언어를 설치해준다.

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

html 디렉토리로 이동을 한 후 githun에 있는 gnuboard5를 설치해 준다.

그다음 사용자들이 업로드할 데이터 디렉터리를 mkdir 명령어로 생성을 해주고 chmod로 누구나 읽고 쓰기 가능하도록 설정을 해준다.

sudo  apt  install  net-tools

ifconfig 명령어를 사용하기 위해서 net-tools 설치를 해준다.

ifconfig

IP를 확인을 하면 AWS에 있는 gnuboard 인스턴스의 사설 IP가 보이는 걸 확인할 수 있다.

sudo  service  apache2  restart

아파치를 재시작해준다.

웹 브라우저

EC2에 있는 웹으로 접속을 하기 위해서는 퍼블릭 IPv4 주소를 확인을 하고 주소창에 http://54.183.147.7/gnuboard5을 입력을 해준다.

MySQL에서 만든 DB명과 사용자 및 비밀번호를 입력을 해준다.

그누보드 홈페이지

설치를 다 하면 그누보드가 홈페이지가 보이게 된다.

동작 확인

그누보드가 잘 동작이 되는지 자유게시판에 사진을 업로드해보니 잘 동작이 되는 걸 확인할 수 있다.

 

• 정리

1) VPC, Subnet, 인터넷 게이트웨이, 라우팅 테이블을 설정

2) EC2(인스턴스) 설정

3) 웹 서버(그누보드) 설치

 

• EC2(Elastic Compute Cloud) Amazon Linux

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

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

EC2 설정

EC2를 아마존으로 설정을 해준다.(gnuboard 인스턴스 빼고 위에서 만든 VPC, 서브넷, 인터넷 게이트웨이, 라우팅 테이블 사용)

우분투 사용

위에서 CMD에서 EC2로 접속을 해보았기 때문에 이번에는 우분투에서 EC2 접속을 해보자.

aws1_key.pem

새로운 키 페어를 받아 우분투로 위치를 이동시켜준다.

aws1_key.pem 권한 설정
ssh -i "aws1_key.pem" ec2-user@54.183.156.75

우분투에서도 EC2에 접속을 할 수 있는 걸 볼 수 있다.

 

• 그누보드 설치

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

mariadb 서버 설치하기

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  sudo chmod 2775 /var/www

웹서버 루트 디렉토리(/var/www)의 소유권을 apache그룹의 ec2-user로 변경

웹서버 루트 디렉토리의 권한을 2775로 변경(other는 read와 executable만 가능)

echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

웹브라우저에 phpinfo.php 파일이 실행이 되는지 확인을 해보자.

phpinfo.php 실행 결과

EC2의 퍼블릭 IP를 확인을 한 후 주소창에 54.183.156.75/phpinfo.php 입력 후 결과 화면이다.

sudo systemctl start mariadb&nbsp; &nbsp;sudo mysql -u root -p

mariadb 서비스를 실행을 시킨 후 실행을 시켜준다.

DB 설정

sudo  yum  install  php  php-mariadb  php-common  php-gd  php-fpm  php-xml  php-json  php-curl  git  -y에서 php-mysql은 설치할 필요가 없는 이유는 lamp-mariadb10.2-php7.2를 설치했기 때문이다. 

나머지는 위에서 설치했던 그누보드와 똑같이 설정을 해준다. 

sudo systemctl restart httpd

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

그누보드를 설치를 해준다.

그누보드 화면

EC2(Amazon)에서도 그누보드가 잘 동작이 되는 걸 볼 수 있다.

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

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