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

클라우드 보안 수업 2일차 (22/09/27)

ksh_5 2022. 9. 27. 04:32
  • S3 Storage

 

- 데이터 저장 공간, 비교적 저렴

- Private 저장 : 외부 공개X 비공개로 저장

- Public 저장 : 객체 공개해 많은 사용자에게 전달

- 정적 웹사이트 : index.html과 이미지 업로드해 간단한 웹사이트 만들기 가능

 

 

  • S3 Class

 

- Standard : 저장비용 비쌈, 언제든 인출 가능, 인출 비용 없음

- Standard-IA : 저장비용이 저렴하나 약간의 인출 비용 부과

- One Zone-IA : 하나의 Zone에만 저장, 비용 저렴

- Glacier : 오랫동안 보관할 데이터 저장(저장 비용 저렴), 인출 시간 오래 걸림, 인출 비용 높음

 

 

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

 

- 일반적 데이터 특징 : 처음엔 자주 사용하다 시간 지나면 잘 사용X

 

 

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

 

- Frequent Access Tier : 처음 Tier 시작 부분 (자주 사용)

- Infrequent Access Tier : 30일동안 사용 안 할 시 (자주 사용 안할 때)

- Archive Access Tier : 90일동안 사용 안 할 시 (거의 사용 안할 때)

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

 

 

  • Region

 

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

- 리전 내 온전한 클라우드 서비스 가능

- 다른 리전에 의존하지 않고도 독자적으로 모든 클라우드 서비스 제공 가능

 

 

  • Zone

 

- 가상의 데이터 센터

- 가용성 높이기 위해 1~6개 하나로 묶어 생성

- 가용영역

 

 

  • VPC

 

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

 

 

 

VPC 생성)

더보기

① VPC 생성 클릭

② VPC만 클릭 후 이름 작성 (Sh_VPC)

③ IPv4 CIDR 수동 입력

④ IPv4 CIDR (10.9.0.0/16)

⑤ IPv4 CIDR 블록 설정 없음

⑥ 테넌시 기본값

⑦ VPC 생성 클릭

vpc 생성을 마친 화면

 

서브넷 생성)

더보기

① 서브넷 생성 클릭

② VPC 선택 (Sh_VPC)

③ 서브넷 이름 (Shho)

④ 가용 영역 (ap-northeast-3a)

⑤ IPv4 CIDR : 10.9.1.0/24

⑥ 서브넷 생성 클릭

⑦ 서브넷 선택 후 작업에서 설정 편집 선택

⑧ 퍼블릭 IPv4 주소 자동할당 활성화 체크 (public subnet으로 변환)

⑨ 저장

 

서브넷 생성을 마친 화면

 

※ 충돌 발생 시 VPC Subnet 모두 삭제 후 새로 생성

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 1의 개수 (255.255.255.0)

 

 

  • 서브넷 ID를 누르면 상세한 내용 확인

 

- 퍼블릿 IPv4 주소 자동 할당 → 아니요 (Private Subnet)

- 퍼블릿 IPv4 주소 자동 할당 → 예 (Public Subnet)

 

 

인터넷 게이트웨이 생성)

더보기

① 인터넷 게이트웨이 생성 클릭

② 이름 태그 후 생성 (igw-sh)

③ 인터넷 게이트웨이 생성 클릭

④ 만든 이름 선택 후 작업에서 VPC 연결

⑤ 사용 가능한 VPC에서 vpc 선택

⑥ 인터넷 게이트웨이 연결 클릭

 

 

인터넷 게이트웨이 생성을 마친 화면

 

라우팅 테이블 생성)

더보기

① 라우팅 테이블 목록 테이블 클릭

② 해당 라우팅 테이블 ID 클릭

③ 라우팅탭 클릭 후 편집 클릭

③ 라우팅 추가 클릭 0.0.0.0/0 (게이트웨이)로 라우팅 추가

④ 인터넷 게이트웨이 클릭 > 대상 클릭 후 변경 사항 저장

⑤ 서브넷 연결 탭에서 서브넷 연결 편집 클릭

⑥ 체크 후 저장하면 명시적 서브넷 연결로 이동됨

 

 

라우팅 테이블 생성을 마친 화면

 

 

  • EC2(Elastic Compute Cloud)

 

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

 

 

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

 

- 설정 안 할 시, 모든 포트에 접근 가능

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

- SSH : 나만 접근

- http, https : 누구나 접근

 

 

EC2 생성)

더보기

① EC2 목록 클릭 후 인스턴스 시작 클릭

② 이름 (gnuboard) 작성 후 OS 선택 (ubuntu)

③ 새 키 페어 생성 (aws_gnuboardkey)

④ 생성한 키 C:\Intel 경로로 넣기

⑤ 네트워크 설정에서 생성한 VPC, 서브넷 클릭

⑥ 방화벽 보안 그룹 생성 클릭

⑦ 인바인드 보안 그룹 규칙 추가해주기

⑧ 설명 - 필수에 (web_server)로 변경

⑨ 인스턴스 시작 클릭

 

⑦ 인바인드 보안 그룹 규칙 추가

 

인스턴스 생성을 마친 화면

 

※ key 속성 변경

aws_gnuboardkey.pem 오른쪽 마우스 클릭 > 속성 > 보안 > 고급 > 상속 사용 안 함 > 모든 권한 제거 > 추가 > 보안 주체 선택 > 자신의 컴퓨터 이름 적고 확인 > 읽기만 체크 > 확인

     ※ ssh로 접속할 시 권한은 반드시 400으로 설정 (chmod 400)

 

 

⑩ 윈도우10에서 cmd창 열어 cd C:\Intel > dir에서 확인 후 AWS에서 연결 클릭

 

 

⑪  SSH 클라이언트 > 예에 있는 ssh -i "aws_gnuboardkey.pem" ubuntu@13.208.214.212 복사

⑫ 복사한 값 cmd에 붙여넣으면 만든 인스턴스에 접속이 됨

 

 

 

  • Amazon Linux

 

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

- 가볍고 상당히 빠르게 동작

 

 

Amazon으로 인스턴스 생성)

더보기
⑥번은 기존 보안 그룹 선택

 

인스턴스 생성을 마친 화면

 

- ubuntu로 인스턴스 연결

 

① $ sudo chmod 400 aws_gnuboardkey.pem

② $ ll     // 권한 바뀐거 확인

③ $ ssh -i "aws_gnuboardkey.pem" ec2-user@IP주소

④ 접속됨을 확인할 수 있음

 

 

$ sudo  yum  update
$ 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 추가
$ sudo  chown -R ec2-user:apache  /var/www

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

  → 웹서버 루트 디렉토리의 권한을 2775로 변경
$ 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

 

gnuboard5로 접속