클라우드 보안

루키즈 교육 - 0928학습

김띵똥 2022. 9. 28. 17:33

* EC2

- 클라우드의 핵심 (서버를 아웃소싱, AWS이 가장 먼저 시작한 서비스)     2007년

- Ubuntu를 웹서버로 만드는 실습 (Debian 계열 : apt, apt-get)

- Amazon Linux를 웹서버로 만드는 실습 (Red hat 계열 : yum, 최근에는 dnf)

- Windows Server 2016

 

* RDS (관계형 데이터베이스 서비스, Relational Database Service)

 

장점

 

단점

 

사전 조건

- RDS는 가용영역이 2개 이상 필요

- VPC에서 DNS 호스트 이름 편집을 활성화해야 접속할 수 있는 URL을 생성 가능

   (VPC => DNS 호스트 이름 편집 => 활성화)

 

* AMI (Amazon Machine Image)

- 아마존이 미리 만들어놓은 가상 머신 이미지 (아마존이 설치 다 해놓고 사용하겠다고 하면 복사해줌)

 

 

* Security Group (보안 그룹)

- 인바운드 규칙 : 인터넷에서 AWS에 들어갈 때의 규칙 (밖-->안)  ---> SSH, http, https, RDP 등 꼭 필요한 경우만 허용해야 함 

=> SSH, RDP는 반드시 IP주소를 엄격하게 제한해야 함.  (http, https는 IP를 제한하지 않음)

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

 

* 접속이 안되면

- 보안 그룹에 설정이 잘 못된 경우

- 서비스가 실행되지 않은 경우  (설정을 다 한 후에는 아파치 재시작 해야 함)

 

* 페이지가 안 보이면

- 확장자가 잘못된 경우

- 이미지를 업로드 안했거나

- 이미지 확장자가 잘못됬거나

 

실습) 우선순위 확인해보기

  다른이미지가 나오도록 index.html 파일을 수정한 뒤,  index.html과 새로운 image파일을 업로드

  => 웹브라우저를 새로고침 해보면, 어느 파일이 보일까요? 

        index.html 파일이 iisstart.htm 파일보다 우선순위가 높기 때문에 index.html이 보여지게 됨

 

실습) Workbench는 MySQL의 클라이언트용 프로그램

구글에 접속해서 'workbench' 검색

MySQL Workbench 8.0.30

Go to Download page 클릭

5.5M  Download클릭

설치 시작하고 Client Only를 선택

다운로드에서 error가 나오면 try agian 클릭

 

* 우분투에서 원격에서 사용할 계정을 만들기

$ sudo  mysql  -u  root  -p

   (비밀번호 없으므로 그냥 엔터)

mysql> create user blackpink@'%' identified by 'icecream';                      //  '%' 어디서든지 접속이 가능한 계정

mysql> grant all privileges on *.*  to blackpink@'%';                               //  모든 DB에 대해서 모든 권한을 부여함 (신돈)

mysql> exit

 

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

$ sudo  ufw  allow  3306

 

* 외부에서 접속이 안되도록 설정되어 있음

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

$ sudo vi mysqld.cnf

:set nu

 (31번 라인으로 내려감)

 (127.0.0.1  ---->  0.0.0.0  수정합니다.)  ----->  0.0.0.0이면 전세계 어디서든지 접속이 가능함 (매우 위험)  

ESC

:wq

$ sudo  service  mysql  restart                        // MySQL 재시작

 

참고) 회사 내부에서만 접속하려면

59.6.0.106 일 경우, 끝자리가 바뀔수 있으므로,  59.6.0.0 으로 설정하는 방법 -----> 우리회사에서는 IP가 바뀌더라도 접속 가능!

 

윈도우에서 'workbench' 입력하면 실행 가능함

 

문제해결) 패키지가 안뜨는 분들 프로그램 제거후 재설치

 

 

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

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

- 다른 계정을 만들어서 활용

