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

클라우드 보안 수업 3일차 (22/09/28)

ksh_5 2022. 9. 28. 01:55

Windows Server 생성)

더보기

① 인스턴스 시작

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

② 이름 (gnuboard) 작성 후 OS 선택 (Windows 2016 base)

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

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

⑤ RDP 트래픽 허용 (위치 무관 → 내 IP)

⑥ 인터넷에서 HTTP , HTTPs 트래픽 허용

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

⑧ 인스턴스 시작 클릭

⑨ 연결 > RDP 클라이언트 > 암호 가져오기 클릭

⑩ 키 페어로 이동 Browse로 (aws_gnuboardkey) 가져온 후 암호 해독 클릭

⑪ 암호 복사 후 원격 데스크톱 연결 > 옵션 표시 > 컴퓨터에 전부 복붙 > 연결

⑫ 연결된 윈도우에서 Server Manager > Add roles and features > Web Server 클릭 후 Install

⑬ 윈도우10에서 Pulic IP로 접속

 

IP로 접속한 화면

 

  • Windows Server의 Web Server Root Directory (IP주소나 도메인만 입력 시 가장 먼저 접속되는 위치)

→ C:\inetpub\wwwroot

 

 

① iisstart.htm 파일 확장자를 old로 변경

② 어제 만든 index.html의  img src="사진 파일 이름" 변경 후 저장

③ index.html과 image파일을 windows 2016으로 이동

④ index.html → iisstart.htm으로 변경 후 웹브라우저 새로고침

 

 

 

  • Security Group (보안 그룹)

 

- 인바운드 규칙 : 인터넷에서 AWS에 들어갈 때 규칙 (밖 → 안)

   ssh, http, https, rdp 등 필요 경우만 허용

   → ssh, rdp는 반드시 IP주소를 엄격히 제한 (http, https는 IP 제한X)

 

- 아웃바운드 규칙 : AWS에서 인터넷으로 나갈 때 규칙 (안 → 밖) → 대부분 허용

 

 

우선순위 확인 실습)

더보기

Server Manager > IIS > servers에 뜨는 거 오른쪽 마우스 클릭

> Internet Information Services (IIS) Manager > Default Document

 

우선순위로 배열

 

 ① index.html 파일을 다른 이미지가 나오게 수정 후 index.html 파일과 image파일 windows2016로 이동

② 웹브라우저 새로고침 시 index.html 파일이 iisstart.htm 파일보다 우선순위가 높아 먼저 보이게 됨

 

 

우선순위로 배열

 

 

Database Server 원격 접속)

 

 

더보기

- workbench(MySQL의 클라이언트용 프로그램) 다운로드

 

- 우분투로 원격에서 사용할 계정 생성

$ sudo mysql -u root -p

mysql > create user astro@'%' identified by 'cansupop';

mysql > grant all privileges on *.*  to astro@'%';

 

- UFW(Ubuntu FireWall)에서 3306번 포트를 외부에서 접속할 수 있도록 허용

$ sudo ufw allow 3306

 

- wrokbench에서 Setup New Connection 'astro' 연결

 

 

※ 외부에서 접속 안되도록 설정된 것 수정

$ cd /etc/mysql/mysql.conf.d

$ sudo vi mysql.cnf

31번 라인 127.0.0.1 → 0.0.0.0 수정

$ service mysql restart

 

 

  • Root 계정을 업무에 활용하면 안 되는 이유

 

- Root 계정이 크래킹 되면 컨트롤할 방법 없음

- 다른 계정 만들어 활용 (특히, DB에서는 database마다 따로 계정 할당)

- 회사 내부에서만 접근 가능하도록 설정

 

 

  • 접속의 차이

 

- astro는 '%'로 되어있어 workbench 또는 mysql command line으로 DB에 직접 접속 가능

- board는 localhost로 되어있어 workbench 또는 mysql command line으로 DB 직접 접속 불가능

   → ssh로 서버에 접속하고, board 계정으로 DB에 접속하면 가능

 

 

goods.sql 파일 실습)

더보기

① workbench에서 sql 파일 열기

② 전체선택 후 번개모양 누를 시 good.sql 스크립트가 한 번에 실행