- 특히, DB에서는 database마다 따로 계정을 할당하는 것이 좋음

- 회사 내부에서만 접속 가능하도록 설정하도록 해야함

 

* 재택근무를 하고 있는 상황에서 DB에 접속해야 하는 경우는 어떻게 할까?

 (DB는 회사 내에서만 접속됨)

- VPN을 이용해서 회사 내부망에 접속해서 DB에 접속

- SSH로 업무용 서버에 접속해서 DB에 접속

 

* 접속의 차이

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

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

  ----> SSH로 서버에 (ive로) 접속하고, board 계정으로 DB에 접속하면 가능

 

실습) goods.sql 파일 실습

Open a SQL Script... 선택하고 goods.sql을 열기

전체선택(Ctrl+a)하고 그냥 번개를 누르면 goods.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 사전 조건

1) RDS는 가용영역 2개 필요함

 ---> Subnet 1개 추가해야 함

2) VPC에서 DNS 경로를 사용해야 함 (DNS 호스트 이름 편집 ---> 활성화)

 ---> 접속할 수 있는 URL을 생성할 수 있음

3) 설정할 때, _(언더바)는 사용안됨, -(하이픈)은 사용 가능

 

 

* Cloud의 종류

1) IaaS (Infrastructure as a Service)

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

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

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

* 장점

- 대부분의 통제가 가능하고 가격이 저렴함

* 단점

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

 

2) PaaS (Platform as a Service)

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

- 플랫폼은 개발자가 개발할 수 있는 환경까지 제공해줌 (RDS)

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

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

* 장점 

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

* 단점 

- OS 및 Application에 대한 완전한 통제권을 갖기 어려움  (root권한이 없음, admin/girlsday 등을 만들어서 사용)

  참고) Paas-ta : 정부에서 개발자들이 창업을 할 수 있는 환경을 만들어줌

 

3) SaaS (Software as a Service)

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

- 사용자는 ID/PW등 인증만 하면 모든 서비스를 이용할 수 있음, Client용 SW만 있으면 됨.

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

- 장점 : IT인력이 많이 필요하지 않음

- 주로 누가 할까?   커피/치킨/피자 프랜차이즈, 무역(의류, 수입차 등), 고객관련 Biz등

 

실습) Workbench를 이용해서, goods.sql을 RDS에 업로드 하고 명령을 실행시켜 봅니다.

show databases;

use classicmodels;

show tables;

desc products;

select productName,productLine,productVendor,buyPrice from products;

 

실습) 3Tier로 구성하기 (웹서버와 DB서버를 따로 사용)

 EC2를 생성한 다음, DB를 설치하지 말고, RDS에 데이터를 저장하도록 해서 Gnuboard를 동작시키려면?

- OS는 Ubuntu 22.04 LTS : MySQL을 제외하고 설치

- DB는 RDS를 활용, 설정은 Workbench로 설정하면 됨

- 기존의 RDS는 삭제하고, 새로 RDS를 만들면서 EC2에 연결하도록 설정(퍼블릭IP설정 안됨, EC2를 통해서 접속해야 함)

 

* RDS에 연결 방법 (아래 방법 둘중에 하나밖에 안됨)

- Public IP 부여 : EC2와 연결 안됨

- EC2와 연결 : 지정한 EC2가 필요하므로 EC2를 미리 생성하고 연결해야 함   ----> Workbench 사용 불가

 

* EC2에 접속한 상태에서 RDS에 접속해야 함

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

(gnuboard 만들고, board 만들고, board에 권한 주고)

 

* 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, 권한부여)

 

 

 

 

 

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

루키즈 교육 - 1005 학습  (0) 2022.10.05
루키즈 교육 - 0930 학습  (0) 2022.09.30
루키즈 교육 - 0927 학습 (VPC 실습)  (0) 2022.09.27
루키즈 교육 - 0926 학습  (0) 2022.09.26