③ show databases;

    use  classicmodels;

    show  tables;

    desc  orders;

   select  orderNumber, orderDate, shippedDate  from  orders;

 

 

  • 최근 주문한 10개의 목록을 추출해보기

select  orderNumber, orderDate, shippedDate  from  orders  order by orderDate  desc  limit 10;

 

RDS 데이터 베이스 생성)

더보기

사전조건

① Private 서브넷 하나 더 생성 (Public과 Private 각 하나씩 총 두 개)

② VPN에서 DNS 경로 사용 (DNS 호스트 이름 편집 → 활성화)

     → 접속할 수 있는 URL 생성 가능

 

① AWS에서 RDS 목록 들어가기

② 데이터베이스 생성 > 표준 생성 > MySQL > 템플릿 : 프리 티어

 설정 부분에서 DB 인스턴스 식별자, 이름, 암호 설정

 

 

④ 연결 부분에서 퍼블릭 액세스 예로 변경, VPC 보안 그룹 새로 생성, 그룹 이름(DB_server), 가용영역 선택

⑤ 데이터베이스 생성

 

⑥ 생성이 되면 workbench에서 + 눌러 생성

- Hostname엔 엔드포인트 삽입

- username, password엔 마스터 이름, 암호 삽입

 

생성된 화면

 

workbench 이용해 goods.sql을 RDS에 업로드 후 실행)

더보기

show databases;

use classicmodels;

show tables;

desc products;

select productName, productLine, productVendor, buyPrice from products;

 

 

 

  • Cloud 종류

 

① IaaS (Infrastructure as a Service)

- 클라우드에서 인프라 제공해주는 서비스

- 인프라는 가상머신(Ubuntu, Amazon Linux, Windows Server 등), 네트워크(VPC, Subnet), 스토리지(S3)

- AWS에서는 HW, Network, Security 등만 책임지고, 나머지는 사용자의 책임 (OS, Application, Data, Platform 등)

- 장점 : 대부분 통제 가능, 가격 저렴

- 단점 : 사용자가 확장, 관리(백업, 용량, 보안, 장애 등) 해야 함

 

② PaaS (Platform as a Service)

- 클라우드에서 플랫폼을 제공해주는 서비스

- 개발자가 개발할 수 있는 환경까지 제공 (RDS)

- AWS에서는 HW, Network, Security + OS + Application 설치 및 관리

- 사용자는 Application 사용만 하면 됨. Data에 대한 책임

- 장점 : 관리해주는 부분 신경 안 써도 됨 (백업, 용량, 보안, 장애 관리 등 AWS에서 함)

- 단점 : OS 및 Application에 대한 완전한 통제권 갖기 어려움  (roo t권한 없음, admin/girlsday 등 만들어 사용)

- Paas-ta : 정부에서 개발자들이 창업할 수 있는 환경 생성

 

③ SaaS (Software as a Service)

- 클라우드에서 소프트웨어를 제공해주는 서비스

- 사용자는 ID/PW 인증만 하면 모든 서비스 이용 가능, Client용 SW만 있으면 됨.

- 장점 : IT인력이 많이 필요X

- 단점 : 의존성 문제(마이그레이션하기 어려움), 가격이 비쌈, Customizing 하기 어려움

- 주로 프랜차이즈, 무역(의류, 수입차 등), 고객관련 Biz 등

 

 

3Tier 구성)

 

 - 웹서버와 DB서버 분리

 

※ 주의사항

- EC2와 연결해 사용 (Public IP 받기 불가능)

- Local에서 workbench 사용 불가능

- EC2에 로그인한 상태에서 RDS 접속

- RDS 주소 부여 위해 VPC 호스트 이름 사용 활성화

 

 

실습환경)

 

 

  • EC2 설정
더보기

$ sudo apt update

$ sudo apt install vim

$ sudo apt install apache2

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

$ cd /var/www/html

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

$ cd gnuboard5/

$ sudo mkdir data

$ sudo chmod 707 data

$ sudo service apache2 restart

$ sudo apt install mysql-client

$ sudo mysql -h [엔드포인트] -u  [RDS계정]  -p

   (gnuboard, board, 권한부여)

 

※ EC2 Public Subnet(01)에 생성해야 외부에서 접속 가능 (Private Subnet 접속 불가능)